refactor(client): isolate trajectory history

This commit is contained in:
imccyu
2026-07-29 20:21:37 +08:00
parent ee9ea7e3aa
commit e0022ff19e
28 changed files with 1261 additions and 698 deletions

View File

@@ -34,7 +34,6 @@ function sessionFakeFor() {
return {
open: vi.fn(() => Promise.resolve()),
loadOlder: vi.fn<ISession['loadOlder']>(() => Promise.resolve()),
loadAllHistory: vi.fn<ISession['loadAllHistory']>(() => Promise.resolve()),
prompt: vi.fn<ISession['prompt']>(() => Promise.resolve({ ok: true, value: { accepted: true } })),
cancel: vi.fn<ISession['cancel']>(() => Promise.resolve({ ok: true, value: { accepted: true } })),
} satisfies SessionBehaviorOverrides

View File

@@ -59,7 +59,6 @@ async function bench(nodes: ToolResultNode[]) {
snapshot: { nodes },
session: {
loadOlder: vi.fn<ISession['loadOlder']>(),
loadAllHistory: vi.fn<ISession['loadAllHistory']>(),
prompt: vi.fn<ISession['prompt']>(async () => ({ ok: true, value: { accepted: true } })),
},
})

View File

@@ -18,7 +18,7 @@ import { ConversationSession } from '../src/client/skeleton/ConversationSession.
import { InputBar } from '../src/client/skeleton/InputBar.tsx'
import type { InputBarProps } from '../src/client/skeleton/InputBar.tsx'
import type {
ComposerBarOwnerProps, ConversationSessionOwnerProps,
ComposerBarOwnerProps,
} from '../src/client/contract/slots.ts'
/** Machine-backed wiring over a sink spy. */
@@ -88,10 +88,8 @@ function mount(
slotCalls.push(key)
if (key === 'conversation.hero.workspace') { pickerOwner = owner; return null }
if (key === 'conversation.session') {
const sessionOwner = owner as ConversationSessionOwnerProps
return (
<ConversationSession
composer={sessionOwner.composer}
sessionId={SID}
SessionProvider={({ children }) => children(SID)}
useSession={useSession}