feat: implement PI core chat timeline

This commit is contained in:
2026-08-24 00:34:03 +08:00
parent 54d8bb2e4a
commit 612135f911
40 changed files with 3881 additions and 119 deletions

View File

@@ -0,0 +1,48 @@
import { hostApiFetch } from './host-api';
import type {
CodingConversationMetadata,
CodingProjectConfigSnapshot,
CodingProjectSummary,
} from '@/types/coding-project';
export interface CodingProjectCatalog {
projects: CodingProjectSummary[];
activeProjectId: string | null;
}
export async function listCodingProjects(): Promise<CodingProjectCatalog> {
return await hostApiFetch<CodingProjectCatalog>('/api/coding/projects');
}
export async function getCodingProjectConfig(
projectId: string,
): Promise<CodingProjectConfigSnapshot> {
const response = await hostApiFetch<{ snapshot: CodingProjectConfigSnapshot }>(
`/api/coding/projects/config?projectId=${encodeURIComponent(projectId)}`,
);
return response.snapshot;
}
export async function listCodingProjectConversations(
projectId: string,
): Promise<CodingConversationMetadata[]> {
const response = await hostApiFetch<{ conversations: CodingConversationMetadata[] }>(
`/api/coding/projects/conversations?projectId=${encodeURIComponent(projectId)}`,
);
return response.conversations;
}
export async function createCodingProjectConversation(input: {
projectId: string;
agentId: string;
title: string;
}): Promise<CodingConversationMetadata> {
const response = await hostApiFetch<{ conversation: CodingConversationMetadata }>(
'/api/coding/projects/conversations',
{
method: 'POST',
body: JSON.stringify(input),
},
);
return response.conversation;
}