fix: e2e test

This commit is contained in:
Catriel Müller
2026-02-26 15:41:03 -03:00
parent 223098ccaf
commit ecd9c89838
4 changed files with 63 additions and 34 deletions
@@ -144,6 +144,7 @@ test("blocked question flow unblocks after submit", async ({ page, sdk, gotoSess
{
header: "Need input",
question: "Pick one option",
multiple: true, // kilocode_change
options: [
{ label: "Continue", description: "Continue now" },
{ label: "Stop", description: "Stop here" },
@@ -269,6 +270,7 @@ test("child session question request blocks parent dock and unblocks after submi
{
header: "Child input",
question: "Pick one child option",
multiple: true, // kilocode_change
options: [
{ label: "Continue", description: "Continue child" },
{ label: "Stop", description: "Stop child" },
+56 -33
View File
@@ -688,6 +688,9 @@ export namespace Session {
const { KiloSessions } = await import("@/kilo-sessions/kilo-sessions")
await KiloSessions.remove(sessionID).catch(() => {}) // kilocode_change
platformOverrides.delete(sessionID) // kilocode_change - clean up platform override
// kilocode_change start - cancel running processor before deleting to avoid FK constraint errors
SessionPrompt.cancel(sessionID)
// kilocode_change end
// CASCADE delete handles messages and parts automatically
Database.use((db) => {
db.delete(SessionTable).where(eq(SessionTable.id, sessionID)).run()
@@ -705,22 +708,32 @@ export namespace Session {
export const updateMessage = fn(MessageV2.Info, async (msg) => {
const time_created = msg.time.created
const { id, sessionID, ...data } = msg
Database.use((db) => {
db.insert(MessageTable)
.values({
id,
session_id: sessionID,
time_created,
data,
})
.onConflictDoUpdate({ target: MessageTable.id, set: { data } })
.run()
Database.effect(() =>
Bus.publish(MessageV2.Event.Updated, {
info: msg,
}),
)
})
// kilocode_change start - ignore FK errors when session was deleted while processor was still running
try {
Database.use((db) => {
db.insert(MessageTable)
.values({
id,
session_id: sessionID,
time_created,
data,
})
.onConflictDoUpdate({ target: MessageTable.id, set: { data } })
.run()
Database.effect(() =>
Bus.publish(MessageV2.Event.Updated, {
info: msg,
}),
)
})
} catch (e: any) {
if (e?.code === "SQLITE_CONSTRAINT_FOREIGNKEY") {
log.warn("skipping message update for deleted session", { id: msg.id, sessionID: msg.sessionID })
} else {
throw e
}
}
// kilocode_change end
return msg
})
@@ -774,23 +787,33 @@ export namespace Session {
export const updatePart = fn(UpdatePartInput, async (part) => {
const { id, messageID, sessionID, ...data } = part
const time = Date.now()
Database.use((db) => {
db.insert(PartTable)
.values({
id,
message_id: messageID,
session_id: sessionID,
time_created: time,
data,
})
.onConflictDoUpdate({ target: PartTable.id, set: { data } })
.run()
Database.effect(() =>
Bus.publish(MessageV2.Event.PartUpdated, {
part,
}),
)
})
// kilocode_change start - ignore FK errors when session was deleted while processor was still running
try {
Database.use((db) => {
db.insert(PartTable)
.values({
id,
message_id: messageID,
session_id: sessionID,
time_created: time,
data,
})
.onConflictDoUpdate({ target: PartTable.id, set: { data } })
.run()
Database.effect(() =>
Bus.publish(MessageV2.Event.PartUpdated, {
part,
}),
)
})
} catch (e: any) {
if (e?.code === "SQLITE_CONSTRAINT_FOREIGNKEY") {
log.warn("skipping part update for deleted session", { id: part.id, sessionID: part.sessionID })
} else {
throw e
}
}
// kilocode_change end
return part
})
+1
View File
@@ -768,6 +768,7 @@ export namespace SessionPrompt {
SessionCompaction.prune({ sessionID })
// kilocode_change start
finished = true
abort.throwIfAborted()
// kilocode_change end
for await (const item of MessageV2.stream(sessionID)) {
if (item.info.role === "user") continue
+4 -1
View File
@@ -101,7 +101,10 @@ export namespace SessionSummary {
const messages = input.messages.filter(
(m) => m.info.id === input.messageID || (m.info.role === "assistant" && m.info.parentID === input.messageID),
)
const msgWithParts = messages.find((m) => m.info.id === input.messageID)!
// kilocode_change start - session may have been deleted before summarization completed
const msgWithParts = messages.find((m) => m.info.id === input.messageID)
if (!msgWithParts) return
// kilocode_change end
const userMsg = msgWithParts.info as MessageV2.User
const diffs = await computeDiff({ messages })
userMsg.summary = {