feat(tui): support session deletion

This commit is contained in:
Dax Raad
2026-07-06 19:19:22 -04:00
parent 83cb49d697
commit 9cea2e4b9a
18 changed files with 569 additions and 279 deletions
+11
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,
+10 -1
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)
})
})