@thunderkiller/video-clipper 1.8.0 → 1.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (428) hide show
  1. package/dist/app/cli/args.d.ts.map +1 -1
  2. package/dist/app/cli/args.js +13 -13
  3. package/dist/app/cli/args.js.map +1 -1
  4. package/dist/app/cli/index.js +10 -9
  5. package/dist/app/cli/index.js.map +1 -1
  6. package/dist/app/cli/pipeline/dumper.d.ts.map +1 -1
  7. package/dist/app/cli/pipeline/dumper.js +4 -4
  8. package/dist/app/cli/pipeline/dumper.js.map +1 -1
  9. package/dist/app/cli/pipeline/runner.d.ts +1 -1
  10. package/dist/app/cli/pipeline/runner.d.ts.map +1 -1
  11. package/dist/app/cli/pipeline/runner.js +16 -15
  12. package/dist/app/cli/pipeline/runner.js.map +1 -1
  13. package/dist/app/cli/pipeline/stages/audioProcessor.d.ts +2 -15
  14. package/dist/app/cli/pipeline/stages/audioProcessor.d.ts.map +1 -1
  15. package/dist/app/cli/pipeline/stages/audioProcessor.js +7 -7
  16. package/dist/app/cli/pipeline/stages/audioProcessor.js.map +1 -1
  17. package/dist/app/cli/pipeline/stages/videoResolver.d.ts.map +1 -1
  18. package/dist/app/cli/pipeline/stages/videoResolver.js +2 -2
  19. package/dist/app/cli/pipeline/stages/videoResolver.js.map +1 -1
  20. package/dist/app/web/lib/activity/analysisActivity.d.ts +3 -5
  21. package/dist/app/web/lib/activity/analysisActivity.d.ts.map +1 -1
  22. package/dist/app/web/lib/activity/analysisActivity.js.map +1 -1
  23. package/dist/app/web/lib/analysisStream.d.ts +3 -11
  24. package/dist/app/web/lib/analysisStream.d.ts.map +1 -1
  25. package/dist/app/web/lib/analysisStream.js +26 -3
  26. package/dist/app/web/lib/analysisStream.js.map +1 -1
  27. package/dist/app/web/lib/captionTemplates.d.ts +3 -0
  28. package/dist/app/web/lib/captionTemplates.d.ts.map +1 -0
  29. package/dist/app/web/lib/captionTemplates.js +98 -0
  30. package/dist/app/web/lib/captionTemplates.js.map +1 -0
  31. package/dist/app/web/lib/format.d.ts +2 -0
  32. package/dist/app/web/lib/format.d.ts.map +1 -1
  33. package/dist/app/web/lib/format.js +20 -0
  34. package/dist/app/web/lib/format.js.map +1 -1
  35. package/dist/app/web/lib/services/analysis/analysisService.d.ts +1 -1
  36. package/dist/app/web/lib/services/analysis/analysisService.d.ts.map +1 -1
  37. package/dist/app/web/lib/services/analysis/analysisService.js +5 -4
  38. package/dist/app/web/lib/services/analysis/analysisService.js.map +1 -1
  39. package/dist/app/web/lib/services/analysis/streamEvents.d.ts +2 -1
  40. package/dist/app/web/lib/services/analysis/streamEvents.d.ts.map +1 -1
  41. package/dist/app/web/lib/services/analysis/streamEvents.js +1 -1
  42. package/dist/app/web/lib/services/analysis/streamEvents.js.map +1 -1
  43. package/dist/app/web/lib/services/analysis/transcriptService.d.ts.map +1 -1
  44. package/dist/app/web/lib/services/analysis/transcriptService.js +1 -2
  45. package/dist/app/web/lib/services/analysis/transcriptService.js.map +1 -1
  46. package/dist/app/web/lib/services/artifacts/artifactStore.d.ts +9 -0
  47. package/dist/app/web/lib/services/artifacts/artifactStore.d.ts.map +1 -1
  48. package/dist/app/web/lib/services/artifacts/artifactStore.js +45 -0
  49. package/dist/app/web/lib/services/artifacts/artifactStore.js.map +1 -1
  50. package/dist/app/web/lib/services/clipping/clipEditService.d.ts +12 -0
  51. package/dist/app/web/lib/services/clipping/clipEditService.d.ts.map +1 -0
  52. package/dist/app/web/lib/services/clipping/clipEditService.js +73 -0
  53. package/dist/app/web/lib/services/clipping/clipEditService.js.map +1 -0
  54. package/dist/app/web/lib/services/clipping/clipService.d.ts.map +1 -1
  55. package/dist/app/web/lib/services/clipping/clipService.js +27 -5
  56. package/dist/app/web/lib/services/clipping/clipService.js.map +1 -1
  57. package/dist/app/web/lib/services/config/webConfig.d.ts +2 -8
  58. package/dist/app/web/lib/services/config/webConfig.d.ts.map +1 -1
  59. package/dist/app/web/lib/services/config/webConfig.js.map +1 -1
  60. package/dist/app/web/lib/services/publishing/draftService.d.ts +1 -0
  61. package/dist/app/web/lib/services/publishing/draftService.d.ts.map +1 -1
  62. package/dist/app/web/lib/services/publishing/draftService.js +60 -9
  63. package/dist/app/web/lib/services/publishing/draftService.js.map +1 -1
  64. package/dist/app/web/lib/services/publishing/metadataCache.d.ts +1 -9
  65. package/dist/app/web/lib/services/publishing/metadataCache.d.ts.map +1 -1
  66. package/dist/app/web/lib/services/publishing/metadataCache.js +3 -9
  67. package/dist/app/web/lib/services/publishing/metadataCache.js.map +1 -1
  68. package/dist/app/web/lib/services/publishing/metadataService.d.ts.map +1 -1
  69. package/dist/app/web/lib/services/publishing/metadataService.js +10 -16
  70. package/dist/app/web/lib/services/publishing/metadataService.js.map +1 -1
  71. package/dist/app/web/lib/services/publishing/uploadService.d.ts +3 -6
  72. package/dist/app/web/lib/services/publishing/uploadService.d.ts.map +1 -1
  73. package/dist/app/web/lib/services/publishing/uploadService.js +107 -27
  74. package/dist/app/web/lib/services/publishing/uploadService.js.map +1 -1
  75. package/dist/app/web/lib/services/publishing/uploadStreamEvents.d.ts +2 -1
  76. package/dist/app/web/lib/services/publishing/uploadStreamEvents.d.ts.map +1 -1
  77. package/dist/app/web/lib/services/publishing/uploadStreamEvents.js +1 -1
  78. package/dist/app/web/lib/services/publishing/uploadStreamEvents.js.map +1 -1
  79. package/dist/app/web/lib/services/subtitles/subtitlePlanService.d.ts +5 -0
  80. package/dist/app/web/lib/services/subtitles/subtitlePlanService.d.ts.map +1 -0
  81. package/dist/app/web/lib/services/subtitles/subtitlePlanService.js +113 -0
  82. package/dist/app/web/lib/services/subtitles/subtitlePlanService.js.map +1 -0
  83. package/dist/app/web/lib/services/youtube/catalogFactory.d.ts +1 -1
  84. package/dist/app/web/lib/services/youtube/catalogFactory.d.ts.map +1 -1
  85. package/dist/app/web/lib/services/youtube/uploadAuth.d.ts +1 -6
  86. package/dist/app/web/lib/services/youtube/uploadAuth.d.ts.map +1 -1
  87. package/dist/app/web/lib/services/youtube/uploadAuth.js +34 -7
  88. package/dist/app/web/lib/services/youtube/uploadAuth.js.map +1 -1
  89. package/dist/app/web/lib/{configStore.d.ts → stores/config.d.ts} +2 -2
  90. package/dist/app/web/lib/stores/config.d.ts.map +1 -0
  91. package/dist/app/web/lib/{configStore.js → stores/config.js} +3 -3
  92. package/dist/app/web/lib/stores/config.js.map +1 -0
  93. package/dist/app/web/lib/stores/theme.d.ts +2 -0
  94. package/dist/app/web/lib/stores/theme.d.ts.map +1 -0
  95. package/dist/app/web/lib/stores/theme.js +12 -0
  96. package/dist/app/web/lib/stores/theme.js.map +1 -0
  97. package/dist/app/web/lib/{toastStore.d.ts → stores/toast.d.ts} +3 -6
  98. package/dist/app/web/lib/stores/toast.d.ts.map +1 -0
  99. package/dist/app/web/lib/{toastStore.js → stores/toast.js} +1 -1
  100. package/dist/app/web/lib/{toastStore.js.map → stores/toast.js.map} +1 -1
  101. package/dist/app/web/lib/stores/video.d.ts +12 -0
  102. package/dist/app/web/lib/stores/video.d.ts.map +1 -0
  103. package/dist/app/web/lib/stores/video.js +65 -0
  104. package/dist/app/web/lib/stores/video.js.map +1 -0
  105. package/dist/app/web/lib/subtitleTiming.d.ts +5 -0
  106. package/dist/app/web/lib/subtitleTiming.d.ts.map +1 -0
  107. package/dist/app/web/lib/subtitleTiming.js +45 -0
  108. package/dist/app/web/lib/subtitleTiming.js.map +1 -0
  109. package/dist/app/web/lib/uploadStream.d.ts +4 -17
  110. package/dist/app/web/lib/uploadStream.d.ts.map +1 -1
  111. package/dist/app/web/lib/uploadStream.js.map +1 -1
  112. package/dist/app/web/lib/videoWorkflow.d.ts +2 -8
  113. package/dist/app/web/lib/videoWorkflow.d.ts.map +1 -1
  114. package/dist/app/web/lib/videoWorkflow.js.map +1 -1
  115. package/dist/app/web/routes/api/analysis/transcript/+server.d.ts.map +1 -1
  116. package/dist/app/web/routes/api/analysis/transcript/+server.js +32 -6
  117. package/dist/app/web/routes/api/analysis/transcript/+server.js.map +1 -1
  118. package/dist/app/web/routes/api/cache/videos/[videoId]/analysis/+server.d.ts +3 -0
  119. package/dist/app/web/routes/api/cache/videos/[videoId]/analysis/+server.d.ts.map +1 -0
  120. package/dist/app/web/routes/api/cache/videos/[videoId]/analysis/+server.js +21 -0
  121. package/dist/app/web/routes/api/cache/videos/[videoId]/analysis/+server.js.map +1 -0
  122. package/dist/app/web/routes/api/cache/videos/[videoId]/transcript/+server.d.ts +3 -0
  123. package/dist/app/web/routes/api/cache/videos/[videoId]/transcript/+server.d.ts.map +1 -0
  124. package/dist/app/web/routes/api/cache/videos/[videoId]/transcript/+server.js +21 -0
  125. package/dist/app/web/routes/api/cache/videos/[videoId]/transcript/+server.js.map +1 -0
  126. package/dist/app/web/routes/api/clips/+server.d.ts.map +1 -1
  127. package/dist/app/web/routes/api/clips/+server.js +9 -2
  128. package/dist/app/web/routes/api/clips/+server.js.map +1 -1
  129. package/dist/app/web/routes/api/clips/[clipId]/edits/+server.d.ts +4 -0
  130. package/dist/app/web/routes/api/clips/[clipId]/edits/+server.d.ts.map +1 -0
  131. package/dist/app/web/routes/api/clips/[clipId]/edits/+server.js +61 -0
  132. package/dist/app/web/routes/api/clips/[clipId]/edits/+server.js.map +1 -0
  133. package/dist/app/web/routes/api/clips/[clipId]/file/+server.d.ts +3 -0
  134. package/dist/app/web/routes/api/clips/[clipId]/file/+server.d.ts.map +1 -0
  135. package/dist/app/web/routes/api/clips/[clipId]/file/+server.js +99 -0
  136. package/dist/app/web/routes/api/clips/[clipId]/file/+server.js.map +1 -0
  137. package/dist/app/web/routes/api/clips/[clipId]/render/+server.d.ts +3 -0
  138. package/dist/app/web/routes/api/clips/[clipId]/render/+server.d.ts.map +1 -0
  139. package/dist/app/web/routes/api/clips/[clipId]/render/+server.js +31 -0
  140. package/dist/app/web/routes/api/clips/[clipId]/render/+server.js.map +1 -0
  141. package/dist/app/web/routes/api/clips/[clipId]/subtitles/plan/+server.d.ts +3 -0
  142. package/dist/app/web/routes/api/clips/[clipId]/subtitles/plan/+server.d.ts.map +1 -0
  143. package/dist/app/web/routes/api/clips/[clipId]/subtitles/plan/+server.js +25 -0
  144. package/dist/app/web/routes/api/clips/[clipId]/subtitles/plan/+server.js.map +1 -0
  145. package/dist/app/web/routes/api/config/+server.d.ts.map +1 -1
  146. package/dist/app/web/routes/api/config/+server.js +1 -1
  147. package/dist/app/web/routes/api/config/+server.js.map +1 -1
  148. package/dist/app/web/routes/api/library/analyses/[analysisId]/+server.d.ts.map +1 -1
  149. package/dist/app/web/routes/api/library/analyses/[analysisId]/+server.js +1 -4
  150. package/dist/app/web/routes/api/library/analyses/[analysisId]/+server.js.map +1 -1
  151. package/dist/app/web/routes/api/library/clips/+server.d.ts.map +1 -1
  152. package/dist/app/web/routes/api/library/clips/+server.js +1 -4
  153. package/dist/app/web/routes/api/library/clips/+server.js.map +1 -1
  154. package/dist/app/web/routes/api/publish/drafts/[analysisId]/+server.d.ts.map +1 -1
  155. package/dist/app/web/routes/api/publish/drafts/[analysisId]/+server.js +3 -9
  156. package/dist/app/web/routes/api/publish/drafts/[analysisId]/+server.js.map +1 -1
  157. package/dist/app/web/routes/api/publish/drafts/generate/+server.d.ts.map +1 -1
  158. package/dist/app/web/routes/api/publish/drafts/generate/+server.js +6 -2
  159. package/dist/app/web/routes/api/publish/drafts/generate/+server.js.map +1 -1
  160. package/dist/app/web/routes/api/publish/thumbnails/+server.d.ts.map +1 -1
  161. package/dist/app/web/routes/api/publish/thumbnails/+server.js +5 -1
  162. package/dist/app/web/routes/api/publish/thumbnails/+server.js.map +1 -1
  163. package/dist/app/web/routes/api/youtube/channels/[channelId]/videos/+server.d.ts.map +1 -1
  164. package/dist/app/web/routes/api/youtube/channels/[channelId]/videos/+server.js +1 -5
  165. package/dist/app/web/routes/api/youtube/channels/[channelId]/videos/+server.js.map +1 -1
  166. package/dist/app/web/routes/api/youtube/channels/resolve/+server.d.ts.map +1 -1
  167. package/dist/app/web/routes/api/youtube/channels/resolve/+server.js +1 -4
  168. package/dist/app/web/routes/api/youtube/channels/resolve/+server.js.map +1 -1
  169. package/dist/app/web/routes/api/youtube/uploads/+server.d.ts.map +1 -1
  170. package/dist/app/web/routes/api/youtube/uploads/+server.js +12 -6
  171. package/dist/app/web/routes/api/youtube/uploads/+server.js.map +1 -1
  172. package/dist/app/web/routes/api/youtube/videos/[videoId]/+server.d.ts.map +1 -1
  173. package/dist/app/web/routes/api/youtube/videos/[videoId]/+server.js +1 -4
  174. package/dist/app/web/routes/api/youtube/videos/[videoId]/+server.js.map +1 -1
  175. package/dist/app/web/routes/api/youtube/videos/[videoId]/transcript/+server.d.ts.map +1 -1
  176. package/dist/app/web/routes/api/youtube/videos/[videoId]/transcript/+server.js +1 -4
  177. package/dist/app/web/routes/api/youtube/videos/[videoId]/transcript/+server.js.map +1 -1
  178. package/dist/app/web/types/activity.d.ts +4 -0
  179. package/dist/app/web/types/activity.d.ts.map +1 -1
  180. package/dist/app/web/types/analysis.d.ts +36 -0
  181. package/dist/app/web/types/analysis.d.ts.map +1 -1
  182. package/dist/app/web/types/analysis.js +17 -0
  183. package/dist/app/web/types/analysis.js.map +1 -1
  184. package/dist/app/web/types/componentProps.d.ts +383 -0
  185. package/dist/app/web/types/componentProps.d.ts.map +1 -0
  186. package/dist/app/web/types/componentProps.js +2 -0
  187. package/dist/app/web/types/componentProps.js.map +1 -0
  188. package/dist/app/web/types/publish.d.ts +40 -3
  189. package/dist/app/web/types/publish.d.ts.map +1 -1
  190. package/dist/app/web/types/publish.js +21 -0
  191. package/dist/app/web/types/publish.js.map +1 -1
  192. package/dist/app/web/types/subtitlePlan.d.ts +46 -0
  193. package/dist/app/web/types/subtitlePlan.d.ts.map +1 -0
  194. package/dist/app/web/types/subtitlePlan.js +20 -0
  195. package/dist/app/web/types/subtitlePlan.js.map +1 -0
  196. package/dist/app/web/types/upload.d.ts +23 -0
  197. package/dist/app/web/types/upload.d.ts.map +1 -0
  198. package/dist/app/web/types/upload.js +2 -0
  199. package/dist/app/web/types/upload.js.map +1 -0
  200. package/dist/app/web/types/videoStore.d.ts +13 -0
  201. package/dist/app/web/types/videoStore.d.ts.map +1 -0
  202. package/dist/app/web/types/videoStore.js +2 -0
  203. package/dist/app/web/types/videoStore.js.map +1 -0
  204. package/dist/app/web/types/web.d.ts +38 -0
  205. package/dist/app/web/types/web.d.ts.map +1 -1
  206. package/dist/app/web/types/web.js +1 -0
  207. package/dist/app/web/types/web.js.map +1 -1
  208. package/dist/app/web/types/workflow.d.ts +9 -0
  209. package/dist/app/web/types/workflow.d.ts.map +1 -0
  210. package/dist/app/web/types/workflow.js +2 -0
  211. package/dist/app/web/types/workflow.js.map +1 -0
  212. package/dist/app/web/types/youtube.d.ts +15 -0
  213. package/dist/app/web/types/youtube.d.ts.map +1 -0
  214. package/dist/app/web/types/youtube.js +12 -0
  215. package/dist/app/web/types/youtube.js.map +1 -0
  216. package/dist/app/web/widgets/settings/groupConfig.d.ts +4 -0
  217. package/dist/app/web/widgets/settings/groupConfig.d.ts.map +1 -0
  218. package/dist/app/web/widgets/settings/groupConfig.js +219 -0
  219. package/dist/app/web/widgets/settings/groupConfig.js.map +1 -0
  220. package/dist/hooks.server.js +1 -1
  221. package/dist/hooks.server.js.map +1 -1
  222. package/dist/lib/config/env.d.ts +1 -5
  223. package/dist/lib/config/env.d.ts.map +1 -1
  224. package/dist/lib/config/env.js +1 -1
  225. package/dist/lib/config/env.js.map +1 -1
  226. package/dist/lib/config/index.d.ts +1 -1
  227. package/dist/lib/config/index.d.ts.map +1 -1
  228. package/dist/lib/config/registry.d.ts +2 -23
  229. package/dist/lib/config/registry.d.ts.map +1 -1
  230. package/dist/lib/config/registry.js +1 -1
  231. package/dist/lib/config/registry.js.map +1 -1
  232. package/dist/lib/index.d.ts +3 -4
  233. package/dist/lib/index.d.ts.map +1 -1
  234. package/dist/lib/index.js +1 -2
  235. package/dist/lib/index.js.map +1 -1
  236. package/dist/lib/pipeline/stages/clipExporter.d.ts +2 -7
  237. package/dist/lib/pipeline/stages/clipExporter.d.ts.map +1 -1
  238. package/dist/lib/pipeline/stages/clipExporter.js +4 -4
  239. package/dist/lib/pipeline/stages/clipExporter.js.map +1 -1
  240. package/dist/lib/pipeline/stages/segmentAnalyzer.d.ts +2 -2
  241. package/dist/lib/pipeline/stages/segmentAnalyzer.d.ts.map +1 -1
  242. package/dist/lib/pipeline/stages/segmentAnalyzer.js +6 -2
  243. package/dist/lib/pipeline/stages/segmentAnalyzer.js.map +1 -1
  244. package/dist/lib/pipeline/stages/segmentSelector.d.ts.map +1 -1
  245. package/dist/lib/pipeline/stages/segmentSelector.js +2 -2
  246. package/dist/lib/pipeline/stages/segmentSelector.js.map +1 -1
  247. package/dist/lib/services/analysis/llm/LLMAnalyzer.d.ts +2 -2
  248. package/dist/lib/services/analysis/llm/LLMAnalyzer.d.ts.map +1 -1
  249. package/dist/lib/services/analysis/llm/LLMAnalyzer.js +5 -3
  250. package/dist/lib/services/analysis/llm/LLMAnalyzer.js.map +1 -1
  251. package/dist/lib/services/analysis/llm/index.d.ts +3 -10
  252. package/dist/lib/services/analysis/llm/index.d.ts.map +1 -1
  253. package/dist/lib/services/analysis/llm/index.js +12 -8
  254. package/dist/lib/services/analysis/llm/index.js.map +1 -1
  255. package/dist/lib/services/analysis/refiner/index.d.ts +3 -11
  256. package/dist/lib/services/analysis/refiner/index.d.ts.map +1 -1
  257. package/dist/lib/services/analysis/refiner/index.js +9 -8
  258. package/dist/lib/services/analysis/refiner/index.js.map +1 -1
  259. package/dist/lib/services/analysis/transcript/detector.d.ts +1 -1
  260. package/dist/lib/services/analysis/transcript/detector.d.ts.map +1 -1
  261. package/dist/lib/services/analysis/transcript/detector.js +4 -4
  262. package/dist/lib/services/analysis/transcript/detector.js.map +1 -1
  263. package/dist/lib/services/audio/analyzer/factory.d.ts +1 -6
  264. package/dist/lib/services/audio/analyzer/factory.d.ts.map +1 -1
  265. package/dist/lib/services/audio/analyzer/factory.js +1 -1
  266. package/dist/lib/services/audio/analyzer/factory.js.map +1 -1
  267. package/dist/lib/services/audio/analyzer/gemini.d.ts +1 -5
  268. package/dist/lib/services/audio/analyzer/gemini.d.ts.map +1 -1
  269. package/dist/lib/services/audio/analyzer/gemini.js +2 -13
  270. package/dist/lib/services/audio/analyzer/gemini.js.map +1 -1
  271. package/dist/lib/services/audio/analyzer/index.d.ts +1 -1
  272. package/dist/lib/services/audio/analyzer/index.d.ts.map +1 -1
  273. package/dist/lib/services/audio/index.d.ts +1 -1
  274. package/dist/lib/services/audio/index.d.ts.map +1 -1
  275. package/dist/lib/services/audio/processor/detector.d.ts.map +1 -1
  276. package/dist/lib/services/audio/processor/detector.js +13 -3
  277. package/dist/lib/services/audio/processor/detector.js.map +1 -1
  278. package/dist/lib/services/audio/processor/slicer.d.ts +2 -4
  279. package/dist/lib/services/audio/processor/slicer.d.ts.map +1 -1
  280. package/dist/lib/services/audio/processor/slicer.js.map +1 -1
  281. package/dist/lib/services/audio/source/index.d.ts +1 -1
  282. package/dist/lib/services/audio/source/index.d.ts.map +1 -1
  283. package/dist/lib/services/audio/source/youtube.d.ts.map +1 -1
  284. package/dist/lib/services/audio/source/youtube.js +6 -7
  285. package/dist/lib/services/audio/source/youtube.js.map +1 -1
  286. package/dist/lib/services/audio/transcriber/factory.js +1 -2
  287. package/dist/lib/services/audio/transcriber/factory.js.map +1 -1
  288. package/dist/lib/services/audio/transcriber/whisper.d.ts.map +1 -1
  289. package/dist/lib/services/audio/transcriber/whisper.js +1 -6
  290. package/dist/lib/services/audio/transcriber/whisper.js.map +1 -1
  291. package/dist/lib/services/cache/backends/disabled.d.ts +20 -0
  292. package/dist/lib/services/cache/backends/disabled.d.ts.map +1 -0
  293. package/dist/lib/{utils/cacheBackend.js → services/cache/backends/disabled.js} +1 -1
  294. package/dist/lib/services/cache/backends/disabled.js.map +1 -0
  295. package/dist/lib/{utils/fileCacheBackend.d.ts → services/cache/backends/file.d.ts} +7 -4
  296. package/dist/lib/services/cache/backends/file.d.ts.map +1 -0
  297. package/dist/lib/{utils/fileCacheBackend.js → services/cache/backends/file.js} +18 -9
  298. package/dist/lib/services/cache/backends/file.js.map +1 -0
  299. package/dist/lib/{utils/mongoCacheBackend.d.ts → services/cache/backends/mongo.d.ts} +3 -3
  300. package/dist/lib/services/cache/backends/mongo.d.ts.map +1 -0
  301. package/dist/lib/{utils/mongoCacheBackend.js → services/cache/backends/mongo.js} +8 -8
  302. package/dist/lib/services/cache/backends/mongo.js.map +1 -0
  303. package/dist/lib/{utils → services/cache}/cache.d.ts +6 -5
  304. package/dist/lib/services/cache/cache.d.ts.map +1 -0
  305. package/dist/lib/{utils → services/cache}/cache.js +25 -4
  306. package/dist/lib/services/cache/cache.js.map +1 -0
  307. package/dist/lib/{utils/cacheFactory.d.ts → services/cache/factory.d.ts} +3 -3
  308. package/dist/lib/services/cache/factory.d.ts.map +1 -0
  309. package/dist/lib/{utils/cacheFactory.js → services/cache/factory.js} +6 -6
  310. package/dist/lib/services/cache/factory.js.map +1 -0
  311. package/dist/lib/services/cache/index.d.ts +4 -0
  312. package/dist/lib/services/cache/index.d.ts.map +1 -0
  313. package/dist/lib/services/cache/index.js +3 -0
  314. package/dist/lib/services/cache/index.js.map +1 -0
  315. package/dist/lib/services/cache/manifest.d.ts +6 -0
  316. package/dist/lib/services/cache/manifest.d.ts.map +1 -0
  317. package/dist/lib/services/cache/manifest.js +101 -0
  318. package/dist/lib/services/cache/manifest.js.map +1 -0
  319. package/dist/lib/services/video/clipper/editor/drawtextBuilder.d.ts +6 -0
  320. package/dist/lib/services/video/clipper/editor/drawtextBuilder.d.ts.map +1 -0
  321. package/dist/lib/services/video/clipper/editor/drawtextBuilder.js +42 -0
  322. package/dist/lib/services/video/clipper/editor/drawtextBuilder.js.map +1 -0
  323. package/dist/lib/services/video/clipper/editor/filterGraphBuilder.d.ts +7 -0
  324. package/dist/lib/services/video/clipper/editor/filterGraphBuilder.d.ts.map +1 -0
  325. package/dist/lib/services/video/clipper/editor/filterGraphBuilder.js +58 -0
  326. package/dist/lib/services/video/clipper/editor/filterGraphBuilder.js.map +1 -0
  327. package/dist/lib/services/video/clipper/editor/renderer.d.ts +4 -0
  328. package/dist/lib/services/video/clipper/editor/renderer.d.ts.map +1 -0
  329. package/dist/lib/services/video/clipper/editor/renderer.js +83 -0
  330. package/dist/lib/services/video/clipper/editor/renderer.js.map +1 -0
  331. package/dist/lib/services/video/clipper/editor/subtitleBuilder.d.ts +6 -0
  332. package/dist/lib/services/video/clipper/editor/subtitleBuilder.d.ts.map +1 -0
  333. package/dist/lib/services/video/clipper/editor/subtitleBuilder.js +155 -0
  334. package/dist/lib/services/video/clipper/editor/subtitleBuilder.js.map +1 -0
  335. package/dist/lib/services/video/clipper/editor/textEscape.d.ts +3 -0
  336. package/dist/lib/services/video/clipper/editor/textEscape.d.ts.map +1 -0
  337. package/dist/lib/services/video/clipper/editor/textEscape.js +11 -0
  338. package/dist/lib/services/video/clipper/editor/textEscape.js.map +1 -0
  339. package/dist/lib/services/video/clipper/index.d.ts +11 -7
  340. package/dist/lib/services/video/clipper/index.d.ts.map +1 -1
  341. package/dist/lib/services/video/clipper/index.js +38 -26
  342. package/dist/lib/services/video/clipper/index.js.map +1 -1
  343. package/dist/lib/services/video/index.d.ts +2 -2
  344. package/dist/lib/services/video/index.d.ts.map +1 -1
  345. package/dist/lib/services/video/source/index.d.ts +2 -2
  346. package/dist/lib/services/video/source/index.d.ts.map +1 -1
  347. package/dist/lib/services/video/source/youtube/catalog.d.ts +1 -17
  348. package/dist/lib/services/video/source/youtube/catalog.d.ts.map +1 -1
  349. package/dist/lib/services/video/source/youtube/catalog.js.map +1 -1
  350. package/dist/lib/services/video/source/youtube/downloader.d.ts.map +1 -1
  351. package/dist/lib/services/video/source/youtube/downloader.js +17 -19
  352. package/dist/lib/services/video/source/youtube/downloader.js.map +1 -1
  353. package/dist/lib/services/video/source/youtube/metadata.d.ts.map +1 -1
  354. package/dist/lib/services/video/source/youtube/metadata.js +3 -3
  355. package/dist/lib/services/video/source/youtube/metadata.js.map +1 -1
  356. package/dist/lib/services/video/source/youtube/subtitles.d.ts +1 -30
  357. package/dist/lib/services/video/source/youtube/subtitles.d.ts.map +1 -1
  358. package/dist/lib/services/video/source/youtube/subtitles.js +4 -4
  359. package/dist/lib/services/video/source/youtube/subtitles.js.map +1 -1
  360. package/dist/lib/types/analyzer.d.ts +23 -0
  361. package/dist/lib/types/analyzer.d.ts.map +1 -1
  362. package/dist/lib/types/analyzer.js +5 -1
  363. package/dist/lib/types/analyzer.js.map +1 -1
  364. package/dist/lib/types/audio.d.ts +28 -0
  365. package/dist/lib/types/audio.d.ts.map +1 -1
  366. package/dist/lib/types/audio.js +10 -0
  367. package/dist/lib/types/audio.js.map +1 -1
  368. package/dist/lib/types/cache.d.ts +34 -0
  369. package/dist/lib/types/cache.d.ts.map +1 -1
  370. package/dist/lib/types/cache.js.map +1 -1
  371. package/dist/lib/types/clipEdit.d.ts +232 -0
  372. package/dist/lib/types/clipEdit.d.ts.map +1 -0
  373. package/dist/lib/types/clipEdit.js +68 -0
  374. package/dist/lib/types/clipEdit.js.map +1 -0
  375. package/dist/lib/types/config.d.ts +39 -3
  376. package/dist/lib/types/config.d.ts.map +1 -1
  377. package/dist/lib/types/config.js +32 -1
  378. package/dist/lib/types/config.js.map +1 -1
  379. package/dist/lib/types/index.d.ts +11 -8
  380. package/dist/lib/types/index.d.ts.map +1 -1
  381. package/dist/lib/types/index.js +3 -1
  382. package/dist/lib/types/index.js.map +1 -1
  383. package/dist/lib/types/pipeline.d.ts +22 -10
  384. package/dist/lib/types/pipeline.d.ts.map +1 -1
  385. package/dist/lib/types/video.d.ts +17 -0
  386. package/dist/lib/types/video.d.ts.map +1 -1
  387. package/dist/lib/types/video.js.map +1 -1
  388. package/dist/lib/types/youtube.d.ts +51 -0
  389. package/dist/lib/types/youtube.d.ts.map +1 -1
  390. package/dist/lib/utils/logger.d.ts +20 -6
  391. package/dist/lib/utils/logger.d.ts.map +1 -1
  392. package/dist/lib/utils/logger.js +59 -30
  393. package/dist/lib/utils/logger.js.map +1 -1
  394. package/dist/lib/utils/modelFactory.d.ts +1 -6
  395. package/dist/lib/utils/modelFactory.d.ts.map +1 -1
  396. package/dist/lib/utils/modelFactory.js.map +1 -1
  397. package/dist/lib/utils/pythonBin.js +1 -1
  398. package/dist/lib/utils/pythonBin.js.map +1 -1
  399. package/dist/lib/utils/retryAsync.d.ts.map +1 -1
  400. package/dist/lib/utils/retryAsync.js +1 -2
  401. package/dist/lib/utils/retryAsync.js.map +1 -1
  402. package/dist/lib/utils/textScale.d.ts +14 -0
  403. package/dist/lib/utils/textScale.d.ts.map +1 -0
  404. package/dist/lib/utils/textScale.js +14 -0
  405. package/dist/lib/utils/textScale.js.map +1 -0
  406. package/package.json +3 -1
  407. package/dist/app/web/lib/configStore.d.ts.map +0 -1
  408. package/dist/app/web/lib/configStore.js.map +0 -1
  409. package/dist/app/web/lib/toastStore.d.ts.map +0 -1
  410. package/dist/lib/services/audio/source/types.d.ts +0 -5
  411. package/dist/lib/services/audio/source/types.d.ts.map +0 -1
  412. package/dist/lib/services/audio/source/types.js +0 -2
  413. package/dist/lib/services/audio/source/types.js.map +0 -1
  414. package/dist/lib/services/video/source/types.d.ts +0 -12
  415. package/dist/lib/services/video/source/types.d.ts.map +0 -1
  416. package/dist/lib/services/video/source/types.js +0 -2
  417. package/dist/lib/services/video/source/types.js.map +0 -1
  418. package/dist/lib/utils/cache.d.ts.map +0 -1
  419. package/dist/lib/utils/cache.js.map +0 -1
  420. package/dist/lib/utils/cacheBackend.d.ts +0 -40
  421. package/dist/lib/utils/cacheBackend.d.ts.map +0 -1
  422. package/dist/lib/utils/cacheBackend.js.map +0 -1
  423. package/dist/lib/utils/cacheFactory.d.ts.map +0 -1
  424. package/dist/lib/utils/cacheFactory.js.map +0 -1
  425. package/dist/lib/utils/fileCacheBackend.d.ts.map +0 -1
  426. package/dist/lib/utils/fileCacheBackend.js.map +0 -1
  427. package/dist/lib/utils/mongoCacheBackend.d.ts.map +0 -1
  428. package/dist/lib/utils/mongoCacheBackend.js.map +0 -1
@@ -1,10 +1,10 @@
1
1
  import { basename } from 'path';
2
2
  import { exportClips } from '../../../../../lib/pipeline/stages/clipExporter.js';
3
- import { saveClipArtifacts } from '../../../lib/services/artifacts/artifactStore.js';
3
+ import { deleteClipArtifact, deleteClipEdits, listClipArtifactsByAnalysisId, saveClipArtifacts, } from '../../../lib/services/artifacts/artifactStore.js';
4
4
  import { log } from '../../../../../lib/utils/logger.js';
5
5
  export async function generateWebClips(input, cfg, requestId) {
6
6
  const downloadMode = cfg.PARTIAL_DOWNLOAD_ENABLED ? input.segments.length : 'all';
7
- log.info(`${requestId ?? 'no-request-id'} [clips] [request] | analysisId=${input.analysisId} videoId=${input.videoId} segments=${input.segments.length} downloadSections=${downloadMode} concurrency=${cfg.CLIP_CONCURRENCY}`);
7
+ log.info('generateWebClips', `[clips] [request] | analysisId=${input.analysisId} videoId=${input.videoId} segments=${input.segments.length} downloadSections=${downloadMode} concurrency=${cfg.CLIP_CONCURRENCY}`, requestId);
8
8
  const cookies = {
9
9
  cookiesFromBrowser: cfg.YT_DLP_COOKIES_FROM_BROWSER,
10
10
  cookiesFile: cfg.YT_DLP_COOKIES_FILE,
@@ -33,6 +33,10 @@ export async function generateWebClips(input, cfg, requestId) {
33
33
  },
34
34
  downloadSectionsMode: cfg.DOWNLOAD_SECTIONS_MODE,
35
35
  };
36
+ const existing = input.analysisId
37
+ ? await listClipArtifactsByAnalysisId(cfg.OUTPUT_DIR, input.analysisId)
38
+ : [];
39
+ const existingById = new Map(existing.map((artifact) => [artifact.id, artifact]));
36
40
  const segments = input.segments.map(toRankedSegment);
37
41
  const paths = await exportClips(input.videoId, segments, {
38
42
  downloadSections: cfg.PARTIAL_DOWNLOAD_ENABLED ? segments.length : 'all',
@@ -43,8 +47,10 @@ export async function generateWebClips(input, cfg, requestId) {
43
47
  const source = input.segments[index];
44
48
  const startSec = source.startSec;
45
49
  const endSec = source.endSec;
50
+ const id = `clip-${input.videoId}-${source.id}`;
51
+ const prior = existingById.get(id);
46
52
  return {
47
- id: `clip-${input.videoId}-${source.id}`,
53
+ id,
48
54
  videoId: input.videoId,
49
55
  analysisId: input.analysisId,
50
56
  segmentId: source.id,
@@ -54,10 +60,26 @@ export async function generateWebClips(input, cfg, requestId) {
54
60
  endSec,
55
61
  durationSec: Math.max(0.01, endSec - startSec),
56
62
  createdAt,
63
+ ...(prior?.editsPath !== undefined && { editsPath: prior.editsPath }),
64
+ ...(prior?.editedPath !== undefined && { editedPath: prior.editedPath }),
65
+ ...(prior?.currentEditsHash !== undefined && { currentEditsHash: prior.currentEditsHash }),
66
+ ...(prior?.lastRenderedHash !== undefined && { lastRenderedHash: prior.lastRenderedHash }),
57
67
  };
58
68
  });
59
- log.info(`${requestId ?? 'no-request-id'} [clips] [generated] | analysisId=${input.analysisId} requested=${input.segments.length} created=${artifacts.length}`);
60
- return saveClipArtifacts(artifacts, cfg.OUTPUT_DIR);
69
+ log.info('generateWebClips', `[clips] [generated] | analysisId=${input.analysisId} requested=${input.segments.length} created=${artifacts.length}`, requestId);
70
+ const saved = await saveClipArtifacts(artifacts, cfg.OUTPUT_DIR);
71
+ const keepIds = new Set(saved.map((artifact) => artifact.id));
72
+ const staleIds = existing
73
+ .filter((artifact) => !keepIds.has(artifact.id))
74
+ .map((artifact) => artifact.id);
75
+ if (staleIds.length > 0) {
76
+ await Promise.all(staleIds.flatMap((id) => [
77
+ deleteClipArtifact(cfg.OUTPUT_DIR, id),
78
+ deleteClipEdits(cfg.OUTPUT_DIR, id),
79
+ ]));
80
+ log.info('generateWebClips', `[clips] [pruned] | analysisId=${input.analysisId} stale=${staleIds.length}`, requestId);
81
+ }
82
+ return saved;
61
83
  }
62
84
  function toRankedSegment(segment) {
63
85
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"clipService.js","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/clipping/clipService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"clipService.js","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/clipping/clipService.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,4 @@
1
- export interface WebServerConfig {
2
- youtubeApiKey: string | undefined;
3
- outputDir: string;
4
- cacheDir: string;
5
- defaultThreshold: number;
6
- defaultTopN: number;
7
- defaultConcurrency: number;
8
- }
1
+ import type { WebServerConfig } from '../../../types/web.js';
2
+ export type { WebServerConfig };
9
3
  export declare function getWebServerConfig(): WebServerConfig;
10
4
  //# sourceMappingURL=webConfig.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"webConfig.d.ts","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/config/webConfig.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,EAAE,MAAM,CAAC;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,wBAAgB,kBAAkB,IAAI,eAAe,CASpD"}
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"}
@@ -1 +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;AAW9C,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"}
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"}
@@ -1,5 +1,6 @@
1
1
  import { type PublishDraft, type SavePublishDraftRequest } from '../../../types/publish.js';
2
2
  import type { Config } from '../../../../../lib/types/config.js';
3
3
  export declare function buildPublishDraft(analysisId: string, cfg: Config, requestId?: string): Promise<PublishDraft | null>;
4
+ export declare function loadAndRefreshPublishDraft(analysisId: string, cfg: Config, requestId?: string): Promise<PublishDraft | null>;
4
5
  export declare function savePublishDraftFromRequest(input: SavePublishDraftRequest, cfg: Config, requestId?: string): Promise<PublishDraft>;
5
6
  //# sourceMappingURL=draftService.d.ts.map
@@ -1 +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"}
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,0BAA0B,CAC9C,UAAU,EAAE,MAAM,EAClB,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,GAAG,IAAI,CAAC,CAwB9B;AAED,wBAAsB,2BAA2B,CAC/C,KAAK,EAAE,uBAAuB,EAC9B,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,YAAY,CAAC,CAmCvB"}
@@ -2,7 +2,7 @@ import { createArtifactId, getAnalysis, getPublishDraft, listClipArtifactsByAnal
2
2
  import { PublishDraftSchema, } from '../../../types/publish.js';
3
3
  import { log } from '../../../../../lib/utils/logger.js';
4
4
  export async function buildPublishDraft(analysisId, cfg, requestId) {
5
- const done = log.fnCalled('buildPublishDraft', { analysisId }, requestId);
5
+ const done = log.fnCalled('buildPublishDraft', requestId, { analysisId });
6
6
  const [analysis, clips] = await Promise.all([
7
7
  getAnalysis(cfg.OUTPUT_DIR, analysisId),
8
8
  listClipArtifactsByAnalysisId(cfg.OUTPUT_DIR, analysisId),
@@ -24,31 +24,82 @@ export async function buildPublishDraft(analysisId, cfg, requestId) {
24
24
  done({ clips: clips.length });
25
25
  return draft;
26
26
  }
27
+ export async function loadAndRefreshPublishDraft(analysisId, cfg, requestId) {
28
+ const [existingDraft, freshDraft] = await Promise.all([
29
+ getPublishDraft(cfg.OUTPUT_DIR, analysisId),
30
+ buildPublishDraft(analysisId, cfg, requestId),
31
+ ]);
32
+ if (!freshDraft)
33
+ return existingDraft;
34
+ if (!existingDraft)
35
+ return freshDraft;
36
+ const existingById = new Map(existingDraft.items.map((item) => [item.clipArtifactId, item]));
37
+ return PublishDraftSchema.parse({
38
+ ...existingDraft,
39
+ items: freshDraft.items.map((freshItem) => {
40
+ const saved = existingById.get(freshItem.clipArtifactId);
41
+ if (!saved)
42
+ return freshItem;
43
+ return {
44
+ ...saved,
45
+ path: freshItem.path,
46
+ editedPath: freshItem.editedPath,
47
+ isRenderRequired: freshItem.isRenderRequired,
48
+ };
49
+ }),
50
+ updatedAt: new Date().toISOString(),
51
+ });
52
+ }
27
53
  export async function savePublishDraftFromRequest(input, cfg, requestId) {
28
- const done = log.fnCalled('savePublishDraft', { analysisId: input.analysisId }, requestId);
29
- const existing = await getPublishDraft(cfg.OUTPUT_DIR, input.analysisId);
30
- const fallback = existing ?? (await buildPublishDraft(input.analysisId, cfg, requestId));
31
- const createdAt = fallback?.createdAt ?? new Date().toISOString();
54
+ const done = log.fnCalled('savePublishDraft', requestId, { analysisId: input.analysisId });
55
+ const [existing, fresh] = await Promise.all([
56
+ getPublishDraft(cfg.OUTPUT_DIR, input.analysisId),
57
+ buildPublishDraft(input.analysisId, cfg, requestId),
58
+ ]);
59
+ const createdAt = existing?.createdAt ?? fresh?.createdAt ?? new Date().toISOString();
60
+ const freshById = new Map((fresh?.items ?? []).map((i) => [i.clipArtifactId, i]));
61
+ const items = input.items.map((item) => {
62
+ const f = freshById.get(item.clipArtifactId);
63
+ if (!f)
64
+ return item;
65
+ return {
66
+ ...item,
67
+ path: f.path,
68
+ editedPath: f.editedPath,
69
+ isRenderRequired: f.isRenderRequired,
70
+ };
71
+ });
32
72
  const saved = await savePublishDraft(PublishDraftSchema.parse({
33
- id: fallback?.id ?? createArtifactId(`publish-${input.videoId}`),
73
+ id: existing?.id ?? fresh?.id ?? createArtifactId(`publish-${input.videoId}`),
34
74
  analysisId: input.analysisId,
35
75
  videoId: input.videoId,
36
76
  title: input.title,
37
77
  createdAt,
38
78
  updatedAt: new Date().toISOString(),
39
- items: input.items,
79
+ items,
40
80
  }), cfg.OUTPUT_DIR);
41
- done({ items: input.items.length });
81
+ done({ items: items.length });
42
82
  return saved;
43
83
  }
44
84
  function buildDraftItem(clip, analysis, cfg) {
45
85
  const candidate = analysis.candidates.find((item) => item.id === clip.segmentId);
46
86
  const baseTitle = candidate?.reason?.trim() || `${analysis.title} clip`;
87
+ // Use the rendered edited path if available; fall back to the original clip.
88
+ const resolvedPath = clip.editedPath ?? clip.path;
89
+ // A render is required when edits exist but haven't been rendered yet, or when the
90
+ // edits have changed since the last render (stale).
91
+ const isRenderRequired = !!clip.editsPath &&
92
+ (!clip.editedPath ||
93
+ (!!clip.currentEditsHash &&
94
+ !!clip.lastRenderedHash &&
95
+ clip.currentEditsHash !== clip.lastRenderedHash));
47
96
  return {
48
97
  clipArtifactId: clip.id,
49
98
  segmentId: clip.segmentId,
50
99
  filename: clip.filename,
51
- path: clip.path,
100
+ path: resolvedPath,
101
+ editedPath: clip.editedPath,
102
+ isRenderRequired,
52
103
  startSec: clip.startSec,
53
104
  endSec: clip.endSec,
54
105
  durationSec: clip.durationSec,
@@ -1 +1 @@
1
- {"version":3,"file":"draftService.js","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/publishing/draftService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"draftService.js","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/publishing/draftService.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,4 @@
1
- import { z } from 'zod';
2
- declare const CachedMetadataSchema: z.ZodObject<{
3
- title: z.ZodString;
4
- description: z.ZodString;
5
- tags: z.ZodArray<z.ZodString>;
6
- categoryId: z.ZodString;
7
- }, z.core.$strip>;
8
- export type CachedMetadata = z.infer<typeof CachedMetadataSchema>;
1
+ import type { CachedMetadata } from '../../../types/publish.js';
9
2
  export declare function readMetadataCache(cacheDir: string, systemPrompt: string, prompt: string): Promise<CachedMetadata | null>;
10
3
  export declare function writeMetadataCache(cacheDir: string, systemPrompt: string, prompt: string, metadata: CachedMetadata): Promise<void>;
11
- export {};
12
4
  //# sourceMappingURL=metadataCache.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadataCache.d.ts","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/publishing/metadataCache.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,QAAA,MAAM,oBAAoB;;;;;iBAKxB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAUlE,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAchC;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC,CAUf"}
1
+ {"version":3,"file":"metadataCache.d.ts","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/publishing/metadataCache.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;AAUhE,wBAAsB,iBAAiB,CACrC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAiBhC;AAED,wBAAsB,kBAAkB,CACtC,QAAQ,EAAE,MAAM,EAChB,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,cAAc,GACvB,OAAO,CAAC,IAAI,CAAC,CAWf"}
@@ -1,14 +1,8 @@
1
1
  import { createHash } from 'node:crypto';
2
2
  import { promises as fs } from 'fs';
3
3
  import path from 'path';
4
- import { z } from 'zod';
5
4
  import { log } from '../../../../../lib/utils/logger.js';
6
- const CachedMetadataSchema = z.object({
7
- title: z.string(),
8
- description: z.string(),
9
- tags: z.array(z.string()),
10
- categoryId: z.string(),
11
- });
5
+ import { CachedMetadataSchema } from '../../../types/publish.js';
12
6
  function cacheKey(systemPrompt, prompt) {
13
7
  return createHash('sha256').update(`${systemPrompt}\n---\n${prompt}`).digest('hex');
14
8
  }
@@ -21,7 +15,7 @@ export async function readMetadataCache(cacheDir, systemPrompt, prompt) {
21
15
  const raw = await fs.readFile(filePath, 'utf-8');
22
16
  const parsed = CachedMetadataSchema.safeParse(JSON.parse(raw));
23
17
  if (!parsed.success) {
24
- log.warn(`[publish-metadata-cache] corrupt entry at ${filePath} — ignoring`);
18
+ log.warn('readMetadataCache', `[publish-metadata-cache] corrupt entry at ${filePath} — ignoring`);
25
19
  return null;
26
20
  }
27
21
  return parsed.data;
@@ -38,7 +32,7 @@ export async function writeMetadataCache(cacheDir, systemPrompt, prompt, metadat
38
32
  await fs.writeFile(filePath, JSON.stringify(metadata, null, 2), 'utf-8');
39
33
  }
40
34
  catch (err) {
41
- log.warn(`[publish-metadata-cache] failed to write ${filePath}: ${err instanceof Error ? err.message : String(err)}`);
35
+ log.warn('writeMetadataCache', `[publish-metadata-cache] failed to write ${filePath}: ${err instanceof Error ? err.message : String(err)}`);
42
36
  }
43
37
  }
44
38
  //# sourceMappingURL=metadataCache.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"metadataCache.js","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/publishing/metadataCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAE3C,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACzB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;CACvB,CAAC,CAAC;AAIH,SAAS,QAAQ,CAAC,YAAoB,EAAE,MAAc;IACpD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,YAAY,UAAU,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtF,CAAC;AAED,SAAS,SAAS,CAAC,QAAgB,EAAE,GAAW;IAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAAgB,EAChB,YAAoB,EACpB,MAAc;IAEd,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IACrE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,GAAG,CAAC,IAAI,CAAC,6CAA6C,QAAQ,aAAa,CAAC,CAAC;YAC7E,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAgB,EAChB,YAAoB,EACpB,MAAc,EACd,QAAwB;IAExB,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IACrE,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CACN,4CAA4C,QAAQ,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC5G,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"metadataCache.js","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/publishing/metadataCache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAE3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAGjE,SAAS,QAAQ,CAAC,YAAoB,EAAE,MAAc;IACpD,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,GAAG,YAAY,UAAU,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACtF,CAAC;AAED,SAAS,SAAS,CAAC,QAAgB,EAAE,GAAW;IAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,kBAAkB,EAAE,GAAG,GAAG,OAAO,CAAC,CAAC;AAChE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,QAAgB,EAChB,YAAoB,EACpB,MAAc;IAEd,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IACrE,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,GAAG,CAAC,IAAI,CACN,mBAAmB,EACnB,6CAA6C,QAAQ,aAAa,CACnE,CAAC;YACF,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,MAAM,CAAC,IAAI,CAAC;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,sBAAsB;QACtB,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,QAAgB,EAChB,YAAoB,EACpB,MAAc,EACd,QAAwB;IAExB,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,EAAE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC;IACrE,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5D,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IAC3E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,IAAI,CACN,oBAAoB,EACpB,4CAA4C,QAAQ,KAAK,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAC5G,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"metadataService.d.ts","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/publishing/metadataService.ts"],"names":[],"mappings":"AAKA,OAAO,EAGL,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,EAC/B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAGnD,YAAY,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AA+B3E,wBAAsB,uBAAuB,CAC3C,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,gBAAgB,EAAE,EACzB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,yBAAyB,EACnC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAqGrC"}
1
+ {"version":3,"file":"metadataService.d.ts","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/publishing/metadataService.ts"],"names":[],"mappings":"AAIA,OAAO,EAGL,KAAK,wBAAwB,EAC7B,KAAK,gBAAgB,EACrB,KAAK,yBAAyB,EAC/B,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAGnD,YAAY,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAC;AA0B3E,wBAAsB,uBAAuB,CAC3C,aAAa,EAAE,MAAM,EACrB,KAAK,EAAE,gBAAgB,EAAE,EACzB,GAAG,EAAE,MAAM,EACX,OAAO,CAAC,EAAE,yBAAyB,EACnC,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAuHrC"}
@@ -1,16 +1,10 @@
1
1
  import { generateText, tool } from 'ai';
2
2
  import pLimit from 'p-limit';
3
- import { z } from 'zod';
4
3
  import { getModel } from '../../../../../lib/utils/modelFactory.js';
5
4
  import { log } from '../../../../../lib/utils/logger.js';
6
5
  import { YOUTUBE_CATEGORIES, GeneratedPublishMetadataSchema, } from '../../../types/publish.js';
7
6
  import { readMetadataCache, writeMetadataCache } from './metadataCache.js';
8
- const PublishMetadataSchema = z.object({
9
- title: z.string().min(1).max(100),
10
- description: z.string().min(1).max(5000),
11
- tags: z.array(z.string().min(1).max(30)).max(15),
12
- categoryId: z.string().min(1).max(5),
13
- });
7
+ import { PublishMetadataSchema } from '../../../types/publish.js';
14
8
  const CATEGORY_LIST = Object.entries(YOUTUBE_CATEGORIES)
15
9
  .map(([id, label]) => `${id}=${label}`)
16
10
  .join(', ');
@@ -32,7 +26,7 @@ Rules:
32
26
  - If Format is "YouTube Short": keep the title under 60 chars and the description under 300 chars; lead with the most compelling line first.
33
27
  - If Format is "YouTube Video": standard YouTube title and description length rules apply.`;
34
28
  export async function generatePublishMetadata(workflowTitle, items, cfg, context, requestId) {
35
- const done = log.fnCalled('generatePublishMetadata', { items: items.length }, requestId);
29
+ const done = log.fnCalled('generatePublishMetadata', requestId, { items: items.length });
36
30
  const concurrency = Math.max(1, Math.min(cfg.LLM_CONCURRENCY, 2));
37
31
  const model = getModel(cfg.LLM_PROVIDER, cfg.LLM_MODEL, {
38
32
  ZAI_API_KEY: cfg.ZAI_API_KEY,
@@ -40,23 +34,23 @@ export async function generatePublishMetadata(workflowTitle, items, cfg, context
40
34
  CUSTOM_OPENAI_BASE_URL: cfg.CUSTOM_OPENAI_BASE_URL,
41
35
  CUSTOM_OPENAI_API_KEY: cfg.CUSTOM_OPENAI_API_KEY,
42
36
  });
43
- log.info(`[publish-metadata] model=${cfg.LLM_PROVIDER}/${cfg.LLM_MODEL} concurrency=${concurrency}`);
37
+ log.info('generatePublishMetadata', `[publish-metadata] model=${cfg.LLM_PROVIDER}/${cfg.LLM_MODEL} concurrency=${concurrency}`, requestId);
44
38
  const limit = pLimit(concurrency);
45
39
  const effectiveSystemPrompt = cfg.PUBLISH_METADATA_SYSTEM_PROMPT ?? DEFAULT_METADATA_SYSTEM_PROMPT;
46
40
  const jobs = items.map((item, itemIndex) => limit(async () => {
47
41
  const label = `clip ${itemIndex + 1}/${items.length} ${item.filename}`;
48
42
  const t0 = Date.now();
49
- log.info(`[publish-metadata] → ${label} (${item.startSec.toFixed(1)}s–${item.endSec.toFixed(1)}s)`);
43
+ log.info('generatePublishMetadata', `[publish-metadata] → ${label} (${item.startSec.toFixed(1)}s–${item.endSec.toFixed(1)}s)`, requestId);
50
44
  const prompt = buildMetadataPrompt(workflowTitle, item, context);
51
45
  const cached = await readMetadataCache(cfg.CACHE_DIR, effectiveSystemPrompt, prompt);
52
46
  if (cached) {
53
- log.info(`[publish-metadata] cache hit for ${label}`);
47
+ log.info('generatePublishMetadata', `[publish-metadata] cache hit for ${label}`, requestId);
54
48
  return GeneratedPublishMetadataSchema.parse({
55
49
  clipArtifactId: item.clipArtifactId,
56
50
  ...cached,
57
51
  });
58
52
  }
59
- log.info(`[publish-metadata] cache miss for ${label} — calling LLM`);
53
+ log.info('generatePublishMetadata', `[publish-metadata] cache miss for ${label} — calling LLM`, requestId);
60
54
  const result = await generateText({
61
55
  model,
62
56
  system: effectiveSystemPrompt,
@@ -70,18 +64,18 @@ export async function generatePublishMetadata(workflowTitle, items, cfg, context
70
64
  toolChoice: { type: 'tool', toolName: 'register_metadata' },
71
65
  maxRetries: cfg.LLM_MAX_RETRIES,
72
66
  });
73
- log.info(`[publish-metadata] ← ${label} toolCalls=${result.toolCalls.length} finishReason=${result.finishReason} (${Date.now() - t0}ms)`);
67
+ log.info('generatePublishMetadata', `[publish-metadata] ← ${label} toolCalls=${result.toolCalls.length} finishReason=${result.finishReason} (${Date.now() - t0}ms)`, requestId);
74
68
  const toolCall = result.toolCalls.find((tc) => tc.toolName === 'register_metadata');
75
69
  if (!toolCall) {
76
70
  const names = result.toolCalls.map((tc) => tc.toolName).join(', ') || 'none';
77
- log.error(`[publish-metadata] no register_metadata call for ${label} — toolCalls=[${names}] finishReason=${result.finishReason}`);
71
+ log.error('generatePublishMetadata', `[publish-metadata] no register_metadata call for ${label} — toolCalls=[${names}] finishReason=${result.finishReason}`, requestId);
78
72
  throw new Error('No metadata registered: model did not call register_metadata');
79
73
  }
80
74
  const metadata = GeneratedPublishMetadataSchema.parse({
81
75
  clipArtifactId: item.clipArtifactId,
82
76
  ...toolCall.input,
83
77
  });
84
- log.info(`[publish-metadata] ✓ ${label} title="${metadata.title}" category=${metadata.categoryId} tags=${metadata.tags.length}`);
78
+ log.info('generatePublishMetadata', `[publish-metadata] ✓ ${label} title="${metadata.title}" category=${metadata.categoryId} tags=${metadata.tags.length}`, requestId);
85
79
  await writeMetadataCache(cfg.CACHE_DIR, effectiveSystemPrompt, prompt, {
86
80
  title: metadata.title,
87
81
  description: metadata.description,
@@ -100,7 +94,7 @@ export async function generatePublishMetadata(workflowTitle, items, cfg, context
100
94
  continue;
101
95
  }
102
96
  const reason = result.reason instanceof Error ? result.reason.message : String(result.reason);
103
- log.error(`[publish-metadata] ✗ clip ${index + 1}/${items.length} ${item.filename}: ${reason}`);
97
+ log.error('generatePublishMetadata', `[publish-metadata] ✗ clip ${index + 1}/${items.length} ${item.filename}: ${reason}`, requestId);
104
98
  }
105
99
  done({ generated: generated.length });
106
100
  return generated;
@@ -1 +1 @@
1
- {"version":3,"file":"metadataService.js","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/publishing/metadataService.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metadataService.js","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/publishing/metadataService.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,6 @@
1
- import { type CreateUploadsRequest, type PublishDraftItem, type UploadArtifact } from '../../../types/publish.js';
1
+ import { type CreateUploadsRequest, type UploadArtifact } from '../../../types/publish.js';
2
2
  import type { Config } from '../../../../../lib/types/config.js';
3
- export interface UploadDraftClipsCallbacks {
4
- onUploadStarted?: (item: PublishDraftItem) => void;
5
- onUploadFinished?: (upload: UploadArtifact) => void;
6
- onUploadFailed?: (upload: UploadArtifact) => void;
7
- }
3
+ import type { UploadDraftClipsCallbacks } from '../../../types/upload.js';
4
+ export type { UploadDraftClipsCallbacks };
8
5
  export declare function uploadDraftClips(input: CreateUploadsRequest, cfg: Config, requestId?: string, callbacks?: UploadDraftClipsCallbacks): Promise<UploadArtifact[]>;
9
6
  //# sourceMappingURL=uploadService.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"uploadService.d.ts","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/publishing/uploadService.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EAEpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AASnD,MAAM,WAAW,yBAAyB;IACxC,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACnD,gBAAgB,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;IACpD,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,CAAC;CACnD;AAED,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,oBAAoB,EAC3B,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,yBAAyB,GACpC,OAAO,CAAC,cAAc,EAAE,CAAC,CA0D3B"}
1
+ {"version":3,"file":"uploadService.d.ts","sourceRoot":"","sources":["../../../../../../src/app/web/lib/services/publishing/uploadService.ts"],"names":[],"mappings":"AAOA,OAAO,EAEL,KAAK,oBAAoB,EAEzB,KAAK,cAAc,EAEpB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AASnD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAE1E,YAAY,EAAE,yBAAyB,EAAE,CAAC;AAE1C,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,oBAAoB,EAC3B,GAAG,EAAE,MAAM,EACX,SAAS,CAAC,EAAE,MAAM,EAClB,SAAS,CAAC,EAAE,yBAAyB,GACpC,OAAO,CAAC,cAAc,EAAE,CAAC,CAqE3B"}