feat(tui): support session deletion

This commit is contained in:
Dax Raad 2026-07-06 19:19:22 -04:00
commit c0ea1a43f9
18 changed files with 563 additions and 273 deletions

View file

@ -84,6 +84,16 @@ export const Renamed = Event.durable({
})
export type Renamed = typeof Renamed.Type
export const Deleted = Event.durable({
type: "session.deleted",
durable: {
aggregate: "sessionID",
version: 2,
},
schema: Base,
})
export type Deleted = typeof Deleted.Type
export const Forked = Event.durable({
type: "session.forked",
...options,
@ -477,6 +487,7 @@ export const Definitions = Event.inventory(
ModelSelected,
Moved,
Renamed,
Deleted,
Forked,
PromptPromoted,
PromptAdmitted,

View file

@ -46,11 +46,12 @@ describe("public event manifest", () => {
SessionV1.Event.Error,
])
expect(Array.from(EventManifest.Latest.keys())).toEqual(
EventManifest.Definitions.map((definition) => definition.type),
Array.from(new Set(EventManifest.Definitions.map((definition) => definition.type))),
)
expect(EventManifest.Latest.get("agent.updated")).toBe(Agent.Event.Updated)
expect(EventManifest.Latest.get("plugin.updated")).toBe(Plugin.Event.Updated)
expect(EventManifest.Server.get("mcp.status.changed")).toBe(McpEvent.StatusChanged)
expect(EventManifest.Server.get("session.deleted")).toBe(SessionEvent.Deleted)
expect(EventManifest.Server.has("mcp.tools.changed")).toBe(false)
expect(Agent.Event.Updated.durable).toBeUndefined()
expect(EventManifest.Durable.has("agent.updated")).toBe(false)
@ -95,6 +96,7 @@ describe("public event manifest", () => {
"session.created.1",
"session.updated.1",
"session.deleted.1",
"session.deleted.2",
"message.updated.1",
"message.removed.1",
"message.part.updated.1",
@ -170,4 +172,11 @@ describe("public event manifest", () => {
expect(SessionEvent.Text.Started.durable?.version).toBe(1)
expect(SessionEvent.Tool.Called.durable?.version).toBe(1)
})
test("keeps current session deletion minimal", () => {
const sessionID = SessionID.make("ses_test")
expect(SessionEvent.Deleted.data.make({ sessionID })).toEqual({ sessionID })
expect(SessionEvent.Deleted.durable?.version).toBe(2)
})
})