@bryan-gc/transcribe-cli 1.0.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 (114) hide show
  1. package/README.md +46 -0
  2. package/dist/audio/audioPlayer.d.ts +7 -0
  3. package/dist/audio/audioPlayer.d.ts.map +1 -0
  4. package/dist/audio/audioPlayer.js +49 -0
  5. package/dist/audio/audioPlayer.js.map +1 -0
  6. package/dist/audio/micDevices.d.ts +17 -0
  7. package/dist/audio/micDevices.d.ts.map +1 -0
  8. package/dist/audio/micDevices.js +120 -0
  9. package/dist/audio/micDevices.js.map +1 -0
  10. package/dist/audio/recorder.d.ts +16 -0
  11. package/dist/audio/recorder.d.ts.map +1 -0
  12. package/dist/audio/recorder.js +149 -0
  13. package/dist/audio/recorder.js.map +1 -0
  14. package/dist/components/App.d.ts +5 -0
  15. package/dist/components/App.d.ts.map +1 -0
  16. package/dist/components/App.js +279 -0
  17. package/dist/components/App.js.map +1 -0
  18. package/dist/components/MicTest.d.ts +10 -0
  19. package/dist/components/MicTest.d.ts.map +1 -0
  20. package/dist/components/MicTest.js +150 -0
  21. package/dist/components/MicTest.js.map +1 -0
  22. package/dist/components/Picker.d.ts +13 -0
  23. package/dist/components/Picker.d.ts.map +1 -0
  24. package/dist/components/Picker.js +20 -0
  25. package/dist/components/Picker.js.map +1 -0
  26. package/dist/components/SetupPrompt.d.ts +8 -0
  27. package/dist/components/SetupPrompt.d.ts.map +1 -0
  28. package/dist/components/SetupPrompt.js +39 -0
  29. package/dist/components/SetupPrompt.js.map +1 -0
  30. package/dist/config/configManager.d.ts +15 -0
  31. package/dist/config/configManager.d.ts.map +1 -0
  32. package/dist/config/configManager.js +50 -0
  33. package/dist/config/configManager.js.map +1 -0
  34. package/dist/constants.d.ts +134 -0
  35. package/dist/constants.d.ts.map +1 -0
  36. package/dist/constants.js +169 -0
  37. package/dist/constants.js.map +1 -0
  38. package/dist/index.d.ts +3 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +34 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/src/audio/audioPlayer.d.ts +7 -0
  43. package/dist/src/audio/audioPlayer.d.ts.map +1 -0
  44. package/dist/src/audio/audioPlayer.js +49 -0
  45. package/dist/src/audio/audioPlayer.js.map +1 -0
  46. package/dist/src/audio/micDevices.d.ts +17 -0
  47. package/dist/src/audio/micDevices.d.ts.map +1 -0
  48. package/dist/src/audio/micDevices.js +120 -0
  49. package/dist/src/audio/micDevices.js.map +1 -0
  50. package/dist/src/audio/recorder.d.ts +16 -0
  51. package/dist/src/audio/recorder.d.ts.map +1 -0
  52. package/dist/src/audio/recorder.js +149 -0
  53. package/dist/src/audio/recorder.js.map +1 -0
  54. package/dist/src/components/App.d.ts +5 -0
  55. package/dist/src/components/App.d.ts.map +1 -0
  56. package/dist/src/components/App.js +279 -0
  57. package/dist/src/components/App.js.map +1 -0
  58. package/dist/src/components/MicTest.d.ts +10 -0
  59. package/dist/src/components/MicTest.d.ts.map +1 -0
  60. package/dist/src/components/MicTest.js +150 -0
  61. package/dist/src/components/MicTest.js.map +1 -0
  62. package/dist/src/components/Picker.d.ts +13 -0
  63. package/dist/src/components/Picker.d.ts.map +1 -0
  64. package/dist/src/components/Picker.js +20 -0
  65. package/dist/src/components/Picker.js.map +1 -0
  66. package/dist/src/components/SetupPrompt.d.ts +8 -0
  67. package/dist/src/components/SetupPrompt.d.ts.map +1 -0
  68. package/dist/src/components/SetupPrompt.js +39 -0
  69. package/dist/src/components/SetupPrompt.js.map +1 -0
  70. package/dist/src/config/configManager.d.ts +15 -0
  71. package/dist/src/config/configManager.d.ts.map +1 -0
  72. package/dist/src/config/configManager.js +50 -0
  73. package/dist/src/config/configManager.js.map +1 -0
  74. package/dist/src/constants.d.ts +134 -0
  75. package/dist/src/constants.d.ts.map +1 -0
  76. package/dist/src/constants.js +169 -0
  77. package/dist/src/constants.js.map +1 -0
  78. package/dist/src/index.d.ts +3 -0
  79. package/dist/src/index.d.ts.map +1 -0
  80. package/dist/src/index.js +34 -0
  81. package/dist/src/index.js.map +1 -0
  82. package/dist/src/transcriber/ITranscriber.d.ts +12 -0
  83. package/dist/src/transcriber/ITranscriber.d.ts.map +1 -0
  84. package/dist/src/transcriber/ITranscriber.js +2 -0
  85. package/dist/src/transcriber/ITranscriber.js.map +1 -0
  86. package/dist/src/transcriber/WhisperTranscriber.d.ts +8 -0
  87. package/dist/src/transcriber/WhisperTranscriber.d.ts.map +1 -0
  88. package/dist/src/transcriber/WhisperTranscriber.js +35 -0
  89. package/dist/src/transcriber/WhisperTranscriber.js.map +1 -0
  90. package/dist/src/utils/clipboard.d.ts +11 -0
  91. package/dist/src/utils/clipboard.d.ts.map +1 -0
  92. package/dist/src/utils/clipboard.js +56 -0
  93. package/dist/src/utils/clipboard.js.map +1 -0
  94. package/dist/src/utils/srtParser.d.ts +6 -0
  95. package/dist/src/utils/srtParser.d.ts.map +1 -0
  96. package/dist/src/utils/srtParser.js +25 -0
  97. package/dist/src/utils/srtParser.js.map +1 -0
  98. package/dist/transcriber/ITranscriber.d.ts +12 -0
  99. package/dist/transcriber/ITranscriber.d.ts.map +1 -0
  100. package/dist/transcriber/ITranscriber.js +2 -0
  101. package/dist/transcriber/ITranscriber.js.map +1 -0
  102. package/dist/transcriber/WhisperTranscriber.d.ts +8 -0
  103. package/dist/transcriber/WhisperTranscriber.d.ts.map +1 -0
  104. package/dist/transcriber/WhisperTranscriber.js +35 -0
  105. package/dist/transcriber/WhisperTranscriber.js.map +1 -0
  106. package/dist/utils/clipboard.d.ts +11 -0
  107. package/dist/utils/clipboard.d.ts.map +1 -0
  108. package/dist/utils/clipboard.js +56 -0
  109. package/dist/utils/clipboard.js.map +1 -0
  110. package/dist/utils/srtParser.d.ts +6 -0
  111. package/dist/utils/srtParser.d.ts.map +1 -0
  112. package/dist/utils/srtParser.js +25 -0
  113. package/dist/utils/srtParser.js.map +1 -0
  114. package/package.json +51 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MicTest.js","sourceRoot":"","sources":["../../../src/components/MicTest.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ interface PickerOption {
2
+ label: string;
3
+ value: string;
4
+ }
5
+ interface PickerProps {
6
+ title: string;
7
+ options: PickerOption[];
8
+ onSelect: (value: string) => void;
9
+ onCancel: () => void;
10
+ }
11
+ export declare function Picker({ title, options, onSelect, onCancel }: PickerProps): import("react/jsx-runtime").JSX.Element;
12
+ export {};
13
+ //# sourceMappingURL=Picker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Picker.d.ts","sourceRoot":"","sources":["../../../src/components/Picker.tsx"],"names":[],"mappings":"AAKA,UAAU,YAAY;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED,UAAU,WAAW;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,EAAE,MAAM,IAAI,CAAC;CACtB;AAED,wBAAgB,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,EAAE,WAAW,2CA6BzE"}
@@ -0,0 +1,20 @@
1
+ import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
2
+ import { Box, Text, useInput } from 'ink';
3
+ import { Select } from '@inkjs/ui';
4
+ import { BACK_OPTION_VALUE, ActionHotkey } from '../constants';
5
+ export function Picker({ title, options, onSelect, onCancel }) {
6
+ useInput((input, key) => {
7
+ if (key.escape || input.toLowerCase() === ActionHotkey.CANCEL_Q) {
8
+ onCancel();
9
+ }
10
+ });
11
+ const allOptions = [{ label: '← Back', value: BACK_OPTION_VALUE }, ...options];
12
+ return (_jsxs(Box, { flexDirection: "column", children: [_jsxs(Text, { bold: true, color: "cyan", children: ["--- ", title, " ---"] }), _jsx(Box, { marginTop: 1, marginBottom: 1, children: _jsx(Select, { options: allOptions, onChange: (value) => {
13
+ if (value === BACK_OPTION_VALUE) {
14
+ onCancel();
15
+ return;
16
+ }
17
+ onSelect(value);
18
+ } }) }), _jsx(Text, { dimColor: true, children: "\u2191\u2193 navigate \u00B7 Enter confirm \u00B7 Esc/q cancel" })] }));
19
+ }
20
+ //# sourceMappingURL=Picker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Picker.js","sourceRoot":"","sources":["../../../src/components/Picker.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,KAAK,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAc/D,MAAM,UAAU,MAAM,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAe;IACxE,QAAQ,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;QACtB,IAAI,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC,QAAQ,EAAE,CAAC;YAChE,QAAQ,EAAE,CAAC;QACb,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,MAAM,UAAU,GAAmB,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,iBAAiB,EAAE,EAAE,GAAG,OAAO,CAAC,CAAC;IAE/F,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,aACzB,MAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,qBAChB,KAAK,YACL,EACP,KAAC,GAAG,IAAC,SAAS,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,YAChC,KAAC,MAAM,IACL,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,CAAC,KAAK,EAAE,EAAE;wBAClB,IAAI,KAAK,KAAK,iBAAiB,EAAE,CAAC;4BAChC,QAAQ,EAAE,CAAC;4BACX,OAAO;wBACT,CAAC;wBACD,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAClB,CAAC,GACD,GACE,EACN,KAAC,IAAI,IAAC,QAAQ,qFAAkD,IAC5D,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { type AppConfig } from '../config/configManager.js';
2
+ interface SetupPromptProps {
3
+ initialConfig: AppConfig;
4
+ onComplete: (config: AppConfig) => void;
5
+ }
6
+ export declare function SetupPrompt({ initialConfig, onComplete }: SetupPromptProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=SetupPrompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SetupPrompt.d.ts","sourceRoot":"","sources":["../../../src/components/SetupPrompt.tsx"],"names":[],"mappings":"AAGA,OAAO,EAAiB,KAAK,SAAS,EAAkB,MAAM,4BAA4B,CAAC;AAE3F,UAAU,gBAAgB;IACxB,aAAa,EAAE,SAAS,CAAC;IACzB,UAAU,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;CACzC;AAED,wBAAgB,WAAW,CAAC,EAAE,aAAa,EAAE,UAAU,EAAE,EAAE,gBAAgB,2CA0D1E"}
@@ -0,0 +1,39 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { useState } from 'react';
3
+ import { Box, Text } from 'ink';
4
+ import { TextInput } from '@inkjs/ui';
5
+ import { ConfigManager, DEFAULT_CONFIG } from '../config/configManager.js';
6
+ export function SetupPrompt({ initialConfig, onComplete }) {
7
+ const [step, setStep] = useState('API_KEY');
8
+ const [apiKey, setApiKey] = useState(initialConfig.apiKey);
9
+ const basePath = initialConfig.basePath || DEFAULT_CONFIG.basePath;
10
+ const [error, setError] = useState(null);
11
+ const handleSubmitApiKey = (value) => {
12
+ if (!value.trim()) {
13
+ setError('API Key is required.');
14
+ return;
15
+ }
16
+ setApiKey(value.trim());
17
+ setError(null);
18
+ setStep('BASE_PATH');
19
+ };
20
+ const handleSubmitBasePath = (value) => {
21
+ const p = value.trim();
22
+ if (!p) {
23
+ setError('Base Path is required.');
24
+ return;
25
+ }
26
+ // Try to initialize it
27
+ try {
28
+ ConfigManager.initializeBasePath(p);
29
+ const newConfig = { ...initialConfig, apiKey, basePath: p };
30
+ ConfigManager.save(newConfig);
31
+ onComplete(newConfig);
32
+ }
33
+ catch (e) {
34
+ setError(`Invalid path: ${e instanceof Error ? e.message : String(e)}`);
35
+ }
36
+ };
37
+ return (_jsxs(Box, { flexDirection: "column", padding: 1, children: [_jsx(Text, { bold: true, color: "cyan", children: "=== Transcribe-CLI Setup ===" }), step === 'API_KEY' && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { children: "Please enter your OpenAI API Key:" }), _jsx(TextInput, { placeholder: "sk-...", onSubmit: handleSubmitApiKey }), error && _jsx(Text, { color: "red", children: error })] })), step === 'BASE_PATH' && (_jsxs(Box, { flexDirection: "column", marginTop: 1, children: [_jsx(Text, { children: "Enter the base path for audio and glossaries:" }), _jsx(Text, { dimColor: true, children: "(Press Enter to use default)" }), _jsx(TextInput, { defaultValue: basePath, onSubmit: handleSubmitBasePath }), error && _jsx(Text, { color: "red", children: error })] }))] }));
38
+ }
39
+ //# sourceMappingURL=SetupPrompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SetupPrompt.js","sourceRoot":"","sources":["../../../src/components/SetupPrompt.tsx"],"names":[],"mappings":";AAAA,OAAc,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,aAAa,EAAkB,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAO3F,MAAM,UAAU,WAAW,CAAC,EAAE,aAAa,EAAE,UAAU,EAAoB;IACzE,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAA0B,SAAS,CAAC,CAAC;IACrE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,IAAI,cAAc,CAAC,QAAQ,CAAC;IACnE,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAExD,MAAM,kBAAkB,GAAG,CAAC,KAAa,EAAE,EAAE;QAC3C,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,EAAE,CAAC;YAClB,QAAQ,CAAC,sBAAsB,CAAC,CAAC;YACjC,OAAO;QACT,CAAC;QACD,SAAS,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACxB,QAAQ,CAAC,IAAI,CAAC,CAAC;QACf,OAAO,CAAC,WAAW,CAAC,CAAC;IACvB,CAAC,CAAC;IAEF,MAAM,oBAAoB,GAAG,CAAC,KAAa,EAAE,EAAE;QAC7C,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QACvB,IAAI,CAAC,CAAC,EAAE,CAAC;YACP,QAAQ,CAAC,wBAAwB,CAAC,CAAC;YACnC,OAAO;QACT,CAAC;QAED,uBAAuB;QACvB,IAAI,CAAC;YACH,aAAa,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;YACpC,MAAM,SAAS,GAAG,EAAE,GAAG,aAAa,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC;YAC5D,aAAa,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC9B,UAAU,CAAC,SAAS,CAAC,CAAC;QACxB,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,QAAQ,CAAC,iBAAiB,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,OAAO,EAAE,CAAC,aACpC,KAAC,IAAI,IAAC,IAAI,QAAC,KAAK,EAAC,MAAM,6CAEhB,EAEN,IAAI,KAAK,SAAS,IAAI,CACrB,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aACtC,KAAC,IAAI,oDAAyC,EAC9C,KAAC,SAAS,IAAC,WAAW,EAAC,QAAQ,EAAC,QAAQ,EAAE,kBAAkB,GAAI,EAC/D,KAAK,IAAI,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,YAAE,KAAK,GAAQ,IACtC,CACP,EAEA,IAAI,KAAK,WAAW,IAAI,CACvB,MAAC,GAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,SAAS,EAAE,CAAC,aACtC,KAAC,IAAI,gEAAqD,EAC1D,KAAC,IAAI,IAAC,QAAQ,mDAAoC,EAClD,KAAC,SAAS,IAAC,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,oBAAoB,GAAI,EACpE,KAAK,IAAI,KAAC,IAAI,IAAC,KAAK,EAAC,KAAK,YAAE,KAAK,GAAQ,IACtC,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { LanguageCode } from '../constants.js';
2
+ export interface AppConfig {
3
+ apiKey: string;
4
+ basePath: string;
5
+ selectedMicrophone: string;
6
+ selectedLanguage: LanguageCode;
7
+ }
8
+ export declare const DEFAULT_CONFIG: AppConfig;
9
+ export declare class ConfigManager {
10
+ static load(): AppConfig;
11
+ static save(config: AppConfig): void;
12
+ static validateBasePath(basePath: string): boolean;
13
+ static initializeBasePath(basePath: string): void;
14
+ }
15
+ //# sourceMappingURL=configManager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configManager.d.ts","sourceRoot":"","sources":["../../../src/config/configManager.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,YAAY,CAAC;CAChC;AAKD,eAAO,MAAM,cAAc,EAAE,SAK5B,CAAC;AAEF,qBAAa,aAAa;IACxB,MAAM,CAAC,IAAI,IAAI,SAAS;IAaxB,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI;IAOpC,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAKlD,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI;CAUlD"}
@@ -0,0 +1,50 @@
1
+ import fs from 'fs';
2
+ import path from 'path';
3
+ import os from 'os';
4
+ import { LanguageCode } from '../constants.js';
5
+ const CONFIG_DIR = path.join(os.homedir(), '.transcribe-cli');
6
+ const CONFIG_PATH = path.join(CONFIG_DIR, 'config.json');
7
+ export const DEFAULT_CONFIG = {
8
+ apiKey: '',
9
+ basePath: path.join(os.homedir(), 'transcribe_cli_data'),
10
+ selectedMicrophone: 'default',
11
+ selectedLanguage: LanguageCode.ENGLISH,
12
+ };
13
+ export class ConfigManager {
14
+ static load() {
15
+ if (!fs.existsSync(CONFIG_PATH)) {
16
+ return { ...DEFAULT_CONFIG };
17
+ }
18
+ try {
19
+ const content = fs.readFileSync(CONFIG_PATH, 'utf-8');
20
+ const parsed = JSON.parse(content);
21
+ return { ...DEFAULT_CONFIG, ...parsed };
22
+ }
23
+ catch {
24
+ return { ...DEFAULT_CONFIG };
25
+ }
26
+ }
27
+ static save(config) {
28
+ if (!fs.existsSync(CONFIG_DIR)) {
29
+ fs.mkdirSync(CONFIG_DIR, { recursive: true });
30
+ }
31
+ fs.writeFileSync(CONFIG_PATH, JSON.stringify(config, null, 2), 'utf-8');
32
+ }
33
+ static validateBasePath(basePath) {
34
+ if (!basePath)
35
+ return false;
36
+ return fs.existsSync(basePath) && fs.statSync(basePath).isDirectory();
37
+ }
38
+ static initializeBasePath(basePath) {
39
+ if (!fs.existsSync(basePath)) {
40
+ fs.mkdirSync(basePath, { recursive: true });
41
+ }
42
+ const tmpDir = path.join(basePath, 'tmp');
43
+ const glossariesDir = path.join(basePath, 'glossaries');
44
+ if (!fs.existsSync(tmpDir))
45
+ fs.mkdirSync(tmpDir, { recursive: true });
46
+ if (!fs.existsSync(glossariesDir))
47
+ fs.mkdirSync(glossariesDir, { recursive: true });
48
+ }
49
+ }
50
+ //# sourceMappingURL=configManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"configManager.js","sourceRoot":"","sources":["../../../src/config/configManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAS/C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,iBAAiB,CAAC,CAAC;AAC9D,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;AAEzD,MAAM,CAAC,MAAM,cAAc,GAAc;IACvC,MAAM,EAAE,EAAE;IACV,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,qBAAqB,CAAC;IACxD,kBAAkB,EAAE,SAAS;IAC7B,gBAAgB,EAAE,YAAY,CAAC,OAAO;CACvC,CAAC;AAEF,MAAM,OAAO,aAAa;IACxB,MAAM,CAAC,IAAI;QACT,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAChC,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;QAC/B,CAAC;QACD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YACnC,OAAO,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,MAAiB;QAC3B,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC/B,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,CAAC;QACD,EAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC1E,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,QAAgB;QACtC,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5B,OAAO,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACxE,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,QAAgB;QACxC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;QAC1C,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAExD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;YAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC;YAAE,EAAE,CAAC,SAAS,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtF,CAAC;CACF"}
@@ -0,0 +1,134 @@
1
+ /** Names of directories used by the application at the project root. */
2
+ export declare const DIR: {
3
+ readonly TMP: "tmp";
4
+ readonly GLOSSARIES: "glossaries";
5
+ };
6
+ /** File extensions the app reads or writes. */
7
+ export declare const EXT: {
8
+ readonly AUDIO: ".wav";
9
+ readonly SUBTITLES: ".srt";
10
+ readonly TEXT: ".txt";
11
+ readonly GLOSSARY: ".txt";
12
+ };
13
+ export declare function getPaths(basePath: string): {
14
+ GLOSSARIES_DIR: string;
15
+ TEST_FILE: string;
16
+ };
17
+ /** Sentinel value used by the Picker component's "go back" option. */
18
+ export declare const BACK_OPTION_VALUE: "__back__";
19
+ /** Sentinel value used for "none" options in pickers. */
20
+ export declare const NONE_OPTION_VALUE: "__none__";
21
+ /** Default ALSA/system audio device name and label. */
22
+ export declare const DEFAULT_DEVICE_ID: "default";
23
+ export declare const DEFAULT_DEVICE_LABEL: "Default Device";
24
+ /** Hotkey character for ctrl+c exit */
25
+ export declare const HOTKEY_EXIT: "c";
26
+ /** Duration of a single tick in the recording countdown timer (ms). */
27
+ export declare const RECORDING_TICK_MS: 1000;
28
+ export declare enum Platform {
29
+ LINUX = "linux",
30
+ DARWIN = "darwin"
31
+ }
32
+ export declare enum Cmd {
33
+ SOX = "sox",
34
+ ARECORD = "arecord",
35
+ PLAY = "play",
36
+ APLAY = "aplay",
37
+ AFPLAY = "afplay",
38
+ PW_DUMP = "pw-dump",
39
+ SYSTEM_PROFILER = "system_profiler"
40
+ }
41
+ export declare enum Signal {
42
+ SIGINT = "SIGINT",
43
+ SIGTERM = "SIGTERM",
44
+ SIGSTOP = "SIGSTOP",
45
+ SIGCONT = "SIGCONT"
46
+ }
47
+ export declare const AUDIO_CONFIG: {
48
+ readonly SAMPLE_RATE: "16000";
49
+ readonly CHANNELS: "1";
50
+ readonly BITS: "16";
51
+ readonly TYPE: "wav";
52
+ readonly ENCODING_SOX: "signed-integer";
53
+ readonly FORMAT_ARECORD: "S16_LE";
54
+ readonly DEVICE_PULSE: "pulse";
55
+ };
56
+ export declare const ALSA_PREFIXES: {
57
+ readonly ALSA_INPUT: "alsa_input.";
58
+ readonly BLUEZ_INPUT: "bluez_input.";
59
+ };
60
+ export declare enum StdioOption {
61
+ IGNORE = "ignore",
62
+ PIPE = "pipe"
63
+ }
64
+ export declare enum ProcessEvent {
65
+ EXIT = "exit",
66
+ CLOSE = "close",
67
+ ERROR = "error"
68
+ }
69
+ export declare enum StreamEvent {
70
+ FINISH = "finish",
71
+ CLOSE = "close",
72
+ ERROR = "error"
73
+ }
74
+ export declare enum Encoding {
75
+ UTF8 = "utf-8",
76
+ BINARY = "binary"
77
+ }
78
+ export declare enum AlsaDevice {
79
+ PULSE = "pulse",
80
+ PIPEWIRE = "pipewire",
81
+ PLUGHW = "plughw",
82
+ HW = "hw",
83
+ SYSDEFAULT = "sysdefault",
84
+ DSNOOP = "dsnoop"
85
+ }
86
+ export declare const ALSA_VIRTUAL_DEVICES: Set<string>;
87
+ export declare enum ActionHotkey {
88
+ CANCEL_C = "c",
89
+ CANCEL_Q = "q",
90
+ RECORD = "r",
91
+ PLAYBACK = "p",
92
+ STOP = "s",
93
+ CONFIRM = "b"
94
+ }
95
+ export declare enum LanguageCode {
96
+ SPANISH = "es",
97
+ ENGLISH = "en",
98
+ PORTUGUESE = "pt",
99
+ FRENCH = "fr",
100
+ GERMAN = "de"
101
+ }
102
+ export declare const LANGUAGE_NAMES: Record<LanguageCode, string>;
103
+ export declare const AVAILABLE_LANGUAGES: LanguageCode[];
104
+ export declare enum TranscriptionFormat {
105
+ TEXT = "text",
106
+ SRT = "srt"
107
+ }
108
+ export declare const WHISPER_MODEL: "whisper-1";
109
+ export declare enum ViewMode {
110
+ MAIN = "MAIN",
111
+ LANGUAGES = "LANGUAGES",
112
+ GLOSSARIES = "GLOSSARIES",
113
+ MICROPHONES = "MICROPHONES",
114
+ MIC_TEST = "MIC_TEST"
115
+ }
116
+ export declare enum MenuAction {
117
+ RECORD = "r",
118
+ PAUSE = "p",
119
+ STOP = "s",
120
+ TRANSCRIBE = "t",
121
+ CHANGE_LANGUAGE = "l",
122
+ CHANGE_GLOSSARY = "g",
123
+ CHANGE_MICROPHONE = "m",
124
+ TOGGLE_CLIPBOARD = "c",
125
+ QUIT = "q"
126
+ }
127
+ export declare enum TestStatus {
128
+ IDLE = "idle",
129
+ RECORDING = "recording",
130
+ SAVING = "saving",
131
+ RECORDED = "recorded",
132
+ PLAYING = "playing"
133
+ }
134
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"AAEA,wEAAwE;AACxE,eAAO,MAAM,GAAG;;;CAGN,CAAC;AAEX,+CAA+C;AAC/C,eAAO,MAAM,GAAG;;;;;CAKN,CAAC;AAEX,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM;;;EAKxC;AAED,sEAAsE;AACtE,eAAO,MAAM,iBAAiB,EAAG,UAAmB,CAAC;AAErD,yDAAyD;AACzD,eAAO,MAAM,iBAAiB,EAAG,UAAmB,CAAC;AAErD,uDAAuD;AACvD,eAAO,MAAM,iBAAiB,EAAG,SAAkB,CAAC;AACpD,eAAO,MAAM,oBAAoB,EAAG,gBAAyB,CAAC;AAE9D,uCAAuC;AACvC,eAAO,MAAM,WAAW,EAAG,GAAY,CAAC;AAExC,uEAAuE;AACvE,eAAO,MAAM,iBAAiB,EAAG,IAAa,CAAC;AAE/C,oBAAY,QAAQ;IAClB,KAAK,UAAU;IACf,MAAM,WAAW;CAClB;AAED,oBAAY,GAAG;IACb,GAAG,QAAQ;IACX,OAAO,YAAY;IACnB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,eAAe,oBAAoB;CACpC;AAED,oBAAY,MAAM;IAChB,MAAM,WAAW;IACjB,OAAO,YAAY;IACnB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,eAAO,MAAM,YAAY;;;;;;;;CAQf,CAAC;AAEX,eAAO,MAAM,aAAa;;;CAGhB,CAAC;AAEX,oBAAY,WAAW;IACrB,MAAM,WAAW;IACjB,IAAI,SAAS;CACd;AAED,oBAAY,YAAY;IACtB,IAAI,SAAS;IACb,KAAK,UAAU;IACf,KAAK,UAAU;CAChB;AAED,oBAAY,WAAW;IACrB,MAAM,WAAW;IACjB,KAAK,UAAU;IACf,KAAK,UAAU;CAChB;AAED,oBAAY,QAAQ;IAClB,IAAI,UAAU;IACd,MAAM,WAAW;CAClB;AAED,oBAAY,UAAU;IACpB,KAAK,UAAU;IACf,QAAQ,aAAa;IACrB,MAAM,WAAW;IACjB,EAAE,OAAO;IACT,UAAU,eAAe;IACzB,MAAM,WAAW;CAClB;AAED,eAAO,MAAM,oBAAoB,aAU/B,CAAC;AAEH,oBAAY,YAAY;IACtB,QAAQ,MAAM;IACd,QAAQ,MAAM;IACd,MAAM,MAAM;IACZ,QAAQ,MAAM;IACd,IAAI,MAAM;IACV,OAAO,MAAM;CACd;AAGD,oBAAY,YAAY;IACtB,OAAO,OAAO;IACd,OAAO,OAAO;IACd,UAAU,OAAO;IACjB,MAAM,OAAO;IACb,MAAM,OAAO;CACd;AAED,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAMvD,CAAC;AAEF,eAAO,MAAM,mBAAmB,gBAA8B,CAAC;AAE/D,oBAAY,mBAAmB;IAC7B,IAAI,SAAS;IACb,GAAG,QAAQ;CACZ;AAED,eAAO,MAAM,aAAa,EAAG,WAAoB,CAAC;AAIlD,oBAAY,QAAQ;IAClB,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,UAAU,eAAe;IACzB,WAAW,gBAAgB;IAC3B,QAAQ,aAAa;CACtB;AAED,oBAAY,UAAU;IACpB,MAAM,MAAM;IACZ,KAAK,MAAM;IACX,IAAI,MAAM;IACV,UAAU,MAAM;IAChB,eAAe,MAAM;IACrB,eAAe,MAAM;IACrB,iBAAiB,MAAM;IACvB,gBAAgB,MAAM;IACtB,IAAI,MAAM;CACX;AAED,oBAAY,UAAU;IACpB,IAAI,SAAS;IACb,SAAS,cAAc;IACvB,MAAM,WAAW;IACjB,QAAQ,aAAa;IACrB,OAAO,YAAY;CACpB"}
@@ -0,0 +1,169 @@
1
+ import path from 'path';
2
+ /** Names of directories used by the application at the project root. */
3
+ export const DIR = {
4
+ TMP: 'tmp',
5
+ GLOSSARIES: 'glossaries',
6
+ };
7
+ /** File extensions the app reads or writes. */
8
+ export const EXT = {
9
+ AUDIO: '.wav',
10
+ SUBTITLES: '.srt',
11
+ TEXT: '.txt',
12
+ GLOSSARY: '.txt',
13
+ };
14
+ export function getPaths(basePath) {
15
+ return {
16
+ GLOSSARIES_DIR: path.resolve(basePath, DIR.GLOSSARIES),
17
+ TEST_FILE: path.resolve(basePath, DIR.TMP, `mic-test${EXT.AUDIO}`),
18
+ };
19
+ }
20
+ /** Sentinel value used by the Picker component's "go back" option. */
21
+ export const BACK_OPTION_VALUE = '__back__';
22
+ /** Sentinel value used for "none" options in pickers. */
23
+ export const NONE_OPTION_VALUE = '__none__';
24
+ /** Default ALSA/system audio device name and label. */
25
+ export const DEFAULT_DEVICE_ID = 'default';
26
+ export const DEFAULT_DEVICE_LABEL = 'Default Device';
27
+ /** Hotkey character for ctrl+c exit */
28
+ export const HOTKEY_EXIT = 'c';
29
+ /** Duration of a single tick in the recording countdown timer (ms). */
30
+ export const RECORDING_TICK_MS = 1000;
31
+ export var Platform;
32
+ (function (Platform) {
33
+ Platform["LINUX"] = "linux";
34
+ Platform["DARWIN"] = "darwin";
35
+ })(Platform || (Platform = {}));
36
+ export var Cmd;
37
+ (function (Cmd) {
38
+ Cmd["SOX"] = "sox";
39
+ Cmd["ARECORD"] = "arecord";
40
+ Cmd["PLAY"] = "play";
41
+ Cmd["APLAY"] = "aplay";
42
+ Cmd["AFPLAY"] = "afplay";
43
+ Cmd["PW_DUMP"] = "pw-dump";
44
+ Cmd["SYSTEM_PROFILER"] = "system_profiler";
45
+ })(Cmd || (Cmd = {}));
46
+ export var Signal;
47
+ (function (Signal) {
48
+ Signal["SIGINT"] = "SIGINT";
49
+ Signal["SIGTERM"] = "SIGTERM";
50
+ Signal["SIGSTOP"] = "SIGSTOP";
51
+ Signal["SIGCONT"] = "SIGCONT";
52
+ })(Signal || (Signal = {}));
53
+ export const AUDIO_CONFIG = {
54
+ SAMPLE_RATE: '16000',
55
+ CHANNELS: '1',
56
+ BITS: '16',
57
+ TYPE: 'wav',
58
+ ENCODING_SOX: 'signed-integer',
59
+ FORMAT_ARECORD: 'S16_LE',
60
+ DEVICE_PULSE: 'pulse',
61
+ };
62
+ export const ALSA_PREFIXES = {
63
+ ALSA_INPUT: 'alsa_input.',
64
+ BLUEZ_INPUT: 'bluez_input.',
65
+ };
66
+ export var StdioOption;
67
+ (function (StdioOption) {
68
+ StdioOption["IGNORE"] = "ignore";
69
+ StdioOption["PIPE"] = "pipe";
70
+ })(StdioOption || (StdioOption = {}));
71
+ export var ProcessEvent;
72
+ (function (ProcessEvent) {
73
+ ProcessEvent["EXIT"] = "exit";
74
+ ProcessEvent["CLOSE"] = "close";
75
+ ProcessEvent["ERROR"] = "error";
76
+ })(ProcessEvent || (ProcessEvent = {}));
77
+ export var StreamEvent;
78
+ (function (StreamEvent) {
79
+ StreamEvent["FINISH"] = "finish";
80
+ StreamEvent["CLOSE"] = "close";
81
+ StreamEvent["ERROR"] = "error";
82
+ })(StreamEvent || (StreamEvent = {}));
83
+ export var Encoding;
84
+ (function (Encoding) {
85
+ Encoding["UTF8"] = "utf-8";
86
+ Encoding["BINARY"] = "binary";
87
+ })(Encoding || (Encoding = {}));
88
+ export var AlsaDevice;
89
+ (function (AlsaDevice) {
90
+ AlsaDevice["PULSE"] = "pulse";
91
+ AlsaDevice["PIPEWIRE"] = "pipewire";
92
+ AlsaDevice["PLUGHW"] = "plughw";
93
+ AlsaDevice["HW"] = "hw";
94
+ AlsaDevice["SYSDEFAULT"] = "sysdefault";
95
+ AlsaDevice["DSNOOP"] = "dsnoop";
96
+ })(AlsaDevice || (AlsaDevice = {}));
97
+ export const ALSA_VIRTUAL_DEVICES = new Set([
98
+ 'null',
99
+ 'lavrate',
100
+ 'samplerate',
101
+ 'speexrate',
102
+ 'jack',
103
+ 'oss',
104
+ 'speex',
105
+ 'upmix',
106
+ 'vdownmix',
107
+ ]);
108
+ export var ActionHotkey;
109
+ (function (ActionHotkey) {
110
+ ActionHotkey["CANCEL_C"] = "c";
111
+ ActionHotkey["CANCEL_Q"] = "q";
112
+ ActionHotkey["RECORD"] = "r";
113
+ ActionHotkey["PLAYBACK"] = "p";
114
+ ActionHotkey["STOP"] = "s";
115
+ ActionHotkey["CONFIRM"] = "b";
116
+ })(ActionHotkey || (ActionHotkey = {}));
117
+ // ─── Transcriber Constants ────────────────────────────────────────────────────
118
+ export var LanguageCode;
119
+ (function (LanguageCode) {
120
+ LanguageCode["SPANISH"] = "es";
121
+ LanguageCode["ENGLISH"] = "en";
122
+ LanguageCode["PORTUGUESE"] = "pt";
123
+ LanguageCode["FRENCH"] = "fr";
124
+ LanguageCode["GERMAN"] = "de";
125
+ })(LanguageCode || (LanguageCode = {}));
126
+ export const LANGUAGE_NAMES = {
127
+ [LanguageCode.SPANISH]: 'Spanish',
128
+ [LanguageCode.ENGLISH]: 'English',
129
+ [LanguageCode.PORTUGUESE]: 'Portuguese',
130
+ [LanguageCode.FRENCH]: 'French',
131
+ [LanguageCode.GERMAN]: 'German',
132
+ };
133
+ export const AVAILABLE_LANGUAGES = Object.values(LanguageCode);
134
+ export var TranscriptionFormat;
135
+ (function (TranscriptionFormat) {
136
+ TranscriptionFormat["TEXT"] = "text";
137
+ TranscriptionFormat["SRT"] = "srt";
138
+ })(TranscriptionFormat || (TranscriptionFormat = {}));
139
+ export const WHISPER_MODEL = 'whisper-1';
140
+ // ─── UI Constants ─────────────────────────────────────────────────────────────
141
+ export var ViewMode;
142
+ (function (ViewMode) {
143
+ ViewMode["MAIN"] = "MAIN";
144
+ ViewMode["LANGUAGES"] = "LANGUAGES";
145
+ ViewMode["GLOSSARIES"] = "GLOSSARIES";
146
+ ViewMode["MICROPHONES"] = "MICROPHONES";
147
+ ViewMode["MIC_TEST"] = "MIC_TEST";
148
+ })(ViewMode || (ViewMode = {}));
149
+ export var MenuAction;
150
+ (function (MenuAction) {
151
+ MenuAction["RECORD"] = "r";
152
+ MenuAction["PAUSE"] = "p";
153
+ MenuAction["STOP"] = "s";
154
+ MenuAction["TRANSCRIBE"] = "t";
155
+ MenuAction["CHANGE_LANGUAGE"] = "l";
156
+ MenuAction["CHANGE_GLOSSARY"] = "g";
157
+ MenuAction["CHANGE_MICROPHONE"] = "m";
158
+ MenuAction["TOGGLE_CLIPBOARD"] = "c";
159
+ MenuAction["QUIT"] = "q";
160
+ })(MenuAction || (MenuAction = {}));
161
+ export var TestStatus;
162
+ (function (TestStatus) {
163
+ TestStatus["IDLE"] = "idle";
164
+ TestStatus["RECORDING"] = "recording";
165
+ TestStatus["SAVING"] = "saving";
166
+ TestStatus["RECORDED"] = "recorded";
167
+ TestStatus["PLAYING"] = "playing";
168
+ })(TestStatus || (TestStatus = {}));
169
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../src/constants.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,34 @@
1
+ #!/usr/bin/env node
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ import { useState, useEffect } from 'react';
4
+ import { render, Box, Text } from 'ink';
5
+ import { App } from './components/App.js';
6
+ import { SetupPrompt } from './components/SetupPrompt.js';
7
+ import { ConfigManager } from './config/configManager.js';
8
+ function Root() {
9
+ const [config, setConfig] = useState(null);
10
+ const [needsSetup, setNeedsSetup] = useState(false);
11
+ useEffect(() => {
12
+ const loadedConfig = ConfigManager.load();
13
+ if (!loadedConfig.apiKey || !ConfigManager.validateBasePath(loadedConfig.basePath)) {
14
+ setNeedsSetup(true);
15
+ setConfig(loadedConfig);
16
+ }
17
+ else {
18
+ ConfigManager.initializeBasePath(loadedConfig.basePath);
19
+ setConfig(loadedConfig);
20
+ }
21
+ }, []);
22
+ if (!config) {
23
+ return (_jsx(Box, { padding: 1, children: _jsx(Text, { children: "Loading configuration..." }) }));
24
+ }
25
+ if (needsSetup) {
26
+ return (_jsx(SetupPrompt, { initialConfig: config, onComplete: (c) => {
27
+ setConfig(c);
28
+ setNeedsSetup(false);
29
+ } }));
30
+ }
31
+ return _jsx(App, { appConfig: config });
32
+ }
33
+ render(_jsx(Root, {}));
34
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":";;AACA,OAAc,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,KAAK,CAAC;AACxC,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAkB,MAAM,2BAA2B,CAAC;AAE1E,SAAS,IAAI;IACX,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAmB,IAAI,CAAC,CAAC;IAC7D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEpD,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,YAAY,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;QAC1C,IAAI,CAAC,YAAY,CAAC,MAAM,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;YACnF,aAAa,CAAC,IAAI,CAAC,CAAC;YACpB,SAAS,CAAC,YAAY,CAAC,CAAC;QAC1B,CAAC;aAAM,CAAC;YACN,aAAa,CAAC,kBAAkB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YACxD,SAAS,CAAC,YAAY,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,CACL,KAAC,GAAG,IAAC,OAAO,EAAE,CAAC,YACb,KAAC,IAAI,2CAAgC,GACjC,CACP,CAAC;IACJ,CAAC;IAED,IAAI,UAAU,EAAE,CAAC;QACf,OAAO,CACL,KAAC,WAAW,IACV,aAAa,EAAE,MAAM,EACrB,UAAU,EAAE,CAAC,CAAC,EAAE,EAAE;gBAChB,SAAS,CAAC,CAAC,CAAC,CAAC;gBACb,aAAa,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC,GACD,CACH,CAAC;IACJ,CAAC;IAED,OAAO,KAAC,GAAG,IAAC,SAAS,EAAE,MAAM,GAAI,CAAC;AACpC,CAAC;AAED,MAAM,CAAC,KAAC,IAAI,KAAG,CAAC,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { LanguageCode, TranscriptionFormat } from '../constants';
2
+ export interface ITranscriber {
3
+ /**
4
+ * Transcribes an audio file and returns the result as a string.
5
+ * @param audioFilePath Absolute or relative path to the audio file.
6
+ * @param language Language code for the audio content.
7
+ * @param format Desired response format.
8
+ * @param prompt Optional context hint / glossary for the model.
9
+ */
10
+ transcribe(audioFilePath: string, language: LanguageCode, format: TranscriptionFormat, prompt?: string, onProgress?: (status: string) => void): Promise<string>;
11
+ }
12
+ //# sourceMappingURL=ITranscriber.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ITranscriber.d.ts","sourceRoot":"","sources":["../../../src/transcriber/ITranscriber.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAEtE,MAAM,WAAW,YAAY;IAC3B;;;;;;OAMG;IACH,UAAU,CACR,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,YAAY,EACtB,MAAM,EAAE,mBAAmB,EAC3B,MAAM,CAAC,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GACpC,OAAO,CAAC,MAAM,CAAC,CAAC;CACpB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ITranscriber.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ITranscriber.js","sourceRoot":"","sources":["../../../src/transcriber/ITranscriber.ts"],"names":[],"mappings":""}
@@ -0,0 +1,8 @@
1
+ import type { ITranscriber } from './ITranscriber.js';
2
+ import { LanguageCode, TranscriptionFormat } from '../constants.js';
3
+ export declare class WhisperTranscriber implements ITranscriber {
4
+ private openai;
5
+ constructor(apiKey: string);
6
+ transcribe(audioFilePath: string, language?: LanguageCode, format?: TranscriptionFormat, prompt?: string, onProgress?: (status: string) => void): Promise<string>;
7
+ }
8
+ //# sourceMappingURL=WhisperTranscriber.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WhisperTranscriber.d.ts","sourceRoot":"","sources":["../../../src/transcriber/WhisperTranscriber.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAiB,MAAM,iBAAiB,CAAC;AAEnF,qBAAa,kBAAmB,YAAW,YAAY;IACrD,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,MAAM;IAMpB,UAAU,CACd,aAAa,EAAE,MAAM,EACrB,QAAQ,GAAE,YAAmC,EAC7C,MAAM,GAAE,mBAA8C,EACtD,MAAM,CAAC,EAAE,MAAM,EACf,UAAU,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GACpC,OAAO,CAAC,MAAM,CAAC;CAyBnB"}
@@ -0,0 +1,35 @@
1
+ import fs from 'fs';
2
+ import OpenAI from 'openai';
3
+ import { LanguageCode, TranscriptionFormat, WHISPER_MODEL } from '../constants.js';
4
+ export class WhisperTranscriber {
5
+ openai;
6
+ constructor(apiKey) {
7
+ this.openai = new OpenAI({
8
+ apiKey,
9
+ });
10
+ }
11
+ async transcribe(audioFilePath, language = LanguageCode.ENGLISH, format = TranscriptionFormat.TEXT, prompt, onProgress) {
12
+ if (!fs.existsSync(audioFilePath)) {
13
+ throw new Error(`Audio file not found: ${audioFilePath}`);
14
+ }
15
+ try {
16
+ onProgress?.('Preparing audio stream...');
17
+ const fileStream = fs.createReadStream(audioFilePath);
18
+ onProgress?.('Sending request to OpenAI Whisper API (uploading & processing)...');
19
+ const response = await this.openai.audio.transcriptions.create({
20
+ file: fileStream,
21
+ model: WHISPER_MODEL,
22
+ language,
23
+ response_format: format,
24
+ ...(prompt ? { prompt } : {}),
25
+ });
26
+ onProgress?.('Response received from OpenAI.');
27
+ return response;
28
+ }
29
+ catch (error) {
30
+ console.error('Whisper transcription error:', error);
31
+ throw error;
32
+ }
33
+ }
34
+ }
35
+ //# sourceMappingURL=WhisperTranscriber.js.map