feat(coding): add conversation archive and first-message titles

This commit is contained in:
2026-09-20 12:43:51 +08:00
parent d61226532a
commit fd0293fe3d
22 changed files with 698 additions and 69 deletions

View File

@@ -82,7 +82,8 @@ describe('real managed Pi user-entry fork', () => {
});
const source = await store.create({
agentId: 'agent-real-fork',
title: 'Persisted source',
title: '新对话',
titleMode: 'automatic',
model,
modelResolution: 'resolved',
});
@@ -185,6 +186,7 @@ describe('real managed Pi user-entry fork', () => {
try {
const sourceSnapshot = await service.getSnapshot(source.id);
expect((await service.getConversation(source.id)).title).toBe('Persisted user fork source');
expect(processOptions[0]?.sessionDir).toBe(sessionDirectory);
expect(processOptions[0]?.cwd).toBe(project.path);
expect(sourceSnapshot.nodes).toEqual(expect.arrayContaining([
@@ -204,6 +206,7 @@ describe('real managed Pi user-entry fork', () => {
store.get(forked.id),
]);
expect(forked.agentId).toBe(source.agentId);
expect(forkedBinding).toMatchObject({ titleMode: 'manual', autoTitleSet: true });
expect(forkedSnapshot).toMatchObject({
conversation: { id: forked.id, agentId: source.agentId },
nodes: [],
@@ -221,6 +224,7 @@ describe('real managed Pi user-entry fork', () => {
expect(forkedBinding?.sessionKey).not.toBe(sourceBinding?.sessionKey);
expect(runtime.getDiagnostics().workers).toHaveLength(2);
} finally {
service.dispose();
await runtime.shutdown();
await extensionHost.close();
}