feat: TypeScript installation wizard with @clack/prompts TUI (#1)
Co-authored-by: Jason Woltje <jason@diversecanvas.com> Co-committed-by: Jason Woltje <jason@diversecanvas.com>
This commit was merged in pull request #1.
This commit is contained in:
26
src/config/config-service.ts
Normal file
26
src/config/config-service.ts
Normal file
@@ -0,0 +1,26 @@
|
||||
import type { SoulConfig, UserConfig, ToolsConfig, InstallAction } from '../types.js';
|
||||
import { FileConfigAdapter } from './file-adapter.js';
|
||||
|
||||
/**
|
||||
* ConfigService interface — abstracts config read/write operations.
|
||||
* Currently backed by FileConfigAdapter (writes .md files from templates).
|
||||
* Designed for future swap to SqliteConfigAdapter or PostgresConfigAdapter.
|
||||
*/
|
||||
export interface ConfigService {
|
||||
readSoul(): Promise<SoulConfig>;
|
||||
readUser(): Promise<UserConfig>;
|
||||
readTools(): Promise<ToolsConfig>;
|
||||
|
||||
writeSoul(config: SoulConfig): Promise<void>;
|
||||
writeUser(config: UserConfig): Promise<void>;
|
||||
writeTools(config: ToolsConfig): Promise<void>;
|
||||
|
||||
syncFramework(action: InstallAction): Promise<void>;
|
||||
}
|
||||
|
||||
export function createConfigService(
|
||||
mosaicHome: string,
|
||||
sourceDir: string,
|
||||
): ConfigService {
|
||||
return new FileConfigAdapter(mosaicHome, sourceDir);
|
||||
}
|
||||
Reference in New Issue
Block a user