mediacript 1.0.0 → 1.0.1

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 (54) hide show
  1. package/cli.mjs +8 -2
  2. package/dist/config/index.d.ts +22 -0
  3. package/dist/config/index.d.ts.map +1 -0
  4. package/dist/config/index.js +119 -0
  5. package/dist/config/index.js.map +1 -0
  6. package/dist/index.d.ts +3 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +226 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/transcript/groq.d.ts +9 -0
  11. package/dist/transcript/groq.d.ts.map +1 -0
  12. package/dist/transcript/groq.js +38 -0
  13. package/dist/transcript/groq.js.map +1 -0
  14. package/dist/transcript/index.d.ts +13 -0
  15. package/dist/transcript/index.d.ts.map +1 -0
  16. package/dist/transcript/index.js +50 -0
  17. package/dist/transcript/index.js.map +1 -0
  18. package/dist/transcript/openai.d.ts +8 -0
  19. package/dist/transcript/openai.d.ts.map +1 -0
  20. package/dist/transcript/openai.js +27 -0
  21. package/dist/transcript/openai.js.map +1 -0
  22. package/dist/types/index.d.ts +31 -0
  23. package/dist/types/index.d.ts.map +1 -0
  24. package/dist/types/index.js +2 -0
  25. package/dist/types/index.js.map +1 -0
  26. package/dist/utils/ffmpegCheck.d.ts +18 -0
  27. package/dist/utils/ffmpegCheck.d.ts.map +1 -0
  28. package/dist/utils/ffmpegCheck.js +74 -0
  29. package/dist/utils/ffmpegCheck.js.map +1 -0
  30. package/dist/utils/ffmpegOperations.d.ts +21 -0
  31. package/dist/utils/ffmpegOperations.d.ts.map +1 -0
  32. package/dist/utils/ffmpegOperations.js +117 -0
  33. package/dist/utils/ffmpegOperations.js.map +1 -0
  34. package/dist/utils/fileHelpers.d.ts +18 -0
  35. package/dist/utils/fileHelpers.d.ts.map +1 -0
  36. package/dist/utils/fileHelpers.js +59 -0
  37. package/dist/utils/fileHelpers.js.map +1 -0
  38. package/dist/workflow/state.d.ts +38 -0
  39. package/dist/workflow/state.d.ts.map +1 -0
  40. package/dist/workflow/state.js +119 -0
  41. package/dist/workflow/state.js.map +1 -0
  42. package/package.json +7 -1
  43. package/QUICK_START.md +0 -154
  44. package/src/config/index.ts +0 -136
  45. package/src/index.ts +0 -278
  46. package/src/transcript/groq.ts +0 -50
  47. package/src/transcript/index.ts +0 -60
  48. package/src/transcript/openai.ts +0 -34
  49. package/src/types/index.ts +0 -34
  50. package/src/utils/ffmpegCheck.ts +0 -78
  51. package/src/utils/ffmpegOperations.ts +0 -144
  52. package/src/utils/fileHelpers.ts +0 -60
  53. package/src/workflow/state.ts +0 -140
  54. package/tsconfig.json +0 -21
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Verifica se o ffmpeg está instalado e disponível no PATH
3
+ */
4
+ export declare function checkFfmpegInstalled(): {
5
+ installed: boolean;
6
+ version?: string;
7
+ error?: string;
8
+ };
9
+ /**
10
+ * Exibe instruções de instalação do ffmpeg baseado no sistema operacional
11
+ */
12
+ export declare function showFfmpegInstallInstructions(): void;
13
+ /**
14
+ * Verifica e informa sobre a instalação do ffmpeg
15
+ * Retorna true se instalado, false caso contrário
16
+ */
17
+ export declare function verifyFfmpeg(): boolean;
18
+ //# sourceMappingURL=ffmpegCheck.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ffmpegCheck.d.ts","sourceRoot":"","sources":["../../src/utils/ffmpegCheck.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,wBAAgB,oBAAoB,IAAI;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,CAqB/F;AAED;;GAEG;AACH,wBAAgB,6BAA6B,IAAI,IAAI,CA8BpD;AAED;;;GAGG;AACH,wBAAgB,YAAY,IAAI,OAAO,CAUtC"}
@@ -0,0 +1,74 @@
1
+ import { execSync } from 'child_process';
2
+ /**
3
+ * Verifica se o ffmpeg está instalado e disponível no PATH
4
+ */
5
+ export function checkFfmpegInstalled() {
6
+ try {
7
+ const output = execSync('ffmpeg -version', {
8
+ encoding: 'utf-8',
9
+ stdio: ['pipe', 'pipe', 'pipe']
10
+ });
11
+ // Extrai a versão da primeira linha
12
+ const versionMatch = output.match(/ffmpeg version ([^\s]+)/);
13
+ const version = versionMatch ? versionMatch[1] : 'unknown';
14
+ return {
15
+ installed: true,
16
+ version
17
+ };
18
+ }
19
+ catch (error) {
20
+ return {
21
+ installed: false,
22
+ error: error.message
23
+ };
24
+ }
25
+ }
26
+ /**
27
+ * Exibe instruções de instalação do ffmpeg baseado no sistema operacional
28
+ */
29
+ export function showFfmpegInstallInstructions() {
30
+ const platform = process.platform;
31
+ console.log('\n⚠️ FFmpeg não está instalado ou não está disponível no PATH\n');
32
+ console.log('📦 Instruções de instalação:\n');
33
+ if (platform === 'win32') {
34
+ console.log('Windows:');
35
+ console.log(' 1. Usando Chocolatey:');
36
+ console.log(' choco install ffmpeg');
37
+ console.log('\n 2. Usando Scoop:');
38
+ console.log(' scoop install ffmpeg');
39
+ console.log('\n 3. Download manual:');
40
+ console.log(' - Baixe de: https://ffmpeg.org/download.html');
41
+ console.log(' - Extraia e adicione ao PATH do sistema');
42
+ }
43
+ else if (platform === 'darwin') {
44
+ console.log('macOS:');
45
+ console.log(' Usando Homebrew:');
46
+ console.log(' brew install ffmpeg');
47
+ }
48
+ else {
49
+ console.log('Linux:');
50
+ console.log(' Ubuntu/Debian:');
51
+ console.log(' sudo apt update && sudo apt install ffmpeg');
52
+ console.log('\n Fedora:');
53
+ console.log(' sudo dnf install ffmpeg');
54
+ console.log('\n Arch Linux:');
55
+ console.log(' sudo pacman -S ffmpeg');
56
+ }
57
+ console.log('\n💡 Após a instalação, reinicie o terminal e tente novamente.\n');
58
+ }
59
+ /**
60
+ * Verifica e informa sobre a instalação do ffmpeg
61
+ * Retorna true se instalado, false caso contrário
62
+ */
63
+ export function verifyFfmpeg() {
64
+ const result = checkFfmpegInstalled();
65
+ if (result.installed) {
66
+ console.log(`✓ FFmpeg está instalado (versão: ${result.version})`);
67
+ return true;
68
+ }
69
+ else {
70
+ showFfmpegInstallInstructions();
71
+ return false;
72
+ }
73
+ }
74
+ //# sourceMappingURL=ffmpegCheck.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ffmpegCheck.js","sourceRoot":"","sources":["../../src/utils/ffmpegCheck.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAExC;;GAEG;AACH,MAAM,UAAU,oBAAoB;IAClC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,iBAAiB,EAAE;YACzC,QAAQ,EAAE,OAAO;YACjB,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAA;QAEF,oCAAoC;QACpC,MAAM,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAA;QAC5D,MAAM,OAAO,GAAG,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QAE1D,OAAO;YACL,SAAS,EAAE,IAAI;YACf,OAAO;SACR,CAAA;IACH,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,KAAK,EAAE,KAAK,CAAC,OAAO;SACrB,CAAA;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B;IAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAA;IAEjC,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAA;IAC/E,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAA;IAE7C,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAA;QACvB,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;QACtC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;QACxC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAA;QACnC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAA;QACxC,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAA;QACtC,OAAO,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAA;QAChE,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAA;IAC7D,CAAC;SAAM,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACrB,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAA;QACjC,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAA;IACzC,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;QACrB,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAA;QAC/B,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAA;QAC9D,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAA;QAC1B,OAAO,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAA;QAC3C,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAA;QAC9B,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAA;IAC3C,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,kEAAkE,CAAC,CAAA;AACjF,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,MAAM,GAAG,oBAAoB,EAAE,CAAA;IAErC,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,oCAAoC,MAAM,CAAC,OAAO,GAAG,CAAC,CAAA;QAClE,OAAO,IAAI,CAAA;IACb,CAAC;SAAM,CAAC;QACN,6BAA6B,EAAE,CAAA;QAC/B,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Gera um caminho único para o arquivo de saída
3
+ */
4
+ export declare function uniqueOutputPath(dir: string, baseName: string, extWithDot: string): string;
5
+ /**
6
+ * Executa um comando ffmpeg
7
+ */
8
+ export declare function runFfmpegCommand(args: string[]): Promise<string>;
9
+ /**
10
+ * Converte vídeo para formato performático (H.264/AAC)
11
+ */
12
+ export declare function convertVideo(inputPath: string, outputDir?: string): Promise<string>;
13
+ /**
14
+ * Extrai áudio de um vídeo
15
+ */
16
+ export declare function extractAudio(inputPath: string, outputDir?: string): Promise<string>;
17
+ /**
18
+ * Converte áudio para formato performático
19
+ */
20
+ export declare function convertAudio(inputPath: string, outputDir?: string): Promise<string>;
21
+ //# sourceMappingURL=ffmpegOperations.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ffmpegOperations.d.ts","sourceRoot":"","sources":["../../src/utils/ffmpegOperations.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAU1F;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAsChE;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAsBjB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAmBjB;AAED;;GAEG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,CAAC,CAkBjB"}
@@ -0,0 +1,117 @@
1
+ import { spawn } from 'child_process';
2
+ import path from 'path';
3
+ import fs from 'fs';
4
+ /**
5
+ * Gera um caminho único para o arquivo de saída
6
+ */
7
+ export function uniqueOutputPath(dir, baseName, extWithDot) {
8
+ let candidate = path.join(dir, `${baseName}${extWithDot}`);
9
+ if (!fs.existsSync(candidate))
10
+ return candidate;
11
+ for (let i = 1; i < 10000; i++) {
12
+ candidate = path.join(dir, `${baseName}_${i}${extWithDot}`);
13
+ if (!fs.existsSync(candidate))
14
+ return candidate;
15
+ }
16
+ throw new Error('Não foi possível gerar um nome de saída único.');
17
+ }
18
+ /**
19
+ * Executa um comando ffmpeg
20
+ */
21
+ export function runFfmpegCommand(args) {
22
+ return new Promise((resolve, reject) => {
23
+ const ffmpeg = spawn('ffmpeg', args, {
24
+ stdio: ['ignore', 'pipe', 'pipe']
25
+ });
26
+ let stdout = '';
27
+ let stderr = '';
28
+ ffmpeg.stdout.on('data', (data) => {
29
+ stdout += data.toString();
30
+ });
31
+ ffmpeg.stderr.on('data', (data) => {
32
+ stderr += data.toString();
33
+ // FFmpeg envia progresso para stderr
34
+ const lines = stderr.split('\n');
35
+ const lastLine = lines[lines.length - 2] || '';
36
+ // Exibe progresso se tiver informação de tempo
37
+ if (lastLine.includes('time=')) {
38
+ process.stdout.write(`\r${lastLine.trim()}`);
39
+ }
40
+ });
41
+ ffmpeg.on('close', (code) => {
42
+ process.stdout.write('\r');
43
+ if (code === 0) {
44
+ resolve(stdout);
45
+ }
46
+ else {
47
+ reject(new Error(`FFmpeg falhou com código ${code}\n${stderr}`));
48
+ }
49
+ });
50
+ ffmpeg.on('error', (err) => {
51
+ reject(err);
52
+ });
53
+ });
54
+ }
55
+ /**
56
+ * Converte vídeo para formato performático (H.264/AAC)
57
+ */
58
+ export async function convertVideo(inputPath, outputDir) {
59
+ const dir = outputDir || path.dirname(inputPath);
60
+ const baseName = path.basename(inputPath, path.extname(inputPath));
61
+ const outputPath = uniqueOutputPath(dir, `${baseName}_converted`, '.mp4');
62
+ console.log(`\n🎬 Convertendo vídeo para formato performático...`);
63
+ const args = [
64
+ '-i', inputPath,
65
+ '-c:v', 'libx264',
66
+ '-preset', 'medium',
67
+ '-crf', '23',
68
+ '-c:a', 'aac',
69
+ '-b:a', '128k',
70
+ '-movflags', '+faststart',
71
+ '-y',
72
+ outputPath
73
+ ];
74
+ await runFfmpegCommand(args);
75
+ console.log(`\n✓ Vídeo convertido: ${path.basename(outputPath)}`);
76
+ return outputPath;
77
+ }
78
+ /**
79
+ * Extrai áudio de um vídeo
80
+ */
81
+ export async function extractAudio(inputPath, outputDir) {
82
+ const dir = outputDir || path.dirname(inputPath);
83
+ const baseName = path.basename(inputPath, path.extname(inputPath));
84
+ const outputPath = uniqueOutputPath(dir, `${baseName}_audio`, '.mp3');
85
+ console.log(`\n🎵 Extraindo áudio do vídeo...`);
86
+ const args = [
87
+ '-i', inputPath,
88
+ '-vn',
89
+ '-acodec', 'libmp3lame',
90
+ '-b:a', '192k',
91
+ '-y',
92
+ outputPath
93
+ ];
94
+ await runFfmpegCommand(args);
95
+ console.log(`\n✓ Áudio extraído: ${path.basename(outputPath)}`);
96
+ return outputPath;
97
+ }
98
+ /**
99
+ * Converte áudio para formato performático
100
+ */
101
+ export async function convertAudio(inputPath, outputDir) {
102
+ const dir = outputDir || path.dirname(inputPath);
103
+ const baseName = path.basename(inputPath, path.extname(inputPath));
104
+ const outputPath = uniqueOutputPath(dir, `${baseName}_converted`, '.mp3');
105
+ console.log(`\n🎵 Convertendo áudio para MP3...`);
106
+ const args = [
107
+ '-i', inputPath,
108
+ '-acodec', 'libmp3lame',
109
+ '-b:a', '192k',
110
+ '-y',
111
+ outputPath
112
+ ];
113
+ await runFfmpegCommand(args);
114
+ console.log(`\n✓ Áudio convertido: ${path.basename(outputPath)}`);
115
+ return outputPath;
116
+ }
117
+ //# sourceMappingURL=ffmpegOperations.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ffmpegOperations.js","sourceRoot":"","sources":["../../src/utils/ffmpegOperations.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ export type FileType = 'audio' | 'video' | 'unknown';
2
+ /**
3
+ * Detecta o tipo de arquivo pela extensão
4
+ */
5
+ export declare function detectFileType(filePath: string): FileType;
6
+ /**
7
+ * Lista arquivos de áudio/vídeo no diretório
8
+ */
9
+ export declare function listMediaFiles(dir: string): Array<{
10
+ name: string;
11
+ fullPath: string;
12
+ type: FileType;
13
+ }>;
14
+ /**
15
+ * Verifica se um arquivo existe
16
+ */
17
+ export declare function fileExists(filePath: string): boolean;
18
+ //# sourceMappingURL=fileHelpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileHelpers.d.ts","sourceRoot":"","sources":["../../src/utils/fileHelpers.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,OAAO,GAAG,SAAS,CAAA;AAEpD;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,QAAQ,CAMzD;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,CAAC,CA0BrG;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAMpD"}
@@ -0,0 +1,59 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ const AUDIO_EXTS = new Set(['.ogg', '.wav', '.mp3', '.m4a', '.aac', '.flac']);
4
+ const VIDEO_EXTS = new Set(['.mp4', '.mov', '.mkv', '.webm', '.avi']);
5
+ /**
6
+ * Detecta o tipo de arquivo pela extensão
7
+ */
8
+ export function detectFileType(filePath) {
9
+ const ext = path.extname(filePath).toLowerCase();
10
+ if (AUDIO_EXTS.has(ext))
11
+ return 'audio';
12
+ if (VIDEO_EXTS.has(ext))
13
+ return 'video';
14
+ return 'unknown';
15
+ }
16
+ /**
17
+ * Lista arquivos de áudio/vídeo no diretório
18
+ */
19
+ export function listMediaFiles(dir) {
20
+ try {
21
+ return fs
22
+ .readdirSync(dir)
23
+ .filter((name) => {
24
+ const fullPath = path.join(dir, name);
25
+ try {
26
+ return fs.statSync(fullPath).isFile();
27
+ }
28
+ catch {
29
+ return false;
30
+ }
31
+ })
32
+ .map((name) => {
33
+ const fullPath = path.join(dir, name);
34
+ return {
35
+ name,
36
+ fullPath,
37
+ type: detectFileType(name)
38
+ };
39
+ })
40
+ .filter((f) => f.type !== 'unknown')
41
+ .sort((a, b) => a.name.localeCompare(b.name));
42
+ }
43
+ catch (error) {
44
+ console.error('Erro ao listar arquivos:', error);
45
+ return [];
46
+ }
47
+ }
48
+ /**
49
+ * Verifica se um arquivo existe
50
+ */
51
+ export function fileExists(filePath) {
52
+ try {
53
+ return fs.existsSync(filePath) && fs.statSync(filePath).isFile();
54
+ }
55
+ catch {
56
+ return false;
57
+ }
58
+ }
59
+ //# sourceMappingURL=fileHelpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fileHelpers.js","sourceRoot":"","sources":["../../src/utils/fileHelpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAA;AACnB,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;AAC7E,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;AAIrE;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAA;IAEhD,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAA;IACvC,IAAI,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,CAAA;IACvC,OAAO,SAAS,CAAA;AAClB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,GAAW;IACxC,IAAI,CAAC;QACH,OAAO,EAAE;aACN,WAAW,CAAC,GAAG,CAAC;aAChB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;YACf,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;YACrC,IAAI,CAAC;gBACH,OAAO,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAA;YACvC,CAAC;YAAC,MAAM,CAAC;gBACP,OAAO,KAAK,CAAA;YACd,CAAC;QACH,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACZ,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;YACrC,OAAO;gBACL,IAAI;gBACJ,QAAQ;gBACR,IAAI,EAAE,cAAc,CAAC,IAAI,CAAC;aAC3B,CAAA;QACH,CAAC,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC;aACnC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAA;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAA;QAChD,OAAO,EAAE,CAAA;IACX,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,QAAgB;IACzC,IAAI,CAAC;QACH,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,CAAA;IAClE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC"}
@@ -0,0 +1,38 @@
1
+ import { WorkflowState, WorkflowStep } from '../types/index.js';
2
+ /**
3
+ * Cria um novo workflow state
4
+ */
5
+ export declare function createWorkflowState(inputFile: string, stepNames: string[]): WorkflowState;
6
+ /**
7
+ * Atualiza o status de um step
8
+ */
9
+ export declare function updateStepStatus(state: WorkflowState, stepIndex: number, status: WorkflowStep['status'], result?: any, error?: string): void;
10
+ /**
11
+ * Obtém o step atual
12
+ */
13
+ export declare function getCurrentStep(state: WorkflowState): WorkflowStep | null;
14
+ /**
15
+ * Avança para o próximo step
16
+ */
17
+ export declare function nextStep(state: WorkflowState): boolean;
18
+ /**
19
+ * Verifica se o workflow está completo
20
+ */
21
+ export declare function isWorkflowComplete(state: WorkflowState): boolean;
22
+ /**
23
+ * Verifica se houve algum erro no workflow
24
+ */
25
+ export declare function hasWorkflowErrors(state: WorkflowState): boolean;
26
+ /**
27
+ * Exibe o progresso do workflow
28
+ */
29
+ export declare function printWorkflowProgress(state: WorkflowState): void;
30
+ /**
31
+ * Salva o estado do workflow em arquivo
32
+ */
33
+ export declare function saveWorkflowState(state: WorkflowState, outputDir: string): void;
34
+ /**
35
+ * Carrega o estado do workflow de arquivo
36
+ */
37
+ export declare function loadWorkflowState(outputDir: string): WorkflowState | null;
38
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../src/workflow/state.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAE/D;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,aAAa,CAWzF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,aAAa,EACpB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,EAC9B,MAAM,CAAC,EAAE,GAAG,EACZ,KAAK,CAAC,EAAE,MAAM,GACb,IAAI,CAmBN;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,aAAa,GAAG,YAAY,GAAG,IAAI,CAKxE;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAMtD;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAIhE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAE/D;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,aAAa,GAAG,IAAI,CAuBhE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,CAG/E;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAazE"}
@@ -0,0 +1,119 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ /**
4
+ * Cria um novo workflow state
5
+ */
6
+ export function createWorkflowState(inputFile, stepNames) {
7
+ return {
8
+ steps: stepNames.map((name, index) => ({
9
+ id: `step-${index}`,
10
+ name,
11
+ status: 'pending'
12
+ })),
13
+ currentStepIndex: 0,
14
+ inputFile,
15
+ intermediateFiles: {}
16
+ };
17
+ }
18
+ /**
19
+ * Atualiza o status de um step
20
+ */
21
+ export function updateStepStatus(state, stepIndex, status, result, error) {
22
+ if (stepIndex >= 0 && stepIndex < state.steps.length) {
23
+ const step = state.steps[stepIndex];
24
+ step.status = status;
25
+ if (status === 'running') {
26
+ step.startTime = Date.now();
27
+ }
28
+ else if (status === 'completed' || status === 'failed') {
29
+ step.endTime = Date.now();
30
+ }
31
+ if (result !== undefined) {
32
+ step.result = result;
33
+ }
34
+ if (error) {
35
+ step.error = error;
36
+ }
37
+ }
38
+ }
39
+ /**
40
+ * Obtém o step atual
41
+ */
42
+ export function getCurrentStep(state) {
43
+ if (state.currentStepIndex < state.steps.length) {
44
+ return state.steps[state.currentStepIndex];
45
+ }
46
+ return null;
47
+ }
48
+ /**
49
+ * Avança para o próximo step
50
+ */
51
+ export function nextStep(state) {
52
+ if (state.currentStepIndex < state.steps.length - 1) {
53
+ state.currentStepIndex++;
54
+ return true;
55
+ }
56
+ return false;
57
+ }
58
+ /**
59
+ * Verifica se o workflow está completo
60
+ */
61
+ export function isWorkflowComplete(state) {
62
+ return state.steps.every(step => step.status === 'completed' || step.status === 'skipped');
63
+ }
64
+ /**
65
+ * Verifica se houve algum erro no workflow
66
+ */
67
+ export function hasWorkflowErrors(state) {
68
+ return state.steps.some(step => step.status === 'failed');
69
+ }
70
+ /**
71
+ * Exibe o progresso do workflow
72
+ */
73
+ export function printWorkflowProgress(state) {
74
+ console.log('\n📊 Progresso do Workflow:');
75
+ console.log('━'.repeat(50));
76
+ state.steps.forEach((step, index) => {
77
+ let icon = '⏳';
78
+ if (step.status === 'completed')
79
+ icon = '✓';
80
+ else if (step.status === 'failed')
81
+ icon = '✗';
82
+ else if (step.status === 'running')
83
+ icon = '⚡';
84
+ else if (step.status === 'skipped')
85
+ icon = '⊘';
86
+ const duration = step.startTime && step.endTime
87
+ ? ` (${((step.endTime - step.startTime) / 1000).toFixed(1)}s)`
88
+ : '';
89
+ console.log(`${icon} ${index + 1}. ${step.name}${duration}`);
90
+ if (step.error) {
91
+ console.log(` └─ Erro: ${step.error}`);
92
+ }
93
+ });
94
+ console.log('━'.repeat(50));
95
+ }
96
+ /**
97
+ * Salva o estado do workflow em arquivo
98
+ */
99
+ export function saveWorkflowState(state, outputDir) {
100
+ const stateFile = path.join(outputDir, '.workflow-state.json');
101
+ fs.writeFileSync(stateFile, JSON.stringify(state, null, 2), 'utf-8');
102
+ }
103
+ /**
104
+ * Carrega o estado do workflow de arquivo
105
+ */
106
+ export function loadWorkflowState(outputDir) {
107
+ const stateFile = path.join(outputDir, '.workflow-state.json');
108
+ try {
109
+ if (fs.existsSync(stateFile)) {
110
+ const data = fs.readFileSync(stateFile, 'utf-8');
111
+ return JSON.parse(data);
112
+ }
113
+ }
114
+ catch (error) {
115
+ console.warn('Erro ao carregar estado do workflow:', error);
116
+ }
117
+ return null;
118
+ }
119
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/workflow/state.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,18 @@
1
1
  {
2
2
  "name": "mediacript",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "CLI to convert media files to performat formats and extract text using Groq and OpenAI's Whisper API",
5
5
  "type": "module",
6
6
  "bin": {
7
7
  "mediacript": "./cli.mjs",
8
8
  "mediacript-convert": "./convert.js"
9
9
  },
10
+ "files": [
11
+ "dist",
12
+ "cli.mjs",
13
+ "convert.js",
14
+ "README.md"
15
+ ],
10
16
  "scripts": {
11
17
  "convert": "node convert.js",
12
18
  "start": "node --loader ts-node/esm src/index.ts",