MCPcopy Create free account
hub / github.com/arctic-cli/interface / cleanup

Function cleanup

packages/arctic/src/session/revert.ts:79–107  ·  view source on GitHub ↗
(session: Session.Info)

Source from the content-addressed store, hash-verified

77 }
78
79 export async function cleanup(session: Session.Info) {
80 if (!session.revert) return
81 const sessionID = session.id
82 let msgs = await Session.messages({ sessionID })
83 const messageID = session.revert.messageID
84 const [preserve, remove] = splitWhen(msgs, (x) => x.info.id === messageID)
85 msgs = preserve
86 for (const msg of remove) {
87 await Storage.remove(["message", sessionID, msg.info.id])
88 await Bus.publish(MessageV2.Event.Removed, { sessionID: sessionID, messageID: msg.info.id })
89 }
90 const last = preserve.at(-1)
91 if (session.revert.partID && last) {
92 const partID = session.revert.partID
93 const [preserveParts, removeParts] = splitWhen(last.parts, (x) => x.id === partID)
94 last.parts = preserveParts
95 for (const part of removeParts) {
96 await Storage.remove(["part", last.info.id, part.id])
97 await Bus.publish(MessageV2.Event.PartRemoved, {
98 sessionID: sessionID,
99 messageID: last.info.id,
100 partID: part.id,
101 })
102 }
103 }
104 await Session.update(sessionID, (draft) => {
105 draft.revert = undefined
106 })
107 }
108}

Callers

nothing calls this directly

Calls 4

messagesMethod · 0.45
removeMethod · 0.45
publishMethod · 0.45
updateMethod · 0.45

Tested by

no test coverage detected