feat: implement PI core chat timeline
This commit is contained in:
48
src/lib/coding-projects.ts
Normal file
48
src/lib/coding-projects.ts
Normal 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;
|
||||
}
|
||||
Reference in New Issue
Block a user