@thunderkiller/video-clipper 1.8.0 → 1.10.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.
- package/dist/app/cli/args.d.ts.map +1 -1
- package/dist/app/cli/args.js +13 -13
- package/dist/app/cli/args.js.map +1 -1
- package/dist/app/cli/index.js +10 -9
- package/dist/app/cli/index.js.map +1 -1
- package/dist/app/cli/pipeline/dumper.d.ts.map +1 -1
- package/dist/app/cli/pipeline/dumper.js +4 -4
- package/dist/app/cli/pipeline/dumper.js.map +1 -1
- package/dist/app/cli/pipeline/runner.d.ts +1 -1
- package/dist/app/cli/pipeline/runner.d.ts.map +1 -1
- package/dist/app/cli/pipeline/runner.js +16 -15
- package/dist/app/cli/pipeline/runner.js.map +1 -1
- package/dist/app/cli/pipeline/stages/audioProcessor.d.ts +2 -15
- package/dist/app/cli/pipeline/stages/audioProcessor.d.ts.map +1 -1
- package/dist/app/cli/pipeline/stages/audioProcessor.js +7 -7
- package/dist/app/cli/pipeline/stages/audioProcessor.js.map +1 -1
- package/dist/app/cli/pipeline/stages/videoResolver.d.ts.map +1 -1
- package/dist/app/cli/pipeline/stages/videoResolver.js +2 -2
- package/dist/app/cli/pipeline/stages/videoResolver.js.map +1 -1
- package/dist/app/web/lib/activity/analysisActivity.d.ts +3 -5
- package/dist/app/web/lib/activity/analysisActivity.d.ts.map +1 -1
- package/dist/app/web/lib/activity/analysisActivity.js.map +1 -1
- package/dist/app/web/lib/analysisStream.d.ts +3 -11
- package/dist/app/web/lib/analysisStream.d.ts.map +1 -1
- package/dist/app/web/lib/analysisStream.js +26 -3
- package/dist/app/web/lib/analysisStream.js.map +1 -1
- package/dist/app/web/lib/captionTemplates.d.ts +3 -0
- package/dist/app/web/lib/captionTemplates.d.ts.map +1 -0
- package/dist/app/web/lib/captionTemplates.js +98 -0
- package/dist/app/web/lib/captionTemplates.js.map +1 -0
- package/dist/app/web/lib/format.d.ts +2 -0
- package/dist/app/web/lib/format.d.ts.map +1 -1
- package/dist/app/web/lib/format.js +20 -0
- package/dist/app/web/lib/format.js.map +1 -1
- package/dist/app/web/lib/services/analysis/analysisService.d.ts +1 -1
- package/dist/app/web/lib/services/analysis/analysisService.d.ts.map +1 -1
- package/dist/app/web/lib/services/analysis/analysisService.js +5 -4
- package/dist/app/web/lib/services/analysis/analysisService.js.map +1 -1
- package/dist/app/web/lib/services/analysis/streamEvents.d.ts +2 -1
- package/dist/app/web/lib/services/analysis/streamEvents.d.ts.map +1 -1
- package/dist/app/web/lib/services/analysis/streamEvents.js +1 -1
- package/dist/app/web/lib/services/analysis/streamEvents.js.map +1 -1
- package/dist/app/web/lib/services/analysis/transcriptService.d.ts.map +1 -1
- package/dist/app/web/lib/services/analysis/transcriptService.js +1 -2
- package/dist/app/web/lib/services/analysis/transcriptService.js.map +1 -1
- package/dist/app/web/lib/services/artifacts/artifactStore.d.ts +9 -0
- package/dist/app/web/lib/services/artifacts/artifactStore.d.ts.map +1 -1
- package/dist/app/web/lib/services/artifacts/artifactStore.js +45 -0
- package/dist/app/web/lib/services/artifacts/artifactStore.js.map +1 -1
- package/dist/app/web/lib/services/clipping/clipEditService.d.ts +12 -0
- package/dist/app/web/lib/services/clipping/clipEditService.d.ts.map +1 -0
- package/dist/app/web/lib/services/clipping/clipEditService.js +73 -0
- package/dist/app/web/lib/services/clipping/clipEditService.js.map +1 -0
- package/dist/app/web/lib/services/clipping/clipService.d.ts.map +1 -1
- package/dist/app/web/lib/services/clipping/clipService.js +27 -5
- package/dist/app/web/lib/services/clipping/clipService.js.map +1 -1
- package/dist/app/web/lib/services/config/webConfig.d.ts +2 -8
- package/dist/app/web/lib/services/config/webConfig.d.ts.map +1 -1
- package/dist/app/web/lib/services/config/webConfig.js.map +1 -1
- package/dist/app/web/lib/services/publishing/draftService.d.ts +1 -0
- package/dist/app/web/lib/services/publishing/draftService.d.ts.map +1 -1
- package/dist/app/web/lib/services/publishing/draftService.js +60 -9
- package/dist/app/web/lib/services/publishing/draftService.js.map +1 -1
- package/dist/app/web/lib/services/publishing/metadataCache.d.ts +1 -9
- package/dist/app/web/lib/services/publishing/metadataCache.d.ts.map +1 -1
- package/dist/app/web/lib/services/publishing/metadataCache.js +3 -9
- package/dist/app/web/lib/services/publishing/metadataCache.js.map +1 -1
- package/dist/app/web/lib/services/publishing/metadataService.d.ts.map +1 -1
- package/dist/app/web/lib/services/publishing/metadataService.js +10 -16
- package/dist/app/web/lib/services/publishing/metadataService.js.map +1 -1
- package/dist/app/web/lib/services/publishing/uploadService.d.ts +3 -6
- package/dist/app/web/lib/services/publishing/uploadService.d.ts.map +1 -1
- package/dist/app/web/lib/services/publishing/uploadService.js +107 -27
- package/dist/app/web/lib/services/publishing/uploadService.js.map +1 -1
- package/dist/app/web/lib/services/publishing/uploadStreamEvents.d.ts +2 -1
- package/dist/app/web/lib/services/publishing/uploadStreamEvents.d.ts.map +1 -1
- package/dist/app/web/lib/services/publishing/uploadStreamEvents.js +1 -1
- package/dist/app/web/lib/services/publishing/uploadStreamEvents.js.map +1 -1
- package/dist/app/web/lib/services/subtitles/subtitlePlanService.d.ts +5 -0
- package/dist/app/web/lib/services/subtitles/subtitlePlanService.d.ts.map +1 -0
- package/dist/app/web/lib/services/subtitles/subtitlePlanService.js +113 -0
- package/dist/app/web/lib/services/subtitles/subtitlePlanService.js.map +1 -0
- package/dist/app/web/lib/services/youtube/catalogFactory.d.ts +1 -1
- package/dist/app/web/lib/services/youtube/catalogFactory.d.ts.map +1 -1
- package/dist/app/web/lib/services/youtube/uploadAuth.d.ts +1 -6
- package/dist/app/web/lib/services/youtube/uploadAuth.d.ts.map +1 -1
- package/dist/app/web/lib/services/youtube/uploadAuth.js +34 -7
- package/dist/app/web/lib/services/youtube/uploadAuth.js.map +1 -1
- package/dist/app/web/lib/{configStore.d.ts → stores/config.d.ts} +2 -2
- package/dist/app/web/lib/stores/config.d.ts.map +1 -0
- package/dist/app/web/lib/{configStore.js → stores/config.js} +3 -3
- package/dist/app/web/lib/stores/config.js.map +1 -0
- package/dist/app/web/lib/stores/theme.d.ts +2 -0
- package/dist/app/web/lib/stores/theme.d.ts.map +1 -0
- package/dist/app/web/lib/stores/theme.js +12 -0
- package/dist/app/web/lib/stores/theme.js.map +1 -0
- package/dist/app/web/lib/{toastStore.d.ts → stores/toast.d.ts} +3 -6
- package/dist/app/web/lib/stores/toast.d.ts.map +1 -0
- package/dist/app/web/lib/{toastStore.js → stores/toast.js} +1 -1
- package/dist/app/web/lib/{toastStore.js.map → stores/toast.js.map} +1 -1
- package/dist/app/web/lib/stores/video.d.ts +12 -0
- package/dist/app/web/lib/stores/video.d.ts.map +1 -0
- package/dist/app/web/lib/stores/video.js +65 -0
- package/dist/app/web/lib/stores/video.js.map +1 -0
- package/dist/app/web/lib/subtitleTiming.d.ts +5 -0
- package/dist/app/web/lib/subtitleTiming.d.ts.map +1 -0
- package/dist/app/web/lib/subtitleTiming.js +45 -0
- package/dist/app/web/lib/subtitleTiming.js.map +1 -0
- package/dist/app/web/lib/uploadStream.d.ts +4 -17
- package/dist/app/web/lib/uploadStream.d.ts.map +1 -1
- package/dist/app/web/lib/uploadStream.js.map +1 -1
- package/dist/app/web/lib/videoWorkflow.d.ts +2 -8
- package/dist/app/web/lib/videoWorkflow.d.ts.map +1 -1
- package/dist/app/web/lib/videoWorkflow.js.map +1 -1
- package/dist/app/web/routes/api/analysis/transcript/+server.d.ts.map +1 -1
- package/dist/app/web/routes/api/analysis/transcript/+server.js +32 -6
- package/dist/app/web/routes/api/analysis/transcript/+server.js.map +1 -1
- package/dist/app/web/routes/api/cache/videos/[videoId]/analysis/+server.d.ts +3 -0
- package/dist/app/web/routes/api/cache/videos/[videoId]/analysis/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/cache/videos/[videoId]/analysis/+server.js +21 -0
- package/dist/app/web/routes/api/cache/videos/[videoId]/analysis/+server.js.map +1 -0
- package/dist/app/web/routes/api/cache/videos/[videoId]/transcript/+server.d.ts +3 -0
- package/dist/app/web/routes/api/cache/videos/[videoId]/transcript/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/cache/videos/[videoId]/transcript/+server.js +21 -0
- package/dist/app/web/routes/api/cache/videos/[videoId]/transcript/+server.js.map +1 -0
- package/dist/app/web/routes/api/clips/+server.d.ts.map +1 -1
- package/dist/app/web/routes/api/clips/+server.js +9 -2
- package/dist/app/web/routes/api/clips/+server.js.map +1 -1
- package/dist/app/web/routes/api/clips/[clipId]/edits/+server.d.ts +4 -0
- package/dist/app/web/routes/api/clips/[clipId]/edits/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/clips/[clipId]/edits/+server.js +61 -0
- package/dist/app/web/routes/api/clips/[clipId]/edits/+server.js.map +1 -0
- package/dist/app/web/routes/api/clips/[clipId]/file/+server.d.ts +3 -0
- package/dist/app/web/routes/api/clips/[clipId]/file/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/clips/[clipId]/file/+server.js +99 -0
- package/dist/app/web/routes/api/clips/[clipId]/file/+server.js.map +1 -0
- package/dist/app/web/routes/api/clips/[clipId]/render/+server.d.ts +3 -0
- package/dist/app/web/routes/api/clips/[clipId]/render/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/clips/[clipId]/render/+server.js +31 -0
- package/dist/app/web/routes/api/clips/[clipId]/render/+server.js.map +1 -0
- package/dist/app/web/routes/api/clips/[clipId]/subtitles/plan/+server.d.ts +3 -0
- package/dist/app/web/routes/api/clips/[clipId]/subtitles/plan/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/clips/[clipId]/subtitles/plan/+server.js +25 -0
- package/dist/app/web/routes/api/clips/[clipId]/subtitles/plan/+server.js.map +1 -0
- package/dist/app/web/routes/api/config/+server.d.ts.map +1 -1
- package/dist/app/web/routes/api/config/+server.js +1 -1
- package/dist/app/web/routes/api/config/+server.js.map +1 -1
- package/dist/app/web/routes/api/library/analyses/[analysisId]/+server.d.ts.map +1 -1
- package/dist/app/web/routes/api/library/analyses/[analysisId]/+server.js +1 -4
- package/dist/app/web/routes/api/library/analyses/[analysisId]/+server.js.map +1 -1
- package/dist/app/web/routes/api/library/clips/+server.d.ts.map +1 -1
- package/dist/app/web/routes/api/library/clips/+server.js +1 -4
- package/dist/app/web/routes/api/library/clips/+server.js.map +1 -1
- package/dist/app/web/routes/api/publish/drafts/[analysisId]/+server.d.ts.map +1 -1
- package/dist/app/web/routes/api/publish/drafts/[analysisId]/+server.js +3 -9
- package/dist/app/web/routes/api/publish/drafts/[analysisId]/+server.js.map +1 -1
- package/dist/app/web/routes/api/publish/drafts/generate/+server.d.ts.map +1 -1
- package/dist/app/web/routes/api/publish/drafts/generate/+server.js +6 -2
- package/dist/app/web/routes/api/publish/drafts/generate/+server.js.map +1 -1
- package/dist/app/web/routes/api/publish/thumbnails/+server.d.ts.map +1 -1
- package/dist/app/web/routes/api/publish/thumbnails/+server.js +5 -1
- package/dist/app/web/routes/api/publish/thumbnails/+server.js.map +1 -1
- package/dist/app/web/routes/api/youtube/channels/[channelId]/videos/+server.d.ts.map +1 -1
- package/dist/app/web/routes/api/youtube/channels/[channelId]/videos/+server.js +1 -5
- package/dist/app/web/routes/api/youtube/channels/[channelId]/videos/+server.js.map +1 -1
- package/dist/app/web/routes/api/youtube/channels/resolve/+server.d.ts.map +1 -1
- package/dist/app/web/routes/api/youtube/channels/resolve/+server.js +1 -4
- package/dist/app/web/routes/api/youtube/channels/resolve/+server.js.map +1 -1
- package/dist/app/web/routes/api/youtube/uploads/+server.d.ts.map +1 -1
- package/dist/app/web/routes/api/youtube/uploads/+server.js +12 -6
- package/dist/app/web/routes/api/youtube/uploads/+server.js.map +1 -1
- package/dist/app/web/routes/api/youtube/videos/[videoId]/+server.d.ts.map +1 -1
- package/dist/app/web/routes/api/youtube/videos/[videoId]/+server.js +1 -4
- package/dist/app/web/routes/api/youtube/videos/[videoId]/+server.js.map +1 -1
- package/dist/app/web/routes/api/youtube/videos/[videoId]/transcript/+server.d.ts.map +1 -1
- package/dist/app/web/routes/api/youtube/videos/[videoId]/transcript/+server.js +1 -4
- package/dist/app/web/routes/api/youtube/videos/[videoId]/transcript/+server.js.map +1 -1
- package/dist/app/web/types/activity.d.ts +4 -0
- package/dist/app/web/types/activity.d.ts.map +1 -1
- package/dist/app/web/types/analysis.d.ts +36 -0
- package/dist/app/web/types/analysis.d.ts.map +1 -1
- package/dist/app/web/types/analysis.js +17 -0
- package/dist/app/web/types/analysis.js.map +1 -1
- package/dist/app/web/types/componentProps.d.ts +383 -0
- package/dist/app/web/types/componentProps.d.ts.map +1 -0
- package/dist/app/web/types/componentProps.js +2 -0
- package/dist/app/web/types/componentProps.js.map +1 -0
- package/dist/app/web/types/publish.d.ts +40 -3
- package/dist/app/web/types/publish.d.ts.map +1 -1
- package/dist/app/web/types/publish.js +21 -0
- package/dist/app/web/types/publish.js.map +1 -1
- package/dist/app/web/types/subtitlePlan.d.ts +46 -0
- package/dist/app/web/types/subtitlePlan.d.ts.map +1 -0
- package/dist/app/web/types/subtitlePlan.js +20 -0
- package/dist/app/web/types/subtitlePlan.js.map +1 -0
- package/dist/app/web/types/upload.d.ts +23 -0
- package/dist/app/web/types/upload.d.ts.map +1 -0
- package/dist/app/web/types/upload.js +2 -0
- package/dist/app/web/types/upload.js.map +1 -0
- package/dist/app/web/types/videoStore.d.ts +13 -0
- package/dist/app/web/types/videoStore.d.ts.map +1 -0
- package/dist/app/web/types/videoStore.js +2 -0
- package/dist/app/web/types/videoStore.js.map +1 -0
- package/dist/app/web/types/web.d.ts +38 -0
- package/dist/app/web/types/web.d.ts.map +1 -1
- package/dist/app/web/types/web.js +1 -0
- package/dist/app/web/types/web.js.map +1 -1
- package/dist/app/web/types/workflow.d.ts +9 -0
- package/dist/app/web/types/workflow.d.ts.map +1 -0
- package/dist/app/web/types/workflow.js +2 -0
- package/dist/app/web/types/workflow.js.map +1 -0
- package/dist/app/web/types/youtube.d.ts +15 -0
- package/dist/app/web/types/youtube.d.ts.map +1 -0
- package/dist/app/web/types/youtube.js +12 -0
- package/dist/app/web/types/youtube.js.map +1 -0
- package/dist/app/web/widgets/settings/groupConfig.d.ts +4 -0
- package/dist/app/web/widgets/settings/groupConfig.d.ts.map +1 -0
- package/dist/app/web/widgets/settings/groupConfig.js +219 -0
- package/dist/app/web/widgets/settings/groupConfig.js.map +1 -0
- package/dist/hooks.server.js +1 -1
- package/dist/hooks.server.js.map +1 -1
- package/dist/lib/config/env.d.ts +1 -5
- package/dist/lib/config/env.d.ts.map +1 -1
- package/dist/lib/config/env.js +1 -1
- package/dist/lib/config/env.js.map +1 -1
- package/dist/lib/config/index.d.ts +1 -1
- package/dist/lib/config/index.d.ts.map +1 -1
- package/dist/lib/config/registry.d.ts +2 -23
- package/dist/lib/config/registry.d.ts.map +1 -1
- package/dist/lib/config/registry.js +1 -1
- package/dist/lib/config/registry.js.map +1 -1
- package/dist/lib/index.d.ts +3 -4
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +1 -2
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/pipeline/stages/clipExporter.d.ts +2 -7
- package/dist/lib/pipeline/stages/clipExporter.d.ts.map +1 -1
- package/dist/lib/pipeline/stages/clipExporter.js +4 -4
- package/dist/lib/pipeline/stages/clipExporter.js.map +1 -1
- package/dist/lib/pipeline/stages/segmentAnalyzer.d.ts +2 -2
- package/dist/lib/pipeline/stages/segmentAnalyzer.d.ts.map +1 -1
- package/dist/lib/pipeline/stages/segmentAnalyzer.js +6 -2
- package/dist/lib/pipeline/stages/segmentAnalyzer.js.map +1 -1
- package/dist/lib/pipeline/stages/segmentSelector.d.ts.map +1 -1
- package/dist/lib/pipeline/stages/segmentSelector.js +2 -2
- package/dist/lib/pipeline/stages/segmentSelector.js.map +1 -1
- package/dist/lib/services/analysis/llm/LLMAnalyzer.d.ts +2 -2
- package/dist/lib/services/analysis/llm/LLMAnalyzer.d.ts.map +1 -1
- package/dist/lib/services/analysis/llm/LLMAnalyzer.js +5 -3
- package/dist/lib/services/analysis/llm/LLMAnalyzer.js.map +1 -1
- package/dist/lib/services/analysis/llm/index.d.ts +3 -10
- package/dist/lib/services/analysis/llm/index.d.ts.map +1 -1
- package/dist/lib/services/analysis/llm/index.js +12 -8
- package/dist/lib/services/analysis/llm/index.js.map +1 -1
- package/dist/lib/services/analysis/refiner/index.d.ts +3 -11
- package/dist/lib/services/analysis/refiner/index.d.ts.map +1 -1
- package/dist/lib/services/analysis/refiner/index.js +9 -8
- package/dist/lib/services/analysis/refiner/index.js.map +1 -1
- package/dist/lib/services/analysis/transcript/detector.d.ts +1 -1
- package/dist/lib/services/analysis/transcript/detector.d.ts.map +1 -1
- package/dist/lib/services/analysis/transcript/detector.js +4 -4
- package/dist/lib/services/analysis/transcript/detector.js.map +1 -1
- package/dist/lib/services/audio/analyzer/factory.d.ts +1 -6
- package/dist/lib/services/audio/analyzer/factory.d.ts.map +1 -1
- package/dist/lib/services/audio/analyzer/factory.js +1 -1
- package/dist/lib/services/audio/analyzer/factory.js.map +1 -1
- package/dist/lib/services/audio/analyzer/gemini.d.ts +1 -5
- package/dist/lib/services/audio/analyzer/gemini.d.ts.map +1 -1
- package/dist/lib/services/audio/analyzer/gemini.js +2 -13
- package/dist/lib/services/audio/analyzer/gemini.js.map +1 -1
- package/dist/lib/services/audio/analyzer/index.d.ts +1 -1
- package/dist/lib/services/audio/analyzer/index.d.ts.map +1 -1
- package/dist/lib/services/audio/index.d.ts +1 -1
- package/dist/lib/services/audio/index.d.ts.map +1 -1
- package/dist/lib/services/audio/processor/detector.d.ts.map +1 -1
- package/dist/lib/services/audio/processor/detector.js +13 -3
- package/dist/lib/services/audio/processor/detector.js.map +1 -1
- package/dist/lib/services/audio/processor/slicer.d.ts +2 -4
- package/dist/lib/services/audio/processor/slicer.d.ts.map +1 -1
- package/dist/lib/services/audio/processor/slicer.js.map +1 -1
- package/dist/lib/services/audio/source/index.d.ts +1 -1
- package/dist/lib/services/audio/source/index.d.ts.map +1 -1
- package/dist/lib/services/audio/source/youtube.d.ts.map +1 -1
- package/dist/lib/services/audio/source/youtube.js +6 -7
- package/dist/lib/services/audio/source/youtube.js.map +1 -1
- package/dist/lib/services/audio/transcriber/factory.js +1 -2
- package/dist/lib/services/audio/transcriber/factory.js.map +1 -1
- package/dist/lib/services/audio/transcriber/whisper.d.ts.map +1 -1
- package/dist/lib/services/audio/transcriber/whisper.js +1 -6
- package/dist/lib/services/audio/transcriber/whisper.js.map +1 -1
- package/dist/lib/services/cache/backends/disabled.d.ts +20 -0
- package/dist/lib/services/cache/backends/disabled.d.ts.map +1 -0
- package/dist/lib/{utils/cacheBackend.js → services/cache/backends/disabled.js} +1 -1
- package/dist/lib/services/cache/backends/disabled.js.map +1 -0
- package/dist/lib/{utils/fileCacheBackend.d.ts → services/cache/backends/file.d.ts} +7 -4
- package/dist/lib/services/cache/backends/file.d.ts.map +1 -0
- package/dist/lib/{utils/fileCacheBackend.js → services/cache/backends/file.js} +18 -9
- package/dist/lib/services/cache/backends/file.js.map +1 -0
- package/dist/lib/{utils/mongoCacheBackend.d.ts → services/cache/backends/mongo.d.ts} +3 -3
- package/dist/lib/services/cache/backends/mongo.d.ts.map +1 -0
- package/dist/lib/{utils/mongoCacheBackend.js → services/cache/backends/mongo.js} +8 -8
- package/dist/lib/services/cache/backends/mongo.js.map +1 -0
- package/dist/lib/{utils → services/cache}/cache.d.ts +6 -5
- package/dist/lib/services/cache/cache.d.ts.map +1 -0
- package/dist/lib/{utils → services/cache}/cache.js +25 -4
- package/dist/lib/services/cache/cache.js.map +1 -0
- package/dist/lib/{utils/cacheFactory.d.ts → services/cache/factory.d.ts} +3 -3
- package/dist/lib/services/cache/factory.d.ts.map +1 -0
- package/dist/lib/{utils/cacheFactory.js → services/cache/factory.js} +6 -6
- package/dist/lib/services/cache/factory.js.map +1 -0
- package/dist/lib/services/cache/index.d.ts +4 -0
- package/dist/lib/services/cache/index.d.ts.map +1 -0
- package/dist/lib/services/cache/index.js +3 -0
- package/dist/lib/services/cache/index.js.map +1 -0
- package/dist/lib/services/cache/manifest.d.ts +6 -0
- package/dist/lib/services/cache/manifest.d.ts.map +1 -0
- package/dist/lib/services/cache/manifest.js +101 -0
- package/dist/lib/services/cache/manifest.js.map +1 -0
- package/dist/lib/services/video/clipper/editor/drawtextBuilder.d.ts +6 -0
- package/dist/lib/services/video/clipper/editor/drawtextBuilder.d.ts.map +1 -0
- package/dist/lib/services/video/clipper/editor/drawtextBuilder.js +42 -0
- package/dist/lib/services/video/clipper/editor/drawtextBuilder.js.map +1 -0
- package/dist/lib/services/video/clipper/editor/filterGraphBuilder.d.ts +7 -0
- package/dist/lib/services/video/clipper/editor/filterGraphBuilder.d.ts.map +1 -0
- package/dist/lib/services/video/clipper/editor/filterGraphBuilder.js +58 -0
- package/dist/lib/services/video/clipper/editor/filterGraphBuilder.js.map +1 -0
- package/dist/lib/services/video/clipper/editor/renderer.d.ts +4 -0
- package/dist/lib/services/video/clipper/editor/renderer.d.ts.map +1 -0
- package/dist/lib/services/video/clipper/editor/renderer.js +83 -0
- package/dist/lib/services/video/clipper/editor/renderer.js.map +1 -0
- package/dist/lib/services/video/clipper/editor/subtitleBuilder.d.ts +6 -0
- package/dist/lib/services/video/clipper/editor/subtitleBuilder.d.ts.map +1 -0
- package/dist/lib/services/video/clipper/editor/subtitleBuilder.js +155 -0
- package/dist/lib/services/video/clipper/editor/subtitleBuilder.js.map +1 -0
- package/dist/lib/services/video/clipper/editor/textEscape.d.ts +3 -0
- package/dist/lib/services/video/clipper/editor/textEscape.d.ts.map +1 -0
- package/dist/lib/services/video/clipper/editor/textEscape.js +11 -0
- package/dist/lib/services/video/clipper/editor/textEscape.js.map +1 -0
- package/dist/lib/services/video/clipper/index.d.ts +11 -7
- package/dist/lib/services/video/clipper/index.d.ts.map +1 -1
- package/dist/lib/services/video/clipper/index.js +38 -26
- package/dist/lib/services/video/clipper/index.js.map +1 -1
- package/dist/lib/services/video/index.d.ts +2 -2
- package/dist/lib/services/video/index.d.ts.map +1 -1
- package/dist/lib/services/video/source/index.d.ts +2 -2
- package/dist/lib/services/video/source/index.d.ts.map +1 -1
- package/dist/lib/services/video/source/youtube/catalog.d.ts +1 -17
- package/dist/lib/services/video/source/youtube/catalog.d.ts.map +1 -1
- package/dist/lib/services/video/source/youtube/catalog.js.map +1 -1
- package/dist/lib/services/video/source/youtube/downloader.d.ts.map +1 -1
- package/dist/lib/services/video/source/youtube/downloader.js +17 -19
- package/dist/lib/services/video/source/youtube/downloader.js.map +1 -1
- package/dist/lib/services/video/source/youtube/metadata.d.ts.map +1 -1
- package/dist/lib/services/video/source/youtube/metadata.js +3 -3
- package/dist/lib/services/video/source/youtube/metadata.js.map +1 -1
- package/dist/lib/services/video/source/youtube/subtitles.d.ts +1 -30
- package/dist/lib/services/video/source/youtube/subtitles.d.ts.map +1 -1
- package/dist/lib/services/video/source/youtube/subtitles.js +4 -4
- package/dist/lib/services/video/source/youtube/subtitles.js.map +1 -1
- package/dist/lib/types/analyzer.d.ts +23 -0
- package/dist/lib/types/analyzer.d.ts.map +1 -1
- package/dist/lib/types/analyzer.js +5 -1
- package/dist/lib/types/analyzer.js.map +1 -1
- package/dist/lib/types/audio.d.ts +28 -0
- package/dist/lib/types/audio.d.ts.map +1 -1
- package/dist/lib/types/audio.js +10 -0
- package/dist/lib/types/audio.js.map +1 -1
- package/dist/lib/types/cache.d.ts +34 -0
- package/dist/lib/types/cache.d.ts.map +1 -1
- package/dist/lib/types/cache.js.map +1 -1
- package/dist/lib/types/clipEdit.d.ts +232 -0
- package/dist/lib/types/clipEdit.d.ts.map +1 -0
- package/dist/lib/types/clipEdit.js +68 -0
- package/dist/lib/types/clipEdit.js.map +1 -0
- package/dist/lib/types/config.d.ts +39 -3
- package/dist/lib/types/config.d.ts.map +1 -1
- package/dist/lib/types/config.js +32 -1
- package/dist/lib/types/config.js.map +1 -1
- package/dist/lib/types/index.d.ts +11 -8
- package/dist/lib/types/index.d.ts.map +1 -1
- package/dist/lib/types/index.js +3 -1
- package/dist/lib/types/index.js.map +1 -1
- package/dist/lib/types/pipeline.d.ts +22 -10
- package/dist/lib/types/pipeline.d.ts.map +1 -1
- package/dist/lib/types/video.d.ts +17 -0
- package/dist/lib/types/video.d.ts.map +1 -1
- package/dist/lib/types/video.js.map +1 -1
- package/dist/lib/types/youtube.d.ts +51 -0
- package/dist/lib/types/youtube.d.ts.map +1 -1
- package/dist/lib/utils/logger.d.ts +20 -6
- package/dist/lib/utils/logger.d.ts.map +1 -1
- package/dist/lib/utils/logger.js +59 -30
- package/dist/lib/utils/logger.js.map +1 -1
- package/dist/lib/utils/modelFactory.d.ts +1 -6
- package/dist/lib/utils/modelFactory.d.ts.map +1 -1
- package/dist/lib/utils/modelFactory.js.map +1 -1
- package/dist/lib/utils/pythonBin.js +1 -1
- package/dist/lib/utils/pythonBin.js.map +1 -1
- package/dist/lib/utils/retryAsync.d.ts.map +1 -1
- package/dist/lib/utils/retryAsync.js +1 -2
- package/dist/lib/utils/retryAsync.js.map +1 -1
- package/dist/lib/utils/textScale.d.ts +14 -0
- package/dist/lib/utils/textScale.d.ts.map +1 -0
- package/dist/lib/utils/textScale.js +14 -0
- package/dist/lib/utils/textScale.js.map +1 -0
- package/package.json +3 -1
- package/dist/app/web/lib/configStore.d.ts.map +0 -1
- package/dist/app/web/lib/configStore.js.map +0 -1
- package/dist/app/web/lib/toastStore.d.ts.map +0 -1
- package/dist/lib/services/audio/source/types.d.ts +0 -5
- package/dist/lib/services/audio/source/types.d.ts.map +0 -1
- package/dist/lib/services/audio/source/types.js +0 -2
- package/dist/lib/services/audio/source/types.js.map +0 -1
- package/dist/lib/services/video/source/types.d.ts +0 -12
- package/dist/lib/services/video/source/types.d.ts.map +0 -1
- package/dist/lib/services/video/source/types.js +0 -2
- package/dist/lib/services/video/source/types.js.map +0 -1
- package/dist/lib/utils/cache.d.ts.map +0 -1
- package/dist/lib/utils/cache.js.map +0 -1
- package/dist/lib/utils/cacheBackend.d.ts +0 -40
- package/dist/lib/utils/cacheBackend.d.ts.map +0 -1
- package/dist/lib/utils/cacheBackend.js.map +0 -1
- package/dist/lib/utils/cacheFactory.d.ts.map +0 -1
- package/dist/lib/utils/cacheFactory.js.map +0 -1
- package/dist/lib/utils/fileCacheBackend.d.ts.map +0 -1
- package/dist/lib/utils/fileCacheBackend.js.map +0 -1
- package/dist/lib/utils/mongoCacheBackend.d.ts.map +0 -1
- package/dist/lib/utils/mongoCacheBackend.js.map +0 -1
|
@@ -2,11 +2,8 @@ import { streamText, tool, zodSchema } from 'ai';
|
|
|
2
2
|
import pLimit from 'p-limit';
|
|
3
3
|
import { z } from 'zod';
|
|
4
4
|
import { log } from '../../../utils/logger.js';
|
|
5
|
+
import { RefinedBoundariesSchema } from '../../../types/analyzer.js';
|
|
5
6
|
const CONTEXT_PADDING_SEC = 30;
|
|
6
|
-
const RefinedBoundariesSchema = z.object({
|
|
7
|
-
clip_start: z.number().describe('Refined clip start time in seconds'),
|
|
8
|
-
clip_end: z.number().describe('Refined clip end time in seconds'),
|
|
9
|
-
});
|
|
10
7
|
function buildContextText(segment, allBlocks) {
|
|
11
8
|
const windowStart = Math.max(0, segment.start - CONTEXT_PADDING_SEC);
|
|
12
9
|
const windowEnd = segment.end + CONTEXT_PADDING_SEC;
|
|
@@ -55,7 +52,7 @@ async function refineSegment(segment, allBlocks, cache, noCache, opts) {
|
|
|
55
52
|
if (!noCache) {
|
|
56
53
|
const cached = await cache.readSegmentRefinement(segment.start, segment.end, segment.reason);
|
|
57
54
|
if (cached) {
|
|
58
|
-
log.info(`[segment] cache hit (rank=${segment.rank})
|
|
55
|
+
log.info('refineSegment', `[segment] cache hit (rank=${segment.rank})`, opts.requestId);
|
|
59
56
|
const refined = { ...segment, start: cached.refined_start, end: cached.refined_end };
|
|
60
57
|
opts.callbacks?.onSegmentRefined?.(segment.rank, refined);
|
|
61
58
|
return refined;
|
|
@@ -68,6 +65,7 @@ async function refineSegment(segment, allBlocks, cache, noCache, opts) {
|
|
|
68
65
|
toolChoice: 'required',
|
|
69
66
|
prompt: buildPrompt(segment, text, windowStart, windowEnd, opts.videoTitle),
|
|
70
67
|
maxRetries: opts.maxRetries,
|
|
68
|
+
abortSignal: opts.signal,
|
|
71
69
|
});
|
|
72
70
|
for await (const part of result.fullStream) {
|
|
73
71
|
if (part.type === 'text-delta') {
|
|
@@ -94,7 +92,10 @@ async function refineSegment(segment, allBlocks, cache, noCache, opts) {
|
|
|
94
92
|
return refined;
|
|
95
93
|
}
|
|
96
94
|
export async function refineSegments(segments, allBlocks, concurrency, cache, noCache, opts) {
|
|
97
|
-
const done = log.fnCalled('refineSegments',
|
|
95
|
+
const done = log.fnCalled('refineSegments', opts.requestId, {
|
|
96
|
+
segments: segments.length,
|
|
97
|
+
concurrency,
|
|
98
|
+
});
|
|
98
99
|
const limit = pLimit(concurrency);
|
|
99
100
|
const results = await Promise.allSettled(segments.map((segment) => limit(() => refineSegment(segment, allBlocks, cache, noCache, opts))));
|
|
100
101
|
const refined = results.map((result, i) => {
|
|
@@ -102,10 +103,10 @@ export async function refineSegments(segments, allBlocks, concurrency, cache, no
|
|
|
102
103
|
return result.value;
|
|
103
104
|
}
|
|
104
105
|
const reason = result.reason instanceof Error ? result.reason.message : String(result.reason);
|
|
105
|
-
log.warn(`[segment rank=${segments[i].rank}] refinement skipped: ${reason}
|
|
106
|
+
log.warn('refineSegments', `[segment rank=${segments[i].rank}] refinement skipped: ${reason}`, opts.requestId);
|
|
106
107
|
return segments[i];
|
|
107
108
|
});
|
|
108
|
-
log.info(
|
|
109
|
+
log.info('refineSegments', 'Refinement complete', opts.requestId);
|
|
109
110
|
done({ refined: refined.length });
|
|
110
111
|
return refined;
|
|
111
112
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/lib/services/analysis/refiner/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,IAAI,CAAC;AACjD,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/lib/services/analysis/refiner/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { TranscriptAnalyzer } from '../../audio/transcriber/base.js';
|
|
2
|
-
import type { CacheBackend } from '../../../
|
|
2
|
+
import type { CacheBackend } from '../../../types/cache.js';
|
|
3
3
|
import type { TranscriptDetectorResult } from '../../../types/analyzer.js';
|
|
4
4
|
/**
|
|
5
5
|
* Top-level transcript detector.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/analysis/transcript/detector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/analysis/transcript/detector.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAC1E,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAEvE;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,OAAO,CAAC,QAAQ,CAAC,eAAe;gBAHf,KAAK,EAAE,kBAAkB,EAAE,EAC3B,aAAa,EAAE,MAAM,EACrB,cAAc,EAAE,MAAM,EACtB,eAAe,EAAE,MAAM;IAO1C;;;;;;;;;;OAUG;IACG,MAAM,CACV,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,KAAK,EAAE,YAAY,GAClB,OAAO,CAAC,wBAAwB,CAAC;IAqBpC;;;OAGG;YACW,cAAc;IAuC5B,qDAAqD;IACrD,OAAO,CAAC,gBAAgB;IAIxB,gEAAgE;IAChE,OAAO,CAAC,WAAW;CAGpB"}
|
|
@@ -53,7 +53,7 @@ export class TranscriptDetector {
|
|
|
53
53
|
let lines;
|
|
54
54
|
const cached = await cache.readTranscript(videoId);
|
|
55
55
|
if (cached) {
|
|
56
|
-
log.info(`[cache hit] Transcript loaded from cache (${cached.length} lines)`);
|
|
56
|
+
log.info('TranscriptDetector.detect', `[cache hit] Transcript loaded from cache (${cached.length} lines)`);
|
|
57
57
|
lines = cached;
|
|
58
58
|
}
|
|
59
59
|
else {
|
|
@@ -75,7 +75,7 @@ export class TranscriptDetector {
|
|
|
75
75
|
const isLast = i === this.chain.length - 1;
|
|
76
76
|
try {
|
|
77
77
|
const lines = await analyzer.detect(videoId, audioPath);
|
|
78
|
-
log.info(`[transcript:${analyzer.source}] fetched ${lines.length} lines`);
|
|
78
|
+
log.info('TranscriptDetector.fetchFromChain', `[transcript:${analyzer.source}] fetched ${lines.length} lines`);
|
|
79
79
|
return lines;
|
|
80
80
|
}
|
|
81
81
|
catch (err) {
|
|
@@ -83,10 +83,10 @@ export class TranscriptDetector {
|
|
|
83
83
|
const message = err instanceof Error ? err.message : String(err);
|
|
84
84
|
if (!isLast) {
|
|
85
85
|
const nextSource = this.chain[i + 1].source;
|
|
86
|
-
log.warn(`[transcript:${analyzer.source}] failed, falling back to ${nextSource}: ${message}`);
|
|
86
|
+
log.warn('TranscriptDetector.fetchFromChain', `[transcript:${analyzer.source}] failed, falling back to ${nextSource}: ${message}`);
|
|
87
87
|
}
|
|
88
88
|
else {
|
|
89
|
-
log.error(`[transcript:${analyzer.source}] failed (no more fallbacks): ${message}`);
|
|
89
|
+
log.error('TranscriptDetector.fetchFromChain', `[transcript:${analyzer.source}] failed (no more fallbacks): ${message}`);
|
|
90
90
|
}
|
|
91
91
|
}
|
|
92
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detector.js","sourceRoot":"","sources":["../../../../../src/lib/services/analysis/transcript/detector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAM3C;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,OAAO,kBAAkB;IAEV;IACA;IACA;IACA;IAJnB,YACmB,KAA2B,EAC3B,aAAqB,EACrB,cAAsB,EACtB,eAAuB;QAHvB,UAAK,GAAL,KAAK,CAAsB;QAC3B,kBAAa,GAAb,aAAa,CAAQ;QACrB,mBAAc,GAAd,cAAc,CAAQ;QACtB,oBAAe,GAAf,eAAe,CAAQ;QAExC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;QAC/F,CAAC;IACH,CAAC;IAED;;;;;;;;;;OAUG;IACH,KAAK,CAAC,MAAM,CACV,OAAe,EACf,SAAwB,EACxB,KAAmB;QAEnB,IAAI,KAAuB,CAAC;QAE5B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;QACnD,IAAI,MAAM,EAAE,CAAC;YACX,GAAG,CAAC,IAAI,
|
|
1
|
+
{"version":3,"file":"detector.js","sourceRoot":"","sources":["../../../../../src/lib/services/analysis/transcript/detector.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,6 @@
|
|
|
1
1
|
import { AudioAnalyzer } from './base.js';
|
|
2
|
-
import type { GeminiAnalyzerConfig } from './gemini.js';
|
|
3
2
|
import type { AudioProviderName } from '../../../types/index.js';
|
|
4
|
-
|
|
5
|
-
confidenceThreshold: number;
|
|
6
|
-
whisperModel: string;
|
|
7
|
-
gemini: GeminiAnalyzerConfig;
|
|
8
|
-
}
|
|
3
|
+
import type { AnalyzerChainConfig } from '../../../types/audio.js';
|
|
9
4
|
/**
|
|
10
5
|
* Parses the AUDIO_PROVIDER config string into an ordered list of provider names.
|
|
11
6
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/audio/analyzer/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/audio/analyzer/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAI1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAwB,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAIrF;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,iBAAiB,EAAE,CA2B9E;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CACjC,cAAc,EAAE,MAAM,EACtB,WAAW,EAAE,mBAAmB,GAC/B,aAAa,EAAE,CAajB"}
|
|
@@ -13,7 +13,7 @@ const KNOWN_PROVIDERS = new Set(['gemini', 'whisper', 'yamnet']);
|
|
|
13
13
|
*/
|
|
14
14
|
export function parseProviderChain(providerString) {
|
|
15
15
|
if (providerString.trim() === 'both') {
|
|
16
|
-
log.warn('[audio] AUDIO_PROVIDER=both is deprecated. Use AUDIO_PROVIDER=gemini,whisper instead.');
|
|
16
|
+
log.warn('parseProviderChain', '[audio] AUDIO_PROVIDER=both is deprecated. Use AUDIO_PROVIDER=gemini,whisper instead.');
|
|
17
17
|
return ['gemini', 'whisper'];
|
|
18
18
|
}
|
|
19
19
|
const names = providerString
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../../src/lib/services/audio/analyzer/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAE3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../../src/lib/services/audio/analyzer/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAE3C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAIlD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAoB,CAAC,QAAQ,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AAEpF;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,cAAsB;IACvD,IAAI,cAAc,CAAC,IAAI,EAAE,KAAK,MAAM,EAAE,CAAC;QACrC,GAAG,CAAC,IAAI,CACN,oBAAoB,EACpB,uFAAuF,CACxF,CAAC;QACF,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,KAAK,GAAG,cAAc;SACzB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SAClC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,2EAA2E,CAAC,CAAC;IAC/F,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAyB,CAAC,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CACb,2BAA2B,IAAI,uEAAuE,CACvG,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,KAA4B,CAAC;AACtC,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,mBAAmB,CACjC,cAAsB,EACtB,WAAgC;IAEhC,MAAM,KAAK,GAAG,kBAAkB,CAAC,cAAc,CAAC,CAAC;IAEjD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,QAAQ;gBACX,OAAO,IAAI,mBAAmB,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACrD,KAAK,SAAS;gBACZ,OAAO,IAAI,oBAAoB,CAAC,WAAW,CAAC,mBAAmB,EAAE,WAAW,CAAC,YAAY,CAAC,CAAC;YAC7F,KAAK,QAAQ;gBACX,OAAO,IAAI,mBAAmB,CAAC,WAAW,CAAC,mBAAmB,CAAC,CAAC;QACpE,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import type { AudioEvent } from '../../../types/audio.js';
|
|
2
|
+
import type { GeminiAnalyzerConfig } from '../../../types/audio.js';
|
|
2
3
|
import { AudioAnalyzer } from './base.js';
|
|
3
|
-
export interface GeminiAnalyzerConfig {
|
|
4
|
-
apiKey: string;
|
|
5
|
-
model: string;
|
|
6
|
-
extraInstructions?: string;
|
|
7
|
-
}
|
|
8
4
|
/**
|
|
9
5
|
* Resolves a Gemini `time_sec` value to true decimal seconds.
|
|
10
6
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/audio/analyzer/gemini.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/audio/analyzer/gemini.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAsB1C;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAanF;AAED;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IAGxC,OAAO,CAAC,QAAQ,CAAC,YAAY;IAFzC,QAAQ,CAAC,MAAM,EAAG,QAAQ,CAAU;gBAEP,YAAY,EAAE,oBAAoB;IAIzD,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,UAAU,EAAE,CAAC;CAiDzB"}
|
|
@@ -1,19 +1,8 @@
|
|
|
1
1
|
import { GoogleGenerativeAI } from '@google/generative-ai';
|
|
2
2
|
import * as fs from 'fs';
|
|
3
|
-
import { z } from 'zod';
|
|
4
3
|
import { log } from '../../../utils/logger.js';
|
|
4
|
+
import { GeminiEventSchema } from '../../../types/audio.js';
|
|
5
5
|
import { AudioAnalyzer } from './base.js';
|
|
6
|
-
/**
|
|
7
|
-
* Gemini returns timestamps inconsistently as either:
|
|
8
|
-
* - MM.SS notation: 1.03 = 1 min 3 sec = 63s
|
|
9
|
-
* - True decimal seconds: 53.403 = 53.403s
|
|
10
|
-
* Use normalizeGeminiTime() to resolve correct value.
|
|
11
|
-
*/
|
|
12
|
-
const GeminiEventSchema = z.array(z.object({
|
|
13
|
-
time_sec: z.number(),
|
|
14
|
-
event: z.string(),
|
|
15
|
-
confidence: z.number().min(0).max(1),
|
|
16
|
-
}));
|
|
17
6
|
const GAME_PROFILE_PROMPTS = {
|
|
18
7
|
valorant: 'You are analyzing audio from a Valorant gaming video. Identify ALL significant game events: kills, deaths, explosions, ability uses, spike plants/defuses, ace moments, clutch situations, crowd reactions, hype moments.',
|
|
19
8
|
fps: 'You are analyzing audio from an FPS gaming video. Identify ALL significant game events: kills, deaths, explosions, weapon fire, headshot sounds, kill streaks, crowd reactions, battle cries.',
|
|
@@ -93,7 +82,7 @@ Return ONLY a JSON array, no explanation. Format:
|
|
|
93
82
|
prompt,
|
|
94
83
|
]);
|
|
95
84
|
const text = result.response.text();
|
|
96
|
-
log.info(
|
|
85
|
+
log.info('GeminiAudioAnalyzer.detect', 'response received', undefined, { text });
|
|
97
86
|
const cleaned = text
|
|
98
87
|
.replace(/^```(?:json)?\s*/i, '')
|
|
99
88
|
.replace(/\s*```\s*$/i, '')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../../../src/lib/services/audio/analyzer/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../../../src/lib/services/audio/analyzer/gemini.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { AudioAnalyzer } from './base.js';
|
|
2
2
|
export { createAnalyzerChain, parseProviderChain } from './factory.js';
|
|
3
|
-
export type { AnalyzerChainConfig } from '
|
|
3
|
+
export type { AnalyzerChainConfig } from '../../../types/audio.js';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/audio/analyzer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvE,YAAY,EAAE,mBAAmB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/audio/analyzer/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvE,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type { AudioSource } from '
|
|
1
|
+
export type { AudioSource } from '../../types/audio.js';
|
|
2
2
|
export { downloadAudio } from './source/youtube.js';
|
|
3
3
|
export { sliceAudio } from './processor/slicer.js';
|
|
4
4
|
export { EventDetector } from './processor/detector.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/services/audio/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/lib/services/audio/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,4BAA4B,GAC7B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAC7F,OAAO,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC9E,YAAY,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/audio/processor/detector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,aAAa,EAAE;IAMnD;;;OAGG;IACG,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,UAAU,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"detector.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/audio/processor/detector.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAEtD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,aAAa;IACZ,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAAL,KAAK,EAAE,aAAa,EAAE;IAMnD;;;OAGG;IACG,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,UAAU,EAAE,CAAC;CAyCzB"}
|
|
@@ -34,7 +34,10 @@ export class EventDetector {
|
|
|
34
34
|
const isLast = i === this.chain.length - 1;
|
|
35
35
|
try {
|
|
36
36
|
const events = await analyzer.detect(audioPath, gameProfile, chunkOffsetSec, chunkDurationSec);
|
|
37
|
-
log.info(
|
|
37
|
+
log.info('AudioAnalyzerChain.detect', 'events detected', undefined, {
|
|
38
|
+
source: analyzer.source,
|
|
39
|
+
events: events.length,
|
|
40
|
+
});
|
|
38
41
|
return events;
|
|
39
42
|
}
|
|
40
43
|
catch (err) {
|
|
@@ -42,10 +45,17 @@ export class EventDetector {
|
|
|
42
45
|
const message = err instanceof Error ? err.message : String(err);
|
|
43
46
|
if (!isLast) {
|
|
44
47
|
const nextSource = this.chain[i + 1].source;
|
|
45
|
-
log.warn(
|
|
48
|
+
log.warn('AudioAnalyzerChain.detect', 'analyzer failed, falling back', undefined, {
|
|
49
|
+
source: analyzer.source,
|
|
50
|
+
nextSource,
|
|
51
|
+
error: message,
|
|
52
|
+
});
|
|
46
53
|
}
|
|
47
54
|
else {
|
|
48
|
-
log.error(
|
|
55
|
+
log.error('AudioAnalyzerChain.detect', 'analyzer failed, no more fallbacks', undefined, {
|
|
56
|
+
source: analyzer.source,
|
|
57
|
+
error: message,
|
|
58
|
+
});
|
|
49
59
|
}
|
|
50
60
|
}
|
|
51
61
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"detector.js","sourceRoot":"","sources":["../../../../../src/lib/services/audio/processor/detector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAI3C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,aAAa;IACK;IAA7B,YAA6B,KAAsB;QAAtB,UAAK,GAAL,KAAK,CAAiB;QACjD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CACV,SAAiB,EACjB,WAAmB,EACnB,cAAsB,EACtB,gBAAwB;QAExB,IAAI,SAAkB,CAAC;QAEvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAE3C,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAClC,SAAS,EACT,WAAW,EACX,cAAc,EACd,gBAAgB,CACjB,CAAC;gBACF,GAAG,CAAC,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"detector.js","sourceRoot":"","sources":["../../../../../src/lib/services/audio/processor/detector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAI3C;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,aAAa;IACK;IAA7B,YAA6B,KAAsB;QAAtB,UAAK,GAAL,KAAK,CAAiB;QACjD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,iEAAiE,CAAC,CAAC;QACrF,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,MAAM,CACV,SAAiB,EACjB,WAAmB,EACnB,cAAsB,EACtB,gBAAwB;QAExB,IAAI,SAAkB,CAAC;QAEvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC/B,MAAM,MAAM,GAAG,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YAE3C,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAClC,SAAS,EACT,WAAW,EACX,cAAc,EACd,gBAAgB,CACjB,CAAC;gBACF,GAAG,CAAC,IAAI,CAAC,2BAA2B,EAAE,iBAAiB,EAAE,SAAS,EAAE;oBAClE,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB,CAAC,CAAC;gBACH,OAAO,MAAM,CAAC;YAChB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,SAAS,GAAG,GAAG,CAAC;gBAChB,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAEjE,IAAI,CAAC,MAAM,EAAE,CAAC;oBACZ,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;oBAC5C,GAAG,CAAC,IAAI,CAAC,2BAA2B,EAAE,+BAA+B,EAAE,SAAS,EAAE;wBAChF,MAAM,EAAE,QAAQ,CAAC,MAAM;wBACvB,UAAU;wBACV,KAAK,EAAE,OAAO;qBACf,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,KAAK,CAAC,2BAA2B,EAAE,oCAAoC,EAAE,SAAS,EAAE;wBACtF,MAAM,EAAE,QAAQ,CAAC,MAAM;wBACvB,KAAK,EAAE,OAAO;qBACf,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,SAAS,CAAC;IAClB,CAAC;CACF"}
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
ffprobePath?: string;
|
|
4
|
-
}
|
|
1
|
+
import type { SlicerConfig } from '../../../types/audio.js';
|
|
2
|
+
export type { SlicerConfig } from '../../../types/audio.js';
|
|
5
3
|
export declare function sliceAudio(inputPath: string, startSec: number, durationSec: number, outputDir: string, slicerConfig?: SlicerConfig): Promise<string>;
|
|
6
4
|
//# sourceMappingURL=slicer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slicer.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/audio/processor/slicer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"slicer.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/audio/processor/slicer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,wBAAsB,UAAU,CAC9B,SAAS,EAAE,MAAM,EACjB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,YAAY,GAAE,YAAiB,GAC9B,OAAO,CAAC,MAAM,CAAC,CAwBjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"slicer.js","sourceRoot":"","sources":["../../../../../src/lib/services/audio/processor/slicer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,MAAM,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"slicer.js","sourceRoot":"","sources":["../../../../../src/lib/services/audio/processor/slicer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,MAAM,MAAM,eAAe,CAAC;AAKnC,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,SAAiB,EACjB,QAAgB,EAChB,WAAmB,EACnB,SAAiB,EACjB,eAA6B,EAAE;IAE/B,IAAI,YAAY,CAAC,UAAU,EAAE,CAAC;QAC5B,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAChD,CAAC;IACD,IAAI,YAAY,CAAC,WAAW,EAAE,CAAC;QAC7B,MAAM,CAAC,cAAc,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;IAClD,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC;IACnE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,QAAQ,UAAU,QAAQ,MAAM,CAAC,CAAC;IAE7E,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,CAAC,SAAS,CAAC;aACd,YAAY,CAAC,QAAQ,CAAC;aACtB,WAAW,CAAC,WAAW,CAAC;aACxB,cAAc,CAAC,KAAK,CAAC;aACrB,aAAa,CAAC,CAAC,CAAC;aAChB,MAAM,CAAC,KAAK,CAAC;aACb,MAAM,CAAC,UAAU,CAAC;aAClB,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;aAC1B,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;aACjC,GAAG,EAAE,CAAC;IACX,CAAC,CAAC,CAAC;IAEH,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/audio/source/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/audio/source/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"youtube.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/audio/source/youtube.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,YAAY,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,WAAW,GAAE,mBAAwB,GACpC,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"youtube.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/audio/source/youtube.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,YAAY,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,wBAAsB,aAAa,CACjC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,EACjB,WAAW,GAAE,mBAAwB,GACpC,OAAO,CAAC,MAAM,CAAC,CA0FjB"}
|
|
@@ -9,10 +9,10 @@ export async function downloadAudio(videoId, outputDir, audioConfig = {}) {
|
|
|
9
9
|
}
|
|
10
10
|
const outputPath = path.join(outputDir, `${videoId}_audio.wav`);
|
|
11
11
|
if (fs.existsSync(outputPath)) {
|
|
12
|
-
|
|
12
|
+
log.info('downloadAudio', `[audio] Using cached audio: ${outputPath}`);
|
|
13
13
|
return outputPath;
|
|
14
14
|
}
|
|
15
|
-
|
|
15
|
+
log.info('downloadAudio', `[audio] Downloading audio for ${videoId}...`);
|
|
16
16
|
const args = [
|
|
17
17
|
'-x',
|
|
18
18
|
'--audio-format',
|
|
@@ -39,16 +39,15 @@ export async function downloadAudio(videoId, outputDir, audioConfig = {}) {
|
|
|
39
39
|
await retryAsync(async () => {
|
|
40
40
|
const subprocess = execa('yt-dlp', args);
|
|
41
41
|
if (!audioConfig.quiet) {
|
|
42
|
-
subprocess.stdout?.on('data', log.progress);
|
|
43
|
-
subprocess.stderr?.on('data', log.progress);
|
|
42
|
+
subprocess.stdout?.on('data', (chunk) => log.progress('downloadAudio', chunk));
|
|
43
|
+
subprocess.stderr?.on('data', (chunk) => log.progress('downloadAudio', chunk));
|
|
44
44
|
}
|
|
45
45
|
await subprocess;
|
|
46
46
|
}, audioConfig.retryCount ?? 0, 2000, `yt-dlp:audio:${videoId}`);
|
|
47
|
-
process.stdout.write('\n');
|
|
48
47
|
}
|
|
49
48
|
catch (err) {
|
|
50
49
|
const message = err instanceof Error ? err.message : String(err);
|
|
51
|
-
log.error(`[audio] Download failed: ${message}`);
|
|
50
|
+
log.error('downloadAudio', `[audio] Download failed: ${message}`);
|
|
52
51
|
if (message.includes('command not found') || message.includes('ENOENT')) {
|
|
53
52
|
throw new Error('yt-dlp is required. Install it: https://github.com/yt-dlp/yt-dlp');
|
|
54
53
|
}
|
|
@@ -70,7 +69,7 @@ export async function downloadAudio(videoId, outputDir, audioConfig = {}) {
|
|
|
70
69
|
}
|
|
71
70
|
throw new Error(`Audio download failed: ${message}`);
|
|
72
71
|
}
|
|
73
|
-
|
|
72
|
+
log.info('downloadAudio', `[audio] Audio saved to ${outputPath}`);
|
|
74
73
|
return outputPath;
|
|
75
74
|
}
|
|
76
75
|
//# sourceMappingURL=youtube.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"youtube.js","sourceRoot":"","sources":["../../../../../src/lib/services/audio/source/youtube.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAKtD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAe,EACf,SAAiB,EACjB,cAAmC,EAAE;IAErC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,OAAO,YAAY,CAAC,CAAC;IAEhE,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,
|
|
1
|
+
{"version":3,"file":"youtube.js","sourceRoot":"","sources":["../../../../../src/lib/services/audio/source/youtube.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAC9B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AAKtD,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,OAAe,EACf,SAAiB,EACjB,cAAmC,EAAE;IAErC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;QAC9B,EAAE,CAAC,SAAS,CAAC,SAAS,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,OAAO,YAAY,CAAC,CAAC;IAEhE,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,+BAA+B,UAAU,EAAE,CAAC,CAAC;QACvE,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,iCAAiC,OAAO,KAAK,CAAC,CAAC;IAEzE,MAAM,IAAI,GAAG;QACX,IAAI;QACJ,gBAAgB;QAChB,KAAK;QACL,iBAAiB;QACjB,GAAG;QACH,sBAAsB;QACtB,wBAAwB;QACxB,IAAI;QACJ,UAAU;QACV,WAAW;QACX,+BAA+B,OAAO,EAAE;KACzC,CAAC;IAEF,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IAC5D,CAAC;IAED,IAAI,WAAW,CAAC,kBAAkB,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACzE,CAAC;SAAM,IAAI,WAAW,CAAC,WAAW,EAAE,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,WAAW,CAAC,WAAW,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,CAAC;QACH,MAAM,UAAU,CACd,KAAK,IAAI,EAAE;YACT,MAAM,UAAU,GAAG,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACzC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;gBACvB,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC/E,UAAU,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC;YACjF,CAAC;YACD,MAAM,UAAU,CAAC;QACnB,CAAC,EACD,WAAW,CAAC,UAAU,IAAI,CAAC,EAC3B,IAAI,EACJ,gBAAgB,OAAO,EAAE,CAC1B,CAAC;IACJ,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEjE,GAAG,CAAC,KAAK,CAAC,eAAe,EAAE,4BAA4B,OAAO,EAAE,CAAC,CAAC;QAElE,IAAI,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACxE,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;QACtF,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,8BAA8B,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC7F,MAAM,IAAI,KAAK,CACb,4EAA4E;gBAC1E,CAAC,WAAW,CAAC,UAAU;oBACrB,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,mEAAmE,CAAC,CAC3E,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;YACtC,MAAM,IAAI,KAAK,CAAC,UAAU,OAAO,wCAAwC,CAAC,CAAC;QAC7E,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;YAC9E,MAAM,IAAI,KAAK,CACb,oDAAoD,OAAO,KAAK;gBAC9D,0FAA0F,CAC7F,CAAC;QACJ,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACjF,MAAM,IAAI,KAAK,CAAC,UAAU,OAAO,kCAAkC,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,0BAA0B,UAAU,EAAE,CAAC,CAAC;IAClE,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -43,8 +43,7 @@ export function createTranscriptChain(providerString, chainConfig) {
|
|
|
43
43
|
case 'whisper':
|
|
44
44
|
return new WhisperTranscriptAnalyzer(chainConfig.whisperModel);
|
|
45
45
|
case 'gemini':
|
|
46
|
-
log.warn('
|
|
47
|
-
'it will throw if reached in the chain.');
|
|
46
|
+
log.warn('createTranscriptAnalyzers', 'GeminiTranscriptAnalyzer is not yet implemented — it will throw if reached in the chain');
|
|
48
47
|
return new GeminiTranscriptAnalyzer();
|
|
49
48
|
}
|
|
50
49
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../../src/lib/services/audio/transcriber/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAE3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAElF,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAKvD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAyB,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AAExF;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAAC,cAAsB;IACjE,MAAM,KAAK,GAAG,cAAc;SACzB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SAClC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAA8B,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,KAAK,CACb,gCAAgC,IAAI,sEAAsE,CAC3G,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,KAAiC,CAAC;AAC3C,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CACnC,cAAsB,EACtB,WAAkC;IAElC,MAAM,KAAK,GAAG,4BAA4B,CAAC,cAAc,CAAC,CAAC;IAE3D,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,OAAO;gBACV,OAAO,IAAI,uBAAuB,CAAC,WAAW,CAAC,CAAC;YAClD,KAAK,SAAS;gBACZ,OAAO,IAAI,yBAAyB,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YACjE,KAAK,QAAQ;gBACX,GAAG,CAAC,IAAI,CACN,
|
|
1
|
+
{"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../../../src/lib/services/audio/transcriber/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAE3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAElF,OAAO,EAAE,yBAAyB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAKvD,MAAM,eAAe,GAAG,IAAI,GAAG,CAAyB,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC,CAAC;AAExF;;;;;GAKG;AACH,MAAM,UAAU,4BAA4B,CAAC,cAAsB;IACjE,MAAM,KAAK,GAAG,cAAc;SACzB,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;SAClC,MAAM,CAAC,OAAO,CAAC,CAAC;IAEnB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CACb,+EAA+E,CAChF,CAAC;IACJ,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAA8B,CAAC,EAAE,CAAC;YACzD,MAAM,IAAI,KAAK,CACb,gCAAgC,IAAI,sEAAsE,CAC3G,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,KAAiC,CAAC;AAC3C,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,qBAAqB,CACnC,cAAsB,EACtB,WAAkC;IAElC,MAAM,KAAK,GAAG,4BAA4B,CAAC,cAAc,CAAC,CAAC;IAE3D,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,OAAO;gBACV,OAAO,IAAI,uBAAuB,CAAC,WAAW,CAAC,CAAC;YAClD,KAAK,SAAS;gBACZ,OAAO,IAAI,yBAAyB,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;YACjE,KAAK,QAAQ;gBACX,GAAG,CAAC,IAAI,CACN,2BAA2B,EAC3B,yFAAyF,CAC1F,CAAC;gBACF,OAAO,IAAI,wBAAwB,EAAE,CAAC;QAC1C,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whisper.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/audio/transcriber/whisper.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"whisper.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/audio/transcriber/whisper.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAK/C;;;;;;;;;;GAUG;AACH,qBAAa,yBAA0B,SAAQ,kBAAkB;IAGnD,OAAO,CAAC,QAAQ,CAAC,YAAY;IAFzC,QAAQ,CAAC,MAAM,EAAG,SAAS,CAAU;gBAER,YAAY,EAAE,MAAM;IAI3C,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;CAwCnF"}
|
|
@@ -1,13 +1,8 @@
|
|
|
1
1
|
import { execa } from 'execa';
|
|
2
|
-
import { z } from 'zod';
|
|
3
2
|
import { TranscriptAnalyzer } from './base.js';
|
|
4
3
|
import { getPythonBin } from '../../../utils/pythonBin.js';
|
|
5
4
|
import { scriptPath } from '../../../utils/paths.js';
|
|
6
|
-
|
|
7
|
-
text: z.string(),
|
|
8
|
-
start: z.number(),
|
|
9
|
-
duration: z.number(),
|
|
10
|
-
});
|
|
5
|
+
import { WhisperSegmentSchema } from '../../../types/audio.js';
|
|
11
6
|
/**
|
|
12
7
|
* Generates a transcript by running OpenAI Whisper locally on the downloaded
|
|
13
8
|
* audio file, then normalising the output to TranscriptLine[].
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"whisper.js","sourceRoot":"","sources":["../../../../../src/lib/services/audio/transcriber/whisper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"whisper.js","sourceRoot":"","sources":["../../../../../src/lib/services/audio/transcriber/whisper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAE9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAE3D;;;;;;;;;;GAUG;AACH,MAAM,OAAO,yBAA0B,SAAQ,kBAAkB;IAGlC;IAFpB,MAAM,GAAG,SAAkB,CAAC;IAErC,YAA6B,YAAoB;QAC/C,KAAK,EAAE,CAAC;QADmB,iBAAY,GAAZ,YAAY,CAAQ;IAEjD,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,OAAe,EAAE,SAAwB;QACpD,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CACb,oDAAoD;gBAClD,yEAAyE,CAC5E,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;QAEpC,IAAI,MAAc,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,EAAE;gBACjC,UAAU,CAAC,uBAAuB,CAAC;gBACnC,SAAS;gBACT,IAAI,CAAC,YAAY;aAClB,CAAC,CAAC;YACH,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QACzB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YAEjE,IAAI,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBACnF,MAAM,IAAI,KAAK,CACb,iEAAiE;oBAC/D,2EAA2E,CAC9E,CAAC;YACJ,CAAC;YAED,MAAM,IAAI,KAAK,CAAC,qCAAqC,OAAO,MAAM,OAAO,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAc,CAAC;QAC5C,MAAM,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,oBAAoB,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAEnE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC5B,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE;YACrB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,QAAQ,EAAE,GAAG,CAAC,QAAQ;SACvB,CAAC,CAAC,CAAC;IACN,CAAC;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { TranscriptLine, LLMChunk, ChunkEvaluation, AudioEvent, SegmentRefinement } from '../../../types/index.js';
|
|
2
|
+
import type { CacheBackend } from '../../../types/cache.js';
|
|
3
|
+
/**
|
|
4
|
+
* No-op backend used when the cache is disabled (--no-cache flag).
|
|
5
|
+
* All reads return null; all writes are silent no-ops.
|
|
6
|
+
*/
|
|
7
|
+
export declare class DisabledCacheBackend implements CacheBackend {
|
|
8
|
+
readTranscript(_videoId: string): Promise<TranscriptLine[] | null>;
|
|
9
|
+
writeTranscript(_videoId: string, _lines: TranscriptLine[]): Promise<void>;
|
|
10
|
+
readChunk(_chunk: LLMChunk, _chunkAudioEvents?: AudioEvent[]): Promise<ChunkEvaluation | null>;
|
|
11
|
+
writeChunk(_chunk: LLMChunk, _evaluation: ChunkEvaluation, _chunkAudioEvents?: AudioEvent[]): Promise<void>;
|
|
12
|
+
readSegmentRefinement(_start: number, _end: number, _reason: string): Promise<SegmentRefinement | null>;
|
|
13
|
+
writeSegmentRefinement(_start: number, _end: number, _reason: string, _refined: SegmentRefinement): Promise<void>;
|
|
14
|
+
readAudioEvents(_videoId: string, _gameProfile: string, _provider: string): Promise<AudioEvent[] | null>;
|
|
15
|
+
writeAudioEvents(_videoId: string, _gameProfile: string, _provider: string, _events: AudioEvent[]): Promise<void>;
|
|
16
|
+
readAudioChunk(_videoId: string, _gameProfile: string, _provider: string, _windowStart: number, _windowEnd: number): Promise<AudioEvent[] | null>;
|
|
17
|
+
writeAudioChunk(_videoId: string, _gameProfile: string, _provider: string, _windowStart: number, _windowEnd: number, _events: AudioEvent[]): Promise<void>;
|
|
18
|
+
close(): Promise<void>;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=disabled.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disabled.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/cache/backends/disabled.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,QAAQ,EACR,eAAe,EACf,UAAU,EACV,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD;;;GAGG;AACH,qBAAa,oBAAqB,YAAW,YAAY;IACjD,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC;IAGlE,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1E,SAAS,CACb,MAAM,EAAE,QAAQ,EAChB,iBAAiB,CAAC,EAAE,UAAU,EAAE,GAC/B,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAG5B,UAAU,CACd,MAAM,EAAE,QAAQ,EAChB,WAAW,EAAE,eAAe,EAC5B,iBAAiB,CAAC,EAAE,UAAU,EAAE,GAC/B,OAAO,CAAC,IAAI,CAAC;IAEV,qBAAqB,CACzB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAG9B,sBAAsB,CAC1B,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,iBAAiB,GAC1B,OAAO,CAAC,IAAI,CAAC;IAEV,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC;IAGzB,gBAAgB,CACpB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,UAAU,EAAE,GACpB,OAAO,CAAC,IAAI,CAAC;IAEV,cAAc,CAClB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC;IAGzB,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,UAAU,EAAE,GACpB,OAAO,CAAC,IAAI,CAAC;IAEV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAC7B"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"disabled.js","sourceRoot":"","sources":["../../../../../src/lib/services/cache/backends/disabled.ts"],"names":[],"mappings":"AASA;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IAC/B,KAAK,CAAC,cAAc,CAAC,QAAgB;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,CAAC,eAAe,CAAC,QAAgB,EAAE,MAAwB,IAAkB,CAAC;IAEnF,KAAK,CAAC,SAAS,CACb,MAAgB,EAChB,iBAAgC;QAEhC,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,CAAC,UAAU,CACd,MAAgB,EAChB,WAA4B,EAC5B,iBAAgC,IAChB,CAAC;IAEnB,KAAK,CAAC,qBAAqB,CACzB,MAAc,EACd,IAAY,EACZ,OAAe;QAEf,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,CAAC,sBAAsB,CAC1B,MAAc,EACd,IAAY,EACZ,OAAe,EACf,QAA2B,IACX,CAAC;IAEnB,KAAK,CAAC,eAAe,CACnB,QAAgB,EAChB,YAAoB,EACpB,SAAiB;QAEjB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,CAAC,gBAAgB,CACpB,QAAgB,EAChB,YAAoB,EACpB,SAAiB,EACjB,OAAqB,IACL,CAAC;IAEnB,KAAK,CAAC,cAAc,CAClB,QAAgB,EAChB,YAAoB,EACpB,SAAiB,EACjB,YAAoB,EACpB,UAAkB;QAElB,OAAO,IAAI,CAAC;IACd,CAAC;IACD,KAAK,CAAC,eAAe,CACnB,QAAgB,EAChB,YAAoB,EACpB,SAAiB,EACjB,YAAoB,EACpB,UAAkB,EAClB,OAAqB,IACL,CAAC;IAEnB,KAAK,CAAC,KAAK,KAAmB,CAAC;CAChC"}
|
|
@@ -1,5 +1,8 @@
|
|
|
1
|
-
import type { TranscriptLine, LLMChunk, ChunkEvaluation, AudioEvent, SegmentRefinement } from '
|
|
2
|
-
import type { CacheBackend } from '
|
|
1
|
+
import type { TranscriptLine, LLMChunk, ChunkEvaluation, AudioEvent, SegmentRefinement } from '../../../types/index.js';
|
|
2
|
+
import type { CacheBackend } from '../../../types/cache.js';
|
|
3
|
+
export declare function computeChunkCacheKey(chunk: LLMChunk, chunkAudioEvents?: AudioEvent[]): string;
|
|
4
|
+
export declare function computeSegmentRefinementCacheKey(start: number, end: number, reason: string): string;
|
|
5
|
+
export declare function computeVideoCacheKey(videoId: string): string;
|
|
3
6
|
/**
|
|
4
7
|
* Disk-backed cache backend. Each cached item is stored as a pretty-printed
|
|
5
8
|
* JSON file under `cacheDir`, named by a SHA-256 hash of the cache key.
|
|
@@ -11,7 +14,7 @@ import type { CacheBackend } from './cacheBackend.js';
|
|
|
11
14
|
* <cacheDir>/audio/<hash>.json
|
|
12
15
|
*/
|
|
13
16
|
export declare class FileCacheBackend implements CacheBackend {
|
|
14
|
-
|
|
17
|
+
readonly cacheDir: string;
|
|
15
18
|
constructor(cacheDir: string);
|
|
16
19
|
private transcriptPath;
|
|
17
20
|
readTranscript(videoId: string): Promise<TranscriptLine[] | null>;
|
|
@@ -30,4 +33,4 @@ export declare class FileCacheBackend implements CacheBackend {
|
|
|
30
33
|
writeAudioChunk(videoId: string, gameProfile: string, provider: string, windowStart: number, windowEnd: number, events: AudioEvent[]): Promise<void>;
|
|
31
34
|
close(): Promise<void>;
|
|
32
35
|
}
|
|
33
|
-
//# sourceMappingURL=
|
|
36
|
+
//# sourceMappingURL=file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../../../src/lib/services/cache/backends/file.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EACV,cAAc,EACd,QAAQ,EACR,eAAe,EACf,UAAU,EACV,iBAAiB,EAClB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAoBxD,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,QAAQ,EAAE,gBAAgB,GAAE,UAAU,EAAO,GAAG,MAAM,CAGjG;AAED,wBAAgB,gCAAgC,CAC9C,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,GACb,MAAM,CAER;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE5D;AAiCD;;;;;;;;;GASG;AACH,qBAAa,gBAAiB,YAAW,YAAY;aACvB,QAAQ,EAAE,MAAM;gBAAhB,QAAQ,EAAE,MAAM;IAI5C,OAAO,CAAC,cAAc;IAIhB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,GAAG,IAAI,CAAC;IAIjE,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAM9E,OAAO,CAAC,SAAS;IAQX,SAAS,CACb,KAAK,EAAE,QAAQ,EACf,gBAAgB,GAAE,UAAU,EAAO,GAClC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IAI5B,UAAU,CACd,KAAK,EAAE,QAAQ,EACf,UAAU,EAAE,eAAe,EAC3B,gBAAgB,GAAE,UAAU,EAAO,GAClC,OAAO,CAAC,IAAI,CAAC;IAOhB,OAAO,CAAC,qBAAqB;IAQvB,qBAAqB,CACzB,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;IAI9B,sBAAsB,CAC1B,KAAK,EAAE,MAAM,EACb,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,IAAI,CAAC;IAMhB,OAAO,CAAC,cAAc;IAQhB,eAAe,CACnB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC;IAOzB,gBAAgB,CACpB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,UAAU,EAAE,GACnB,OAAO,CAAC,IAAI,CAAC;IAMhB,OAAO,CAAC,cAAc;IAchB,cAAc,CAClB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,UAAU,EAAE,GAAG,IAAI,CAAC;IAOzB,eAAe,CACnB,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,UAAU,EAAE,GACnB,OAAO,CAAC,IAAI,CAAC;IASV,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAG7B"}
|