fix: route new prompt sync to target directory
Keeps optimistic prompt state in the session directory Routes live assistant part updates using upstream event payloads Adds regressions for startup session switch races
This commit is contained in:
@@ -571,11 +571,21 @@ const getSessionIdFromPayload = (event: Event): string | null => {
|
||||
}
|
||||
|
||||
if (event.type === "message.part.updated") {
|
||||
const sessionID = props.sessionID
|
||||
if (typeof sessionID === "string" && sessionID.length > 0) {
|
||||
return sessionID
|
||||
}
|
||||
|
||||
const part = props.part
|
||||
if (!part || typeof part !== "object") {
|
||||
return null
|
||||
}
|
||||
const sessionID = (part as { sessionID?: unknown }).sessionID
|
||||
const partSessionID = (part as { sessionID?: unknown }).sessionID
|
||||
return typeof partSessionID === "string" && partSessionID.length > 0 ? partSessionID : null
|
||||
}
|
||||
|
||||
if (event.type === "message.part.delta" || event.type === "message.part.removed") {
|
||||
const sessionID = props.sessionID
|
||||
return typeof sessionID === "string" && sessionID.length > 0 ? sessionID : null
|
||||
}
|
||||
|
||||
@@ -658,8 +668,8 @@ const getMessageIdFromPayload = (event: Event): string | null => {
|
||||
if (!part || typeof part !== "object") {
|
||||
return null
|
||||
}
|
||||
const messageID = (part as { messageID?: unknown }).messageID
|
||||
return typeof messageID === "string" && messageID.length > 0 ? messageID : null
|
||||
const partMessageID = (part as { messageID?: unknown }).messageID
|
||||
return typeof partMessageID === "string" && partMessageID.length > 0 ? partMessageID : null
|
||||
}
|
||||
|
||||
return null
|
||||
@@ -957,9 +967,12 @@ const updateRoutingIndexFromEvent = (
|
||||
}
|
||||
|
||||
case "message.part.updated": {
|
||||
const part = (payload.properties as { part?: Part }).part as (Part & { sessionID?: string; messageID?: string }) | undefined
|
||||
if (part?.messageID && part.sessionID) {
|
||||
setIndexedMessage(routingIndex, part.sessionID, part.messageID, directory)
|
||||
const props = payload.properties as { sessionID?: string; part?: Part }
|
||||
const part = props.part as (Part & { sessionID?: string; messageID?: string }) | undefined
|
||||
const sessionID = part?.sessionID ?? props.sessionID
|
||||
const messageID = part?.messageID
|
||||
if (messageID && sessionID) {
|
||||
setIndexedMessage(routingIndex, sessionID, messageID, directory)
|
||||
}
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user