UNPKG

polish-cli

Version:

AI-powered file organization for Obsidian with automatic markdown conversion

69 lines 2.92 kB
export { FileType } from './types/index.js'; export { ConfigService } from './services/ConfigService.js'; export { ProfileManager } from './services/ProfileManager.js'; export { ClaudeService } from './services/ClaudeService.js'; export { FileScanner } from './modules/FileScanner.js'; export { FileProcessor } from './modules/FileProcessor.js'; export { MarkdownGenerator } from './modules/MarkdownGenerator.js'; export { ContentExtractor } from './modules/ContentExtractor.js'; import { ProfileManager } from './services/ProfileManager.js'; import { ConfigService } from './services/ConfigService.js'; // Main Polish class for programmatic use export class Polish { config; profileManager; profileName; constructor(config, profileName) { this.profileManager = new ProfileManager(); this.profileName = profileName; if (config) { const configService = new ConfigService(); this.config = { ...configService.getDefaultConfig(), ...config }; } else { // Will be loaded in loadConfig or organize methods this.config = new ConfigService().getDefaultConfig(); } } async loadConfig() { try { await this.profileManager.initialize(); if (this.profileName) { const profile = await this.profileManager.getProfile(this.profileName); if (!profile) { throw new Error(`Profile '${this.profileName}' not found`); } this.config = profile.config; } else { this.config = await this.profileManager.getActiveConfig(); } } catch (error) { console.warn('Could not load profile config, using defaults'); } } async organize(options = {}) { // Ensure config is loaded if (!this.config || this.config === new ConfigService().getDefaultConfig()) { await this.loadConfig(); } const { FileScanner } = await import('./modules/FileScanner.js'); const { FileProcessor } = await import('./modules/FileProcessor.js'); const { ClaudeService } = await import('./services/ClaudeService.js'); const claudeService = new ClaudeService(this.config.api); const fileScanner = new FileScanner(this.config); const fileProcessor = new FileProcessor(this.config, claudeService); const sources = options.sources ? options.sources.map(path => ({ path, includeSubfolders: true })) : this.config.sources; const files = await fileScanner.scan(sources); return await fileProcessor.processFiles(files, { dryRun: options.dryRun || false, copy: options.copy || false, batchSize: 10, onProgress: options.onProgress, }); } } //# sourceMappingURL=index.js.map