@eldrforge/kodrdriv 0.0.14 → 0.0.17
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.
- package/README.md +1 -9
- package/dist/arguments.js +306 -55
- package/dist/arguments.js.map +1 -1
- package/dist/audio/devices.js +284 -0
- package/dist/audio/devices.js.map +1 -0
- package/dist/audio/index.js +31 -0
- package/dist/audio/index.js.map +1 -0
- package/dist/audio/processor.js +766 -0
- package/dist/audio/processor.js.map +1 -0
- package/dist/audio/types.js +16 -0
- package/dist/audio/types.js.map +1 -0
- package/dist/audio/validation.js +35 -0
- package/dist/audio/validation.js.map +1 -0
- package/dist/commands/audio-commit.js +64 -248
- package/dist/commands/audio-commit.js.map +1 -1
- package/dist/commands/audio-review.js +90 -701
- package/dist/commands/audio-review.js.map +1 -1
- package/dist/commands/commit.js +18 -18
- package/dist/commands/commit.js.map +1 -1
- package/dist/commands/release.js +14 -15
- package/dist/commands/release.js.map +1 -1
- package/dist/commands/review.js +152 -0
- package/dist/commands/review.js.map +1 -0
- package/dist/commands/select-audio.js +265 -0
- package/dist/commands/select-audio.js.map +1 -0
- package/dist/constants.js +86 -68
- package/dist/constants.js.map +1 -1
- package/dist/content/diff.js +155 -1
- package/dist/content/diff.js.map +1 -1
- package/dist/content/issues.js +256 -0
- package/dist/content/issues.js.map +1 -0
- package/dist/content/releaseNotes.js +90 -0
- package/dist/content/releaseNotes.js.map +1 -0
- package/dist/main.js +9 -2
- package/dist/main.js.map +1 -1
- package/dist/prompt/instructions/commit.md +18 -15
- package/dist/prompt/instructions/release.md +6 -5
- package/dist/prompt/instructions/{audio-review.md → review.md} +24 -18
- package/dist/prompt/prompts.js +87 -19
- package/dist/prompt/prompts.js.map +1 -1
- package/dist/types.js +27 -3
- package/dist/types.js.map +1 -1
- package/dist/util/general.js +7 -1
- package/dist/util/general.js.map +1 -1
- package/dist/util/openai.js +34 -3
- package/dist/util/openai.js.map +1 -1
- package/dist/util/stdin.js +61 -0
- package/dist/util/stdin.js.map +1 -0
- package/package.json +6 -6
- package/.kodrdriv/config.yaml +0 -20
- package/.kodrdriv/context/content.md +0 -7
- package/RELEASE_NOTES.md +0 -14
- package/docs/index.html +0 -17
- package/docs/package.json +0 -36
- package/docs/pnpm-lock.yaml +0 -3441
- package/docs/public/README.md +0 -132
- package/docs/public/advanced-usage.md +0 -188
- package/docs/public/code-icon.svg +0 -4
- package/docs/public/commands.md +0 -116
- package/docs/public/configuration.md +0 -274
- package/docs/public/examples.md +0 -352
- package/docs/public/kodrdriv-logo.svg +0 -62
- package/docs/src/App.css +0 -387
- package/docs/src/App.tsx +0 -60
- package/docs/src/components/DocumentPage.tsx +0 -56
- package/docs/src/components/ErrorMessage.tsx +0 -15
- package/docs/src/components/LoadingSpinner.tsx +0 -14
- package/docs/src/components/MarkdownRenderer.tsx +0 -56
- package/docs/src/components/Navigation.css +0 -73
- package/docs/src/components/Navigation.tsx +0 -36
- package/docs/src/index.css +0 -61
- package/docs/src/main.tsx +0 -10
- package/docs/src/test/setup.ts +0 -1
- package/docs/src/vite-env.d.ts +0 -10
- package/docs/tsconfig.node.json +0 -13
- package/docs/vite.config.ts +0 -15
- package/docs/vitest.config.ts +0 -15
- package/eslint.config.mjs +0 -83
- package/nodemon.json +0 -14
- package/output/kodrdriv/250701-1442-release-notes.md +0 -3
- package/pnpm-workspace.yaml +0 -5
- package/tsconfig.tsbuildinfo +0 -1
- package/vite.config.ts +0 -90
- package/vitest.config.ts +0 -24
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"devices.js","sources":["../../src/audio/devices.ts"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-unused-vars */\nimport { getLogger } from '../logging';\nimport { run } from '../util/child';\nimport { AudioDevice } from './types';\nimport fs from 'fs/promises';\nimport path from 'path';\nimport { DEFAULT_OUTPUT_DIRECTORY } from '../constants';\n\n/**\n * Detects the best available audio device for recording\n * @returns Audio device index as string\n */\nexport const detectBestAudioDevice = async (): Promise<string> => {\n const logger = getLogger();\n\n try {\n // First, try to find a working device using the new detection\n const workingDevice = await findWorkingAudioDevice();\n if (workingDevice) {\n logger.debug(`✅ Best audio device detected: [${workingDevice.index}] with format ${workingDevice.format}`);\n return workingDevice.index;\n }\n\n // Fallback to preference-based detection if format testing fails\n try {\n await run('ffmpeg -f avfoundation -list_devices true -i \"\"');\n } catch (result: any) {\n // ffmpeg returns error code but we get the device list in stderr\n const output = result.stderr || result.stdout || '';\n\n // Parse audio devices from output\n const audioDevicesSection = output.split('AVFoundation audio devices:')[1];\n if (!audioDevicesSection) return '1'; // Default fallback\n\n const deviceLines = audioDevicesSection.split('\\n')\n .filter((line: string) => line.includes('[') && line.includes(']'))\n .map((line: string) => line.trim());\n\n // Prefer AirPods, then built-in microphone over virtual/external devices\n const preferredDevices = [\n 'AirPods',\n 'MacBook Pro Microphone',\n 'MacBook Air Microphone',\n 'Built-in Microphone',\n 'Internal Microphone'\n ];\n\n for (const deviceLine of deviceLines) {\n for (const preferred of preferredDevices) {\n if (deviceLine.toLowerCase().includes(preferred.toLowerCase())) {\n // Extract device index\n const match = deviceLine.match(/\\[(\\d+)\\]/);\n if (match) {\n return match[1];\n }\n }\n }\n }\n }\n\n // If no preferred device found, use device 1 as default (usually better than 0)\n return '1';\n } catch (error) {\n // Fallback to device 1\n return '1';\n }\n};\n\n/**\n * Parses available audio devices from system\n * @returns Array of audio devices with index and name\n */\nexport const parseAudioDevices = async (): Promise<AudioDevice[]> => {\n try {\n try {\n await run('ffmpeg -f avfoundation -list_devices true -i \"\"');\n } catch (result: any) {\n const output = result.stderr || result.stdout || '';\n const audioDevicesSection = output.split('AVFoundation audio devices:')[1];\n\n if (audioDevicesSection) {\n const deviceLines = audioDevicesSection.split('\\n')\n .filter((line: string) => line.includes('[') && line.includes(']'))\n .map((line: string) => line.trim());\n\n return deviceLines.map((line: string) => {\n const match = line.match(/\\[(\\d+)\\]\\s+(.+)/);\n if (match) {\n return { index: match[1], name: match[2] };\n }\n return null;\n }).filter(Boolean) as AudioDevice[];\n }\n }\n return [];\n } catch (error) {\n return [];\n }\n};\n\n/**\n * Lists available audio devices to the log\n */\nexport const listAudioDevices = async (): Promise<void> => {\n const logger = getLogger();\n try {\n try {\n await run('ffmpeg -f avfoundation -list_devices true -i \"\"');\n } catch (result: any) {\n const output = result.stderr || result.stdout || '';\n const audioDevicesSection = output.split('AVFoundation audio devices:')[1];\n\n if (audioDevicesSection) {\n logger.info('🎙️ Available audio devices:');\n const deviceLines = audioDevicesSection.split('\\n')\n .filter((line: string) => line.includes('[') && line.includes(']'))\n .map((line: string) => line.trim());\n\n deviceLines.forEach((line: string) => {\n const match = line.match(/\\[(\\d+)\\]\\s+(.+)/);\n if (match) {\n logger.info(` [${match[1]}] ${match[2]}`);\n }\n });\n }\n }\n } catch (error) {\n logger.debug('Could not list audio devices');\n }\n};\n\n/**\n * Test if a specific audio device works with ffmpeg\n * @param deviceIndex The audio device index to test\n * @returns Promise<boolean> true if device works, false otherwise\n */\nexport const testAudioDevice = async (deviceIndex: string): Promise<boolean> => {\n const logger = getLogger();\n\n try {\n logger.info(`🔍 Testing audio device [${deviceIndex}]...`);\n\n // Test with a very short recording (1 second) to temp file\n const tempDir = path.join(DEFAULT_OUTPUT_DIRECTORY, 'tmp');\n await fs.mkdir(tempDir, { recursive: true });\n const tempFile = path.join(tempDir, `audio-test-${Date.now()}.wav`);\n\n // Try different input formats for different devices\n const testFormats = [\n `\":${deviceIndex}\"`, // Preferred format: blank video (no video), audio index\n `\"none:${deviceIndex}\"`, // Alternative format: explicit \"none\" video device\n `\"${deviceIndex}\"` // Fallback format\n ];\n\n for (const inputFormat of testFormats) {\n const testCommand = `ffmpeg -f avfoundation -i ${inputFormat} -t 1 -y \"${tempFile}\"`;\n logger.debug(`🔧 Test command: ${testCommand}`);\n\n try {\n await run(testCommand);\n // If we get here, the command succeeded\n logger.info(`✅ Audio device [${deviceIndex}] is working with format ${inputFormat}`);\n\n // Clean up test file\n try {\n await run(`rm \"${tempFile}\"`);\n } catch {\n // Ignore cleanup errors\n }\n\n return true;\n } catch (error: any) {\n logger.debug(`❌ Audio device [${deviceIndex}] failed with format ${inputFormat}: ${error.stderr || error.message}`);\n // Continue to next format\n }\n }\n\n logger.warn(`❌ Audio device [${deviceIndex}] failed all test formats`);\n return false;\n\n } catch (error: any) {\n logger.error(`🚨 Failed to test audio device [${deviceIndex}]: ${error.message}`);\n return false;\n }\n};\n\n/**\n * Find the first working audio device and return both index and working format\n * @returns Promise<{index: string, format: string} | null> The index and format of the first working device, or null if none work\n */\nexport const findWorkingAudioDevice = async (): Promise<{ index: string, format: string } | null> => {\n const logger = getLogger();\n\n try {\n const devices = await parseAudioDevices();\n\n if (devices.length === 0) {\n logger.warn('No audio devices found');\n return null;\n }\n\n logger.info(`🔍 Testing ${devices.length} audio devices...`);\n\n for (const device of devices) {\n const tempDir = path.join(DEFAULT_OUTPUT_DIRECTORY, 'tmp');\n await fs.mkdir(tempDir, { recursive: true });\n const tempFile = path.join(tempDir, `audio-test-${Date.now()}.wav`);\n\n // Try different input formats for this device\n const testFormats = [\n `\":${device.index}\"`, // Preferred format: blank video (no video), audio index\n `\"none:${device.index}\"`, // Alternative format: explicit \"none\" video device\n `\"${device.index}\"` // Fallback format\n ];\n\n for (const inputFormat of testFormats) {\n const testCommand = `ffmpeg -f avfoundation -i ${inputFormat} -t 1 -y \"${tempFile}\"`;\n logger.debug(`🔧 Test command: ${testCommand}`);\n\n try {\n await run(testCommand);\n // If we get here, the command succeeded\n logger.info(`✅ Found working audio device: [${device.index}] ${device.name} with format ${inputFormat}`);\n\n // Clean up test file\n try {\n await run(`rm \"${tempFile}\"`);\n } catch {\n // Ignore cleanup errors\n }\n\n return { index: device.index, format: inputFormat };\n } catch (error: any) {\n logger.debug(`❌ Audio device [${device.index}] failed with format ${inputFormat}: ${error.stderr || error.message}`);\n // Continue to next format\n }\n }\n }\n\n logger.warn('❌ No working audio devices found');\n return null;\n\n } catch (error: any) {\n logger.error(`🚨 Failed to find working audio device: ${error.message}`);\n return null;\n }\n};\n\n/**\n * Get the correct AVFoundation input format for a specific audio device\n * @param deviceIndex The audio device index to get format for\n * @returns Promise<string | null> The working input format for the device, or null if none work\n */\nexport const getDeviceInputFormat = async (deviceIndex: string): Promise<string | null> => {\n const logger = getLogger();\n\n try {\n const tempDir = path.join(DEFAULT_OUTPUT_DIRECTORY, 'tmp');\n await fs.mkdir(tempDir, { recursive: true });\n const tempFile = path.join(tempDir, `audio-format-test-${Date.now()}.wav`);\n\n // Try different input formats for this device\n const testFormats = [\n `\":${deviceIndex}\"`, // Preferred format: blank video (no video), audio index\n `\"none:${deviceIndex}\"`, // Alternative format: explicit \"none\" video device\n `\"${deviceIndex}\"` // Fallback format\n ];\n\n for (const inputFormat of testFormats) {\n const testCommand = `ffmpeg -f avfoundation -i ${inputFormat} -t 1 -y \"${tempFile}\"`;\n logger.debug(`🔧 Testing format: ${inputFormat}`);\n\n try {\n await run(testCommand);\n // If we get here, the command succeeded\n logger.debug(`✅ Audio device [${deviceIndex}] works with format ${inputFormat}`);\n\n // Clean up test file\n try {\n await run(`rm \"${tempFile}\"`);\n } catch {\n // Ignore cleanup errors\n }\n\n return inputFormat;\n } catch (error: any) {\n logger.debug(`❌ Audio device [${deviceIndex}] failed with format ${inputFormat}`);\n // Continue to next format\n }\n }\n\n logger.warn(`❌ No working format found for audio device [${deviceIndex}]`);\n return null;\n\n } catch (error: any) {\n logger.error(`🚨 Failed to get format for audio device [${deviceIndex}]: ${error.message}`);\n return null;\n }\n};\n\nexport const getAudioDeviceInfo = async (deviceIndex: string): Promise<{ sampleRate?: number; channels?: number; channelLayout?: string }> => {\n const logger = getLogger();\n\n // Build quoted input string required by avfoundation\n const inputFormat = `\":${deviceIndex}\"`;\n\n // ffprobe command to fetch audio stream metadata in JSON for easier parsing\n const probeCommand = `ffprobe -f avfoundation -i ${inputFormat} -show_streams -select_streams a -v quiet -print_format json`;\n\n try {\n const { stdout } = await run(probeCommand);\n const parsed = JSON.parse(stdout || '{}');\n const stream = parsed.streams && parsed.streams.length > 0 ? parsed.streams[0] : undefined;\n if (!stream) {\n logger.debug(`ffprobe returned no streams for device ${deviceIndex}`);\n return {};\n }\n\n const sampleRate = stream.sample_rate ? parseInt(stream.sample_rate, 10) : undefined;\n const channels = typeof stream.channels === 'number' ? stream.channels : undefined;\n const channelLayout: string | undefined = stream.channel_layout || undefined;\n\n logger.debug(`Device [${deviceIndex}] capabilities → sampleRate=${sampleRate}, channels=${channels}, layout=${channelLayout}`);\n return { sampleRate, channels, channelLayout };\n } catch (error: any) {\n logger.debug(`Failed to probe audio device ${deviceIndex}: ${error.message}`);\n return {};\n }\n}; "],"names":["detectBestAudioDevice","logger","getLogger","workingDevice","findWorkingAudioDevice","debug","index","format","run","result","output","stderr","stdout","audioDevicesSection","split","deviceLines","filter","line","includes","map","trim","preferredDevices","deviceLine","preferred","toLowerCase","match","error","parseAudioDevices","name","Boolean","listAudioDevices","info","forEach","testAudioDevice","deviceIndex","tempDir","path","join","DEFAULT_OUTPUT_DIRECTORY","fs","mkdir","recursive","tempFile","Date","now","testFormats","inputFormat","testCommand","message","warn","devices","length","device","getDeviceInputFormat","getAudioDeviceInfo","probeCommand","parsed","JSON","parse","stream","streams","undefined","sampleRate","sample_rate","parseInt","channels","channelLayout","channel_layout"],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import '../constants.js';
|
|
2
|
+
import '../logging.js';
|
|
3
|
+
import 'openai';
|
|
4
|
+
import 'glob';
|
|
5
|
+
import 'js-yaml';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Audio Processing Subsystem
|
|
9
|
+
*
|
|
10
|
+
* This module provides comprehensive audio recording, processing, and transcription
|
|
11
|
+
* capabilities. It can be used as a standalone library or as part of a larger system.
|
|
12
|
+
*
|
|
13
|
+
* Main features:
|
|
14
|
+
* - Cross-platform audio recording
|
|
15
|
+
* - Audio file processing and validation
|
|
16
|
+
* - Speech-to-text transcription
|
|
17
|
+
* - Audio device management
|
|
18
|
+
* - Interactive recording controls
|
|
19
|
+
*/ // Core processor
|
|
20
|
+
/**
|
|
21
|
+
* Convenience function to process audio with minimal setup
|
|
22
|
+
* @param options Audio processing options
|
|
23
|
+
* @returns Promise<AudioProcessingResult>
|
|
24
|
+
*/ const processAudio = async (options)=>{
|
|
25
|
+
const { createAudioProcessor } = await import('./processor.js');
|
|
26
|
+
const processor = createAudioProcessor();
|
|
27
|
+
return processor.processAudio(options);
|
|
28
|
+
};
|
|
29
|
+
|
|
30
|
+
export { processAudio };
|
|
31
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../src/audio/index.ts"],"sourcesContent":["/**\n * Audio Processing Subsystem\n * \n * This module provides comprehensive audio recording, processing, and transcription\n * capabilities. It can be used as a standalone library or as part of a larger system.\n * \n * Main features:\n * - Cross-platform audio recording\n * - Audio file processing and validation\n * - Speech-to-text transcription\n * - Audio device management\n * - Interactive recording controls\n */\n\n// Core processor\nexport { AudioProcessor, createAudioProcessor } from './processor';\n\n// Device management\nexport { detectBestAudioDevice, parseAudioDevices, listAudioDevices } from './devices';\n\n// Validation utilities\nexport { validateAudioFile } from './validation';\n\n// Types and interfaces\nexport type {\n AudioDevice,\n AudioDeviceConfig,\n AudioProcessingOptions,\n AudioProcessingResult,\n AudioRecordingControls,\n SupportedAudioFormat\n} from './types';\n\nexport { SUPPORTED_AUDIO_FORMATS } from './types';\n\n// Import types for local use\nimport type { AudioProcessingOptions, AudioProcessingResult } from './types';\n\n/**\n * Convenience function to process audio with minimal setup\n * @param options Audio processing options\n * @returns Promise<AudioProcessingResult>\n */\nexport const processAudio = async (options: AudioProcessingOptions): Promise<AudioProcessingResult> => {\n const { createAudioProcessor } = await import('./processor');\n const processor = createAudioProcessor();\n return processor.processAudio(options);\n}; "],"names":["processAudio","options","createAudioProcessor","processor"],"mappings":";;;;;;AAAA;;;;;;;;;;;;AAYC;AA0BD;;;;IAKO,MAAMA,YAAAA,GAAe,OAAOC,OAAAA,GAAAA;AAC/B,IAAA,MAAM,EAAEC,oBAAoB,EAAE,GAAG,MAAM,OAAO,gBAAA,CAAA;AAC9C,IAAA,MAAMC,SAAAA,GAAYD,oBAAAA,EAAAA;IAClB,OAAOC,SAAAA,CAAUH,YAAY,CAACC,OAAAA,CAAAA;AAClC;;;;"}
|