feat: remove legacy OpenCode runtime

Cut product flows over to Coding/Pi and retain only the migration-owned v1 boundary. Promote supported native optional packages because electron-builder omitted pnpm transitive optional closure from the packaged ASAR.
This commit is contained in:
2026-08-24 12:17:43 +08:00
parent 61fede2b4d
commit 5a275b93a7
199 changed files with 1330 additions and 64725 deletions

View File

@@ -4,6 +4,7 @@ import type {
CodingProjectConfigSnapshot,
CodingProjectSummary,
} from '@/types/coding-project';
import type { ProjectType } from '../../shared/project-config';
export interface CodingProjectCatalog {
projects: CodingProjectSummary[];
@@ -14,6 +15,52 @@ export async function listCodingProjects(): Promise<CodingProjectCatalog> {
return await hostApiFetch<CodingProjectCatalog>('/api/coding/projects');
}
export async function openCodingProject(projectPath: string): Promise<CodingProjectSummary> {
const response = await hostApiFetch<{ project: CodingProjectSummary }>('/api/coding/projects/open', {
method: 'POST',
body: JSON.stringify({ projectPath }),
});
return response.project;
}
export async function createCodingProject(input: {
projectPath?: string;
parentPath?: string;
projectName?: string;
projectType?: ProjectType;
}): Promise<CodingProjectConfigSnapshot> {
const response = await hostApiFetch<{ snapshot: CodingProjectConfigSnapshot }>('/api/coding/projects/create', {
method: 'POST',
body: JSON.stringify(input),
});
return response.snapshot;
}
export async function setActiveCodingProject(projectId: string): Promise<CodingProjectSummary> {
const response = await hostApiFetch<{ project: CodingProjectSummary }>('/api/coding/projects/active', {
method: 'POST',
body: JSON.stringify({ projectId }),
});
return response.project;
}
export async function removeCodingProject(projectId: string): Promise<void> {
await hostApiFetch('/api/coding/projects/remove', {
method: 'POST',
body: JSON.stringify({ projectId }),
});
}
export async function acknowledgeLegacyCodingConversationNotice(
projectId: string,
): Promise<CodingProjectConfigSnapshot> {
const response = await hostApiFetch<{ snapshot: CodingProjectConfigSnapshot }>(
'/api/coding/projects/legacy-conversation-notice/acknowledge',
{ method: 'POST', body: JSON.stringify({ projectId }) },
);
return response.snapshot;
}
export async function getCodingProjectConfig(
projectId: string,
): Promise<CodingProjectConfigSnapshot> {