@thunderkiller/video-clipper 1.5.3 → 1.5.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/dist/cli.d.ts +5 -0
  2. package/dist/cli.d.ts.map +1 -0
  3. package/dist/cli.js +1 -0
  4. package/dist/cli.js.map +1 -0
  5. package/dist/config/env.d.ts +49 -0
  6. package/dist/config/env.d.ts.map +1 -0
  7. package/dist/config/env.js +1 -0
  8. package/dist/config/env.js.map +1 -0
  9. package/dist/config/index.d.ts +3 -0
  10. package/dist/config/index.d.ts.map +1 -0
  11. package/dist/config/index.js +1 -0
  12. package/dist/config/index.js.map +1 -0
  13. package/dist/index.d.ts +3 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +2 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/lib.d.ts +17 -0
  18. package/dist/lib.d.ts.map +1 -0
  19. package/dist/lib.js +17 -0
  20. package/dist/lib.js.map +1 -0
  21. package/dist/pipeline/runner.d.ts +23 -0
  22. package/dist/pipeline/runner.d.ts.map +1 -0
  23. package/dist/pipeline/runner.js +1 -0
  24. package/dist/pipeline/runner.js.map +1 -0
  25. package/dist/pipeline/stages/audioProcessor.d.ts +20 -0
  26. package/dist/pipeline/stages/audioProcessor.d.ts.map +1 -0
  27. package/dist/pipeline/stages/audioProcessor.js +1 -0
  28. package/dist/pipeline/stages/audioProcessor.js.map +1 -0
  29. package/dist/pipeline/stages/clipExporter.d.ts +15 -0
  30. package/dist/pipeline/stages/clipExporter.d.ts.map +1 -0
  31. package/dist/pipeline/stages/clipExporter.js +1 -0
  32. package/dist/pipeline/stages/clipExporter.js.map +1 -0
  33. package/dist/pipeline/stages/segmentAnalyzer.d.ts +27 -0
  34. package/dist/pipeline/stages/segmentAnalyzer.d.ts.map +1 -0
  35. package/dist/pipeline/stages/segmentAnalyzer.js +1 -0
  36. package/dist/pipeline/stages/segmentAnalyzer.js.map +1 -0
  37. package/dist/pipeline/stages/segmentSelector.d.ts +13 -0
  38. package/dist/pipeline/stages/segmentSelector.d.ts.map +1 -0
  39. package/dist/pipeline/stages/segmentSelector.js +1 -0
  40. package/dist/pipeline/stages/segmentSelector.js.map +1 -0
  41. package/dist/pipeline/stages/videoResolver.d.ts +12 -0
  42. package/dist/pipeline/stages/videoResolver.d.ts.map +1 -0
  43. package/dist/pipeline/stages/videoResolver.js +1 -0
  44. package/dist/pipeline/stages/videoResolver.js.map +1 -0
  45. package/dist/services/audioAnalyzers/base.d.ts +26 -0
  46. package/dist/services/audioAnalyzers/base.d.ts.map +1 -0
  47. package/dist/services/audioAnalyzers/base.js +1 -0
  48. package/dist/services/audioAnalyzers/base.js.map +1 -0
  49. package/dist/services/audioAnalyzers/factory.d.ts +23 -0
  50. package/dist/services/audioAnalyzers/factory.d.ts.map +1 -0
  51. package/dist/services/audioAnalyzers/factory.js +1 -0
  52. package/dist/services/audioAnalyzers/factory.js.map +1 -0
  53. package/dist/services/audioAnalyzers/gemini.d.ts +29 -0
  54. package/dist/services/audioAnalyzers/gemini.d.ts.map +1 -0
  55. package/dist/services/audioAnalyzers/gemini.js +1 -0
  56. package/dist/services/audioAnalyzers/gemini.js.map +1 -0
  57. package/dist/services/audioAnalyzers/index.d.ts +7 -0
  58. package/dist/services/audioAnalyzers/index.d.ts.map +1 -0
  59. package/dist/services/audioAnalyzers/index.js +1 -0
  60. package/dist/services/audioAnalyzers/index.js.map +1 -0
  61. package/dist/services/audioAnalyzers/whisper.d.ts +14 -0
  62. package/dist/services/audioAnalyzers/whisper.d.ts.map +1 -0
  63. package/dist/services/audioAnalyzers/whisper.js +3 -1
  64. package/dist/services/audioAnalyzers/whisper.js.map +1 -0
  65. package/dist/services/audioAnalyzers/yamnet.d.ts +13 -0
  66. package/dist/services/audioAnalyzers/yamnet.d.ts.map +1 -0
  67. package/dist/services/audioAnalyzers/yamnet.js +3 -1
  68. package/dist/services/audioAnalyzers/yamnet.js.map +1 -0
  69. package/dist/services/audioDownloader/index.d.ts +2 -0
  70. package/dist/services/audioDownloader/index.d.ts.map +1 -0
  71. package/dist/services/audioDownloader/index.js +1 -0
  72. package/dist/services/audioDownloader/index.js.map +1 -0
  73. package/dist/services/chunkBuilder/index.d.ts +20 -0
  74. package/dist/services/chunkBuilder/index.d.ts.map +1 -0
  75. package/dist/services/chunkBuilder/index.js +1 -0
  76. package/dist/services/chunkBuilder/index.js.map +1 -0
  77. package/dist/services/clipGenerator/index.d.ts +30 -0
  78. package/dist/services/clipGenerator/index.d.ts.map +1 -0
  79. package/dist/services/clipGenerator/index.js +1 -0
  80. package/dist/services/clipGenerator/index.js.map +1 -0
  81. package/dist/services/clipRefiner/index.d.ts +9 -0
  82. package/dist/services/clipRefiner/index.d.ts.map +1 -0
  83. package/dist/services/clipRefiner/index.js +1 -0
  84. package/dist/services/clipRefiner/index.js.map +1 -0
  85. package/dist/services/eventDetector/index.d.ts +28 -0
  86. package/dist/services/eventDetector/index.d.ts.map +1 -0
  87. package/dist/services/eventDetector/index.js +1 -0
  88. package/dist/services/eventDetector/index.js.map +1 -0
  89. package/dist/services/llmAnalyzer/LLMAnalyzer.d.ts +41 -0
  90. package/dist/services/llmAnalyzer/LLMAnalyzer.d.ts.map +1 -0
  91. package/dist/services/llmAnalyzer/LLMAnalyzer.js +1 -0
  92. package/dist/services/llmAnalyzer/LLMAnalyzer.js.map +1 -0
  93. package/dist/services/llmAnalyzer/index.d.ts +8 -0
  94. package/dist/services/llmAnalyzer/index.d.ts.map +1 -0
  95. package/dist/services/llmAnalyzer/index.js +1 -0
  96. package/dist/services/llmAnalyzer/index.js.map +1 -0
  97. package/dist/services/metadataExtractor/index.d.ts +12 -0
  98. package/dist/services/metadataExtractor/index.d.ts.map +1 -0
  99. package/dist/services/metadataExtractor/index.js +1 -0
  100. package/dist/services/metadataExtractor/index.js.map +1 -0
  101. package/dist/services/segmentRanker/index.d.ts +3 -0
  102. package/dist/services/segmentRanker/index.d.ts.map +1 -0
  103. package/dist/services/segmentRanker/index.js +1 -0
  104. package/dist/services/segmentRanker/index.js.map +1 -0
  105. package/dist/services/signalMerger/index.d.ts +5 -0
  106. package/dist/services/signalMerger/index.d.ts.map +1 -0
  107. package/dist/services/signalMerger/index.js +1 -0
  108. package/dist/services/signalMerger/index.js.map +1 -0
  109. package/dist/services/transcriptAnalyzers/base.d.ts +25 -0
  110. package/dist/services/transcriptAnalyzers/base.d.ts.map +1 -0
  111. package/dist/services/transcriptAnalyzers/base.js +1 -0
  112. package/dist/services/transcriptAnalyzers/base.js.map +1 -0
  113. package/dist/services/transcriptAnalyzers/factory.d.ts +21 -0
  114. package/dist/services/transcriptAnalyzers/factory.d.ts.map +1 -0
  115. package/dist/services/transcriptAnalyzers/factory.js +1 -0
  116. package/dist/services/transcriptAnalyzers/factory.js.map +1 -0
  117. package/dist/services/transcriptAnalyzers/gemini.d.ts +18 -0
  118. package/dist/services/transcriptAnalyzers/gemini.d.ts.map +1 -0
  119. package/dist/services/transcriptAnalyzers/gemini.js +1 -0
  120. package/dist/services/transcriptAnalyzers/gemini.js.map +1 -0
  121. package/dist/services/transcriptAnalyzers/index.d.ts +7 -0
  122. package/dist/services/transcriptAnalyzers/index.d.ts.map +1 -0
  123. package/dist/services/transcriptAnalyzers/index.js +1 -0
  124. package/dist/services/transcriptAnalyzers/index.js.map +1 -0
  125. package/dist/services/transcriptAnalyzers/whisper.d.ts +18 -0
  126. package/dist/services/transcriptAnalyzers/whisper.d.ts.map +1 -0
  127. package/dist/services/transcriptAnalyzers/whisper.js +3 -1
  128. package/dist/services/transcriptAnalyzers/whisper.js.map +1 -0
  129. package/dist/services/transcriptAnalyzers/ytdlp.d.ts +15 -0
  130. package/dist/services/transcriptAnalyzers/ytdlp.d.ts.map +1 -0
  131. package/dist/services/transcriptAnalyzers/ytdlp.js +1 -0
  132. package/dist/services/transcriptAnalyzers/ytdlp.js.map +1 -0
  133. package/dist/services/transcriptDetector/index.d.ts +53 -0
  134. package/dist/services/transcriptDetector/index.d.ts.map +1 -0
  135. package/dist/services/transcriptDetector/index.js +1 -0
  136. package/dist/services/transcriptDetector/index.js.map +1 -0
  137. package/dist/services/transcriptFetcher/index.d.ts +26 -0
  138. package/dist/services/transcriptFetcher/index.d.ts.map +1 -0
  139. package/dist/services/transcriptFetcher/index.js +1 -0
  140. package/dist/services/transcriptFetcher/index.js.map +1 -0
  141. package/dist/services/urlParser/index.d.ts +12 -0
  142. package/dist/services/urlParser/index.d.ts.map +1 -0
  143. package/dist/services/urlParser/index.js +1 -0
  144. package/dist/services/urlParser/index.js.map +1 -0
  145. package/dist/services/videoDownloader/index.d.ts +27 -0
  146. package/dist/services/videoDownloader/index.d.ts.map +1 -0
  147. package/dist/services/videoDownloader/index.js +1 -0
  148. package/dist/services/videoDownloader/index.js.map +1 -0
  149. package/dist/types/analyzer.d.ts +21 -0
  150. package/dist/types/analyzer.d.ts.map +1 -0
  151. package/dist/types/analyzer.js +1 -0
  152. package/dist/types/analyzer.js.map +1 -0
  153. package/dist/types/audio.d.ts +26 -0
  154. package/dist/types/audio.d.ts.map +1 -0
  155. package/dist/types/audio.js +1 -0
  156. package/dist/types/audio.js.map +1 -0
  157. package/dist/types/cache.d.ts +7 -0
  158. package/dist/types/cache.d.ts.map +1 -0
  159. package/dist/types/cache.js +1 -0
  160. package/dist/types/cache.js.map +1 -0
  161. package/dist/types/cli.d.ts +23 -0
  162. package/dist/types/cli.d.ts.map +1 -0
  163. package/dist/types/cli.js +1 -0
  164. package/dist/types/cli.js.map +1 -0
  165. package/dist/types/config.d.ts +90 -0
  166. package/dist/types/config.d.ts.map +1 -0
  167. package/dist/types/config.js +1 -0
  168. package/dist/types/config.js.map +1 -0
  169. package/dist/types/downloader.d.ts +11 -0
  170. package/dist/types/downloader.d.ts.map +1 -0
  171. package/dist/types/downloader.js +1 -0
  172. package/dist/types/downloader.js.map +1 -0
  173. package/dist/types/factory.d.ts +3 -0
  174. package/dist/types/factory.d.ts.map +1 -0
  175. package/dist/types/factory.js +1 -0
  176. package/dist/types/factory.js.map +1 -0
  177. package/dist/types/index.d.ts +18 -0
  178. package/dist/types/index.d.ts.map +1 -0
  179. package/dist/types/index.js +1 -0
  180. package/dist/types/index.js.map +1 -0
  181. package/dist/types/pipeline.d.ts +48 -0
  182. package/dist/types/pipeline.d.ts.map +1 -0
  183. package/dist/types/pipeline.js +1 -0
  184. package/dist/types/pipeline.js.map +1 -0
  185. package/dist/types/segment.d.ts +42 -0
  186. package/dist/types/segment.d.ts.map +1 -0
  187. package/dist/types/segment.js +1 -0
  188. package/dist/types/segment.js.map +1 -0
  189. package/dist/types/transcript.d.ts +20 -0
  190. package/dist/types/transcript.d.ts.map +1 -0
  191. package/dist/types/transcript.js +1 -0
  192. package/dist/types/transcript.js.map +1 -0
  193. package/dist/types/video.d.ts +44 -0
  194. package/dist/types/video.d.ts.map +1 -0
  195. package/dist/types/video.js +1 -0
  196. package/dist/types/video.js.map +1 -0
  197. package/dist/utils/cache.d.ts +34 -0
  198. package/dist/utils/cache.d.ts.map +1 -0
  199. package/dist/utils/cache.js +1 -0
  200. package/dist/utils/cache.js.map +1 -0
  201. package/dist/utils/chunker.d.ts +38 -0
  202. package/dist/utils/chunker.d.ts.map +1 -0
  203. package/dist/utils/chunker.js +1 -0
  204. package/dist/utils/chunker.js.map +1 -0
  205. package/dist/utils/dumper.d.ts +12 -0
  206. package/dist/utils/dumper.d.ts.map +1 -0
  207. package/dist/utils/dumper.js +1 -0
  208. package/dist/utils/dumper.js.map +1 -0
  209. package/dist/utils/format.d.ts +6 -0
  210. package/dist/utils/format.d.ts.map +1 -0
  211. package/dist/utils/format.js +1 -0
  212. package/dist/utils/format.js.map +1 -0
  213. package/dist/utils/logger.d.ts +6 -0
  214. package/dist/utils/logger.d.ts.map +1 -0
  215. package/dist/utils/logger.js +1 -0
  216. package/dist/utils/logger.js.map +1 -0
  217. package/dist/utils/modelFactory.d.ts +14 -0
  218. package/dist/utils/modelFactory.d.ts.map +1 -0
  219. package/dist/utils/modelFactory.js +1 -0
  220. package/dist/utils/modelFactory.js.map +1 -0
  221. package/dist/utils/paths.d.ts +16 -0
  222. package/dist/utils/paths.d.ts.map +1 -0
  223. package/dist/utils/paths.js +20 -0
  224. package/dist/utils/paths.js.map +1 -0
  225. package/dist/utils/redactConfig.d.ts +7 -0
  226. package/dist/utils/redactConfig.d.ts.map +1 -0
  227. package/dist/utils/redactConfig.js +1 -0
  228. package/dist/utils/redactConfig.js.map +1 -0
  229. package/dist/utils/sliceAudio.d.ts +2 -0
  230. package/dist/utils/sliceAudio.d.ts.map +1 -0
  231. package/dist/utils/sliceAudio.js +1 -0
  232. package/dist/utils/sliceAudio.js.map +1 -0
  233. package/package.json +26 -2
  234. package/requirements.txt +5 -0
  235. package/scripts/detect_events.py +81 -0
  236. package/scripts/detect_events_whisper.py +101 -0
  237. package/scripts/transcribe_whisper.py +70 -0
  238. package/.env.example +0 -130
  239. package/CHANGELOG.md +0 -102
  240. package/CONTRIBUTING.md +0 -100
  241. package/commitlint.config.js +0 -25
package/dist/cli.d.ts ADDED
@@ -0,0 +1,5 @@
1
+ import type { CliArgs } from './types/index.js';
2
+ export type { CliArgs };
3
+ export declare function parseArgs(argv: string[]): CliArgs;
4
+ export declare function printUsage(): void;
5
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD,YAAY,EAAE,OAAO,EAAE,CAAC;AAMxB,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CA+HjD;AAMD,wBAAgB,UAAU,IAAI,IAAI,CA0CjC"}
package/dist/cli.js CHANGED
@@ -185,3 +185,4 @@ Examples:
185
185
  npm run start -- https://youtube.com/watch?v=dQw4w9WgXcQ --max-parallel 5
186
186
  `.trim());
187
187
  }
188
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AAKxC,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E,MAAM,UAAU,SAAS,CAAC,IAAc;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAY;QACtB,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,KAAK;QACX,gBAAgB,EAAE,SAAS;QAC3B,SAAS,EAAE,SAAS;QACpB,SAAS,EAAE,SAAS;QACpB,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,SAAS;QACtB,SAAS,EAAE,SAAS;QACpB,WAAW,EAAE,SAAS;QACtB,UAAU,EAAE,SAAS;QACrB,OAAO,EAAE,KAAK;QACd,OAAO,EAAE,KAAK;QACd,WAAW,EAAE,SAAS;QACtB,IAAI,EAAE,KAAK;KACZ,CAAC;IAEF,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAEpB,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACrC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;aAAM,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;aAAM,IAAI,GAAG,KAAK,qBAAqB,EAAE,CAAC;YACzC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,GAAG,CAAC,KAAK,CAAC,wEAAwE,CAAC,CAAC;gBACpF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YAED,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;gBAClB,MAAM,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAClC,CAAC;iBAAM,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;gBAC9B,GAAG,CAAC,IAAI,CACN,4JAA4J,CAC7J,CAAC;gBACF,MAAM,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAClC,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;gBACxB,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;oBACpD,GAAG,CAAC,KAAK,CAAC,yEAAyE,CAAC,CAAC;oBACrF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;gBACD,MAAM,CAAC,gBAAgB,GAAG,GAAG,CAAC;YAChC,CAAC;YAED,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;aAAM,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,GAAG,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;gBACpD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;QACzB,CAAC;aAAM,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;YACnC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,GAAG,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;gBAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,CAAC,UAAU,GAAG,GAAG,CAAC;YACxB,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC;QACrB,CAAC;aAAM,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YAChC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,CAAC;aAAM,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACf,GAAG,CAAC,KAAK,CAAC,sCAAsC,CAAC,CAAC;gBAClD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;QACzB,CAAC;aAAM,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACf,GAAG,CAAC,KAAK,CAAC,kCAAkC,CAAC,CAAC;gBAC9C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,CAAC,IAAI,GAAG,GAAG,CAAC;QACpB,CAAC;aAAM,IAAI,GAAG,KAAK,gBAAgB,EAAE,CAAC;YACpC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBACf,GAAG,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;gBACrD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,CAAC,WAAW,GAAG,GAAG,CAAC;QAC3B,CAAC;aAAM,IAAI,GAAG,KAAK,cAAc,EAAE,CAAC;YAClC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;gBACpD,GAAG,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;gBACtD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,CAAC,SAAS,GAAG,GAAG,CAAC;QACzB,CAAC;aAAM,IAAI,GAAG,KAAK,gBAAgB,EAAE,CAAC;YACpC,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;gBACpD,GAAG,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;gBACxD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,CAAC,WAAW,GAAG,GAAG,CAAC;QAC3B,CAAC;aAAM,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YAChC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;QACxB,CAAC;aAAM,IAAI,GAAG,KAAK,gBAAgB,EAAE,CAAC;YACpC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YACtB,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,GAAG,CAAC,KAAK,CAAC,sEAAsE,CAAC,CAAC;gBAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,MAAM,CAAC,WAAW,GAAG,GAAG,CAAC;QAC3B,CAAC;aAAM,IAAI,GAAG,KAAK,eAAe,EAAE,CAAC;YACnC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;gBACvB,GAAG,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;gBAChD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;aAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,MAAM,CAAC,GAAG,GAAG,GAAG,CAAC;QACnB,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,KAAK,CAAC,iBAAiB,GAAG,EAAE,CAAC,CAAC;YAClC,UAAU,EAAE,CAAC;YACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E,MAAM,UAAU,UAAU;IACxB,OAAO,CAAC,GAAG,CACT;;;;;;;;;;;;+HAY2H,MAAM,CAAC,sBAAsB;;;sEAGtF,MAAM,CAAC,eAAe;2EACjB,MAAM,CAAC,cAAc;;;;;;;uFAOT,MAAM,CAAC,YAAY;;;;;;;;;;;;;;;CAezG,CAAC,IAAI,EAAE,CACL,CAAC;AACJ,CAAC"}
@@ -0,0 +1,49 @@
1
+ import 'dotenv/config';
2
+ export declare const config: {
3
+ LLM_PROVIDER: "openai" | "anthropic" | "google" | "xai" | "mistral" | "groq" | "zai" | "openrouter" | "custom";
4
+ SCORE_THRESHOLD: number;
5
+ TOP_N_SEGMENTS: number;
6
+ CHUNK_LENGTH_SEC: number;
7
+ CHUNK_OVERLAP_SEC: number;
8
+ MICRO_BLOCK_SEC: number;
9
+ LLM_MODEL: string;
10
+ LLM_MAX_RETRIES: number;
11
+ DOWNLOAD_DIR: string;
12
+ OUTPUT_DIR: string;
13
+ CACHE_DIR: string;
14
+ DUMP_OUTPUTS: boolean;
15
+ LLM_CONCURRENCY: number;
16
+ CLIP_CONCURRENCY: number;
17
+ AUDIO_GEMINI_MODEL: string;
18
+ DOWNLOAD_SECTIONS_MODE: number | "all";
19
+ FFMPEG_PRESET: "ultrafast" | "superfast" | "veryfast" | "fast" | "medium" | "slow" | "slower";
20
+ TIMESTAMP_OFFSET_SECONDS: number;
21
+ TRANSCRIPT_PROVIDER: string;
22
+ AUDIO_DETECTION_ENABLED: boolean;
23
+ AUDIO_PROVIDER: string;
24
+ AUDIO_WHISPER_MODEL: "medium" | "tiny" | "base" | "small" | "large-v3";
25
+ AUDIO_CONFIDENCE_THRESHOLD: number;
26
+ AUDIO_CLIP_PRE_ROLL: number;
27
+ AUDIO_CLIP_POST_ROLL: number;
28
+ AUDIO_LLM_BOOST_WINDOW: number;
29
+ AUDIO_LLM_SCORE_BOOST: number;
30
+ GAME_PROFILE: "valorant" | "fps" | "boss_fight" | "general";
31
+ OPENAI_API_KEY?: string | undefined;
32
+ ANTHROPIC_API_KEY?: string | undefined;
33
+ GOOGLE_GENERATIVE_AI_API_KEY?: string | undefined;
34
+ XAI_API_KEY?: string | undefined;
35
+ MISTRAL_API_KEY?: string | undefined;
36
+ GROQ_API_KEY?: string | undefined;
37
+ ZAI_API_KEY?: string | undefined;
38
+ OPENROUTER_API_KEY?: string | undefined;
39
+ CUSTOM_OPENAI_API_KEY?: string | undefined;
40
+ CUSTOM_OPENAI_BASE_URL?: string | undefined;
41
+ MAX_CHUNKS?: number | undefined;
42
+ LLM_SYSTEM_PROMPT?: string | undefined;
43
+ AUDIO_EXTRA_INSTRUCTIONS?: string | undefined;
44
+ FFMPEG_PATH?: string | undefined;
45
+ FFPROBE_PATH?: string | undefined;
46
+ YT_DLP_COOKIES_FROM_BROWSER?: "chrome" | "firefox" | "safari" | "brave" | "edge" | "opera" | "chromium" | undefined;
47
+ YT_DLP_COOKIES_FILE?: string | undefined;
48
+ };
49
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AAiBvB,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAAe,CAAC"}
@@ -12,3 +12,4 @@ function loadConfig() {
12
12
  return result.data;
13
13
  }
14
14
  export const config = loadConfig();
15
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../../src/config/env.ts"],"names":[],"mappings":"AAAA,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,SAAS,UAAU;IACjB,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAEnD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM;aAC/B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC;aACnD,IAAI,CAAC,IAAI,CAAC,CAAC;QACd,OAAO,CAAC,KAAK,CAAC,mCAAmC,MAAM,EAAE,CAAC,CAAC;QAC3D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,MAAM,CAAC,IAAI,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG,UAAU,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { config } from './env.js';
2
+ export type { Config } from '../types/config.js';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,YAAY,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1 +1,2 @@
1
1
  export { config } from './env.js';
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC"}
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
package/dist/index.js CHANGED
@@ -1,3 +1,4 @@
1
+ #!/usr/bin/env node
1
2
  import { log } from './utils/logger.js';
2
3
  import { formatConfig } from './utils/redactConfig.js';
3
4
  import { config } from './config/index.js';
@@ -33,3 +34,4 @@ runPipeline(args).catch((err) => {
33
34
  log.error(err instanceof Error ? err.message : String(err));
34
35
  process.exit(1);
35
36
  });
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,GAAG,EAAE,MAAM,mBAAmB,CAAC;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAEnD,MAAM,IAAI,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;AAErC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;IACd,UAAU,EAAE,CAAC;IACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;IACd,GAAG,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;IACtC,UAAU,EAAE,CAAC;IACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAClC,GAAG,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC;IAChD,UAAU,EAAE,CAAC;IACb,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC;AAED,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC7C,GAAG,CAAC,IAAI,CACN,8FAA8F,CAC/F,CAAC;AACJ,CAAC;AAED,GAAG,CAAC,IAAI,CACN,kCAAkC,MAAM,CAAC,SAAS,GAAG;IACnD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,EAAE,CAAC;IACtC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,oBAAoB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,CAAC,IAAI,CAAC,gBAAgB,KAAK,SAAS,IAAI,IAAI,CAAC,gBAAgB,KAAK,KAAK;QACrE,CAAC,CAAC,0BAA0B,IAAI,CAAC,gBAAgB,GAAG;QACpD,CAAC,CAAC,EAAE,CAAC;IACP,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,mBAAmB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAC/D,CAAC;AACF,GAAG,CAAC,IAAI,CAAC,WAAW,YAAY,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAE5C,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;IAC9B,GAAG,CAAC,KAAK,CAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC"}
package/dist/lib.d.ts ADDED
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Public programmatic API for @thunderkiller/video-clipper.
3
+ *
4
+ * Import from this entrypoint when using the package as a library:
5
+ *
6
+ * import { runPipeline, parseArgs, config } from '@thunderkiller/video-clipper'
7
+ *
8
+ * For CLI usage, use the `video-clipper` binary that is installed alongside
9
+ * the package (mapped via the `bin` field in package.json).
10
+ */
11
+ export { runPipeline } from './pipeline/runner.js';
12
+ export { parseArgs, printUsage } from './cli.js';
13
+ export { config } from './config/index.js';
14
+ export { scriptPath, PACKAGE_ROOT } from './utils/paths.js';
15
+ export type { Config, TranscriptLine, MicroBlock, LLMChunk, AnalyzedSegment, RankedSegment, ChunkEvaluation, AudioEvent, MergedCandidate, VideoMetadata, PipelineResult, CliArgs, ChunkWindow, VideoResolverResult, AudioProcessorOpts, SegmentAnalyzerOpts, SegmentAnalyzerResult, SegmentSelectorOpts, ClipExporterOpts, LLMAnalyzerResult, LLMAnalyzerOpts, TranscriptDetectorResult, DownloadMode, DownloadResultAll, DownloadResultSegments, DownloadResult, SegmentRefinement, TranscriptProviderName, AudioProviderName, } from './types/index.js';
16
+ export { ConfigSchema, TranscriptLineSchema, MicroBlockSchema, LLMChunkSchema, AnalyzedSegmentSchema, RankedSegmentSchema, ChunkEvaluationSchema, AudioEventSchema, MergedCandidateSchema, VideoMetadataSchema, PipelineResultSchema, SegmentRefinementSchema, } from './types/index.js';
17
+ //# sourceMappingURL=lib.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.d.ts","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAG5D,YAAY,EACV,MAAM,EACN,cAAc,EACd,UAAU,EACV,QAAQ,EACR,eAAe,EACf,aAAa,EACb,eAAe,EACf,UAAU,EACV,eAAe,EACf,aAAa,EACb,cAAc,EACd,OAAO,EACP,WAAW,EACX,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,eAAe,EACf,wBAAwB,EACxB,YAAY,EACZ,iBAAiB,EACjB,sBAAsB,EACtB,cAAc,EACd,iBAAiB,EACjB,sBAAsB,EACtB,iBAAiB,GAClB,MAAM,kBAAkB,CAAC;AAG1B,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC"}
package/dist/lib.js ADDED
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Public programmatic API for @thunderkiller/video-clipper.
3
+ *
4
+ * Import from this entrypoint when using the package as a library:
5
+ *
6
+ * import { runPipeline, parseArgs, config } from '@thunderkiller/video-clipper'
7
+ *
8
+ * For CLI usage, use the `video-clipper` binary that is installed alongside
9
+ * the package (mapped via the `bin` field in package.json).
10
+ */
11
+ export { runPipeline } from './pipeline/runner.js';
12
+ export { parseArgs, printUsage } from './cli.js';
13
+ export { config } from './config/index.js';
14
+ export { scriptPath, PACKAGE_ROOT } from './utils/paths.js';
15
+ // Zod schemas for consumers who want to validate data themselves
16
+ export { ConfigSchema, TranscriptLineSchema, MicroBlockSchema, LLMChunkSchema, AnalyzedSegmentSchema, RankedSegmentSchema, ChunkEvaluationSchema, AudioEventSchema, MergedCandidateSchema, VideoMetadataSchema, PipelineResultSchema, SegmentRefinementSchema, } from './types/index.js';
17
+ //# sourceMappingURL=lib.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lib.js","sourceRoot":"","sources":["../src/lib.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AACjD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAmC5D,iEAAiE;AACjE,OAAO,EACL,YAAY,EACZ,oBAAoB,EACpB,gBAAgB,EAChB,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,uBAAuB,GACxB,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,23 @@
1
+ import type { CliArgs } from '../types/index.js';
2
+ /**
3
+ * Runs the full video-clipper pipeline for the given CLI arguments.
4
+ *
5
+ * Stage ordering:
6
+ * 1. resolveVideo — parse URL, extract video ID + metadata
7
+ * 2. downloadAudio — download WAV so Whisper/Gemini transcript providers can use it
8
+ * 3. processAudio — detect audio events per window (reuses downloaded WAV)
9
+ * 4a. analyzeSegments — fetch transcript + LLM pass 1 (informed by audio events)
10
+ * 5. selectSegments — merge signals, rank, threshold filter
11
+ * 4b. refineRankedSegments — LLM pass 2 to tighten clip boundaries
12
+ * 6. exportClips — download video + run ffmpeg (only if --clip)
13
+ *
14
+ * downloadAudio runs before analyzeSegments so that `audioPath` is available
15
+ * for Whisper/Gemini transcript providers. processAudio reuses the same WAV.
16
+ *
17
+ * Hard errors (invalid URL, transcript failure, all LLM chunks failed) are
18
+ * thrown so the caller can catch, log, and exit(1). Soft failures (audio
19
+ * detection, individual clip failures) are logged as warnings and the pipeline
20
+ * continues.
21
+ */
22
+ export declare function runPipeline(args: CliArgs): Promise<void>;
23
+ //# sourceMappingURL=runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/pipeline/runner.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,OAAO,EAAkB,MAAM,mBAAmB,CAAC;AAejE;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAoG9D"}
@@ -122,3 +122,4 @@ export async function runPipeline(args) {
122
122
  }
123
123
  }
124
124
  }
125
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/pipeline/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,sCAAsC,CAAC;AAGrE,KAAK,UAAU,YAAY,CACzB,MAAsB,EACtB,cAAkC;IAElC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC7C,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,EAAE,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;QAClD,GAAG,CAAC,IAAI,CAAC,qBAAqB,cAAc,EAAE,CAAC,CAAC;IAClD,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IAC3B,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,IAAa;IAC7C,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,MAAM,CAAC,eAAe,CAAC;IAC3D,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,IAAI,MAAM,CAAC,cAAc,CAAC;IAChD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,YAAY,CAAC;IAC5D,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,eAAe,CAAC;IAE/D,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAExD,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,YAAY,CAAC,IAAI,CAAC,GAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;IAEvF;;OAEG;IACH,IAAI,SAAS,GAAkB,IAAI,CAAC;IACpC,MAAM,YAAY,GAAG,MAAM,CAAC,uBAAuB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IACrE,IAAI,YAAY,EAAE,CAAC;QACjB,IAAI,CAAC;YACH,SAAS,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,UAAU,QAAQ,CAAC,CAAC;QACzE,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;YACjE,GAAG,CAAC,IAAI,CAAC,qDAAqD,OAAO,EAAE,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,YAAY,CAAC,OAAO,EAAE,QAAQ,CAAC,QAAQ,EAAE,KAAK,EAAE;QACxE,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,WAAW;QACX,WAAW;QACX,SAAS;KACV,CAAC,CAAC;IAEH,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,GAAG,MAAM,eAAe,CAC9D,OAAO,EACP,SAAS,EACT,WAAW,EACX,KAAK,EACL;QACE,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,WAAW;QACX,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CACF,CAAC;IAEF,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,MAAM,cAAc,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,cAAc,GAAG,cAAc,CAAC,UAAU,EAAE,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEpF,MAAM,aAAa,GAAmB;QACpC,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,iBAAiB,EAAE,UAAU;QAC7B,QAAQ,EAAE,cAAc;KACzB,CAAC;IAEF,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,MAAM,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QACnD,IAAI,MAAM,CAAC,YAAY;YAAE,MAAM,YAAY,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;QACpE,OAAO;IACT,CAAC;IAED,MAAM,eAAe,GAAG,MAAM,oBAAoB,CAAC,cAAc,EAAE,WAAW,EAAE,KAAK,EAAE;QACrF,WAAW;QACX,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CAAC;IAEH,MAAM,MAAM,GAAmB;QAC7B,QAAQ,EAAE,OAAO;QACjB,KAAK,EAAE,QAAQ,CAAC,KAAK;QACrB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,iBAAiB,EAAE,UAAU;QAC7B,QAAQ,EAAE,eAAe;KAC1B,CAAC;IAEF,MAAM,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;IAC5C,IAAI,MAAM,CAAC,YAAY;QAAE,MAAM,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAE7D,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAElB,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,GAAG,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;QAC/E,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE;QAC5D,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,SAAS,EAAE,IAAI,CAAC,SAAS;KAC1B,CAAC,CAAC;IAEH,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,GAAG,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;IACpD,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,IAAI,CAAC,UAAU,SAAS,CAAC,MAAM,QAAQ,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;QACvF,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;YAC1B,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { Cache } from '../../utils/cache.js';
2
+ import type { AudioEvent, AudioProcessorOpts } from '../../types/index.js';
3
+ export type { AudioProcessorOpts };
4
+ /**
5
+ * Stage 3 — Audio Processor
6
+ *
7
+ * Downloads audio-only WAV, slices it into chunks using the generic
8
+ * `buildWindows` utility, runs event detection on each slice via an
9
+ * EventDetector (constructed from the ordered provider chain in config),
10
+ * and persists the results to cache.
11
+ *
12
+ * The provider chain is built once per run from `config.AUDIO_PROVIDER`
13
+ * (e.g. "gemini,whisper") via `createAnalyzerChain`. The EventDetector
14
+ * walks the chain in order, falling back to the next analyzer on failure.
15
+ *
16
+ * Returns an empty array immediately when audio detection is disabled via
17
+ * `--no-audio` or the `AUDIO_DETECTION_ENABLED` config flag.
18
+ */
19
+ export declare function processAudio(videoId: string, duration: number, cache: Cache, opts: AudioProcessorOpts): Promise<AudioEvent[]>;
20
+ //# sourceMappingURL=audioProcessor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audioProcessor.d.ts","sourceRoot":"","sources":["../../../src/pipeline/stages/audioProcessor.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE3E,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAEnC;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,YAAY,CAChC,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,UAAU,EAAE,CAAC,CA4FvB"}
@@ -71,3 +71,4 @@ export async function processAudio(videoId, duration, cache, opts) {
71
71
  return [];
72
72
  }
73
73
  }
74
+ //# sourceMappingURL=audioProcessor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"audioProcessor.js","sourceRoot":"","sources":["../../../src/pipeline/stages/audioProcessor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,MAAM,MAAM,SAAS,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAC7E,OAAO,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACtE,OAAO,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAM/C;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,OAAe,EACf,QAAgB,EAChB,KAAY,EACZ,IAAwB;IAExB,MAAM,YAAY,GAAG,MAAM,CAAC,uBAAuB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IACrE,IAAI,CAAC,YAAY;QAAE,OAAO,EAAE,CAAC;IAE7B,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;IAC7F,IAAI,MAAM,EAAE,CAAC;QACX,GAAG,CAAC,IAAI,CAAC,+CAA+C,MAAM,CAAC,MAAM,UAAU,CAAC,CAAC;QACjF,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,IAAI,CAAC;QACH,MAAM,SAAS,GACb,IAAI,CAAC,SAAS,IAAI,CAAC,MAAM,aAAa,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,UAAU,QAAQ,CAAC,CAAC,CAAC;QAEjF,MAAM,KAAK,GAAG,mBAAmB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,CAAC;QAE1C,MAAM,aAAa,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7D,GAAG,CAAC,IAAI,CACN,kCAAkC,aAAa,cAAc,IAAI,CAAC,WAAW,SAAS,IAAI,CAAC,WAAW,eAAe,CACtH,CAAC;QAEF,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAAC,iBAAiB,CAAC,CAAC;QAC1F,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEvC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CACrB,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,GAAG,CAAC,IAAI,CAAC,4BAA4B,MAAM,CAAC,KAAK,OAAO,MAAM,CAAC,GAAG,MAAM,CAAC,CAAC;YAE1E,MAAM,WAAW,GAAG,MAAM,KAAK,CAAC,cAAc,CAC5C,OAAO,EACP,IAAI,CAAC,WAAW,EAChB,MAAM,CAAC,cAAc,EACrB,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,GAAG,CACX,CAAC;YACF,IAAI,WAAW,EAAE,CAAC;gBAChB,GAAG,CAAC,IAAI,CACN,6BAA6B,MAAM,CAAC,KAAK,OAAO,MAAM,CAAC,GAAG,MAAM,WAAW,CAAC,MAAM,UAAU,CAC7F,CAAC;gBACF,OAAO,WAAW,CAAC;YACrB,CAAC;YAED,MAAM,SAAS,GAAG,MAAM,UAAU,CAChC,SAAS,EACT,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,EACzB,MAAM,CAAC,UAAU,CAClB,CAAC;YACF,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,CAClC,SAAS,EACT,IAAI,CAAC,WAAW,EAChB,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAC1B,CAAC;YACF,MAAM,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAE3B,MAAM,KAAK,CAAC,eAAe,CACzB,OAAO,EACP,IAAI,CAAC,WAAW,EAChB,MAAM,CAAC,cAAc,EACrB,MAAM,CAAC,KAAK,EACZ,MAAM,CAAC,GAAG,EACV,MAAM,CACP,CAAC;YAEF,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CACH,CACF,CAAC;QAEF,MAAM,WAAW,GAAiB,OAAO;aACtC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAChB,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW;gBAAE,OAAO,CAAC,CAAC,KAAK,CAAC;YAC7C,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAE,CAAC;YACtB,GAAG,CAAC,IAAI,CACN,4CAA4C,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,GAAG,MAAM,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CACxF,CAAC;YACF,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC;aACD,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QAEnC,GAAG,CAAC,IAAI,CAAC,mCAAmC,WAAW,CAAC,MAAM,eAAe,CAAC,CAAC;QAE/E,MAAM,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;QAC5F,OAAO,WAAW,CAAC;IACrB,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;QACjE,GAAG,CAAC,IAAI,CAAC,gDAAgD,OAAO,EAAE,CAAC,CAAC;QACpE,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -0,0 +1,15 @@
1
+ import type { RankedSegment, ClipExporterOpts } from '../../types/index.js';
2
+ export type { ClipExporterOpts };
3
+ /**
4
+ * Stage 6 — Clip Exporter
5
+ *
6
+ * Handles all three clip-generation modes:
7
+ * 1. Local video — user supplied --local-video; run ffmpeg directly
8
+ * 2. Segments -- --download-sections N; download top-N clips via yt-dlp
9
+ * --download-sections, then copy to outputs/
10
+ * 3. Full video — download full video with yt-dlp, then cut clips with ffmpeg
11
+ *
12
+ * @returns Array of absolute paths to the generated clip files.
13
+ */
14
+ export declare function exportClips(videoId: string, segments: RankedSegment[], opts: ClipExporterOpts): Promise<string[]>;
15
+ //# sourceMappingURL=clipExporter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipExporter.d.ts","sourceRoot":"","sources":["../../../src/pipeline/stages/clipExporter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE5E,YAAY,EAAE,gBAAgB,EAAE,CAAC;AAEjC;;;;;;;;;;GAUG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,aAAa,EAAE,EACzB,IAAI,EAAE,gBAAgB,GACrB,OAAO,CAAC,MAAM,EAAE,CAAC,CAoDnB"}
@@ -38,3 +38,4 @@ export async function exportClips(videoId, segments, opts) {
38
38
  }
39
39
  return generateClips(downloadResult.path, segments, videoId, opts.videoPath, config.CLIP_CONCURRENCY);
40
40
  }
41
+ //# sourceMappingURL=clipExporter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clipExporter.js","sourceRoot":"","sources":["../../../src/pipeline/stages/clipExporter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,yCAAyC,CAAC;AACxE,OAAO,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,uCAAuC,CAAC;AACrF,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAK/C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,OAAe,EACf,QAAyB,EACzB,IAAsB;IAEtB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,GAAG,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAClD,OAAO,aAAa,CAClB,IAAI,CAAC,UAAU,EACf,QAAQ,EACR,OAAO,EACP,IAAI,CAAC,SAAS,EACd,MAAM,CAAC,gBAAgB,CACxB,CAAC;IACJ,CAAC;IAED,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,IAAI,MAAM,CAAC,sBAAsB,CAAC;IAEhF,IAAI,OAAO,gBAAgB,KAAK,QAAQ,EAAE,CAAC;QACzC,MAAM,kBAAkB,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAE/D,IAAI,kBAAkB,CAAC,MAAM,GAAG,gBAAgB,EAAE,CAAC;YACjD,GAAG,CAAC,IAAI,CACN,aAAa,gBAAgB,uBAAuB,kBAAkB,CAAC,MAAM,iCAAiC,CAC/G,CAAC;QACJ,CAAC;QAED,GAAG,CAAC,IAAI,CAAC,eAAe,kBAAkB,CAAC,MAAM,6CAA6C,CAAC,CAAC;QAChG,MAAM,cAAc,GAAG,MAAM,aAAa,CACxC,OAAO,EACP,UAAU,EACV,kBAAkB,EAClB,IAAI,CAAC,SAAS,CACf,CAAC;QAEF,IAAI,cAAc,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;QAClF,CAAC;QAED,OAAO,aAAa,CAAC,cAAc,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC/F,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;IACjD,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IAE/E,IAAI,cAAc,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAClC,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAC;IAClF,CAAC;IAED,OAAO,aAAa,CAClB,cAAc,CAAC,IAAI,EACnB,QAAQ,EACR,OAAO,EACP,IAAI,CAAC,SAAS,EACd,MAAM,CAAC,gBAAgB,CACxB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,27 @@
1
+ import type { Cache } from '../../utils/cache.js';
2
+ import type { AudioEvent, MicroBlock, RankedSegment, SegmentAnalyzerOpts, SegmentAnalyzerResult } from '../../types/index.js';
3
+ export type { SegmentAnalyzerOpts, SegmentAnalyzerResult };
4
+ /**
5
+ * Stage 4a — Segment Analyzer (LLM pass 1)
6
+ *
7
+ * Builds a TranscriptDetector from config.TRANSCRIPT_PROVIDER and an
8
+ * LLMAnalyzer that owns it. Fetches the transcript (cache-first) and runs
9
+ * LLM chunk analysis informed by pre-computed audio events.
10
+ *
11
+ * Returns raw ChunkEvaluation results plus transcript data (lines, microBlocks,
12
+ * chunks) so the runner has everything it needs for ranking.
13
+ *
14
+ * NOTE: `processTranscript` no longer needs to run as a separate stage before
15
+ * this function — `LLMAnalyzer.analyze()` handles transcript fetching internally.
16
+ */
17
+ export declare function analyzeSegments(videoId: string, audioPath: string | null, audioEvents: AudioEvent[], cache: Cache, opts: SegmentAnalyzerOpts): Promise<SegmentAnalyzerResult>;
18
+ /**
19
+ * Stage 4b — Segment Refiner (LLM pass 2)
20
+ *
21
+ * Calls refineSegments() directly — no TranscriptDetector needed here since
22
+ * refinement only tightens clip boundaries and never touches the transcript.
23
+ * Separated from `analyzeSegments` because ranking (stage 5) must happen
24
+ * between the two passes.
25
+ */
26
+ export declare function refineRankedSegments(rankedSegments: RankedSegment[], microBlocks: MicroBlock[], _cache: Cache, opts: Pick<SegmentAnalyzerOpts, 'maxParallel' | 'noCache'>): Promise<RankedSegment[]>;
27
+ //# sourceMappingURL=segmentAnalyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"segmentAnalyzer.d.ts","sourceRoot":"","sources":["../../../src/pipeline/stages/segmentAnalyzer.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,KAAK,EACV,UAAU,EACV,UAAU,EACV,aAAa,EACb,mBAAmB,EACnB,qBAAqB,EACtB,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,CAAC;AAE3D;;;;;;;;;;;;GAYG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,MAAM,GAAG,IAAI,EACxB,WAAW,EAAE,UAAU,EAAE,EACzB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,mBAAmB,GACxB,OAAO,CAAC,qBAAqB,CAAC,CAiBhC;AAED;;;;;;;GAOG;AACH,wBAAsB,oBAAoB,CACxC,cAAc,EAAE,aAAa,EAAE,EAC/B,WAAW,EAAE,UAAU,EAAE,EACzB,MAAM,EAAE,KAAK,EACb,IAAI,EAAE,IAAI,CAAC,mBAAmB,EAAE,aAAa,GAAG,SAAS,CAAC,GACzD,OAAO,CAAC,aAAa,EAAE,CAAC,CAG1B"}
@@ -44,3 +44,4 @@ export async function refineRankedSegments(rankedSegments, microBlocks, _cache,
44
44
  log.info('Refining clip boundaries...');
45
45
  return refineSegments(rankedSegments, microBlocks, opts.maxParallel, opts.noCache);
46
46
  }
47
+ //# sourceMappingURL=segmentAnalyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"segmentAnalyzer.js","sourceRoot":"","sources":["../../../src/pipeline/stages/segmentAnalyzer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2CAA2C,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,4CAA4C,CAAC;AAChF,OAAO,EAAE,qBAAqB,EAAE,MAAM,6CAA6C,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAC;AACrE,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAY/C;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,OAAe,EACf,SAAwB,EACxB,WAAyB,EACzB,KAAY,EACZ,IAAyB;IAEzB,GAAG,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;IAE1D,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAChE,MAAM,kBAAkB,GAAG,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;IACzD,MAAM,QAAQ,GAAG,IAAI,WAAW,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IAE5D,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC;QACxE,OAAO;QACP,SAAS;QACT,WAAW;QACX,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,OAAO,EAAE,IAAI,CAAC,OAAO;KACtB,CAAC,CAAC;IAEH,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AACpD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,cAA+B,EAC/B,WAAyB,EACzB,MAAa,EACb,IAA0D;IAE1D,GAAG,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC;IACxC,OAAO,cAAc,CAAC,cAAc,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;AACrF,CAAC"}
@@ -0,0 +1,13 @@
1
+ import type { ChunkEvaluation, AudioEvent, RankedSegment, SegmentSelectorOpts } from '../../types/index.js';
2
+ export type { SegmentSelectorOpts };
3
+ /**
4
+ * Stage 5 — Segment Selector
5
+ *
6
+ * Merges transcript LLM evaluations with audio events (if any), then ranks
7
+ * and deduplicates candidates to produce the final ordered list of segments.
8
+ *
9
+ * This stage sits between the two LLM passes: it runs after `analyzeSegments`
10
+ * (pass 1) and its output feeds `refineRankedSegments` (pass 2).
11
+ */
12
+ export declare function selectSegments(chunkEvals: ChunkEvaluation[], audioEvents: AudioEvent[], opts: SegmentSelectorOpts): RankedSegment[];
13
+ //# sourceMappingURL=segmentSelector.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"segmentSelector.d.ts","sourceRoot":"","sources":["../../../src/pipeline/stages/segmentSelector.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,eAAe,EACf,UAAU,EACV,aAAa,EACb,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAE9B,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAEpC;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,UAAU,EAAE,eAAe,EAAE,EAC7B,WAAW,EAAE,UAAU,EAAE,EACzB,IAAI,EAAE,mBAAmB,GACxB,aAAa,EAAE,CAajB"}
@@ -21,3 +21,4 @@ export function selectSegments(chunkEvals, audioEvents, opts) {
21
21
  }
22
22
  return ranked;
23
23
  }
24
+ //# sourceMappingURL=segmentSelector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"segmentSelector.js","sourceRoot":"","sources":["../../../src/pipeline/stages/segmentSelector.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sCAAsC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,uCAAuC,CAAC;AACrE,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAU5C;;;;;;;;GAQG;AACH,MAAM,UAAU,cAAc,CAC5B,UAA6B,EAC7B,WAAyB,EACzB,IAAyB;IAEzB,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU,EAAE,WAAW,CAAC,CAAC;IACrD,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;IAE/D,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,GAAG,CAAC,IAAI,CAAC,sCAAsC,IAAI,CAAC,SAAS,6BAA6B,CAAC,CAAC;IAC9F,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,IAAI,CACN,sBAAsB,MAAM,CAAC,MAAM,WAAW,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,oBAAoB,IAAI,CAAC,SAAS,EAAE,CACjH,CAAC;IACJ,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { VideoResolverResult } from '../../types/index.js';
2
+ export type { VideoResolverResult };
3
+ /**
4
+ * Stage 1 — Video Resolver
5
+ *
6
+ * Parses a raw YouTube URL into a validated video ID, fetches metadata
7
+ * (title + duration), and enforces the optional --max-duration guard.
8
+ *
9
+ * @throws {Error} on invalid URL, metadata fetch failure, or exceeded duration
10
+ */
11
+ export declare function resolveVideo(rawUrl: string, maxDurationSec?: number): Promise<VideoResolverResult>;
12
+ //# sourceMappingURL=videoResolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"videoResolver.d.ts","sourceRoot":"","sources":["../../../src/pipeline/stages/videoResolver.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEhE,YAAY,EAAE,mBAAmB,EAAE,CAAC;AAEpC;;;;;;;GAOG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,mBAAmB,CAAC,CAwB9B"}
@@ -29,3 +29,4 @@ export async function resolveVideo(rawUrl, maxDurationSec) {
29
29
  }
30
30
  return { videoId, metadata };
31
31
  }
32
+ //# sourceMappingURL=videoResolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"videoResolver.js","sourceRoot":"","sources":["../../../src/pipeline/stages/videoResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mCAAmC,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,MAAM,2CAA2C,CAAC;AAC5E,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAKtD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,MAAc,EACd,cAAuB;IAEvB,IAAI,OAAe,CAAC;IACpB,IAAI,CAAC;QACH,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CAAC,wBAAwB,MAAM,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,GAAG,CAAC,IAAI,CAAC,yBAAyB,OAAO,KAAK,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,MAAM,eAAe,CAAC,OAAO,CAAC,CAAC;IAChD,GAAG,CAAC,IAAI,CACN,WAAW,QAAQ,CAAC,KAAK,MAAM,QAAQ,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,kBAAkB,GAAG,CAChH,CAAC;IAEF,IAAI,cAAc,KAAK,SAAS,IAAI,QAAQ,CAAC,QAAQ,GAAG,CAAC,EAAE,CAAC;QAC1D,IAAI,QAAQ,CAAC,QAAQ,GAAG,cAAc,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CACb,+CAA+C;gBAC7C,IAAI,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,aAAa,CAAC,cAAc,CAAC,GAAG,CAC7E,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,26 @@
1
+ import type { AudioEvent } from '../../types/index.js';
2
+ /**
3
+ * Contract every audio analyzer implementation must satisfy.
4
+ *
5
+ * Each concrete analyzer (Gemini, Whisper, YAMNet) extends this class and
6
+ * implements `detect()`. The `source` property is used to tag the events they
7
+ * return so downstream code knows which backend produced them.
8
+ *
9
+ * Usage:
10
+ * const analyzer = new GeminiAudioAnalyzer();
11
+ * const events = await analyzer.detect(audioPath, gameProfile, offsetSec, durationSec);
12
+ */
13
+ export declare abstract class AudioAnalyzer {
14
+ abstract readonly source: AudioEvent['source'];
15
+ /**
16
+ * Detect audio events in the given WAV slice.
17
+ *
18
+ * @param audioPath - Path to the WAV audio slice on disk
19
+ * @param gameProfile - Profile key used to tune detection prompts/classes
20
+ * @param chunkOffsetSec - Absolute start time of this slice within the full video (seconds)
21
+ * @param chunkDurationSec - Duration of this slice in seconds
22
+ * @returns Array of detected events with absolute timestamps
23
+ */
24
+ abstract detect(audioPath: string, gameProfile: string, chunkOffsetSec: number, chunkDurationSec: number): Promise<AudioEvent[]>;
25
+ }
26
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../src/services/audioAnalyzers/base.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEvD;;;;;;;;;;GAUG;AACH,8BAAsB,aAAa;IACjC,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;IAE/C;;;;;;;;OAQG;IACH,QAAQ,CAAC,MAAM,CACb,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,UAAU,EAAE,CAAC;CACzB"}
@@ -11,3 +11,4 @@
11
11
  */
12
12
  export class AudioAnalyzer {
13
13
  }
14
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/services/audioAnalyzers/base.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;GAUG;AACH,MAAM,OAAgB,aAAa;CAkBlC"}
@@ -0,0 +1,23 @@
1
+ import { AudioAnalyzer } from './base.js';
2
+ import type { AudioProviderName } from '../../types/index.js';
3
+ /**
4
+ * Parses the AUDIO_PROVIDER config string into an ordered list of provider names.
5
+ *
6
+ * Accepts a comma-separated list: "gemini,whisper" → ['gemini', 'whisper']
7
+ * Single values still work: "yamnet" → ['yamnet']
8
+ *
9
+ * Backward-compat: "both" is mapped to ['gemini', 'whisper'] with a deprecation warning.
10
+ */
11
+ export declare function parseProviderChain(providerString: string): AudioProviderName[];
12
+ /**
13
+ * Builds an ordered array of AudioAnalyzer instances from a provider chain string.
14
+ *
15
+ * The EventDetector will walk this array in order — if the first analyzer fails,
16
+ * it falls back to the next, and so on.
17
+ *
18
+ * @example
19
+ * // AUDIO_PROVIDER=gemini,whisper → [GeminiAudioAnalyzer, WhisperAudioAnalyzer]
20
+ * const chain = createAnalyzerChain(config.AUDIO_PROVIDER);
21
+ */
22
+ export declare function createAnalyzerChain(providerString: string): AudioAnalyzer[];
23
+ //# sourceMappingURL=factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../../src/services/audioAnalyzers/factory.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAI1C,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAI9D;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,cAAc,EAAE,MAAM,GAAG,iBAAiB,EAAE,CA0B9E;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,cAAc,EAAE,MAAM,GAAG,aAAa,EAAE,CAa3E"}
@@ -53,3 +53,4 @@ export function createAnalyzerChain(providerString) {
53
53
  }
54
54
  });
55
55
  }
56
+ //# sourceMappingURL=factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../../src/services/audioAnalyzers/factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,uBAAuB,CAAC;AAE5C,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAGlD,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,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,CAAC,cAAsB;IACxD,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,EAAE,CAAC;YACnC,KAAK,SAAS;gBACZ,OAAO,IAAI,oBAAoB,EAAE,CAAC;YACpC,KAAK,QAAQ;gBACX,OAAO,IAAI,mBAAmB,EAAE,CAAC;QACrC,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { AudioEvent } from '../../types/index.js';
2
+ import { AudioAnalyzer } from './base.js';
3
+ /**
4
+ * Resolves a Gemini `time_sec` value to true decimal seconds.
5
+ *
6
+ * Gemini inconsistently returns either MM.SS notation (e.g. 1.03 meaning 63s)
7
+ * or true decimal seconds (e.g. 53.403). This function disambiguates using
8
+ * the known chunk duration:
9
+ *
10
+ * 1. If the fractional part > 0.59, it cannot be a seconds component (seconds
11
+ * only go 0-59), so it must be true decimal seconds — use as-is.
12
+ * 2. Otherwise, check if the MM.SS conversion produces a value within the
13
+ * valid chunk range [0, chunkDurationSec). If yes, treat as MM.SS.
14
+ * 3. Fallback: use the value as true decimal seconds (the format we asked for).
15
+ *
16
+ * YAMNet always returns true decimal seconds and does NOT use this function.
17
+ */
18
+ export declare function normalizeGeminiTime(value: number, chunkDurationSec: number): number;
19
+ /**
20
+ * Uses Google Gemini's multimodal API to detect audio events in a WAV slice.
21
+ * Understands game context semantically — best accuracy for gaming content.
22
+ *
23
+ * Requires GOOGLE_GENERATIVE_AI_API_KEY to be set.
24
+ */
25
+ export declare class GeminiAudioAnalyzer extends AudioAnalyzer {
26
+ readonly source: "gemini";
27
+ detect(audioPath: string, gameProfile: string, chunkOffsetSec: number, chunkDurationSec: number): Promise<AudioEvent[]>;
28
+ }
29
+ //# sourceMappingURL=gemini.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../src/services/audioAnalyzers/gemini.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAoC1C;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,MAAM,GAAG,MAAM,CAanF;AAED;;;;;GAKG;AACH,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,QAAQ,CAAC,MAAM,EAAG,QAAQ,CAAU;IAE9B,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,UAAU,EAAE,CAAC;CAiDzB"}
@@ -106,3 +106,4 @@ Return ONLY a JSON array, no explanation. Format:
106
106
  }));
107
107
  }
108
108
  }
109
+ //# sourceMappingURL=gemini.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../src/services/audioAnalyzers/gemini.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export { AudioAnalyzer } from './base.js';
2
+ export { GeminiAudioAnalyzer, normalizeGeminiTime } from './gemini.js';
3
+ export { WhisperAudioAnalyzer, getPythonBin } from './whisper.js';
4
+ export { YAMNetAudioAnalyzer } from './yamnet.js';
5
+ export { createAnalyzerChain, parseProviderChain } from './factory.js';
6
+ export type { AudioProviderName } from '../../types/index.js';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/audioAnalyzers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC"}
@@ -3,3 +3,4 @@ export { GeminiAudioAnalyzer, normalizeGeminiTime } from './gemini.js';
3
3
  export { WhisperAudioAnalyzer, getPythonBin } from './whisper.js';
4
4
  export { YAMNetAudioAnalyzer } from './yamnet.js';
5
5
  export { createAnalyzerChain, parseProviderChain } from './factory.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/services/audioAnalyzers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AACvE,OAAO,EAAE,oBAAoB,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAClE,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,14 @@
1
+ import type { AudioEvent } from '../../types/index.js';
2
+ import { AudioAnalyzer } from './base.js';
3
+ export declare function getPythonBin(): Promise<string>;
4
+ /**
5
+ * Uses OpenAI Whisper (local) to transcribe the audio chunk and scan the
6
+ * resulting transcript for hype keywords per game profile.
7
+ *
8
+ * Requires: pip install openai-whisper
9
+ */
10
+ export declare class WhisperAudioAnalyzer extends AudioAnalyzer {
11
+ readonly source: "whisper";
12
+ detect(audioPath: string, gameProfile: string, chunkOffsetSec: number, _chunkDurationSec: number): Promise<AudioEvent[]>;
13
+ }
14
+ //# sourceMappingURL=whisper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whisper.d.ts","sourceRoot":"","sources":["../../../src/services/audioAnalyzers/whisper.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAS1C,wBAAsB,YAAY,IAAI,OAAO,CAAC,MAAM,CAAC,CAgBpD;AAED;;;;;GAKG;AACH,qBAAa,oBAAqB,SAAQ,aAAa;IACrD,QAAQ,CAAC,MAAM,EAAG,SAAS,CAAU;IAE/B,MAAM,CACV,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,EACnB,cAAc,EAAE,MAAM,EACtB,iBAAiB,EAAE,MAAM,GACxB,OAAO,CAAC,UAAU,EAAE,CAAC;CAmCzB"}