Files
makelore/electron/opencode/project-conversations.ts
inman 80e8386fa6
Some checks failed
Electron E2E / Electron E2E (macos-latest) (push) Has been cancelled
Electron E2E / Electron E2E (ubuntu-latest) (push) Has been cancelled
Electron E2E / Electron E2E (windows-latest) (push) Has been cancelled
feat: update Makelore modules and conversations
2026-07-31 10:08:41 +08:00

34 lines
1.2 KiB
TypeScript

import path from 'node:path';
import { mkdir, readFile, writeFile } from 'node:fs/promises';
import {
createProjectConversationState,
normalizeProjectConversationState,
type ProjectConversationState,
} from '../../shared/project-conversations';
export const PROJECT_CONVERSATIONS_PATH = '.niancode/conversations.json';
function statePath(projectPath: string): string {
return path.join(projectPath, PROJECT_CONVERSATIONS_PATH);
}
export async function readProjectConversationState(projectPath: string): Promise<ProjectConversationState> {
try {
const raw = JSON.parse(await readFile(statePath(projectPath), 'utf8')) as unknown;
return normalizeProjectConversationState(raw);
} catch (error) {
if ((error as NodeJS.ErrnoException).code === 'ENOENT') return createProjectConversationState();
throw error;
}
}
export async function writeProjectConversationState(
projectPath: string,
value: unknown,
): Promise<ProjectConversationState> {
const state = normalizeProjectConversationState(value);
await mkdir(path.dirname(statePath(projectPath)), { recursive: true });
await writeFile(statePath(projectPath), `${JSON.stringify(state, null, 2)}\n`, 'utf8');
return state;
}