@thunderkiller/video-clipper 1.7.0 → 1.9.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/README.md +8 -8
- package/dist/{cli.d.ts → app/cli/args.d.ts} +2 -2
- package/dist/app/cli/args.d.ts.map +1 -0
- package/dist/{cli.js → app/cli/args.js} +16 -16
- package/dist/app/cli/args.js.map +1 -0
- package/dist/{index.d.ts.map → app/cli/index.d.ts.map} +1 -1
- package/dist/app/cli/index.js +38 -0
- package/dist/app/cli/index.js.map +1 -0
- package/dist/{pipeline → app/cli/pipeline}/dumper.d.ts +1 -1
- package/dist/app/cli/pipeline/dumper.d.ts.map +1 -0
- package/dist/{pipeline → app/cli/pipeline}/dumper.js +6 -6
- package/dist/app/cli/pipeline/dumper.js.map +1 -0
- package/dist/{pipeline → app/cli/pipeline}/runner.d.ts +2 -2
- package/dist/app/cli/pipeline/runner.d.ts.map +1 -0
- package/dist/app/cli/pipeline/runner.js +249 -0
- package/dist/app/cli/pipeline/runner.js.map +1 -0
- package/dist/app/cli/pipeline/stages/audioProcessor.d.ts +4 -0
- package/dist/app/cli/pipeline/stages/audioProcessor.d.ts.map +1 -0
- package/dist/app/cli/pipeline/stages/audioProcessor.js +59 -0
- package/dist/app/cli/pipeline/stages/audioProcessor.js.map +1 -0
- package/dist/app/cli/pipeline/stages/videoResolver.d.ts +4 -0
- package/dist/app/cli/pipeline/stages/videoResolver.d.ts.map +1 -0
- package/dist/app/cli/pipeline/stages/videoResolver.js +24 -0
- package/dist/app/cli/pipeline/stages/videoResolver.js.map +1 -0
- package/dist/app/web/lib/activity/analysisActivity.d.ts +18 -0
- package/dist/app/web/lib/activity/analysisActivity.d.ts.map +1 -0
- package/dist/app/web/lib/activity/analysisActivity.js +194 -0
- package/dist/app/web/lib/activity/analysisActivity.js.map +1 -0
- package/dist/app/web/lib/activity/analysisLogging.d.ts +3 -0
- package/dist/app/web/lib/activity/analysisLogging.d.ts.map +1 -0
- package/dist/app/web/lib/activity/analysisLogging.js +17 -0
- package/dist/app/web/lib/activity/analysisLogging.js.map +1 -0
- package/dist/app/web/lib/analysisStream.d.ts +5 -0
- package/dist/app/web/lib/analysisStream.d.ts.map +1 -0
- package/dist/app/web/lib/analysisStream.js +106 -0
- package/dist/app/web/lib/analysisStream.js.map +1 -0
- package/dist/app/web/lib/api.d.ts +3 -0
- package/dist/app/web/lib/api.d.ts.map +1 -0
- package/dist/app/web/lib/api.js +21 -0
- package/dist/app/web/lib/api.js.map +1 -0
- package/dist/app/web/lib/configStore.d.ts +8 -0
- package/dist/app/web/lib/configStore.d.ts.map +1 -0
- package/dist/app/web/lib/configStore.js +67 -0
- package/dist/app/web/lib/configStore.js.map +1 -0
- package/dist/app/web/lib/format.d.ts +3 -0
- package/dist/app/web/lib/format.d.ts.map +1 -0
- package/dist/app/web/lib/format.js +17 -0
- package/dist/app/web/lib/format.js.map +1 -0
- package/dist/app/web/lib/index.d.ts +2 -0
- package/dist/app/web/lib/index.d.ts.map +1 -0
- package/dist/app/web/lib/index.js +2 -0
- package/dist/app/web/lib/index.js.map +1 -0
- package/dist/app/web/lib/services/analysis/analysisService.d.ts +5 -0
- package/dist/app/web/lib/services/analysis/analysisService.d.ts.map +1 -0
- package/dist/app/web/lib/services/analysis/analysisService.js +147 -0
- package/dist/app/web/lib/services/analysis/analysisService.js.map +1 -0
- package/dist/app/web/lib/services/analysis/streamEvents.d.ts +5 -0
- package/dist/app/web/lib/services/analysis/streamEvents.d.ts.map +1 -0
- package/dist/app/web/lib/services/analysis/streamEvents.js +69 -0
- package/dist/app/web/lib/services/analysis/streamEvents.js.map +1 -0
- package/dist/app/web/lib/services/analysis/transcriptService.d.ts +4 -0
- package/dist/app/web/lib/services/analysis/transcriptService.d.ts.map +1 -0
- package/dist/app/web/lib/services/analysis/transcriptService.js +33 -0
- package/dist/app/web/lib/services/analysis/transcriptService.js.map +1 -0
- package/dist/app/web/lib/services/artifacts/artifactStore.d.ts +14 -0
- package/dist/app/web/lib/services/artifacts/artifactStore.d.ts.map +1 -0
- package/dist/app/web/lib/services/artifacts/artifactStore.js +109 -0
- package/dist/app/web/lib/services/artifacts/artifactStore.js.map +1 -0
- package/dist/app/web/lib/services/clipping/clipService.d.ts +4 -0
- package/dist/app/web/lib/services/clipping/clipService.d.ts.map +1 -0
- package/dist/app/web/lib/services/clipping/clipService.js +73 -0
- package/dist/app/web/lib/services/clipping/clipService.js.map +1 -0
- package/dist/app/web/lib/services/config/webConfig.d.ts +4 -0
- package/dist/app/web/lib/services/config/webConfig.d.ts.map +1 -0
- package/dist/app/web/lib/services/config/webConfig.js +12 -0
- package/dist/app/web/lib/services/config/webConfig.js.map +1 -0
- package/dist/app/web/lib/services/http/responses.d.ts +8 -0
- package/dist/app/web/lib/services/http/responses.d.ts.map +1 -0
- package/dist/app/web/lib/services/http/responses.js +23 -0
- package/dist/app/web/lib/services/http/responses.js.map +1 -0
- package/dist/app/web/lib/services/publishing/draftService.d.ts +5 -0
- package/dist/app/web/lib/services/publishing/draftService.d.ts.map +1 -0
- package/dist/app/web/lib/services/publishing/draftService.js +70 -0
- package/dist/app/web/lib/services/publishing/draftService.js.map +1 -0
- package/dist/app/web/lib/services/publishing/metadataCache.d.ts +4 -0
- package/dist/app/web/lib/services/publishing/metadataCache.d.ts.map +1 -0
- package/dist/app/web/lib/services/publishing/metadataCache.js +38 -0
- package/dist/app/web/lib/services/publishing/metadataCache.js.map +1 -0
- package/dist/app/web/lib/services/publishing/metadataService.d.ts +5 -0
- package/dist/app/web/lib/services/publishing/metadataService.d.ts.map +1 -0
- package/dist/app/web/lib/services/publishing/metadataService.js +125 -0
- package/dist/app/web/lib/services/publishing/metadataService.js.map +1 -0
- package/dist/app/web/lib/services/publishing/uploadService.d.ts +6 -0
- package/dist/app/web/lib/services/publishing/uploadService.d.ts.map +1 -0
- package/dist/app/web/lib/services/publishing/uploadService.js +303 -0
- package/dist/app/web/lib/services/publishing/uploadService.js.map +1 -0
- package/dist/app/web/lib/services/publishing/uploadStreamEvents.d.ts +5 -0
- package/dist/app/web/lib/services/publishing/uploadStreamEvents.d.ts.map +1 -0
- package/dist/app/web/lib/services/publishing/uploadStreamEvents.js +45 -0
- package/dist/app/web/lib/services/publishing/uploadStreamEvents.js.map +1 -0
- package/dist/app/web/lib/services/youtube/authStore.d.ts +5 -0
- package/dist/app/web/lib/services/youtube/authStore.d.ts.map +1 -0
- package/dist/app/web/lib/services/youtube/authStore.js +46 -0
- package/dist/app/web/lib/services/youtube/authStore.js.map +1 -0
- package/dist/app/web/lib/services/youtube/catalogFactory.d.ts +3 -0
- package/dist/app/web/lib/services/youtube/catalogFactory.d.ts.map +1 -0
- package/dist/app/web/lib/services/youtube/catalogFactory.js +10 -0
- package/dist/app/web/lib/services/youtube/catalogFactory.js.map +1 -0
- package/dist/app/web/lib/services/youtube/uploadAuth.d.ts +9 -0
- package/dist/app/web/lib/services/youtube/uploadAuth.d.ts.map +1 -0
- package/dist/app/web/lib/services/youtube/uploadAuth.js +221 -0
- package/dist/app/web/lib/services/youtube/uploadAuth.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 +6 -0
- package/dist/app/web/lib/toastStore.d.ts.map +1 -0
- package/dist/app/web/lib/toastStore.js +14 -0
- package/dist/app/web/lib/toastStore.js.map +1 -0
- package/dist/app/web/lib/uploadStream.d.ts +6 -0
- package/dist/app/web/lib/uploadStream.d.ts.map +1 -0
- package/dist/app/web/lib/uploadStream.js +68 -0
- package/dist/app/web/lib/uploadStream.js.map +1 -0
- package/dist/app/web/lib/videoWorkflow.d.ts +4 -0
- package/dist/app/web/lib/videoWorkflow.d.ts.map +1 -0
- package/dist/app/web/lib/videoWorkflow.js +39 -0
- package/dist/app/web/lib/videoWorkflow.js.map +1 -0
- package/dist/app/web/routes/api/analysis/transcript/+server.d.ts +3 -0
- package/dist/app/web/routes/api/analysis/transcript/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/analysis/transcript/+server.js +97 -0
- package/dist/app/web/routes/api/analysis/transcript/+server.js.map +1 -0
- 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 +3 -0
- package/dist/app/web/routes/api/clips/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/clips/+server.js +32 -0
- package/dist/app/web/routes/api/clips/+server.js.map +1 -0
- package/dist/app/web/routes/api/config/+server.d.ts +4 -0
- package/dist/app/web/routes/api/config/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/config/+server.js +37 -0
- package/dist/app/web/routes/api/config/+server.js.map +1 -0
- package/dist/app/web/routes/api/library/analyses/+server.d.ts +3 -0
- package/dist/app/web/routes/api/library/analyses/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/library/analyses/+server.js +16 -0
- package/dist/app/web/routes/api/library/analyses/+server.js.map +1 -0
- package/dist/app/web/routes/api/library/analyses/[analysisId]/+server.d.ts +3 -0
- package/dist/app/web/routes/api/library/analyses/[analysisId]/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/library/analyses/[analysisId]/+server.js +28 -0
- package/dist/app/web/routes/api/library/analyses/[analysisId]/+server.js.map +1 -0
- package/dist/app/web/routes/api/library/clips/+server.d.ts +3 -0
- package/dist/app/web/routes/api/library/clips/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/library/clips/+server.js +26 -0
- package/dist/app/web/routes/api/library/clips/+server.js.map +1 -0
- package/dist/app/web/routes/api/publish/drafts/+server.d.ts +3 -0
- package/dist/app/web/routes/api/publish/drafts/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/publish/drafts/+server.js +23 -0
- package/dist/app/web/routes/api/publish/drafts/+server.js.map +1 -0
- package/dist/app/web/routes/api/publish/drafts/[analysisId]/+server.d.ts +3 -0
- package/dist/app/web/routes/api/publish/drafts/[analysisId]/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/publish/drafts/[analysisId]/+server.js +31 -0
- package/dist/app/web/routes/api/publish/drafts/[analysisId]/+server.js.map +1 -0
- package/dist/app/web/routes/api/publish/drafts/generate/+server.d.ts +3 -0
- package/dist/app/web/routes/api/publish/drafts/generate/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/publish/drafts/generate/+server.js +37 -0
- package/dist/app/web/routes/api/publish/drafts/generate/+server.js.map +1 -0
- package/dist/app/web/routes/api/publish/thumbnails/+server.d.ts +3 -0
- package/dist/app/web/routes/api/publish/thumbnails/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/publish/thumbnails/+server.js +57 -0
- package/dist/app/web/routes/api/publish/thumbnails/+server.js.map +1 -0
- package/dist/app/web/routes/api/youtube/auth/callback/+server.d.ts +3 -0
- package/dist/app/web/routes/api/youtube/auth/callback/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/youtube/auth/callback/+server.js +49 -0
- package/dist/app/web/routes/api/youtube/auth/callback/+server.js.map +1 -0
- package/dist/app/web/routes/api/youtube/auth/disconnect/+server.d.ts +3 -0
- package/dist/app/web/routes/api/youtube/auth/disconnect/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/youtube/auth/disconnect/+server.js +16 -0
- package/dist/app/web/routes/api/youtube/auth/disconnect/+server.js.map +1 -0
- package/dist/app/web/routes/api/youtube/auth/manual/+server.d.ts +3 -0
- package/dist/app/web/routes/api/youtube/auth/manual/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/youtube/auth/manual/+server.js +23 -0
- package/dist/app/web/routes/api/youtube/auth/manual/+server.js.map +1 -0
- package/dist/app/web/routes/api/youtube/auth/start/+server.d.ts +3 -0
- package/dist/app/web/routes/api/youtube/auth/start/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/youtube/auth/start/+server.js +43 -0
- package/dist/app/web/routes/api/youtube/auth/start/+server.js.map +1 -0
- package/dist/app/web/routes/api/youtube/auth/status/+server.d.ts +3 -0
- package/dist/app/web/routes/api/youtube/auth/status/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/youtube/auth/status/+server.js +16 -0
- package/dist/app/web/routes/api/youtube/auth/status/+server.js.map +1 -0
- package/dist/app/web/routes/api/youtube/channels/[channelId]/videos/+server.d.ts +3 -0
- package/dist/app/web/routes/api/youtube/channels/[channelId]/videos/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/youtube/channels/[channelId]/videos/+server.js +28 -0
- package/dist/app/web/routes/api/youtube/channels/[channelId]/videos/+server.js.map +1 -0
- package/dist/app/web/routes/api/youtube/channels/resolve/+server.d.ts +3 -0
- package/dist/app/web/routes/api/youtube/channels/resolve/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/youtube/channels/resolve/+server.js +24 -0
- package/dist/app/web/routes/api/youtube/channels/resolve/+server.js.map +1 -0
- package/dist/app/web/routes/api/youtube/uploads/+server.d.ts +5 -0
- package/dist/app/web/routes/api/youtube/uploads/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/youtube/uploads/+server.js +113 -0
- package/dist/app/web/routes/api/youtube/uploads/+server.js.map +1 -0
- package/dist/app/web/routes/api/youtube/videos/[videoId]/+server.d.ts +3 -0
- package/dist/app/web/routes/api/youtube/videos/[videoId]/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/youtube/videos/[videoId]/+server.js +25 -0
- package/dist/app/web/routes/api/youtube/videos/[videoId]/+server.js.map +1 -0
- package/dist/app/web/routes/api/youtube/videos/[videoId]/transcript/+server.d.ts +3 -0
- package/dist/app/web/routes/api/youtube/videos/[videoId]/transcript/+server.d.ts.map +1 -0
- package/dist/app/web/routes/api/youtube/videos/[videoId]/transcript/+server.js +24 -0
- package/dist/app/web/routes/api/youtube/videos/[videoId]/transcript/+server.js.map +1 -0
- package/dist/app/web/routes/videos/[videoId]/analysis/[analysisId]/+layout.server.d.ts +13 -0
- package/dist/app/web/routes/videos/[videoId]/analysis/[analysisId]/+layout.server.d.ts.map +1 -0
- package/dist/app/web/routes/videos/[videoId]/analysis/[analysisId]/+layout.server.js +50 -0
- package/dist/app/web/routes/videos/[videoId]/analysis/[analysisId]/+layout.server.js.map +1 -0
- package/dist/app/web/types/activity.d.ts +24 -0
- package/dist/app/web/types/activity.d.ts.map +1 -0
- package/dist/app/web/types/activity.js +2 -0
- package/dist/app/web/types/activity.js.map +1 -0
- package/dist/app/web/types/analysis.d.ts +175 -0
- package/dist/app/web/types/analysis.d.ts.map +1 -0
- package/dist/app/web/types/analysis.js +84 -0
- package/dist/app/web/types/analysis.js.map +1 -0
- package/dist/app/web/types/componentProps.d.ts +225 -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 +295 -0
- package/dist/app/web/types/publish.d.ts.map +1 -0
- package/dist/app/web/types/publish.js +145 -0
- package/dist/app/web/types/publish.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/web.d.ts +47 -0
- package/dist/app/web/types/web.d.ts.map +1 -0
- package/dist/app/web/types/web.js +9 -0
- package/dist/app/web/types/web.js.map +1 -0
- 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.d.ts +3 -0
- package/dist/hooks.server.d.ts.map +1 -0
- package/dist/hooks.server.js +11 -0
- package/dist/hooks.server.js.map +1 -0
- package/dist/lib/config/env.d.ts +7 -0
- package/dist/lib/config/env.d.ts.map +1 -0
- package/dist/lib/config/env.js +81 -0
- package/dist/lib/config/env.js.map +1 -0
- package/dist/lib/config/fileStore.d.ts +5 -0
- package/dist/lib/config/fileStore.d.ts.map +1 -0
- package/dist/lib/config/fileStore.js +34 -0
- package/dist/lib/config/fileStore.js.map +1 -0
- package/dist/lib/config/index.d.ts +4 -0
- package/dist/lib/config/index.d.ts.map +1 -0
- package/dist/lib/config/index.js +3 -0
- package/dist/lib/config/index.js.map +1 -0
- package/dist/lib/config/registry.d.ts +4 -0
- package/dist/lib/config/registry.d.ts.map +1 -0
- package/dist/lib/config/registry.js +148 -0
- package/dist/lib/config/registry.js.map +1 -0
- package/dist/lib/index.d.ts +58 -0
- package/dist/lib/index.d.ts.map +1 -0
- package/dist/lib/index.js +52 -0
- package/dist/lib/index.js.map +1 -0
- package/dist/lib/pipeline/stages/clipExporter.d.ts +5 -0
- package/dist/lib/pipeline/stages/clipExporter.d.ts.map +1 -0
- package/dist/lib/pipeline/stages/clipExporter.js +30 -0
- package/dist/lib/pipeline/stages/clipExporter.js.map +1 -0
- package/dist/lib/pipeline/stages/segmentAnalyzer.d.ts +5 -0
- package/dist/lib/pipeline/stages/segmentAnalyzer.d.ts.map +1 -0
- package/dist/lib/pipeline/stages/segmentAnalyzer.js +44 -0
- package/dist/lib/pipeline/stages/segmentAnalyzer.js.map +1 -0
- package/dist/lib/pipeline/stages/segmentSelector.d.ts.map +1 -0
- package/dist/{pipeline → lib/pipeline}/stages/segmentSelector.js +4 -4
- package/dist/lib/pipeline/stages/segmentSelector.js.map +1 -0
- package/dist/lib/services/analysis/index.d.ts +9 -0
- package/dist/lib/services/analysis/index.d.ts.map +1 -0
- package/dist/lib/services/analysis/index.js +7 -0
- package/dist/lib/services/analysis/index.js.map +1 -0
- package/dist/lib/services/analysis/llm/LLMAnalyzer.d.ts +18 -0
- package/dist/lib/services/analysis/llm/LLMAnalyzer.d.ts.map +1 -0
- package/dist/lib/services/analysis/llm/LLMAnalyzer.js +68 -0
- package/dist/lib/services/analysis/llm/LLMAnalyzer.js.map +1 -0
- package/dist/lib/services/analysis/llm/index.d.ts +5 -0
- package/dist/lib/services/analysis/llm/index.d.ts.map +1 -0
- package/dist/lib/services/analysis/llm/index.js +197 -0
- package/dist/lib/services/analysis/llm/index.js.map +1 -0
- package/dist/{services/segmentRanker → lib/services/analysis/ranker}/index.d.ts +2 -2
- package/dist/lib/services/analysis/ranker/index.d.ts.map +1 -0
- package/dist/{services/segmentRanker → lib/services/analysis/ranker}/index.js +4 -5
- package/dist/lib/services/analysis/ranker/index.js.map +1 -0
- package/dist/lib/services/analysis/refiner/index.d.ts +5 -0
- package/dist/lib/services/analysis/refiner/index.d.ts.map +1 -0
- package/dist/lib/services/analysis/refiner/index.js +113 -0
- package/dist/lib/services/analysis/refiner/index.js.map +1 -0
- package/dist/{services/chunkBuilder → lib/services/analysis/transcript/chunker}/index.d.ts +1 -1
- package/dist/lib/services/analysis/transcript/chunker/index.d.ts.map +1 -0
- package/dist/lib/services/analysis/transcript/chunker/index.js.map +1 -0
- package/dist/{services/transcriptDetector/index.d.ts → lib/services/analysis/transcript/detector.d.ts} +8 -5
- package/dist/lib/services/analysis/transcript/detector.d.ts.map +1 -0
- package/dist/{services/transcriptDetector/index.js → lib/services/analysis/transcript/detector.js} +16 -11
- package/dist/lib/services/analysis/transcript/detector.js.map +1 -0
- package/dist/lib/services/analysis/transcript/index.d.ts +5 -0
- package/dist/lib/services/analysis/transcript/index.d.ts.map +1 -0
- package/dist/lib/services/analysis/transcript/index.js +4 -0
- package/dist/lib/services/analysis/transcript/index.js.map +1 -0
- package/dist/{services/audioAnalyzers → lib/services/audio/analyzer}/base.d.ts +2 -2
- package/dist/lib/services/audio/analyzer/base.d.ts.map +1 -0
- package/dist/{services/audioAnalyzers → lib/services/audio/analyzer}/base.js +1 -1
- package/dist/lib/services/audio/analyzer/base.js.map +1 -0
- package/dist/{services/audioAnalyzers → lib/services/audio/analyzer}/factory.d.ts +3 -2
- package/dist/lib/services/audio/analyzer/factory.d.ts.map +1 -0
- package/dist/{services/audioAnalyzers → lib/services/audio/analyzer}/factory.js +6 -6
- package/dist/lib/services/audio/analyzer/factory.js.map +1 -0
- package/dist/{services/audioAnalyzers → lib/services/audio/analyzer}/gemini.d.ts +4 -1
- package/dist/lib/services/audio/analyzer/gemini.d.ts.map +1 -0
- package/dist/{services/audioAnalyzers → lib/services/audio/analyzer}/gemini.js +12 -19
- package/dist/lib/services/audio/analyzer/gemini.js.map +1 -0
- package/dist/{services/audioAnalyzers → lib/services/audio/analyzer}/index.d.ts +1 -0
- package/dist/lib/services/audio/analyzer/index.d.ts.map +1 -0
- package/dist/lib/services/audio/analyzer/index.js.map +1 -0
- package/dist/lib/services/audio/analyzer/whisper.d.ts +10 -0
- package/dist/lib/services/audio/analyzer/whisper.d.ts.map +1 -0
- package/dist/{services/audioAnalyzers → lib/services/audio/analyzer}/whisper.js +11 -11
- package/dist/lib/services/audio/analyzer/whisper.js.map +1 -0
- package/dist/lib/services/audio/analyzer/yamnet.d.ts +9 -0
- package/dist/lib/services/audio/analyzer/yamnet.d.ts.map +1 -0
- package/dist/{services/audioAnalyzers → lib/services/audio/analyzer}/yamnet.js +8 -10
- package/dist/lib/services/audio/analyzer/yamnet.js.map +1 -0
- package/dist/lib/services/audio/index.d.ts +9 -0
- package/dist/lib/services/audio/index.d.ts.map +1 -0
- package/dist/lib/services/audio/index.js +7 -0
- package/dist/lib/services/audio/index.js.map +1 -0
- package/dist/{services/eventDetector/index.d.ts → lib/services/audio/processor/detector.d.ts} +3 -3
- package/dist/lib/services/audio/processor/detector.d.ts.map +1 -0
- package/dist/{services/eventDetector/index.js → lib/services/audio/processor/detector.js} +15 -5
- package/dist/lib/services/audio/processor/detector.js.map +1 -0
- package/dist/lib/services/audio/processor/slicer.d.ts +4 -0
- package/dist/lib/services/audio/processor/slicer.d.ts.map +1 -0
- package/dist/{services/audioDownloader/sliceAudio.js → lib/services/audio/processor/slicer.js} +8 -9
- package/dist/lib/services/audio/processor/slicer.js.map +1 -0
- package/dist/lib/services/audio/source/index.d.ts +3 -0
- package/dist/lib/services/audio/source/index.d.ts.map +1 -0
- package/dist/lib/services/audio/source/index.js +2 -0
- package/dist/lib/services/audio/source/index.js.map +1 -0
- package/dist/lib/services/audio/source/youtube.d.ts +4 -0
- package/dist/lib/services/audio/source/youtube.d.ts.map +1 -0
- package/dist/{services/audioDownloader/index.js → lib/services/audio/source/youtube.js} +39 -35
- package/dist/lib/services/audio/source/youtube.js.map +1 -0
- package/dist/{services/transcriptAnalyzers → lib/services/audio/transcriber}/base.d.ts +2 -2
- package/dist/lib/services/audio/transcriber/base.d.ts.map +1 -0
- package/dist/{services/transcriptAnalyzers → lib/services/audio/transcriber}/base.js +1 -1
- package/dist/lib/services/audio/transcriber/base.js.map +1 -0
- package/dist/{services/transcriptAnalyzers → lib/services/audio/transcriber}/factory.d.ts +4 -2
- package/dist/lib/services/audio/transcriber/factory.d.ts.map +1 -0
- package/dist/{services/transcriptAnalyzers → lib/services/audio/transcriber}/factory.js +6 -7
- package/dist/lib/services/audio/transcriber/factory.js.map +1 -0
- package/dist/{services/transcriptAnalyzers → lib/services/audio/transcriber}/gemini.d.ts +1 -1
- package/dist/lib/services/audio/transcriber/gemini.d.ts.map +1 -0
- package/dist/lib/services/audio/transcriber/gemini.js.map +1 -0
- package/dist/{services/transcriptAnalyzers → lib/services/audio/transcriber}/index.d.ts +1 -0
- package/dist/lib/services/audio/transcriber/index.d.ts.map +1 -0
- package/dist/lib/services/audio/transcriber/index.js.map +1 -0
- package/dist/{services/transcriptAnalyzers → lib/services/audio/transcriber}/whisper.d.ts +3 -1
- package/dist/lib/services/audio/transcriber/whisper.d.ts.map +1 -0
- package/dist/{services/transcriptAnalyzers → lib/services/audio/transcriber}/whisper.js +9 -10
- package/dist/lib/services/audio/transcriber/whisper.js.map +1 -0
- 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/{utils/cacheBackend.js → lib/services/cache/backends/disabled.js} +1 -1
- package/dist/lib/services/cache/backends/disabled.js.map +1 -0
- package/dist/{utils/fileCacheBackend.d.ts → lib/services/cache/backends/file.d.ts} +7 -4
- package/dist/lib/services/cache/backends/file.d.ts.map +1 -0
- package/dist/{utils/fileCacheBackend.js → lib/services/cache/backends/file.js} +18 -9
- package/dist/lib/services/cache/backends/file.js.map +1 -0
- package/dist/{utils/mongoCacheBackend.d.ts → lib/services/cache/backends/mongo.d.ts} +3 -3
- package/dist/lib/services/cache/backends/mongo.d.ts.map +1 -0
- package/dist/{utils/mongoCacheBackend.js → lib/services/cache/backends/mongo.js} +8 -8
- package/dist/lib/services/cache/backends/mongo.js.map +1 -0
- package/dist/{utils → lib/services/cache}/cache.d.ts +6 -5
- package/dist/lib/services/cache/cache.d.ts.map +1 -0
- package/dist/{utils → lib/services/cache}/cache.js +25 -4
- package/dist/lib/services/cache/cache.js.map +1 -0
- package/dist/{utils/cacheFactory.d.ts → lib/services/cache/factory.d.ts} +3 -3
- package/dist/lib/services/cache/factory.d.ts.map +1 -0
- package/dist/{utils/cacheFactory.js → lib/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/{services/clipGenerator → lib/services/video/clipper}/index.d.ts +16 -3
- package/dist/lib/services/video/clipper/index.d.ts.map +1 -0
- package/dist/lib/services/video/clipper/index.js +215 -0
- package/dist/lib/services/video/clipper/index.js.map +1 -0
- package/dist/lib/services/video/index.d.ts +13 -0
- package/dist/lib/services/video/index.d.ts.map +1 -0
- package/dist/lib/services/video/index.js +9 -0
- package/dist/lib/services/video/index.js.map +1 -0
- package/dist/lib/services/video/source/index.d.ts +8 -0
- package/dist/lib/services/video/source/index.d.ts.map +1 -0
- package/dist/lib/services/video/source/index.js +6 -0
- package/dist/lib/services/video/source/index.js.map +1 -0
- package/dist/lib/services/video/source/youtube/catalog.d.ts +12 -0
- package/dist/lib/services/video/source/youtube/catalog.d.ts.map +1 -0
- package/dist/lib/services/video/source/youtube/catalog.js +177 -0
- package/dist/lib/services/video/source/youtube/catalog.js.map +1 -0
- package/dist/{services/videoDownloader/index.d.ts → lib/services/video/source/youtube/downloader.d.ts} +6 -4
- package/dist/lib/services/video/source/youtube/downloader.d.ts.map +1 -0
- package/dist/lib/services/video/source/youtube/downloader.js +250 -0
- package/dist/lib/services/video/source/youtube/downloader.js.map +1 -0
- package/dist/lib/services/video/source/youtube/metadata.d.ts +14 -0
- package/dist/lib/services/video/source/youtube/metadata.d.ts.map +1 -0
- package/dist/{services/metadataExtractor/index.js → lib/services/video/source/youtube/metadata.js} +14 -18
- package/dist/lib/services/video/source/youtube/metadata.js.map +1 -0
- package/dist/{services/urlParser/index.d.ts → lib/services/video/source/youtube/parser.d.ts} +1 -1
- package/dist/lib/services/video/source/youtube/parser.d.ts.map +1 -0
- package/dist/{services/urlParser/index.js → lib/services/video/source/youtube/parser.js} +1 -1
- package/dist/lib/services/video/source/youtube/parser.js.map +1 -0
- package/dist/lib/services/video/source/youtube/subtitles.d.ts +32 -0
- package/dist/lib/services/video/source/youtube/subtitles.d.ts.map +1 -0
- package/dist/lib/services/video/source/youtube/subtitles.js +340 -0
- package/dist/lib/services/video/source/youtube/subtitles.js.map +1 -0
- package/dist/lib/types/analyzer.d.ts +55 -0
- package/dist/lib/types/analyzer.d.ts.map +1 -0
- package/dist/lib/types/analyzer.js +6 -0
- package/dist/lib/types/analyzer.js.map +1 -0
- package/dist/lib/types/audio.d.ts +54 -0
- package/dist/lib/types/audio.d.ts.map +1 -0
- package/dist/{types → lib/types}/audio.js +10 -0
- package/dist/lib/types/audio.js.map +1 -0
- package/dist/lib/types/cache.d.ts +41 -0
- package/dist/lib/types/cache.d.ts.map +1 -0
- package/dist/lib/types/cache.js.map +1 -0
- package/dist/lib/types/cli.d.ts.map +1 -0
- package/dist/lib/types/cli.js.map +1 -0
- package/dist/lib/types/config.d.ts +206 -0
- package/dist/lib/types/config.d.ts.map +1 -0
- package/dist/lib/types/config.js +487 -0
- package/dist/lib/types/config.js.map +1 -0
- package/dist/lib/types/downloader.d.ts +32 -0
- package/dist/lib/types/downloader.d.ts.map +1 -0
- package/dist/{types → lib/types}/downloader.js.map +1 -1
- package/dist/lib/types/factory.d.ts.map +1 -0
- package/dist/{types → lib/types}/factory.js.map +1 -1
- package/dist/lib/types/index.d.ts +22 -0
- package/dist/lib/types/index.d.ts.map +1 -0
- package/dist/{types → lib/types}/index.js +4 -2
- package/dist/lib/types/index.js.map +1 -0
- package/dist/lib/types/pipeline.d.ts +83 -0
- package/dist/lib/types/pipeline.d.ts.map +1 -0
- package/dist/{types → lib/types}/pipeline.js.map +1 -1
- package/dist/{types → lib/types}/segment.d.ts +1 -1
- package/dist/lib/types/segment.d.ts.map +1 -0
- package/dist/lib/types/segment.js.map +1 -0
- package/dist/lib/types/transcript.d.ts.map +1 -0
- package/dist/lib/types/transcript.js.map +1 -0
- package/dist/{types → lib/types}/video.d.ts +28 -1
- package/dist/lib/types/video.d.ts.map +1 -0
- package/dist/lib/types/video.js.map +1 -0
- package/dist/lib/types/youtube.d.ts +140 -0
- package/dist/lib/types/youtube.d.ts.map +1 -0
- package/dist/lib/types/youtube.js +43 -0
- package/dist/lib/types/youtube.js.map +1 -0
- package/dist/lib/utils/chunker.d.ts.map +1 -0
- package/dist/lib/utils/chunker.js.map +1 -0
- package/dist/lib/utils/format.d.ts.map +1 -0
- package/dist/lib/utils/format.js.map +1 -0
- package/dist/lib/utils/logger.d.ts +24 -0
- package/dist/lib/utils/logger.d.ts.map +1 -0
- package/dist/lib/utils/logger.js +83 -0
- package/dist/lib/utils/logger.js.map +1 -0
- package/dist/lib/utils/modelFactory.d.ts +4 -0
- package/dist/lib/utils/modelFactory.d.ts.map +1 -0
- package/dist/lib/utils/modelFactory.js +45 -0
- package/dist/lib/utils/modelFactory.js.map +1 -0
- package/dist/lib/utils/paths.d.ts.map +1 -0
- package/dist/lib/utils/paths.js.map +1 -0
- package/dist/lib/utils/pythonBin.d.ts.map +1 -0
- package/dist/{utils → lib/utils}/pythonBin.js +1 -1
- package/dist/lib/utils/pythonBin.js.map +1 -0
- package/dist/lib/utils/retryAsync.d.ts +19 -0
- package/dist/lib/utils/retryAsync.d.ts.map +1 -0
- package/dist/lib/utils/retryAsync.js +37 -0
- package/dist/lib/utils/retryAsync.js.map +1 -0
- package/package.json +36 -15
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js.map +0 -1
- package/dist/config/env.d.ts +0 -53
- package/dist/config/env.d.ts.map +0 -1
- package/dist/config/env.js +0 -15
- package/dist/config/env.js.map +0 -1
- package/dist/config/index.d.ts +0 -2
- package/dist/config/index.d.ts.map +0 -1
- package/dist/config/index.js +0 -2
- package/dist/config/index.js.map +0 -1
- package/dist/index.js +0 -37
- package/dist/index.js.map +0 -1
- package/dist/lib.d.ts +0 -17
- package/dist/lib.d.ts.map +0 -1
- package/dist/lib.js +0 -17
- package/dist/lib.js.map +0 -1
- package/dist/pipeline/dumper.d.ts.map +0 -1
- package/dist/pipeline/dumper.js.map +0 -1
- package/dist/pipeline/runner.d.ts.map +0 -1
- package/dist/pipeline/runner.js +0 -132
- package/dist/pipeline/runner.js.map +0 -1
- package/dist/pipeline/stages/audioProcessor.d.ts +0 -19
- package/dist/pipeline/stages/audioProcessor.d.ts.map +0 -1
- package/dist/pipeline/stages/audioProcessor.js +0 -74
- package/dist/pipeline/stages/audioProcessor.js.map +0 -1
- package/dist/pipeline/stages/clipExporter.d.ts +0 -14
- package/dist/pipeline/stages/clipExporter.d.ts.map +0 -1
- package/dist/pipeline/stages/clipExporter.js +0 -41
- package/dist/pipeline/stages/clipExporter.js.map +0 -1
- package/dist/pipeline/stages/segmentAnalyzer.d.ts +0 -26
- package/dist/pipeline/stages/segmentAnalyzer.d.ts.map +0 -1
- package/dist/pipeline/stages/segmentAnalyzer.js +0 -47
- package/dist/pipeline/stages/segmentAnalyzer.js.map +0 -1
- package/dist/pipeline/stages/segmentSelector.d.ts.map +0 -1
- package/dist/pipeline/stages/segmentSelector.js.map +0 -1
- package/dist/pipeline/stages/videoResolver.d.ts +0 -11
- package/dist/pipeline/stages/videoResolver.d.ts.map +0 -1
- package/dist/pipeline/stages/videoResolver.js +0 -32
- package/dist/pipeline/stages/videoResolver.js.map +0 -1
- package/dist/services/audioAnalyzers/base.d.ts.map +0 -1
- package/dist/services/audioAnalyzers/base.js.map +0 -1
- package/dist/services/audioAnalyzers/factory.d.ts.map +0 -1
- package/dist/services/audioAnalyzers/factory.js.map +0 -1
- package/dist/services/audioAnalyzers/gemini.d.ts.map +0 -1
- package/dist/services/audioAnalyzers/gemini.js.map +0 -1
- package/dist/services/audioAnalyzers/index.d.ts.map +0 -1
- package/dist/services/audioAnalyzers/index.js.map +0 -1
- package/dist/services/audioAnalyzers/whisper.d.ts +0 -13
- package/dist/services/audioAnalyzers/whisper.d.ts.map +0 -1
- package/dist/services/audioAnalyzers/whisper.js.map +0 -1
- package/dist/services/audioAnalyzers/yamnet.d.ts +0 -13
- package/dist/services/audioAnalyzers/yamnet.d.ts.map +0 -1
- package/dist/services/audioAnalyzers/yamnet.js.map +0 -1
- package/dist/services/audioDownloader/index.d.ts +0 -2
- package/dist/services/audioDownloader/index.d.ts.map +0 -1
- package/dist/services/audioDownloader/index.js.map +0 -1
- package/dist/services/audioDownloader/sliceAudio.d.ts +0 -2
- package/dist/services/audioDownloader/sliceAudio.d.ts.map +0 -1
- package/dist/services/audioDownloader/sliceAudio.js.map +0 -1
- package/dist/services/chunkBuilder/index.d.ts.map +0 -1
- package/dist/services/chunkBuilder/index.js.map +0 -1
- package/dist/services/clipGenerator/index.d.ts.map +0 -1
- package/dist/services/clipGenerator/index.js +0 -141
- package/dist/services/clipGenerator/index.js.map +0 -1
- package/dist/services/clipRefiner/index.d.ts +0 -10
- package/dist/services/clipRefiner/index.d.ts.map +0 -1
- package/dist/services/clipRefiner/index.js +0 -102
- package/dist/services/clipRefiner/index.js.map +0 -1
- package/dist/services/eventDetector/index.d.ts.map +0 -1
- package/dist/services/eventDetector/index.js.map +0 -1
- package/dist/services/llmAnalyzer/LLMAnalyzer.d.ts +0 -41
- package/dist/services/llmAnalyzer/LLMAnalyzer.d.ts.map +0 -1
- package/dist/services/llmAnalyzer/LLMAnalyzer.js +0 -62
- package/dist/services/llmAnalyzer/LLMAnalyzer.js.map +0 -1
- package/dist/services/llmAnalyzer/index.d.ts +0 -9
- package/dist/services/llmAnalyzer/index.d.ts.map +0 -1
- package/dist/services/llmAnalyzer/index.js +0 -172
- package/dist/services/llmAnalyzer/index.js.map +0 -1
- package/dist/services/metadataExtractor/index.d.ts +0 -12
- package/dist/services/metadataExtractor/index.d.ts.map +0 -1
- package/dist/services/metadataExtractor/index.js.map +0 -1
- package/dist/services/segmentRanker/index.d.ts.map +0 -1
- package/dist/services/segmentRanker/index.js.map +0 -1
- package/dist/services/transcriptAnalyzers/base.d.ts.map +0 -1
- package/dist/services/transcriptAnalyzers/base.js.map +0 -1
- package/dist/services/transcriptAnalyzers/factory.d.ts.map +0 -1
- package/dist/services/transcriptAnalyzers/factory.js.map +0 -1
- package/dist/services/transcriptAnalyzers/gemini.d.ts.map +0 -1
- package/dist/services/transcriptAnalyzers/gemini.js.map +0 -1
- package/dist/services/transcriptAnalyzers/index.d.ts.map +0 -1
- package/dist/services/transcriptAnalyzers/index.js.map +0 -1
- package/dist/services/transcriptAnalyzers/whisper.d.ts.map +0 -1
- package/dist/services/transcriptAnalyzers/whisper.js.map +0 -1
- package/dist/services/transcriptAnalyzers/ytdlp.d.ts +0 -26
- package/dist/services/transcriptAnalyzers/ytdlp.d.ts.map +0 -1
- package/dist/services/transcriptAnalyzers/ytdlp.js +0 -136
- package/dist/services/transcriptAnalyzers/ytdlp.js.map +0 -1
- package/dist/services/transcriptDetector/index.d.ts.map +0 -1
- package/dist/services/transcriptDetector/index.js.map +0 -1
- package/dist/services/urlParser/index.d.ts.map +0 -1
- package/dist/services/urlParser/index.js.map +0 -1
- package/dist/services/videoDownloader/index.d.ts.map +0 -1
- package/dist/services/videoDownloader/index.js +0 -198
- package/dist/services/videoDownloader/index.js.map +0 -1
- package/dist/types/analyzer.d.ts +0 -22
- package/dist/types/analyzer.d.ts.map +0 -1
- package/dist/types/analyzer.js +0 -2
- package/dist/types/analyzer.js.map +0 -1
- package/dist/types/audio.d.ts +0 -26
- package/dist/types/audio.d.ts.map +0 -1
- package/dist/types/audio.js.map +0 -1
- package/dist/types/cache.d.ts +0 -7
- package/dist/types/cache.d.ts.map +0 -1
- package/dist/types/cache.js.map +0 -1
- package/dist/types/cli.d.ts.map +0 -1
- package/dist/types/cli.js.map +0 -1
- package/dist/types/config.d.ts +0 -94
- package/dist/types/config.d.ts.map +0 -1
- package/dist/types/config.js +0 -140
- package/dist/types/config.js.map +0 -1
- package/dist/types/downloader.d.ts +0 -11
- package/dist/types/downloader.d.ts.map +0 -1
- package/dist/types/factory.d.ts.map +0 -1
- package/dist/types/index.d.ts +0 -18
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js.map +0 -1
- package/dist/types/pipeline.d.ts +0 -50
- package/dist/types/pipeline.d.ts.map +0 -1
- package/dist/types/segment.d.ts.map +0 -1
- package/dist/types/segment.js.map +0 -1
- package/dist/types/transcript.d.ts.map +0 -1
- package/dist/types/transcript.js.map +0 -1
- package/dist/types/video.d.ts.map +0 -1
- package/dist/types/video.js.map +0 -1
- package/dist/utils/cache.d.ts.map +0 -1
- package/dist/utils/cache.js.map +0 -1
- package/dist/utils/cacheBackend.d.ts +0 -40
- package/dist/utils/cacheBackend.d.ts.map +0 -1
- package/dist/utils/cacheBackend.js.map +0 -1
- package/dist/utils/cacheFactory.d.ts.map +0 -1
- package/dist/utils/cacheFactory.js.map +0 -1
- package/dist/utils/chunker.d.ts.map +0 -1
- package/dist/utils/chunker.js.map +0 -1
- package/dist/utils/fileCacheBackend.d.ts.map +0 -1
- package/dist/utils/fileCacheBackend.js.map +0 -1
- package/dist/utils/format.d.ts.map +0 -1
- package/dist/utils/format.js.map +0 -1
- package/dist/utils/logger.d.ts +0 -7
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js +0 -27
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/modelFactory.d.ts +0 -14
- package/dist/utils/modelFactory.d.ts.map +0 -1
- package/dist/utils/modelFactory.js +0 -61
- package/dist/utils/modelFactory.js.map +0 -1
- package/dist/utils/mongoCacheBackend.d.ts.map +0 -1
- package/dist/utils/mongoCacheBackend.js.map +0 -1
- package/dist/utils/paths.d.ts.map +0 -1
- package/dist/utils/paths.js.map +0 -1
- package/dist/utils/pythonBin.d.ts.map +0 -1
- package/dist/utils/pythonBin.js.map +0 -1
- /package/dist/{index.d.ts → app/cli/index.d.ts} +0 -0
- /package/dist/{pipeline → lib/pipeline}/stages/segmentSelector.d.ts +0 -0
- /package/dist/{services/chunkBuilder → lib/services/analysis/transcript/chunker}/index.js +0 -0
- /package/dist/{services/audioAnalyzers → lib/services/audio/analyzer}/index.js +0 -0
- /package/dist/{services/transcriptAnalyzers → lib/services/audio/transcriber}/gemini.js +0 -0
- /package/dist/{services/transcriptAnalyzers → lib/services/audio/transcriber}/index.js +0 -0
- /package/dist/{types → lib/types}/cache.js +0 -0
- /package/dist/{types → lib/types}/cli.d.ts +0 -0
- /package/dist/{types → lib/types}/cli.js +0 -0
- /package/dist/{types → lib/types}/downloader.js +0 -0
- /package/dist/{types → lib/types}/factory.d.ts +0 -0
- /package/dist/{types → lib/types}/factory.js +0 -0
- /package/dist/{types → lib/types}/pipeline.js +0 -0
- /package/dist/{types → lib/types}/segment.js +0 -0
- /package/dist/{types → lib/types}/transcript.d.ts +0 -0
- /package/dist/{types → lib/types}/transcript.js +0 -0
- /package/dist/{types → lib/types}/video.js +0 -0
- /package/dist/{utils → lib/utils}/chunker.d.ts +0 -0
- /package/dist/{utils → lib/utils}/chunker.js +0 -0
- /package/dist/{utils → lib/utils}/format.d.ts +0 -0
- /package/dist/{utils → lib/utils}/format.js +0 -0
- /package/dist/{utils → lib/utils}/paths.d.ts +0 -0
- /package/dist/{utils → lib/utils}/paths.js +0 -0
- /package/dist/{utils → lib/utils}/pythonBin.d.ts +0 -0
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { Cache, createCacheBackend } from '../../../../../lib/services/cache/index.js';
|
|
2
|
+
import { getModel } from '../../../../../lib/utils/modelFactory.js';
|
|
3
|
+
import { analyzeSegments, refineRankedSegments } from '../../../../../lib/pipeline/stages/segmentAnalyzer.js';
|
|
4
|
+
import { selectSegments } from '../../../../../lib/pipeline/stages/segmentSelector.js';
|
|
5
|
+
import { createArtifactId, saveAnalysis } from '../../../lib/services/artifacts/artifactStore.js';
|
|
6
|
+
import { ClipPlanSchema } from '../../../types/analysis.js';
|
|
7
|
+
const DEFAULT_SYSTEM_PROMPT = `You are an expert video editor analyzing a YouTube transcript segment.
|
|
8
|
+
|
|
9
|
+
Identify if this segment contains a potentially interesting moment worth clipping.
|
|
10
|
+
|
|
11
|
+
Interesting moments include:
|
|
12
|
+
- surprising insights or revelations
|
|
13
|
+
- strong or controversial opinions
|
|
14
|
+
- humor or entertaining storytelling
|
|
15
|
+
- emotional moments
|
|
16
|
+
- key explanations of important concepts
|
|
17
|
+
- "aha" moments or turning points
|
|
18
|
+
|
|
19
|
+
If audio events are listed in the segment, treat them as strong positive signals —
|
|
20
|
+
they indicate high-action or high-energy moments that are often clip-worthy.
|
|
21
|
+
|
|
22
|
+
After analyzing the segment, call the report_analysis tool with your findings.`;
|
|
23
|
+
/**
|
|
24
|
+
* Builds a system prompt that prepends source video context (title, channel, description)
|
|
25
|
+
* before the base scoring instructions. All fields are optional — if none are provided
|
|
26
|
+
* the base prompt is returned unchanged.
|
|
27
|
+
*/
|
|
28
|
+
function buildAnalysisSystemPrompt(base, title, channelTitle, description) {
|
|
29
|
+
const lines = [];
|
|
30
|
+
if (title)
|
|
31
|
+
lines.push(`Video title: ${title}`);
|
|
32
|
+
if (channelTitle)
|
|
33
|
+
lines.push(`Channel: ${channelTitle}`);
|
|
34
|
+
if (description) {
|
|
35
|
+
const trimmed = description.trim().slice(0, 500);
|
|
36
|
+
lines.push(`Video description (supporting context — transcript is primary):\n${trimmed}`);
|
|
37
|
+
}
|
|
38
|
+
if (lines.length === 0)
|
|
39
|
+
return base;
|
|
40
|
+
return `${lines.join('\n')}\n\n${base}`;
|
|
41
|
+
}
|
|
42
|
+
const DEFAULT_WEB_LLM_CONCURRENCY = 3;
|
|
43
|
+
export async function analyzeTranscriptForWeb(input, cfg, callbacks, requestId, signal) {
|
|
44
|
+
const backend = await createCacheBackend(cfg, input.options.noCache);
|
|
45
|
+
const cache = new Cache(backend, videoIdFrom(input));
|
|
46
|
+
const cookies = {
|
|
47
|
+
cookiesFromBrowser: cfg.YT_DLP_COOKIES_FROM_BROWSER,
|
|
48
|
+
cookiesFile: cfg.YT_DLP_COOKIES_FILE,
|
|
49
|
+
quiet: cfg.YT_DLP_QUIET,
|
|
50
|
+
retryCount: cfg.YT_DLP_RETRY_COUNT,
|
|
51
|
+
};
|
|
52
|
+
const transcriptChainConfig = {
|
|
53
|
+
...cookies,
|
|
54
|
+
whisperModel: cfg.AUDIO_WHISPER_MODEL,
|
|
55
|
+
};
|
|
56
|
+
const model = getModel(cfg.LLM_PROVIDER, cfg.LLM_MODEL, {
|
|
57
|
+
ZAI_API_KEY: cfg.ZAI_API_KEY,
|
|
58
|
+
OPENROUTER_API_KEY: cfg.OPENROUTER_API_KEY,
|
|
59
|
+
CUSTOM_OPENAI_BASE_URL: cfg.CUSTOM_OPENAI_BASE_URL,
|
|
60
|
+
CUSTOM_OPENAI_API_KEY: cfg.CUSTOM_OPENAI_API_KEY,
|
|
61
|
+
});
|
|
62
|
+
try {
|
|
63
|
+
const basePrompt = cfg.LLM_SYSTEM_PROMPT ?? DEFAULT_SYSTEM_PROMPT;
|
|
64
|
+
const systemPrompt = cfg.LLM_SYSTEM_PROMPT
|
|
65
|
+
? basePrompt
|
|
66
|
+
: buildAnalysisSystemPrompt(basePrompt, input.title, input.channelTitle, input.description);
|
|
67
|
+
const { lines, microBlocks, chunkEvals } = await analyzeSegments(videoIdFrom(input), null, [], cache, {
|
|
68
|
+
maxChunks: input.options.maxChunks ?? cfg.MAX_CHUNKS,
|
|
69
|
+
maxParallel: input.options.maxParallel ?? DEFAULT_WEB_LLM_CONCURRENCY,
|
|
70
|
+
noCache: input.options.noCache,
|
|
71
|
+
requestId,
|
|
72
|
+
transcriptProvider: cfg.TRANSCRIPT_PROVIDER,
|
|
73
|
+
transcriptChainConfig,
|
|
74
|
+
microBlockSec: cfg.MICRO_BLOCK_SEC,
|
|
75
|
+
chunkLengthSec: cfg.CHUNK_LENGTH_SEC,
|
|
76
|
+
chunkOverlapSec: cfg.CHUNK_OVERLAP_SEC,
|
|
77
|
+
model,
|
|
78
|
+
maxRetries: cfg.LLM_MAX_RETRIES,
|
|
79
|
+
systemPrompt,
|
|
80
|
+
llmModel: cfg.LLM_MODEL,
|
|
81
|
+
videoTitle: input.title,
|
|
82
|
+
callbacks,
|
|
83
|
+
signal,
|
|
84
|
+
});
|
|
85
|
+
const rankedSegments = selectSegments(chunkEvals, [], {
|
|
86
|
+
threshold: input.options.threshold ?? cfg.SCORE_THRESHOLD,
|
|
87
|
+
topN: input.options.topN ?? cfg.TOP_N_SEGMENTS,
|
|
88
|
+
boostWindow: cfg.AUDIO_LLM_BOOST_WINDOW,
|
|
89
|
+
scoreBoost: cfg.AUDIO_LLM_SCORE_BOOST,
|
|
90
|
+
preRoll: cfg.AUDIO_CLIP_PRE_ROLL,
|
|
91
|
+
postRoll: cfg.AUDIO_CLIP_POST_ROLL,
|
|
92
|
+
});
|
|
93
|
+
const finalSegments = input.options.refine && rankedSegments.length > 0
|
|
94
|
+
? await refineRankedSegments(rankedSegments, microBlocks, cache, {
|
|
95
|
+
maxParallel: input.options.maxParallel ?? DEFAULT_WEB_LLM_CONCURRENCY,
|
|
96
|
+
noCache: input.options.noCache,
|
|
97
|
+
maxRetries: cfg.LLM_MAX_RETRIES,
|
|
98
|
+
model,
|
|
99
|
+
requestId,
|
|
100
|
+
videoTitle: input.title,
|
|
101
|
+
callbacks,
|
|
102
|
+
signal,
|
|
103
|
+
})
|
|
104
|
+
: rankedSegments;
|
|
105
|
+
const createdAt = new Date().toISOString();
|
|
106
|
+
const plan = ClipPlanSchema.parse({
|
|
107
|
+
id: createArtifactId(`analysis-${input.videoId}`),
|
|
108
|
+
videoId: input.videoId,
|
|
109
|
+
title: input.title ?? input.videoId,
|
|
110
|
+
durationSec: input.durationSec ?? 0,
|
|
111
|
+
candidates: finalSegments.map((segment) => toClipCandidate(input.videoId, segment, lines)),
|
|
112
|
+
chunkEvaluations: chunkEvals,
|
|
113
|
+
createdAt,
|
|
114
|
+
});
|
|
115
|
+
return saveAnalysis(plan, cfg.OUTPUT_DIR);
|
|
116
|
+
}
|
|
117
|
+
finally {
|
|
118
|
+
await cache.close();
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
function videoIdFrom(input) {
|
|
122
|
+
return input.videoId;
|
|
123
|
+
}
|
|
124
|
+
function toClipCandidate(videoId, segment, lines) {
|
|
125
|
+
const id = `${videoId}-rank-${segment.rank}`;
|
|
126
|
+
return {
|
|
127
|
+
id,
|
|
128
|
+
rank: segment.rank,
|
|
129
|
+
startSec: segment.start,
|
|
130
|
+
endSec: segment.end,
|
|
131
|
+
score: segment.score,
|
|
132
|
+
reason: segment.reason,
|
|
133
|
+
source: segment.source,
|
|
134
|
+
audioEvent: segment.audio_event,
|
|
135
|
+
transcriptExcerpt: excerptForSegment(lines, segment.start, segment.end),
|
|
136
|
+
selected: true,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
function excerptForSegment(lines, startSec, endSec) {
|
|
140
|
+
const text = lines
|
|
141
|
+
.filter((line) => line.start >= Math.max(0, startSec - 3) && line.start <= endSec + 3)
|
|
142
|
+
.map((line) => line.text)
|
|
143
|
+
.join(' ')
|
|
144
|
+
.trim();
|
|
145
|
+
return text.length > 500 ? `${text.slice(0, 497)}...` : text;
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=analysisService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"analysisService.js","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/analysis/analysisService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { AnalysisStreamEventName } from '../../../types/analysis.js';
|
|
2
|
+
export type { AnalysisStreamEventName };
|
|
3
|
+
export declare function serializeSSE(eventName: AnalysisStreamEventName, data: unknown): string;
|
|
4
|
+
export declare function logEmittedAnalysisEvent(requestId: string, eventName: AnalysisStreamEventName, data: unknown): void;
|
|
5
|
+
//# sourceMappingURL=streamEvents.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streamEvents.d.ts","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/analysis/streamEvents.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAE1E,YAAY,EAAE,uBAAuB,EAAE,CAAC;AAExC,wBAAgB,YAAY,CAAC,SAAS,EAAE,uBAAuB,EAAE,IAAI,EAAE,OAAO,GAAG,MAAM,CAEtF;AAED,wBAAgB,uBAAuB,CACrC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,uBAAuB,EAClC,IAAI,EAAE,OAAO,GACZ,IAAI,CAON"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { log } from '../../../../../lib/utils/logger.js';
|
|
2
|
+
export function serializeSSE(eventName, data) {
|
|
3
|
+
return `event: ${eventName}\ndata: ${JSON.stringify(data)}\n\n`;
|
|
4
|
+
}
|
|
5
|
+
export function logEmittedAnalysisEvent(requestId, eventName, data) {
|
|
6
|
+
const meta = summarizeEventData(eventName, data);
|
|
7
|
+
log.info('logEmittedAnalysisEvent', `[analysis-stream] [emit] | ${eventName}${formatEventMeta(meta)}`, requestId);
|
|
8
|
+
}
|
|
9
|
+
function asRecord(value) {
|
|
10
|
+
return typeof value === 'object' && value !== null ? value : null;
|
|
11
|
+
}
|
|
12
|
+
function formatEventMeta(meta) {
|
|
13
|
+
const entries = Object.entries(meta).filter(([, value]) => value !== undefined);
|
|
14
|
+
if (entries.length === 0) {
|
|
15
|
+
return '';
|
|
16
|
+
}
|
|
17
|
+
return ' ' + entries.map(([key, value]) => `${key}=${String(value)}`).join(' ');
|
|
18
|
+
}
|
|
19
|
+
function summarizeEventData(eventName, data) {
|
|
20
|
+
const record = asRecord(data) ?? {};
|
|
21
|
+
if (eventName === 'chunk_started') {
|
|
22
|
+
return { chunkIndex: record.chunkIndex };
|
|
23
|
+
}
|
|
24
|
+
if (eventName === 'chunk_progress') {
|
|
25
|
+
return {
|
|
26
|
+
chunkIndex: record.chunkIndex,
|
|
27
|
+
textLength: typeof record.text === 'string' ? record.text.length : undefined,
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
if (eventName === 'chunk_analyzed') {
|
|
31
|
+
const evaluation = asRecord(record.evaluation) ?? {};
|
|
32
|
+
return {
|
|
33
|
+
chunkIndex: record.chunkIndex,
|
|
34
|
+
status: evaluation.status,
|
|
35
|
+
interesting: evaluation.interesting,
|
|
36
|
+
score: evaluation.score,
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
if (eventName === 'segment_started') {
|
|
40
|
+
return { rank: record.rank };
|
|
41
|
+
}
|
|
42
|
+
if (eventName === 'segment_progress') {
|
|
43
|
+
return {
|
|
44
|
+
rank: record.rank,
|
|
45
|
+
textLength: typeof record.text === 'string' ? record.text.length : undefined,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
if (eventName === 'segment_refined') {
|
|
49
|
+
const segment = asRecord(record.segment) ?? {};
|
|
50
|
+
return {
|
|
51
|
+
rank: record.rank,
|
|
52
|
+
start: segment.start,
|
|
53
|
+
end: segment.end,
|
|
54
|
+
score: segment.score,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
if (eventName === 'analysis_complete') {
|
|
58
|
+
const plan = asRecord(record.plan) ?? {};
|
|
59
|
+
const candidates = Array.isArray(plan.candidates) ? plan.candidates : undefined;
|
|
60
|
+
return {
|
|
61
|
+
candidateCount: candidates?.length,
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
if (eventName === 'error') {
|
|
65
|
+
return { message: record.message };
|
|
66
|
+
}
|
|
67
|
+
return {};
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=streamEvents.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"streamEvents.js","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/analysis/streamEvents.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { TranscriptBundle } from '../../../types/analysis.js';
|
|
2
|
+
import type { Config } from '../../../../../lib/types/config.js';
|
|
3
|
+
export declare function getTranscriptBundle(videoId: string, cfg: Config): Promise<TranscriptBundle>;
|
|
4
|
+
//# sourceMappingURL=transcriptService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcriptService.d.ts","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/analysis/transcriptService.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AACnE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAEnD,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAmCjG"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { Cache, createCacheBackend } from '../../../../../lib/services/cache/index.js';
|
|
2
|
+
import { TranscriptDetector } from '../../../../../lib/services/analysis/transcript/detector.js';
|
|
3
|
+
import { createTranscriptChain } from '../../../../../lib/services/audio/transcriber/index.js';
|
|
4
|
+
import { TranscriptBundleSchema } from '../../../types/analysis.js';
|
|
5
|
+
export async function getTranscriptBundle(videoId, cfg) {
|
|
6
|
+
const backend = await createCacheBackend(cfg, false);
|
|
7
|
+
const cache = new Cache(backend);
|
|
8
|
+
const cookies = {
|
|
9
|
+
cookiesFromBrowser: cfg.YT_DLP_COOKIES_FROM_BROWSER,
|
|
10
|
+
cookiesFile: cfg.YT_DLP_COOKIES_FILE,
|
|
11
|
+
quiet: cfg.YT_DLP_QUIET,
|
|
12
|
+
retryCount: cfg.YT_DLP_RETRY_COUNT,
|
|
13
|
+
};
|
|
14
|
+
const transcriptChainConfig = {
|
|
15
|
+
...cookies,
|
|
16
|
+
whisperModel: cfg.AUDIO_WHISPER_MODEL,
|
|
17
|
+
};
|
|
18
|
+
try {
|
|
19
|
+
const detector = new TranscriptDetector(createTranscriptChain(cfg.TRANSCRIPT_PROVIDER, transcriptChainConfig), cfg.MICRO_BLOCK_SEC, cfg.CHUNK_LENGTH_SEC, cfg.CHUNK_OVERLAP_SEC);
|
|
20
|
+
const { lines, microBlocks, chunks } = await detector.detect(videoId, null, cache);
|
|
21
|
+
return TranscriptBundleSchema.parse({
|
|
22
|
+
videoId,
|
|
23
|
+
lines,
|
|
24
|
+
microBlocks,
|
|
25
|
+
chunks,
|
|
26
|
+
fetchedAt: new Date().toISOString(),
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
finally {
|
|
30
|
+
await cache.close();
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=transcriptService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcriptService.js","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/analysis/transcriptService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+CAA+C,CAAC;AACnF,OAAO,EAAE,qBAAqB,EAAE,MAAM,0CAA0C,CAAC;AAGjF,OAAO,EAAE,sBAAsB,EAAE,MAAM,4BAA4B,CAAC;AAIpE,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,OAAe,EAAE,GAAW;IACpE,MAAM,OAAO,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;IAEjC,MAAM,OAAO,GAAiB;QAC5B,kBAAkB,EAAE,GAAG,CAAC,2BAA2B;QACnD,WAAW,EAAE,GAAG,CAAC,mBAAmB;QACpC,KAAK,EAAE,GAAG,CAAC,YAAY;QACvB,UAAU,EAAE,GAAG,CAAC,kBAAkB;KACnC,CAAC;IAEF,MAAM,qBAAqB,GAA0B;QACnD,GAAG,OAAO;QACV,YAAY,EAAE,GAAG,CAAC,mBAAmB;KACtC,CAAC;IAEF,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,kBAAkB,CACrC,qBAAqB,CAAC,GAAG,CAAC,mBAAmB,EAAE,qBAAqB,CAAC,EACrE,GAAG,CAAC,eAAe,EACnB,GAAG,CAAC,gBAAgB,EACpB,GAAG,CAAC,iBAAiB,CACtB,CAAC;QACF,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;QAEnF,OAAO,sBAAsB,CAAC,KAAK,CAAC;YAClC,OAAO;YACP,KAAK;YACL,WAAW;YACX,MAAM;YACN,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC,CAAC;IACL,CAAC;YAAS,CAAC;QACT,MAAM,KAAK,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { ClipArtifact, ClipPlan } from '../../../types/analysis.js';
|
|
2
|
+
import type { PublishDraft, UploadArtifact } from '../../../types/publish.js';
|
|
3
|
+
export declare function createArtifactId(prefix: string): string;
|
|
4
|
+
export declare function saveAnalysis(plan: ClipPlan, outputDir: string): Promise<ClipPlan>;
|
|
5
|
+
export declare function getAnalysis(outputDir: string, analysisId: string): Promise<ClipPlan | null>;
|
|
6
|
+
export declare function listAnalyses(outputDir: string): Promise<ClipPlan[]>;
|
|
7
|
+
export declare function saveClipArtifacts(artifacts: ClipArtifact[], outputDir: string): Promise<ClipArtifact[]>;
|
|
8
|
+
export declare function savePublishDraft(draft: PublishDraft, outputDir: string): Promise<PublishDraft>;
|
|
9
|
+
export declare function saveUploadArtifacts(uploads: UploadArtifact[], outputDir: string): Promise<UploadArtifact[]>;
|
|
10
|
+
export declare function listClipArtifacts(outputDir: string): Promise<ClipArtifact[]>;
|
|
11
|
+
export declare function listClipArtifactsByAnalysisId(outputDir: string, analysisId: string): Promise<ClipArtifact[]>;
|
|
12
|
+
export declare function getPublishDraft(outputDir: string, analysisId: string): Promise<PublishDraft | null>;
|
|
13
|
+
export declare function listUploadArtifactsByAnalysisId(outputDir: string, analysisId: string): Promise<UploadArtifact[]>;
|
|
14
|
+
//# sourceMappingURL=artifactStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifactStore.d.ts","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/artifacts/artifactStore.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,4BAA4B,CAAC;AAEzE,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAoB9E,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAIvF;AAED,wBAAsB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAUjG;AAED,wBAAsB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAWzE;AAED,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,YAAY,EAAE,EACzB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,YAAY,EAAE,CAAC,CAYzB;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,YAAY,CAAC,CAQvB;AAED,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,cAAc,EAAE,EACzB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,cAAc,EAAE,CAAC,CAQ3B;AAED,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAWlF;AAED,wBAAsB,6BAA6B,CACjD,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,EAAE,CAAC,CAGzB;AAED,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAU9B;AAED,wBAAsB,+BAA+B,CACnD,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,cAAc,EAAE,CAAC,CAe3B"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
import { promises as fs } from 'fs';
|
|
2
|
+
import { join, resolve } from 'path';
|
|
3
|
+
import { randomUUID } from 'crypto';
|
|
4
|
+
import { ClipArtifactSchema, ClipPlanSchema } from '../../../types/analysis.js';
|
|
5
|
+
import { PublishDraftSchema, UploadArtifactSchema } from '../../../types/publish.js';
|
|
6
|
+
const WEB_OUTPUT_DIR = 'web';
|
|
7
|
+
function artifactRoot(outputDir, kind) {
|
|
8
|
+
return resolve(outputDir, WEB_OUTPUT_DIR, kind);
|
|
9
|
+
}
|
|
10
|
+
async function ensureArtifactDir(outputDir, kind) {
|
|
11
|
+
const dir = artifactRoot(outputDir, kind);
|
|
12
|
+
await fs.mkdir(dir, { recursive: true });
|
|
13
|
+
return dir;
|
|
14
|
+
}
|
|
15
|
+
export function createArtifactId(prefix) {
|
|
16
|
+
return `${prefix}-${Date.now()}-${randomUUID().slice(0, 8)}`;
|
|
17
|
+
}
|
|
18
|
+
export async function saveAnalysis(plan, outputDir) {
|
|
19
|
+
const dir = await ensureArtifactDir(outputDir, 'analyses');
|
|
20
|
+
await fs.writeFile(join(dir, `${plan.id}.json`), JSON.stringify(plan, null, 2), 'utf-8');
|
|
21
|
+
return plan;
|
|
22
|
+
}
|
|
23
|
+
export async function getAnalysis(outputDir, analysisId) {
|
|
24
|
+
const dir = await ensureArtifactDir(outputDir, 'analyses');
|
|
25
|
+
try {
|
|
26
|
+
const raw = await fs.readFile(join(dir, `${analysisId}.json`), 'utf-8');
|
|
27
|
+
return ClipPlanSchema.parse(JSON.parse(raw));
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
if (isMissingFileError(error))
|
|
31
|
+
return null;
|
|
32
|
+
throw error;
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export async function listAnalyses(outputDir) {
|
|
36
|
+
const dir = await ensureArtifactDir(outputDir, 'analyses');
|
|
37
|
+
const names = await fs.readdir(dir);
|
|
38
|
+
const plans = [];
|
|
39
|
+
for (const name of names.filter((item) => item.endsWith('.json'))) {
|
|
40
|
+
const raw = await fs.readFile(join(dir, name), 'utf-8');
|
|
41
|
+
plans.push(ClipPlanSchema.parse(JSON.parse(raw)));
|
|
42
|
+
}
|
|
43
|
+
return plans.sort((a, b) => b.createdAt.localeCompare(a.createdAt));
|
|
44
|
+
}
|
|
45
|
+
export async function saveClipArtifacts(artifacts, outputDir) {
|
|
46
|
+
const dir = await ensureArtifactDir(outputDir, 'clips');
|
|
47
|
+
for (const artifact of artifacts) {
|
|
48
|
+
await fs.writeFile(join(dir, `${artifact.id}.json`), JSON.stringify(artifact, null, 2), 'utf-8');
|
|
49
|
+
}
|
|
50
|
+
return artifacts;
|
|
51
|
+
}
|
|
52
|
+
export async function savePublishDraft(draft, outputDir) {
|
|
53
|
+
const dir = await ensureArtifactDir(outputDir, 'publish-drafts');
|
|
54
|
+
await fs.writeFile(join(dir, `${draft.analysisId}.json`), JSON.stringify(draft, null, 2), 'utf-8');
|
|
55
|
+
return draft;
|
|
56
|
+
}
|
|
57
|
+
export async function saveUploadArtifacts(uploads, outputDir) {
|
|
58
|
+
const dir = await ensureArtifactDir(outputDir, 'uploads');
|
|
59
|
+
for (const upload of uploads) {
|
|
60
|
+
await fs.writeFile(join(dir, `${upload.id}.json`), JSON.stringify(upload, null, 2), 'utf-8');
|
|
61
|
+
}
|
|
62
|
+
return uploads;
|
|
63
|
+
}
|
|
64
|
+
export async function listClipArtifacts(outputDir) {
|
|
65
|
+
const dir = await ensureArtifactDir(outputDir, 'clips');
|
|
66
|
+
const names = await fs.readdir(dir);
|
|
67
|
+
const artifacts = [];
|
|
68
|
+
for (const name of names.filter((item) => item.endsWith('.json'))) {
|
|
69
|
+
const raw = await fs.readFile(join(dir, name), 'utf-8');
|
|
70
|
+
artifacts.push(ClipArtifactSchema.parse(JSON.parse(raw)));
|
|
71
|
+
}
|
|
72
|
+
return artifacts.sort((a, b) => b.createdAt.localeCompare(a.createdAt));
|
|
73
|
+
}
|
|
74
|
+
export async function listClipArtifactsByAnalysisId(outputDir, analysisId) {
|
|
75
|
+
const artifacts = await listClipArtifacts(outputDir);
|
|
76
|
+
return artifacts.filter((artifact) => artifact.analysisId === analysisId);
|
|
77
|
+
}
|
|
78
|
+
export async function getPublishDraft(outputDir, analysisId) {
|
|
79
|
+
const dir = await ensureArtifactDir(outputDir, 'publish-drafts');
|
|
80
|
+
try {
|
|
81
|
+
const raw = await fs.readFile(join(dir, `${analysisId}.json`), 'utf-8');
|
|
82
|
+
return PublishDraftSchema.parse(JSON.parse(raw));
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
if (isMissingFileError(error))
|
|
86
|
+
return null;
|
|
87
|
+
throw error;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
export async function listUploadArtifactsByAnalysisId(outputDir, analysisId) {
|
|
91
|
+
const dir = await ensureArtifactDir(outputDir, 'uploads');
|
|
92
|
+
const names = await fs.readdir(dir);
|
|
93
|
+
const uploads = [];
|
|
94
|
+
for (const name of names.filter((item) => item.endsWith('.json'))) {
|
|
95
|
+
const raw = await fs.readFile(join(dir, name), 'utf-8');
|
|
96
|
+
const upload = UploadArtifactSchema.parse(JSON.parse(raw));
|
|
97
|
+
if (upload.analysisId === analysisId) {
|
|
98
|
+
uploads.push(upload);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return uploads.sort((a, b) => b.createdAt.localeCompare(a.createdAt));
|
|
102
|
+
}
|
|
103
|
+
function isMissingFileError(error) {
|
|
104
|
+
return (typeof error === 'object' &&
|
|
105
|
+
error !== null &&
|
|
106
|
+
'code' in error &&
|
|
107
|
+
error.code === 'ENOENT');
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=artifactStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"artifactStore.js","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/artifacts/artifactStore.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { ClipArtifact, CreateClipsRequest } from '../../../types/analysis.js';
|
|
2
|
+
import type { Config } from '../../../../../lib/types/config.js';
|
|
3
|
+
export declare function generateWebClips(input: CreateClipsRequest, cfg: Config, requestId?: string): Promise<ClipArtifact[]>;
|
|
4
|
+
//# sourceMappingURL=clipService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clipService.d.ts","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/clipping/clipService.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAGnF,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAGnD,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,kBAAkB,EACzB,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,EAAE,CAAC,CA4EzB"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { basename } from 'path';
|
|
2
|
+
import { exportClips } from '../../../../../lib/pipeline/stages/clipExporter.js';
|
|
3
|
+
import { saveClipArtifacts } from '../../../lib/services/artifacts/artifactStore.js';
|
|
4
|
+
import { log } from '../../../../../lib/utils/logger.js';
|
|
5
|
+
export async function generateWebClips(input, cfg, requestId) {
|
|
6
|
+
const downloadMode = cfg.PARTIAL_DOWNLOAD_ENABLED ? input.segments.length : 'all';
|
|
7
|
+
log.info('generateWebClips', `[clips] [request] | analysisId=${input.analysisId} videoId=${input.videoId} segments=${input.segments.length} downloadSections=${downloadMode} concurrency=${cfg.CLIP_CONCURRENCY}`, requestId);
|
|
8
|
+
const cookies = {
|
|
9
|
+
cookiesFromBrowser: cfg.YT_DLP_COOKIES_FROM_BROWSER,
|
|
10
|
+
cookiesFile: cfg.YT_DLP_COOKIES_FILE,
|
|
11
|
+
quiet: cfg.YT_DLP_QUIET,
|
|
12
|
+
retryCount: cfg.YT_DLP_RETRY_COUNT,
|
|
13
|
+
segmentCookiesEnabled: cfg.YT_DLP_SEGMENT_COOKIES_ENABLED,
|
|
14
|
+
playerClient: cfg.YT_DLP_PLAYER_CLIENT,
|
|
15
|
+
noCheckCertificates: cfg.YT_DLP_NO_CHECK_CERTIFICATES,
|
|
16
|
+
forceIpv4: cfg.YT_DLP_FORCE_IPV4,
|
|
17
|
+
geoBypass: cfg.YT_DLP_GEO_BYPASS,
|
|
18
|
+
sleepRequests: cfg.YT_DLP_SLEEP_REQUESTS,
|
|
19
|
+
};
|
|
20
|
+
const exporterConfig = {
|
|
21
|
+
downloader: {
|
|
22
|
+
...cookies,
|
|
23
|
+
downloadDir: cfg.DOWNLOAD_DIR,
|
|
24
|
+
timestampOffset: cfg.TIMESTAMP_OFFSET_SECONDS,
|
|
25
|
+
llmConcurrency: cfg.LLM_CONCURRENCY,
|
|
26
|
+
},
|
|
27
|
+
clipper: {
|
|
28
|
+
ffmpegPath: cfg.FFMPEG_PATH,
|
|
29
|
+
ffprobePath: cfg.FFPROBE_PATH,
|
|
30
|
+
timestampOffset: cfg.TIMESTAMP_OFFSET_SECONDS,
|
|
31
|
+
ffmpegPreset: cfg.FFMPEG_PRESET,
|
|
32
|
+
outputDir: cfg.OUTPUT_DIR,
|
|
33
|
+
},
|
|
34
|
+
downloadSectionsMode: cfg.DOWNLOAD_SECTIONS_MODE,
|
|
35
|
+
};
|
|
36
|
+
const segments = input.segments.map(toRankedSegment);
|
|
37
|
+
const paths = await exportClips(input.videoId, segments, {
|
|
38
|
+
downloadSections: cfg.PARTIAL_DOWNLOAD_ENABLED ? segments.length : 'all',
|
|
39
|
+
clipConcurrency: cfg.CLIP_CONCURRENCY,
|
|
40
|
+
}, exporterConfig);
|
|
41
|
+
const createdAt = new Date().toISOString();
|
|
42
|
+
const artifacts = paths.map((path, index) => {
|
|
43
|
+
const source = input.segments[index];
|
|
44
|
+
const startSec = source.startSec;
|
|
45
|
+
const endSec = source.endSec;
|
|
46
|
+
return {
|
|
47
|
+
id: `clip-${input.videoId}-${source.id}`,
|
|
48
|
+
videoId: input.videoId,
|
|
49
|
+
analysisId: input.analysisId,
|
|
50
|
+
segmentId: source.id,
|
|
51
|
+
filename: basename(path),
|
|
52
|
+
path,
|
|
53
|
+
startSec,
|
|
54
|
+
endSec,
|
|
55
|
+
durationSec: Math.max(0.01, endSec - startSec),
|
|
56
|
+
createdAt,
|
|
57
|
+
};
|
|
58
|
+
});
|
|
59
|
+
log.info('generateWebClips', `[clips] [generated] | analysisId=${input.analysisId} requested=${input.segments.length} created=${artifacts.length}`, requestId);
|
|
60
|
+
return saveClipArtifacts(artifacts, cfg.OUTPUT_DIR);
|
|
61
|
+
}
|
|
62
|
+
function toRankedSegment(segment) {
|
|
63
|
+
return {
|
|
64
|
+
rank: segment.rank,
|
|
65
|
+
start: segment.startSec,
|
|
66
|
+
end: segment.endSec,
|
|
67
|
+
score: segment.score,
|
|
68
|
+
reason: segment.reason,
|
|
69
|
+
source: segment.source,
|
|
70
|
+
audio_event: segment.audioEvent,
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=clipService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"clipService.js","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/clipping/clipService.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webConfig.d.ts","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/config/webConfig.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,YAAY,EAAE,eAAe,EAAE,CAAC;AAEhC,wBAAgB,kBAAkB,IAAI,eAAe,CASpD"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { config } from '../../../../../lib/config/index.js';
|
|
2
|
+
export function getWebServerConfig() {
|
|
3
|
+
return {
|
|
4
|
+
youtubeApiKey: config.YOUTUBE_API_KEY,
|
|
5
|
+
outputDir: config.OUTPUT_DIR,
|
|
6
|
+
cacheDir: config.CACHE_DIR,
|
|
7
|
+
defaultThreshold: config.SCORE_THRESHOLD,
|
|
8
|
+
defaultTopN: config.TOP_N_SEGMENTS,
|
|
9
|
+
defaultConcurrency: config.LLM_CONCURRENCY,
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=webConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"webConfig.js","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/config/webConfig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAK9C,MAAM,UAAU,kBAAkB;IAChC,OAAO;QACL,aAAa,EAAE,MAAM,CAAC,eAAe;QACrC,SAAS,EAAE,MAAM,CAAC,UAAU;QAC5B,QAAQ,EAAE,MAAM,CAAC,SAAS;QAC1B,gBAAgB,EAAE,MAAM,CAAC,eAAe;QACxC,WAAW,EAAE,MAAM,CAAC,cAAc;QAClC,kBAAkB,EAAE,MAAM,CAAC,eAAe;KAC3C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import type { RequestEvent } from '@sveltejs/kit';
|
|
3
|
+
export declare function jsonOk<T>(data: T, init?: ResponseInit): Response;
|
|
4
|
+
export declare function jsonError(status: number, message: string, detail?: string): Response;
|
|
5
|
+
export declare function parseJsonBody<T>(event: RequestEvent, schema: z.ZodType<T>): Promise<T>;
|
|
6
|
+
export declare function errorMessage(error: unknown): string;
|
|
7
|
+
export declare function zodErrorDetail(error: z.ZodError): string;
|
|
8
|
+
//# sourceMappingURL=responses.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responses.d.ts","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/http/responses.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAElD,wBAAgB,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,CAAC,EAAE,YAAY,GAAG,QAAQ,CAEhE;AAED,wBAAgB,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,QAAQ,CAUpF;AAED,wBAAsB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAG5F;AAED,wBAAgB,YAAY,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEnD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,CAAC,CAAC,QAAQ,GAAG,MAAM,CAExD"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { json } from '@sveltejs/kit';
|
|
2
|
+
export function jsonOk(data, init) {
|
|
3
|
+
return json(data, init);
|
|
4
|
+
}
|
|
5
|
+
export function jsonError(status, message, detail) {
|
|
6
|
+
return json({
|
|
7
|
+
error: {
|
|
8
|
+
message,
|
|
9
|
+
...(detail ? { detail } : {}),
|
|
10
|
+
},
|
|
11
|
+
}, { status });
|
|
12
|
+
}
|
|
13
|
+
export async function parseJsonBody(event, schema) {
|
|
14
|
+
const body = await event.request.json();
|
|
15
|
+
return schema.parse(body);
|
|
16
|
+
}
|
|
17
|
+
export function errorMessage(error) {
|
|
18
|
+
return error instanceof Error ? error.message : String(error);
|
|
19
|
+
}
|
|
20
|
+
export function zodErrorDetail(error) {
|
|
21
|
+
return error.issues.map((issue) => `${issue.path.join('.')}: ${issue.message}`).join('; ');
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=responses.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responses.js","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/http/responses.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AAIrC,MAAM,UAAU,MAAM,CAAI,IAAO,EAAE,IAAmB;IACpD,OAAO,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,MAAc,EAAE,OAAe,EAAE,MAAe;IACxE,OAAO,IAAI,CACT;QACE,KAAK,EAAE;YACL,OAAO;YACP,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9B;KACF,EACD,EAAE,MAAM,EAAE,CACX,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAI,KAAmB,EAAE,MAAoB;IAC9E,MAAM,IAAI,GAAY,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;IACjD,OAAO,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AAC5B,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,KAAc;IACzC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,KAAiB;IAC9C,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7F,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type PublishDraft, type SavePublishDraftRequest } from '../../../types/publish.js';
|
|
2
|
+
import type { Config } from '../../../../../lib/types/config.js';
|
|
3
|
+
export declare function buildPublishDraft(analysisId: string, cfg: Config, requestId?: string): Promise<PublishDraft | null>;
|
|
4
|
+
export declare function savePublishDraftFromRequest(input: SavePublishDraftRequest, cfg: Config, requestId?: string): Promise<PublishDraft>;
|
|
5
|
+
//# sourceMappingURL=draftService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"draftService.d.ts","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/publishing/draftService.ts"],"names":[],"mappings":"AAQA,OAAO,EAEL,KAAK,YAAY,EAEjB,KAAK,uBAAuB,EAC7B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAGnD,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAyB9B;AAED,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,uBAAuB,EAC9B,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,CAAC,CAqBvB"}
|