feat(core): generalize session input inbox (#36005)

This commit is contained in:
Kit Langton 2026-07-08 22:07:45 -04:00 committed by GitHub
commit 984cab7938
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
47 changed files with 1590 additions and 767 deletions

View file

@ -75,7 +75,7 @@ export function createSessionRows(sessionID: Accessor<string>) {
on(
() =>
data.session.message.list(sessionID()).flatMap((message) =>
message.type === "user"
message.type === "user" || message.type === "synthetic"
? [
{
id: message.id,
@ -156,7 +156,7 @@ export function createSessionRows(sessionID: Accessor<string>) {
const isPending = (messageID: string) => {
const message = data.session.message.get(sessionID(), messageID)
if (message?.type === "user") return data.session.input.has(sessionID(), messageID)
if (message?.type === "user" || message?.type === "synthetic") return data.session.input.has(sessionID(), messageID)
return message?.type === "compaction" && message.status === "running"
}
@ -168,11 +168,21 @@ export function createSessionRows(sessionID: Accessor<string>) {
const message = (event: { id: string; data: { sessionID: string } }) => {
if (event.data.sessionID === sessionID()) appendMessage(event.id.replace(/^evt_/, "msg_"))
}
const input = (event: { data: { sessionID: string; inputID: string } }) => {
if (event.data.sessionID === sessionID()) appendMessage(event.data.inputID)
const input = (event: {
data: {
sessionID: string
inputID: string
input: { type: "user" } | { type: "synthetic"; data: { description?: string } }
}
}) => {
if (
event.data.sessionID === sessionID() &&
(event.data.input.type === "user" || event.data.input.data.description?.trim())
)
appendMessage(event.data.inputID)
}
const subscriptions = [
data.on("session.prompt.admitted", input),
data.on("session.input.admitted", input),
data.on("session.compaction.started", message),
data.on("session.instructions.updated", message),
data.on("session.synthetic", (event) => {