feat(tui): refresh agents after update events

This commit is contained in:
Dax Raad 2026-06-29 18:52:00 -04:00
commit 02cb350880
17 changed files with 576 additions and 30 deletions

View file

@ -158,6 +158,9 @@ export const { use: useData, provider: DataProvider } = createSimpleContext({
result.location.provider.refresh(event.location),
])
break
case "agent.updated":
void result.location.agent.refresh(event.location)
break
case "session.next.agent.switched":
if (store.session.info[event.data.sessionID])
setStore("session", "info", event.data.sessionID, "agent", event.data.agent)

View file

@ -170,9 +170,22 @@ export function Session() {
})
onCleanup(() => setEpilogue())
const messages = sessionMessages
const descendantSessionIDs = createMemo(() => {
if (session()?.parentID) return []
const sessions = data.session.list()
const childrenByParent = sessions.reduce((acc, item) => {
if (!item.parentID) return acc
acc.set(item.parentID, [...(acc.get(item.parentID) ?? []), item.id])
return acc
}, new Map<string, string[]>())
function collect(sessionID: string): string[] {
return (childrenByParent.get(sessionID) ?? []).flatMap((id) => [id, ...collect(id)])
}
return collect(route.sessionID)
})
const permissions = createMemo(() => {
if (session()?.parentID) return []
return data.session.permission.list(route.sessionID) ?? []
return [route.sessionID, ...descendantSessionIDs()].flatMap((sessionID) => data.session.permission.list(sessionID) ?? [])
})
const questions = createMemo(() => {
if (session()?.parentID) return []
@ -227,6 +240,12 @@ export function Session() {
const editor = useEditorContext()
const rows = createSessionRows(() => route.sessionID)
createEffect(
on(descendantSessionIDs, (sessionIDs) => {
void Promise.all(sessionIDs.map((sessionID) => data.session.permission.refresh(sessionID)))
}),
)
createEffect(() => {
const sessionID = route.sessionID
void (async () => {