@mediaproc/cli 0.6.0 → 0.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/README.md +202 -1399
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +21 -12
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/batch.d.ts +3 -0
  6. package/dist/commands/batch.d.ts.map +1 -0
  7. package/dist/commands/batch.js +269 -0
  8. package/dist/commands/batch.js.map +1 -0
  9. package/dist/commands/benchmark.d.ts +3 -0
  10. package/dist/commands/benchmark.d.ts.map +1 -0
  11. package/dist/commands/benchmark.js +124 -0
  12. package/dist/commands/benchmark.js.map +1 -0
  13. package/dist/commands/compare.d.ts +3 -0
  14. package/dist/commands/compare.d.ts.map +1 -0
  15. package/dist/commands/compare.js +102 -0
  16. package/dist/commands/compare.js.map +1 -0
  17. package/dist/commands/detect.d.ts +6 -0
  18. package/dist/commands/detect.d.ts.map +1 -0
  19. package/dist/commands/detect.js +90 -0
  20. package/dist/commands/detect.js.map +1 -0
  21. package/dist/commands/doctor.d.ts +3 -0
  22. package/dist/commands/doctor.d.ts.map +1 -0
  23. package/dist/commands/doctor.js +222 -0
  24. package/dist/commands/doctor.js.map +1 -0
  25. package/dist/commands/history.d.ts +15 -0
  26. package/dist/commands/history.d.ts.map +1 -0
  27. package/dist/commands/history.js +215 -0
  28. package/dist/commands/history.js.map +1 -0
  29. package/dist/commands/search.d.ts +3 -0
  30. package/dist/commands/search.d.ts.map +1 -0
  31. package/dist/commands/search.js +193 -0
  32. package/dist/commands/search.js.map +1 -0
  33. package/dist/commands/stats.d.ts +3 -0
  34. package/dist/commands/stats.d.ts.map +1 -0
  35. package/dist/commands/stats.js +155 -0
  36. package/dist/commands/stats.js.map +1 -0
  37. package/dist/commands/template.d.ts +3 -0
  38. package/dist/commands/template.d.ts.map +1 -0
  39. package/dist/commands/template.js +184 -0
  40. package/dist/commands/template.js.map +1 -0
  41. package/dist/commands/watch.d.ts +3 -0
  42. package/dist/commands/watch.d.ts.map +1 -0
  43. package/dist/commands/watch.js +106 -0
  44. package/dist/commands/watch.js.map +1 -0
  45. package/dist/commands/workspace.d.ts +3 -0
  46. package/dist/commands/workspace.d.ts.map +1 -0
  47. package/dist/commands/workspace.js +201 -0
  48. package/dist/commands/workspace.js.map +1 -0
  49. package/dist/utils/branding.d.ts +11 -0
  50. package/dist/utils/branding.d.ts.map +1 -0
  51. package/dist/utils/branding.js +59 -0
  52. package/dist/utils/branding.js.map +1 -0
  53. package/package.json +1 -1
  54. package/dist/commands/convert.d.ts +0 -7
  55. package/dist/commands/convert.d.ts.map +0 -1
  56. package/dist/commands/convert.js +0 -96
  57. package/dist/commands/convert.js.map +0 -1
  58. package/dist/commands/info.d.ts +0 -7
  59. package/dist/commands/info.d.ts.map +0 -1
  60. package/dist/commands/info.js +0 -117
  61. package/dist/commands/info.js.map +0 -1
  62. package/dist/commands/optimize.d.ts +0 -7
  63. package/dist/commands/optimize.d.ts.map +0 -1
  64. package/dist/commands/optimize.js +0 -196
  65. package/dist/commands/optimize.js.map +0 -1
  66. package/dist/commands/run.d.ts +0 -3
  67. package/dist/commands/run.d.ts.map +0 -1
  68. package/dist/commands/run.js +0 -16
  69. package/dist/commands/run.js.map +0 -1
  70. package/dist/commands/validate.d.ts +0 -3
  71. package/dist/commands/validate.d.ts.map +0 -1
  72. package/dist/commands/validate.js +0 -16
  73. package/dist/commands/validate.js.map +0 -1
@@ -0,0 +1,90 @@
1
+ import chalk from 'chalk';
2
+ import { existsSync } from 'fs';
3
+ import { extname } from 'path';
4
+ /**
5
+ * Detect media file type and suggest appropriate plugin
6
+ */
7
+ export function detectCommand(program) {
8
+ program
9
+ .command('detect <file>')
10
+ .description('Detect media file type and suggest appropriate plugin')
11
+ .option('-v, --verbose', 'Show detailed file information')
12
+ .action((file, options) => {
13
+ if (!existsSync(file)) {
14
+ console.error(chalk.red(`✗ File not found: ${file}`));
15
+ process.exit(1);
16
+ }
17
+ const ext = extname(file).toLowerCase().slice(1);
18
+ // Media type mappings
19
+ const mediaTypes = {
20
+ // Images
21
+ jpg: { type: 'Image', plugin: 'image', color: 'cyan' },
22
+ jpeg: { type: 'Image', plugin: 'image', color: 'cyan' },
23
+ png: { type: 'Image', plugin: 'image', color: 'cyan' },
24
+ webp: { type: 'Image', plugin: 'image', color: 'cyan' },
25
+ gif: { type: 'Image', plugin: 'image', color: 'cyan' },
26
+ bmp: { type: 'Image', plugin: 'image', color: 'cyan' },
27
+ tiff: { type: 'Image', plugin: 'image', color: 'cyan' },
28
+ avif: { type: 'Image', plugin: 'image', color: 'cyan' },
29
+ svg: { type: 'Image', plugin: 'image', color: 'cyan' },
30
+ // Videos
31
+ mp4: { type: 'Video', plugin: 'video', color: 'magenta' },
32
+ webm: { type: 'Video', plugin: 'video', color: 'magenta' },
33
+ mkv: { type: 'Video', plugin: 'video', color: 'magenta' },
34
+ avi: { type: 'Video', plugin: 'video', color: 'magenta' },
35
+ mov: { type: 'Video', plugin: 'video', color: 'magenta' },
36
+ flv: { type: 'Video', plugin: 'video', color: 'magenta' },
37
+ wmv: { type: 'Video', plugin: 'video', color: 'magenta' },
38
+ m4v: { type: 'Video', plugin: 'video', color: 'magenta' },
39
+ // Audio
40
+ mp3: { type: 'Audio', plugin: 'audio', color: 'green' },
41
+ wav: { type: 'Audio', plugin: 'audio', color: 'green' },
42
+ ogg: { type: 'Audio', plugin: 'audio', color: 'green' },
43
+ flac: { type: 'Audio', plugin: 'audio', color: 'green' },
44
+ aac: { type: 'Audio', plugin: 'audio', color: 'green' },
45
+ m4a: { type: 'Audio', plugin: 'audio', color: 'green' },
46
+ opus: { type: 'Audio', plugin: 'audio', color: 'green' },
47
+ // Documents
48
+ pdf: { type: 'Document', plugin: 'document', color: 'yellow' },
49
+ docx: { type: 'Document', plugin: 'document', color: 'yellow' },
50
+ pptx: { type: 'Document', plugin: 'document', color: 'yellow' },
51
+ txt: { type: 'Document', plugin: 'document', color: 'yellow' },
52
+ md: { type: 'Document', plugin: 'document', color: 'yellow' },
53
+ };
54
+ const detected = mediaTypes[ext];
55
+ if (!detected) {
56
+ console.log(chalk.yellow(`⚠ Unknown file type: ${ext}`));
57
+ console.log(chalk.dim('\\nNo plugin suggestions available.'));
58
+ return;
59
+ }
60
+ const colorFn = chalk[detected.color];
61
+ console.log(chalk.bold('\\n📁 File Detection Result:\\n'));
62
+ console.log(`File: ${chalk.cyan(file)}`);
63
+ console.log(`Type: ${colorFn(detected.type)}`);
64
+ console.log(`Extension: ${chalk.dim(ext)}`);
65
+ console.log(chalk.bold('\\n💡 Suggested Plugin:\\n'));
66
+ console.log(`Plugin: ${chalk.green(`@mediaproc/${detected.plugin}`)}`);
67
+ console.log(`Install: ${chalk.dim(`mediaproc add ${detected.plugin}`)}`);
68
+ console.log(chalk.bold('\\n🚀 Quick Commands:\\n'));
69
+ console.log(chalk.dim(`# View available commands for this file type:`));
70
+ console.log(chalk.cyan(`mediaproc ${detected.plugin} --help`));
71
+ if (options.verbose) {
72
+ console.log(chalk.bold('\\n📊 Available Operations:\\n'));
73
+ if (detected.type === 'Image') {
74
+ console.log(chalk.dim('• resize, convert, compress, optimize, crop, rotate'));
75
+ console.log(chalk.dim('• blur, sharpen, grayscale, watermark, thumbnail'));
76
+ }
77
+ else if (detected.type === 'Video') {
78
+ console.log(chalk.dim('• compress, transcode, trim, resize, merge, extract'));
79
+ }
80
+ else if (detected.type === 'Audio') {
81
+ console.log(chalk.dim('• convert, normalize, merge, extract, trim'));
82
+ }
83
+ else if (detected.type === 'Document') {
84
+ console.log(chalk.dim('• convert, compress, merge, extract'));
85
+ }
86
+ }
87
+ console.log('');
88
+ });
89
+ }
90
+ //# sourceMappingURL=detect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"detect.js","sourceRoot":"","sources":["../../src/commands/detect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const doctorCommand: Command;
3
+ //# sourceMappingURL=doctor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.d.ts","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAgBpC,eAAO,MAAM,aAAa,SA4EtB,CAAC"}
@@ -0,0 +1,222 @@
1
+ import { Command } from 'commander';
2
+ import { exec } from 'child_process';
3
+ import { promisify } from 'util';
4
+ import * as fs from 'fs';
5
+ import * as path from 'path';
6
+ import { showBranding } from '../utils/branding';
7
+ const execAsync = promisify(exec);
8
+ export const doctorCommand = new Command()
9
+ .name('doctor')
10
+ .description('Run system diagnostics and health checks')
11
+ .option('--verbose', 'Show detailed diagnostic information')
12
+ .option('--fix', 'Attempt to fix issues automatically')
13
+ .action(async (options) => {
14
+ console.log('\n🔍 MediaProc System Diagnostics\n');
15
+ console.log('━'.repeat(50));
16
+ const results = [];
17
+ // Check Node.js version
18
+ results.push(await checkNodeVersion());
19
+ // Check FFmpeg
20
+ results.push(await checkFFmpeg());
21
+ // Check Sharp/libvips
22
+ results.push(await checkSharp());
23
+ // Check installed plugins
24
+ results.push(await checkPlugins());
25
+ // Check system resources
26
+ results.push(await checkSystemResources());
27
+ // Check for conflicts
28
+ results.push(await checkConflicts());
29
+ // Display results
30
+ console.log('\n📊 Diagnostic Results:\n');
31
+ let passCount = 0;
32
+ let warnCount = 0;
33
+ let failCount = 0;
34
+ results.forEach((result) => {
35
+ const icon = result.status === 'pass' ? '✓' : result.status === 'warn' ? '⚠' : '✗';
36
+ const color = result.status === 'pass' ? '\x1b[32m' : result.status === 'warn' ? '\x1b[33m' : '\x1b[31m';
37
+ console.log(`${color}${icon} ${result.name}\x1b[0m`);
38
+ console.log(` ${result.message}`);
39
+ if (result.suggestion) {
40
+ console.log(` 💡 ${result.suggestion}`);
41
+ }
42
+ console.log('');
43
+ if (result.status === 'pass')
44
+ passCount++;
45
+ else if (result.status === 'warn')
46
+ warnCount++;
47
+ else
48
+ failCount++;
49
+ });
50
+ // Summary
51
+ console.log('━'.repeat(50));
52
+ console.log(`\n📈 Summary: ${passCount} passed, ${warnCount} warnings, ${failCount} failed\n`);
53
+ if (failCount > 0) {
54
+ console.log('❌ Some critical issues found. Please resolve them before using MediaProc.');
55
+ showBranding();
56
+ process.exit(1);
57
+ }
58
+ else if (warnCount > 0) {
59
+ console.log('⚠️ Some warnings found. MediaProc should work, but consider fixing warnings.');
60
+ }
61
+ else {
62
+ console.log('✅ All checks passed! MediaProc is ready to use.');
63
+ }
64
+ if (options.verbose) {
65
+ console.log('\n📝 Detailed Information:');
66
+ console.log(` Node.js: ${process.version}`);
67
+ console.log(` Platform: ${process.platform}`);
68
+ console.log(` Architecture: ${process.arch}`);
69
+ console.log(` Memory: ${Math.round(process.memoryUsage().heapUsed / 1024 / 1024)}MB used`);
70
+ }
71
+ showBranding();
72
+ });
73
+ async function checkNodeVersion() {
74
+ const version = process.version;
75
+ const major = parseInt(version.slice(1).split('.')[0]);
76
+ if (major >= 18) {
77
+ return {
78
+ name: 'Node.js Version',
79
+ status: 'pass',
80
+ message: `${version} (compatible)`
81
+ };
82
+ }
83
+ else if (major >= 16) {
84
+ return {
85
+ name: 'Node.js Version',
86
+ status: 'warn',
87
+ message: `${version} (works but upgrade recommended)`,
88
+ suggestion: 'Upgrade to Node.js 18+ for best performance'
89
+ };
90
+ }
91
+ else {
92
+ return {
93
+ name: 'Node.js Version',
94
+ status: 'fail',
95
+ message: `${version} (incompatible)`,
96
+ suggestion: 'Please upgrade to Node.js 18 or higher'
97
+ };
98
+ }
99
+ }
100
+ async function checkFFmpeg() {
101
+ try {
102
+ const { stdout } = await execAsync('ffmpeg -version');
103
+ const version = stdout.split('\n')[0].match(/ffmpeg version (\S+)/)?.[1] || 'unknown';
104
+ return {
105
+ name: 'FFmpeg',
106
+ status: 'pass',
107
+ message: `Version ${version} installed`
108
+ };
109
+ }
110
+ catch (error) {
111
+ return {
112
+ name: 'FFmpeg',
113
+ status: 'fail',
114
+ message: 'Not installed',
115
+ suggestion: 'Install FFmpeg: brew install ffmpeg (macOS) or apt install ffmpeg (Linux)'
116
+ };
117
+ }
118
+ }
119
+ async function checkSharp() {
120
+ try {
121
+ require('sharp');
122
+ return {
123
+ name: 'Sharp (Image Processing)',
124
+ status: 'pass',
125
+ message: 'Installed and working'
126
+ };
127
+ }
128
+ catch (error) {
129
+ return {
130
+ name: 'Sharp (Image Processing)',
131
+ status: 'warn',
132
+ message: 'Not found',
133
+ suggestion: 'Install with: npm install -g sharp (optional but recommended for image processing)'
134
+ };
135
+ }
136
+ }
137
+ async function checkPlugins() {
138
+ try {
139
+ const packageJsonPath = path.join(process.cwd(), 'package.json');
140
+ if (!fs.existsSync(packageJsonPath)) {
141
+ return {
142
+ name: 'Installed Plugins',
143
+ status: 'warn',
144
+ message: 'No package.json found',
145
+ suggestion: 'Run commands from a project directory or install plugins globally'
146
+ };
147
+ }
148
+ const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8'));
149
+ const deps = { ...packageJson.dependencies, ...packageJson.devDependencies };
150
+ const mediaprocPlugins = Object.keys(deps).filter(dep => dep.startsWith('@mediaproc/'));
151
+ if (mediaprocPlugins.length === 0) {
152
+ return {
153
+ name: 'Installed Plugins',
154
+ status: 'warn',
155
+ message: 'No plugins found',
156
+ suggestion: 'Install plugins with: mediaproc add <plugin-name>'
157
+ };
158
+ }
159
+ return {
160
+ name: 'Installed Plugins',
161
+ status: 'pass',
162
+ message: `${mediaprocPlugins.length} plugin(s) installed: ${mediaprocPlugins.map(p => p.replace('@mediaproc/', '')).join(', ')}`
163
+ };
164
+ }
165
+ catch (error) {
166
+ return {
167
+ name: 'Installed Plugins',
168
+ status: 'warn',
169
+ message: 'Could not check plugins',
170
+ suggestion: 'Ensure you have proper permissions'
171
+ };
172
+ }
173
+ }
174
+ async function checkSystemResources() {
175
+ const totalMem = require('os').totalmem();
176
+ const freeMem = require('os').freemem();
177
+ const cpus = require('os').cpus().length;
178
+ const totalGB = (totalMem / 1024 / 1024 / 1024).toFixed(1);
179
+ const freeGB = (freeMem / 1024 / 1024 / 1024).toFixed(1);
180
+ if (freeMem < 1024 * 1024 * 1024) { // Less than 1GB free
181
+ return {
182
+ name: 'System Resources',
183
+ status: 'warn',
184
+ message: `${cpus} CPU cores, ${freeGB}GB/${totalGB}GB RAM available`,
185
+ suggestion: 'Low memory. Consider closing other applications for better performance'
186
+ };
187
+ }
188
+ return {
189
+ name: 'System Resources',
190
+ status: 'pass',
191
+ message: `${cpus} CPU cores, ${freeGB}GB/${totalGB}GB RAM available`
192
+ };
193
+ }
194
+ async function checkConflicts() {
195
+ // Check for common conflicts
196
+ const conflicts = [];
197
+ // Check for multiple sharp versions
198
+ try {
199
+ const { stdout } = await execAsync('npm ls sharp 2>/dev/null || true');
200
+ const sharpMatches = stdout.match(/sharp@/g);
201
+ if (sharpMatches && sharpMatches.length > 1) {
202
+ conflicts.push('Multiple Sharp versions detected');
203
+ }
204
+ }
205
+ catch (error) {
206
+ // Ignore errors
207
+ }
208
+ if (conflicts.length > 0) {
209
+ return {
210
+ name: 'Dependency Conflicts',
211
+ status: 'warn',
212
+ message: conflicts.join(', '),
213
+ suggestion: 'Run: npm dedupe to resolve conflicts'
214
+ };
215
+ }
216
+ return {
217
+ name: 'Dependency Conflicts',
218
+ status: 'pass',
219
+ message: 'No conflicts detected'
220
+ };
221
+ }
222
+ //# sourceMappingURL=doctor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../../src/commands/doctor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ import { Command } from 'commander';
2
+ interface HistoryEntry {
3
+ id: number;
4
+ timestamp: number;
5
+ command: string;
6
+ args: string[];
7
+ cwd: string;
8
+ success: boolean;
9
+ duration?: number;
10
+ }
11
+ export declare const historyCommand: Command;
12
+ export declare function getHistory(): HistoryEntry[];
13
+ export declare function saveHistoryEntry(entry: Omit<HistoryEntry, 'id' | 'timestamp'>): void;
14
+ export {};
15
+ //# sourceMappingURL=history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.d.ts","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAMpC,UAAU,YAAY;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAKD,eAAO,MAAM,cAAc,SAqCvB,CAAC;AAqHL,wBAAgB,UAAU,IAAI,YAAY,EAAE,CAE3C;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,IAAI,CAAC,YAAY,EAAE,IAAI,GAAG,WAAW,CAAC,GAAG,IAAI,CAoBpF"}
@@ -0,0 +1,215 @@
1
+ import { Command } from 'commander';
2
+ import * as fs from 'fs';
3
+ import * as path from 'path';
4
+ import { showBranding } from '../utils/branding';
5
+ import * as os from 'os';
6
+ const HISTORY_FILE = path.join(os.homedir(), '.mediaproc', 'history.json');
7
+ const MAX_HISTORY_ENTRIES = 1000;
8
+ export const historyCommand = new Command()
9
+ .name('history')
10
+ .description('Show command history and replay previous commands')
11
+ .option('-n, --limit <number>', 'Number of entries to show', '20')
12
+ .option('--clear', 'Clear history')
13
+ .option('--export <file>', 'Export history as shell script')
14
+ .option('--json', 'Output as JSON')
15
+ .action(async (options) => {
16
+ if (options.clear) {
17
+ clearHistory();
18
+ console.log('✓ History cleared');
19
+ showBranding();
20
+ return;
21
+ }
22
+ if (options.export) {
23
+ exportHistory(options.export);
24
+ console.log(`✓ History exported to ${options.export}`);
25
+ showBranding();
26
+ return;
27
+ }
28
+ const history = loadHistory();
29
+ const limit = parseInt(options.limit);
30
+ if (history.length === 0) {
31
+ console.log('\n📝 No command history yet');
32
+ showBranding();
33
+ return;
34
+ }
35
+ if (options.json) {
36
+ console.log(JSON.stringify(history.slice(-limit), null, 2));
37
+ return;
38
+ }
39
+ displayHistory(history, limit);
40
+ });
41
+ // Add replay subcommand
42
+ historyCommand
43
+ .command('replay')
44
+ .description('Replay a command from history')
45
+ .argument('<id>', 'History entry ID')
46
+ .action(async (id) => {
47
+ const history = loadHistory();
48
+ const entryId = parseInt(id);
49
+ const entry = history.find(e => e.id === entryId);
50
+ if (!entry) {
51
+ console.log(`\n❌ No history entry found with ID ${id}\n`);
52
+ return;
53
+ }
54
+ console.log(`\n🔄 Replaying command ${id}:`);
55
+ console.log(` ${entry.command} ${entry.args.join(' ')}\n`);
56
+ // In a real implementation, this would actually execute the command
57
+ console.log('⚠️ Note: Command replay requires full implementation');
58
+ console.log(` Run manually: mediaproc ${entry.command} ${entry.args.join(' ')}`);
59
+ showBranding();
60
+ });
61
+ // Add search subcommand
62
+ historyCommand
63
+ .command('search')
64
+ .description('Search command history')
65
+ .argument('<query>', 'Search query')
66
+ .action(async (query) => {
67
+ const history = loadHistory();
68
+ const queryLower = query.toLowerCase();
69
+ const matches = history.filter(entry => {
70
+ const searchText = `${entry.command} ${entry.args.join(' ')}`.toLowerCase();
71
+ return searchText.includes(queryLower);
72
+ });
73
+ if (matches.length === 0) {
74
+ console.log(`\n❌ No commands found matching "${query}"\n`);
75
+ return;
76
+ }
77
+ console.log(`\n🔍 Found ${matches.length} matching commands:\n`);
78
+ displayHistory(matches, matches.length);
79
+ showBranding();
80
+ });
81
+ // Add stats subcommand
82
+ historyCommand
83
+ .command('stats')
84
+ .description('Show history statistics')
85
+ .action(async () => {
86
+ const history = loadHistory();
87
+ if (history.length === 0) {
88
+ console.log('\n📊 No history data available\n');
89
+ return;
90
+ }
91
+ const commandCounts = {};
92
+ const successCount = history.filter(e => e.success).length;
93
+ const failCount = history.length - successCount;
94
+ history.forEach(entry => {
95
+ commandCounts[entry.command] = (commandCounts[entry.command] || 0) + 1;
96
+ });
97
+ const sortedCommands = Object.entries(commandCounts)
98
+ .sort((a, b) => b[1] - a[1])
99
+ .slice(0, 10);
100
+ console.log('\n📊 History Statistics\n');
101
+ console.log('━'.repeat(50));
102
+ console.log(`\nTotal commands: ${history.length}`);
103
+ console.log(`Success rate: ${((successCount / history.length) * 100).toFixed(1)}%`);
104
+ console.log(`Successful: ${successCount}`);
105
+ console.log(`Failed: ${failCount}`);
106
+ console.log('\n📈 Most used commands:\n');
107
+ sortedCommands.forEach(([command, count], index) => {
108
+ const bar = '▓'.repeat(Math.ceil((count / sortedCommands[0][1]) * 20));
109
+ console.log(`${index + 1}. ${command.padEnd(15)} ${bar} ${count}`);
110
+ });
111
+ // Calculate average duration if available
112
+ const withDuration = history.filter(e => e.duration !== undefined);
113
+ if (withDuration.length > 0) {
114
+ const avgDuration = withDuration.reduce((sum, e) => sum + (e.duration || 0), 0) / withDuration.length;
115
+ console.log(`\n⏱️ Average duration: ${(avgDuration / 1000).toFixed(2)}s`);
116
+ }
117
+ console.log('\n' + '─'.repeat(50));
118
+ showBranding();
119
+ });
120
+ function loadHistory() {
121
+ try {
122
+ ensureHistoryDirectory();
123
+ if (!fs.existsSync(HISTORY_FILE)) {
124
+ return [];
125
+ }
126
+ const data = fs.readFileSync(HISTORY_FILE, 'utf-8');
127
+ return JSON.parse(data);
128
+ }
129
+ catch (error) {
130
+ console.error('Error loading history:', error);
131
+ return [];
132
+ }
133
+ }
134
+ export function getHistory() {
135
+ return loadHistory();
136
+ }
137
+ export function saveHistoryEntry(entry) {
138
+ try {
139
+ ensureHistoryDirectory();
140
+ const history = loadHistory();
141
+ const newEntry = {
142
+ ...entry,
143
+ id: history.length > 0 ? Math.max(...history.map(e => e.id)) + 1 : 1,
144
+ timestamp: Date.now()
145
+ };
146
+ history.push(newEntry);
147
+ // Keep only last MAX_HISTORY_ENTRIES
148
+ const trimmedHistory = history.slice(-MAX_HISTORY_ENTRIES);
149
+ fs.writeFileSync(HISTORY_FILE, JSON.stringify(trimmedHistory, null, 2));
150
+ }
151
+ catch (error) {
152
+ // Silently fail - history is not critical
153
+ }
154
+ }
155
+ function clearHistory() {
156
+ try {
157
+ if (fs.existsSync(HISTORY_FILE)) {
158
+ fs.unlinkSync(HISTORY_FILE);
159
+ }
160
+ }
161
+ catch (error) {
162
+ console.error('Error clearing history:', error);
163
+ }
164
+ }
165
+ function exportHistory(filename) {
166
+ const history = loadHistory();
167
+ const script = history
168
+ .map(entry => `# ${new Date(entry.timestamp).toLocaleString()}`)
169
+ .map((comment, index) => `${comment}\nmediaproc ${history[index].command} ${history[index].args.join(' ')}`)
170
+ .join('\n\n');
171
+ fs.writeFileSync(filename, `#!/bin/bash\n\n${script}\n`);
172
+ fs.chmodSync(filename, '755');
173
+ }
174
+ function displayHistory(history, limit) {
175
+ console.log('\n📝 Command History\n');
176
+ console.log('━'.repeat(70));
177
+ const entries = history.slice(-limit).reverse();
178
+ entries.forEach(entry => {
179
+ const status = entry.success ? '\x1b[32m✓\x1b[0m' : '\x1b[31m✗\x1b[0m';
180
+ const time = formatTimestamp(entry.timestamp);
181
+ const duration = entry.duration ? `(${(entry.duration / 1000).toFixed(2)}s)` : '';
182
+ console.log(`\n${status} \x1b[36m#${entry.id}\x1b[0m ${time} ${duration}`);
183
+ console.log(` mediaproc ${entry.command} ${entry.args.join(' ')}`);
184
+ console.log(` \x1b[90mDirectory: ${entry.cwd}\x1b[0m`);
185
+ });
186
+ console.log('\n' + '━'.repeat(70));
187
+ console.log(`\nShowing last ${Math.min(limit, history.length)} of ${history.length} commands`);
188
+ console.log('\n💡 Commands:');
189
+ console.log(' mediaproc history replay <id> - Replay a command');
190
+ console.log(' mediaproc history search <q> - Search history');
191
+ console.log(' mediaproc history stats - Show statistics');
192
+ console.log(' mediaproc history --export <f> - Export as script\n');
193
+ }
194
+ function formatTimestamp(timestamp) {
195
+ const now = Date.now();
196
+ const diff = now - timestamp;
197
+ const seconds = Math.floor(diff / 1000);
198
+ const minutes = Math.floor(seconds / 60);
199
+ const hours = Math.floor(minutes / 60);
200
+ const days = Math.floor(hours / 24);
201
+ if (days > 0)
202
+ return `${days}d ago`;
203
+ if (hours > 0)
204
+ return `${hours}h ago`;
205
+ if (minutes > 0)
206
+ return `${minutes}m ago`;
207
+ return `${seconds}s ago`;
208
+ }
209
+ function ensureHistoryDirectory() {
210
+ const dir = path.dirname(HISTORY_FILE);
211
+ if (!fs.existsSync(dir)) {
212
+ fs.mkdirSync(dir, { recursive: true });
213
+ }
214
+ }
215
+ //# sourceMappingURL=history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"history.js","sourceRoot":"","sources":["../../src/commands/history.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from 'commander';
2
+ export declare const searchCommand: Command;
3
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAWpC,eAAO,MAAM,aAAa,SA8DtB,CAAC"}