feat(coding): add renderer conversation store
This commit is contained in:
55
src/lib/coding-conversations.ts
Normal file
55
src/lib/coding-conversations.ts
Normal file
@@ -0,0 +1,55 @@
|
||||
import type {
|
||||
ConversationSnapshot,
|
||||
PromptAcceptance,
|
||||
PromptMode,
|
||||
} from '@/types/coding-conversation';
|
||||
import {
|
||||
createHostEventSource,
|
||||
ensureHostApiToken,
|
||||
hostApiFetch,
|
||||
} from './host-api';
|
||||
|
||||
export interface SubmitCodingConversationPromptInput {
|
||||
conversationId: string;
|
||||
clientRequestId: string;
|
||||
mode: PromptMode;
|
||||
text: string;
|
||||
attachments: Array<{ attachmentId: string }>;
|
||||
}
|
||||
|
||||
export async function getCodingConversationSnapshot(
|
||||
conversationId: string,
|
||||
): Promise<ConversationSnapshot> {
|
||||
const response = await hostApiFetch<{ snapshot: ConversationSnapshot }>(
|
||||
`/api/coding/conversations/${encodeURIComponent(conversationId)}/snapshot`,
|
||||
);
|
||||
return response.snapshot;
|
||||
}
|
||||
|
||||
export async function submitCodingConversationPrompt(
|
||||
input: SubmitCodingConversationPromptInput,
|
||||
): Promise<PromptAcceptance> {
|
||||
const response = await hostApiFetch<{ acceptance: PromptAcceptance }>(
|
||||
`/api/coding/conversations/${encodeURIComponent(input.conversationId)}/prompt`,
|
||||
{
|
||||
method: 'POST',
|
||||
body: JSON.stringify({
|
||||
clientRequestId: input.clientRequestId,
|
||||
mode: input.mode,
|
||||
text: input.text,
|
||||
attachments: input.attachments,
|
||||
}),
|
||||
},
|
||||
);
|
||||
return response.acceptance;
|
||||
}
|
||||
|
||||
export async function openCodingConversationEvents(
|
||||
conversationId?: string,
|
||||
): Promise<EventSource> {
|
||||
await ensureHostApiToken();
|
||||
const params = new URLSearchParams();
|
||||
if (conversationId) params.set('conversationId', conversationId);
|
||||
const query = params.toString();
|
||||
return createHostEventSource(`/api/coding/events${query ? `?${query}` : ''}`);
|
||||
}
|
||||
Reference in New Issue
Block a user