@steipete/summarize 0.11.1 → 0.13.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 (427) hide show
  1. package/CHANGELOG.md +73 -1
  2. package/README.md +102 -32
  3. package/dist/cli.js +1 -1
  4. package/dist/esm/cache-keys.js +83 -0
  5. package/dist/esm/cache-keys.js.map +1 -0
  6. package/dist/esm/cache-slides-cleanup.js +47 -0
  7. package/dist/esm/cache-slides-cleanup.js.map +1 -0
  8. package/dist/esm/cache.js +15 -92
  9. package/dist/esm/cache.js.map +1 -1
  10. package/dist/esm/config/env.js +49 -0
  11. package/dist/esm/config/env.js.map +1 -0
  12. package/dist/esm/config/model.js +193 -0
  13. package/dist/esm/config/model.js.map +1 -0
  14. package/dist/esm/config/parse-helpers.js +55 -0
  15. package/dist/esm/config/parse-helpers.js.map +1 -0
  16. package/dist/esm/config/read.js +83 -0
  17. package/dist/esm/config/read.js.map +1 -0
  18. package/dist/esm/config/sections.js +472 -0
  19. package/dist/esm/config/sections.js.map +1 -0
  20. package/dist/esm/config/types.js +2 -0
  21. package/dist/esm/config/types.js.map +1 -0
  22. package/dist/esm/config.js +24 -807
  23. package/dist/esm/config.js.map +1 -1
  24. package/dist/esm/content/asset.js +2 -2
  25. package/dist/esm/content/asset.js.map +1 -1
  26. package/dist/esm/costs.js.map +1 -1
  27. package/dist/esm/daemon/agent-model.js +283 -0
  28. package/dist/esm/daemon/agent-model.js.map +1 -0
  29. package/dist/esm/daemon/agent-request.js +87 -0
  30. package/dist/esm/daemon/agent-request.js.map +1 -0
  31. package/dist/esm/daemon/agent.js +42 -243
  32. package/dist/esm/daemon/agent.js.map +1 -1
  33. package/dist/esm/daemon/chat.js +118 -9
  34. package/dist/esm/daemon/chat.js.map +1 -1
  35. package/dist/esm/daemon/cli.js +121 -9
  36. package/dist/esm/daemon/cli.js.map +1 -1
  37. package/dist/esm/daemon/config.js +65 -9
  38. package/dist/esm/daemon/config.js.map +1 -1
  39. package/dist/esm/daemon/env-snapshot.js +6 -0
  40. package/dist/esm/daemon/env-snapshot.js.map +1 -1
  41. package/dist/esm/daemon/flow-context.js +84 -74
  42. package/dist/esm/daemon/flow-context.js.map +1 -1
  43. package/dist/esm/daemon/models.js +26 -0
  44. package/dist/esm/daemon/models.js.map +1 -1
  45. package/dist/esm/daemon/process-registry.js.map +1 -1
  46. package/dist/esm/daemon/schtasks.js +101 -5
  47. package/dist/esm/daemon/schtasks.js.map +1 -1
  48. package/dist/esm/daemon/server-admin-routes.js +134 -0
  49. package/dist/esm/daemon/server-admin-routes.js.map +1 -0
  50. package/dist/esm/daemon/server-agent-route.js +104 -0
  51. package/dist/esm/daemon/server-agent-route.js.map +1 -0
  52. package/dist/esm/daemon/server-http.js +89 -0
  53. package/dist/esm/daemon/server-http.js.map +1 -0
  54. package/dist/esm/daemon/server-session-routes.js +209 -0
  55. package/dist/esm/daemon/server-session-routes.js.map +1 -0
  56. package/dist/esm/daemon/server-session.js +118 -0
  57. package/dist/esm/daemon/server-session.js.map +1 -0
  58. package/dist/esm/daemon/server-sse.js +28 -0
  59. package/dist/esm/daemon/server-sse.js.map +1 -0
  60. package/dist/esm/daemon/server-summarize-execution.js +357 -0
  61. package/dist/esm/daemon/server-summarize-execution.js.map +1 -0
  62. package/dist/esm/daemon/server-summarize-request.js +119 -0
  63. package/dist/esm/daemon/server-summarize-request.js.map +1 -0
  64. package/dist/esm/daemon/server.js +79 -1121
  65. package/dist/esm/daemon/server.js.map +1 -1
  66. package/dist/esm/daemon/summarize-progress.js +1 -1
  67. package/dist/esm/daemon/summarize-progress.js.map +1 -1
  68. package/dist/esm/daemon/summarize.js.map +1 -1
  69. package/dist/esm/daemon/windows-container.js +21 -0
  70. package/dist/esm/daemon/windows-container.js.map +1 -0
  71. package/dist/esm/llm/cli-exec.js +75 -0
  72. package/dist/esm/llm/cli-exec.js.map +1 -0
  73. package/dist/esm/llm/cli-provider-output.js +415 -0
  74. package/dist/esm/llm/cli-provider-output.js.map +1 -0
  75. package/dist/esm/llm/cli.js +97 -218
  76. package/dist/esm/llm/cli.js.map +1 -1
  77. package/dist/esm/llm/generate-text-document.js +109 -0
  78. package/dist/esm/llm/generate-text-document.js.map +1 -0
  79. package/dist/esm/llm/generate-text-shared.js +121 -0
  80. package/dist/esm/llm/generate-text-shared.js.map +1 -0
  81. package/dist/esm/llm/generate-text-stream.js +291 -0
  82. package/dist/esm/llm/generate-text-stream.js.map +1 -0
  83. package/dist/esm/llm/generate-text.js +172 -480
  84. package/dist/esm/llm/generate-text.js.map +1 -1
  85. package/dist/esm/llm/github-models.js +45 -0
  86. package/dist/esm/llm/github-models.js.map +1 -0
  87. package/dist/esm/llm/html-to-markdown.js.map +1 -1
  88. package/dist/esm/llm/model-id.js +37 -20
  89. package/dist/esm/llm/model-id.js.map +1 -1
  90. package/dist/esm/llm/provider-capabilities.js +2 -0
  91. package/dist/esm/llm/provider-capabilities.js.map +1 -0
  92. package/dist/esm/llm/provider-profile.js +184 -0
  93. package/dist/esm/llm/provider-profile.js.map +1 -0
  94. package/dist/esm/llm/providers/google.js +42 -5
  95. package/dist/esm/llm/providers/google.js.map +1 -1
  96. package/dist/esm/llm/providers/models.js +19 -1
  97. package/dist/esm/llm/providers/models.js.map +1 -1
  98. package/dist/esm/llm/providers/openai.js +243 -5
  99. package/dist/esm/llm/providers/openai.js.map +1 -1
  100. package/dist/esm/llm/transcript-to-markdown.js.map +1 -1
  101. package/dist/esm/media-cache.js +3 -0
  102. package/dist/esm/media-cache.js.map +1 -1
  103. package/dist/esm/model-auto-cli.js +91 -0
  104. package/dist/esm/model-auto-cli.js.map +1 -0
  105. package/dist/esm/model-auto-rules.js +86 -0
  106. package/dist/esm/model-auto-rules.js.map +1 -0
  107. package/dist/esm/model-auto.js +10 -245
  108. package/dist/esm/model-auto.js.map +1 -1
  109. package/dist/esm/model-spec.js +62 -19
  110. package/dist/esm/model-spec.js.map +1 -1
  111. package/dist/esm/refresh-free.js +1 -1
  112. package/dist/esm/refresh-free.js.map +1 -1
  113. package/dist/esm/run/attachments.js +1 -1
  114. package/dist/esm/run/attachments.js.map +1 -1
  115. package/dist/esm/run/bird/exec.js +23 -0
  116. package/dist/esm/run/bird/exec.js.map +1 -0
  117. package/dist/esm/run/bird/media.js +171 -0
  118. package/dist/esm/run/bird/media.js.map +1 -0
  119. package/dist/esm/run/bird/parse.js +82 -0
  120. package/dist/esm/run/bird/parse.js.map +1 -0
  121. package/dist/esm/run/bird/types.js +2 -0
  122. package/dist/esm/run/bird/types.js.map +1 -0
  123. package/dist/esm/run/bird.js +86 -144
  124. package/dist/esm/run/bird.js.map +1 -1
  125. package/dist/esm/run/cache-state.js.map +1 -1
  126. package/dist/esm/run/cli-fallback-state.js +6 -1
  127. package/dist/esm/run/cli-fallback-state.js.map +1 -1
  128. package/dist/esm/run/constants.js +2 -1
  129. package/dist/esm/run/constants.js.map +1 -1
  130. package/dist/esm/run/env.js +24 -3
  131. package/dist/esm/run/env.js.map +1 -1
  132. package/dist/esm/run/finish-line-labels.js +76 -0
  133. package/dist/esm/run/finish-line-labels.js.map +1 -0
  134. package/dist/esm/run/finish-line-lengths.js +96 -0
  135. package/dist/esm/run/finish-line-lengths.js.map +1 -0
  136. package/dist/esm/run/finish-line.js +3 -169
  137. package/dist/esm/run/finish-line.js.map +1 -1
  138. package/dist/esm/run/flows/asset/extract.js.map +1 -1
  139. package/dist/esm/run/flows/asset/input.js +1 -1
  140. package/dist/esm/run/flows/asset/input.js.map +1 -1
  141. package/dist/esm/run/flows/asset/media.js +19 -10
  142. package/dist/esm/run/flows/asset/media.js.map +1 -1
  143. package/dist/esm/run/flows/asset/output.js.map +1 -1
  144. package/dist/esm/run/flows/asset/preprocess.js.map +1 -1
  145. package/dist/esm/run/flows/asset/summary-attempts.js +117 -0
  146. package/dist/esm/run/flows/asset/summary-attempts.js.map +1 -0
  147. package/dist/esm/run/flows/asset/summary.js +30 -107
  148. package/dist/esm/run/flows/asset/summary.js.map +1 -1
  149. package/dist/esm/run/flows/url/extract.js +7 -4
  150. package/dist/esm/run/flows/url/extract.js.map +1 -1
  151. package/dist/esm/run/flows/url/extraction-session.js +174 -0
  152. package/dist/esm/run/flows/url/extraction-session.js.map +1 -0
  153. package/dist/esm/run/flows/url/fetch-options.js +32 -0
  154. package/dist/esm/run/flows/url/fetch-options.js.map +1 -0
  155. package/dist/esm/run/flows/url/flow-progress.js +123 -0
  156. package/dist/esm/run/flows/url/flow-progress.js.map +1 -0
  157. package/dist/esm/run/flows/url/flow.js +70 -462
  158. package/dist/esm/run/flows/url/flow.js.map +1 -1
  159. package/dist/esm/run/flows/url/markdown.js +38 -3
  160. package/dist/esm/run/flows/url/markdown.js.map +1 -1
  161. package/dist/esm/run/flows/url/progress-status-state.js +28 -0
  162. package/dist/esm/run/flows/url/progress-status-state.js.map +1 -0
  163. package/dist/esm/run/flows/url/progress-status.js +51 -0
  164. package/dist/esm/run/flows/url/progress-status.js.map +1 -0
  165. package/dist/esm/run/flows/url/slides-output-render.js +78 -0
  166. package/dist/esm/run/flows/url/slides-output-render.js.map +1 -0
  167. package/dist/esm/run/flows/url/slides-output-state.js +86 -0
  168. package/dist/esm/run/flows/url/slides-output-state.js.map +1 -0
  169. package/dist/esm/run/flows/url/slides-output-stream.js +271 -0
  170. package/dist/esm/run/flows/url/slides-output-stream.js.map +1 -0
  171. package/dist/esm/run/flows/url/slides-output.js +29 -422
  172. package/dist/esm/run/flows/url/slides-output.js.map +1 -1
  173. package/dist/esm/run/flows/url/slides-session.js +159 -0
  174. package/dist/esm/run/flows/url/slides-session.js.map +1 -0
  175. package/dist/esm/run/flows/url/slides-text-markdown.js +431 -0
  176. package/dist/esm/run/flows/url/slides-text-markdown.js.map +1 -0
  177. package/dist/esm/run/flows/url/slides-text-transcript.js +199 -0
  178. package/dist/esm/run/flows/url/slides-text-transcript.js.map +1 -0
  179. package/dist/esm/run/flows/url/slides-text-types.js +2 -0
  180. package/dist/esm/run/flows/url/slides-text-types.js.map +1 -0
  181. package/dist/esm/run/flows/url/slides-text.js +2 -627
  182. package/dist/esm/run/flows/url/slides-text.js.map +1 -1
  183. package/dist/esm/run/flows/url/summary-finish.js +40 -0
  184. package/dist/esm/run/flows/url/summary-finish.js.map +1 -0
  185. package/dist/esm/run/flows/url/summary-json.js +32 -0
  186. package/dist/esm/run/flows/url/summary-json.js.map +1 -0
  187. package/dist/esm/run/flows/url/summary-prompt.js +147 -0
  188. package/dist/esm/run/flows/url/summary-prompt.js.map +1 -0
  189. package/dist/esm/run/flows/url/summary-resolution.js +327 -0
  190. package/dist/esm/run/flows/url/summary-resolution.js.map +1 -0
  191. package/dist/esm/run/flows/url/summary-timestamps.js +136 -0
  192. package/dist/esm/run/flows/url/summary-timestamps.js.map +1 -0
  193. package/dist/esm/run/flows/url/summary.js +139 -667
  194. package/dist/esm/run/flows/url/summary.js.map +1 -1
  195. package/dist/esm/run/flows/url/types.js +31 -1
  196. package/dist/esm/run/flows/url/types.js.map +1 -1
  197. package/dist/esm/run/flows/url/video-only.js +68 -0
  198. package/dist/esm/run/flows/url/video-only.js.map +1 -0
  199. package/dist/esm/run/help.js +15 -5
  200. package/dist/esm/run/help.js.map +1 -1
  201. package/dist/esm/run/markdown-transforms.js +89 -0
  202. package/dist/esm/run/markdown-transforms.js.map +1 -0
  203. package/dist/esm/run/markdown.js +1 -96
  204. package/dist/esm/run/markdown.js.map +1 -1
  205. package/dist/esm/run/run-config.js +1 -1
  206. package/dist/esm/run/run-config.js.map +1 -1
  207. package/dist/esm/run/run-env.js +28 -7
  208. package/dist/esm/run/run-env.js.map +1 -1
  209. package/dist/esm/run/run-models.js +35 -5
  210. package/dist/esm/run/run-models.js.map +1 -1
  211. package/dist/esm/run/run-settings-parse.js +77 -0
  212. package/dist/esm/run/run-settings-parse.js.map +1 -0
  213. package/dist/esm/run/run-settings.js +7 -72
  214. package/dist/esm/run/run-settings.js.map +1 -1
  215. package/dist/esm/run/runner-contexts.js +122 -0
  216. package/dist/esm/run/runner-contexts.js.map +1 -0
  217. package/dist/esm/run/runner-execution.js +82 -0
  218. package/dist/esm/run/runner-execution.js.map +1 -0
  219. package/dist/esm/run/runner-flags.js +97 -0
  220. package/dist/esm/run/runner-flags.js.map +1 -0
  221. package/dist/esm/run/runner-plan.js +369 -0
  222. package/dist/esm/run/runner-plan.js.map +1 -0
  223. package/dist/esm/run/runner-setup.js +109 -0
  224. package/dist/esm/run/runner-setup.js.map +1 -0
  225. package/dist/esm/run/runner-slides.js +49 -0
  226. package/dist/esm/run/runner-slides.js.map +1 -0
  227. package/dist/esm/run/runner.js +53 -692
  228. package/dist/esm/run/runner.js.map +1 -1
  229. package/dist/esm/run/slides-cli.js +3 -2
  230. package/dist/esm/run/slides-cli.js.map +1 -1
  231. package/dist/esm/run/slides-render.js +5 -2
  232. package/dist/esm/run/slides-render.js.map +1 -1
  233. package/dist/esm/run/stdin-temp-file.js +1 -1
  234. package/dist/esm/run/stdin-temp-file.js.map +1 -1
  235. package/dist/esm/run/streaming.js +2 -0
  236. package/dist/esm/run/streaming.js.map +1 -1
  237. package/dist/esm/run/summary-engine.js +50 -10
  238. package/dist/esm/run/summary-engine.js.map +1 -1
  239. package/dist/esm/run/summary-llm.js +2 -1
  240. package/dist/esm/run/summary-llm.js.map +1 -1
  241. package/dist/esm/run/terminal.js +4 -1
  242. package/dist/esm/run/terminal.js.map +1 -1
  243. package/dist/esm/run/transcriber-cli.js +1 -1
  244. package/dist/esm/run/transcriber-cli.js.map +1 -1
  245. package/dist/esm/shared/slides-text.js +2 -0
  246. package/dist/esm/shared/slides-text.js.map +1 -0
  247. package/dist/esm/slides/download.js +242 -0
  248. package/dist/esm/slides/download.js.map +1 -0
  249. package/dist/esm/slides/extract-finalize.js +98 -0
  250. package/dist/esm/slides/extract-finalize.js.map +1 -0
  251. package/dist/esm/slides/extract.js +105 -1685
  252. package/dist/esm/slides/extract.js.map +1 -1
  253. package/dist/esm/slides/frame-extraction.js +372 -0
  254. package/dist/esm/slides/frame-extraction.js.map +1 -0
  255. package/dist/esm/slides/index.js +2 -1
  256. package/dist/esm/slides/index.js.map +1 -1
  257. package/dist/esm/slides/ingest.js +194 -0
  258. package/dist/esm/slides/ingest.js.map +1 -0
  259. package/dist/esm/slides/ocr.js +91 -0
  260. package/dist/esm/slides/ocr.js.map +1 -0
  261. package/dist/esm/slides/process.js +218 -0
  262. package/dist/esm/slides/process.js.map +1 -0
  263. package/dist/esm/slides/scene-detection.js +387 -0
  264. package/dist/esm/slides/scene-detection.js.map +1 -0
  265. package/dist/esm/slides/source-id.js +42 -0
  266. package/dist/esm/slides/source-id.js.map +1 -0
  267. package/dist/esm/slides/source.js +80 -0
  268. package/dist/esm/slides/source.js.map +1 -0
  269. package/dist/esm/tty/progress/fetch-html.js +6 -0
  270. package/dist/esm/tty/progress/fetch-html.js.map +1 -1
  271. package/dist/esm/tty/progress/transcript-state.js +202 -0
  272. package/dist/esm/tty/progress/transcript-state.js.map +1 -0
  273. package/dist/esm/tty/progress/transcript.js +43 -194
  274. package/dist/esm/tty/progress/transcript.js.map +1 -1
  275. package/dist/esm/tty/spinner.js +17 -3
  276. package/dist/esm/tty/spinner.js.map +1 -1
  277. package/dist/esm/tty/website-progress.js +16 -3
  278. package/dist/esm/tty/website-progress.js.map +1 -1
  279. package/dist/esm/version.js +1 -1
  280. package/dist/types/cache-keys.d.ts +44 -0
  281. package/dist/types/cache-slides-cleanup.d.ts +1 -0
  282. package/dist/types/cache.d.ts +2 -10
  283. package/dist/types/config/env.d.ts +6 -0
  284. package/dist/types/config/model.d.ts +3 -0
  285. package/dist/types/config/parse-helpers.d.ts +7 -0
  286. package/dist/types/config/read.d.ts +2 -0
  287. package/dist/types/config/sections.d.ts +34 -0
  288. package/dist/types/config/types.d.ts +238 -0
  289. package/dist/types/config.d.ts +3 -209
  290. package/dist/types/costs.d.ts +1 -1
  291. package/dist/types/daemon/agent-model.d.ts +40 -0
  292. package/dist/types/daemon/agent-request.d.ts +14 -0
  293. package/dist/types/daemon/chat.d.ts +3 -1
  294. package/dist/types/daemon/config.d.ts +13 -2
  295. package/dist/types/daemon/env-snapshot.d.ts +1 -1
  296. package/dist/types/daemon/flow-context.d.ts +2 -2
  297. package/dist/types/daemon/models.d.ts +3 -0
  298. package/dist/types/daemon/schtasks.d.ts +2 -1
  299. package/dist/types/daemon/server-admin-routes.d.ts +22 -0
  300. package/dist/types/daemon/server-agent-route.d.ts +9 -0
  301. package/dist/types/daemon/server-http.d.ts +10 -0
  302. package/dist/types/daemon/server-session-routes.d.ts +11 -0
  303. package/dist/types/daemon/server-session.d.ts +52 -0
  304. package/dist/types/daemon/server-sse.d.ts +12 -0
  305. package/dist/types/daemon/server-summarize-execution.d.ts +70 -0
  306. package/dist/types/daemon/server-summarize-request.d.ts +36 -0
  307. package/dist/types/daemon/server.d.ts +4 -4
  308. package/dist/types/daemon/summarize.d.ts +1 -1
  309. package/dist/types/daemon/windows-container.d.ts +1 -0
  310. package/dist/types/llm/cli-exec.d.ts +13 -0
  311. package/dist/types/llm/cli-provider-output.d.ts +25 -0
  312. package/dist/types/llm/generate-text-document.d.ts +35 -0
  313. package/dist/types/llm/generate-text-shared.d.ts +32 -0
  314. package/dist/types/llm/generate-text-stream.d.ts +27 -0
  315. package/dist/types/llm/generate-text.d.ts +7 -26
  316. package/dist/types/llm/github-models.d.ts +5 -0
  317. package/dist/types/llm/html-to-markdown.d.ts +2 -1
  318. package/dist/types/llm/model-id.d.ts +1 -1
  319. package/dist/types/llm/provider-capabilities.d.ts +2 -0
  320. package/dist/types/llm/provider-profile.d.ts +31 -0
  321. package/dist/types/llm/providers/google.d.ts +6 -0
  322. package/dist/types/llm/providers/models.d.ts +5 -0
  323. package/dist/types/llm/providers/openai.d.ts +9 -5
  324. package/dist/types/llm/providers/types.d.ts +1 -0
  325. package/dist/types/llm/transcript-to-markdown.d.ts +2 -1
  326. package/dist/types/model-auto-cli.d.ts +15 -0
  327. package/dist/types/model-auto-rules.d.ts +7 -0
  328. package/dist/types/model-auto.d.ts +5 -7
  329. package/dist/types/model-spec.d.ts +4 -3
  330. package/dist/types/run/attachments.d.ts +3 -2
  331. package/dist/types/run/bird/exec.d.ts +1 -0
  332. package/dist/types/run/bird/media.d.ts +3 -0
  333. package/dist/types/run/bird/parse.d.ts +3 -0
  334. package/dist/types/run/bird/types.d.ts +18 -0
  335. package/dist/types/run/bird.d.ts +12 -17
  336. package/dist/types/run/cache-state.d.ts +1 -1
  337. package/dist/types/run/constants.d.ts +2 -1
  338. package/dist/types/run/env.d.ts +6 -0
  339. package/dist/types/run/finish-line-labels.d.ts +29 -0
  340. package/dist/types/run/finish-line-lengths.d.ts +23 -0
  341. package/dist/types/run/finish-line.d.ts +2 -52
  342. package/dist/types/run/flows/asset/extract.d.ts +1 -1
  343. package/dist/types/run/flows/asset/input.d.ts +1 -1
  344. package/dist/types/run/flows/asset/preprocess.d.ts +1 -1
  345. package/dist/types/run/flows/asset/summary-attempts.d.ts +24 -0
  346. package/dist/types/run/flows/asset/summary.d.ts +16 -2
  347. package/dist/types/run/flows/url/extraction-session.d.ts +22 -0
  348. package/dist/types/run/flows/url/fetch-options.d.ts +29 -0
  349. package/dist/types/run/flows/url/flow-progress.d.ts +43 -0
  350. package/dist/types/run/flows/url/markdown.d.ts +2 -2
  351. package/dist/types/run/flows/url/progress-status-state.d.ts +17 -0
  352. package/dist/types/run/flows/url/progress-status.d.ts +17 -0
  353. package/dist/types/run/flows/url/slides-output-render.d.ts +43 -0
  354. package/dist/types/run/flows/url/slides-output-state.d.ts +21 -0
  355. package/dist/types/run/flows/url/slides-output-stream.d.ts +18 -0
  356. package/dist/types/run/flows/url/slides-output.d.ts +2 -17
  357. package/dist/types/run/flows/url/slides-session.d.ts +26 -0
  358. package/dist/types/run/flows/url/slides-text-markdown.d.ts +46 -0
  359. package/dist/types/run/flows/url/slides-text-transcript.d.ts +36 -0
  360. package/dist/types/run/flows/url/slides-text-types.d.ts +8 -0
  361. package/dist/types/run/flows/url/slides-text.d.ts +3 -87
  362. package/dist/types/run/flows/url/summary-finish.d.ts +16 -0
  363. package/dist/types/run/flows/url/summary-json.d.ts +51 -0
  364. package/dist/types/run/flows/url/summary-prompt.d.ts +22 -0
  365. package/dist/types/run/flows/url/summary-resolution.d.ts +31 -0
  366. package/dist/types/run/flows/url/summary-timestamps.d.ts +11 -0
  367. package/dist/types/run/flows/url/types.d.ts +20 -0
  368. package/dist/types/run/flows/url/video-only.d.ts +27 -0
  369. package/dist/types/run/markdown-transforms.d.ts +3 -0
  370. package/dist/types/run/run-context.d.ts +4 -0
  371. package/dist/types/run/run-env.d.ts +4 -0
  372. package/dist/types/run/run-settings-parse.d.ts +5 -0
  373. package/dist/types/run/run-settings.d.ts +2 -1
  374. package/dist/types/run/runner-contexts.d.ts +37 -0
  375. package/dist/types/run/runner-execution.d.ts +58 -0
  376. package/dist/types/run/runner-flags.d.ts +41 -0
  377. package/dist/types/run/runner-plan.d.ts +19 -0
  378. package/dist/types/run/runner-setup.d.ts +21 -0
  379. package/dist/types/run/runner-slides.d.ts +9 -0
  380. package/dist/types/run/streaming.d.ts +2 -1
  381. package/dist/types/run/summary-engine.d.ts +8 -4
  382. package/dist/types/run/summary-llm.d.ts +5 -3
  383. package/dist/types/run/terminal.d.ts +2 -0
  384. package/dist/types/run/types.d.ts +3 -2
  385. package/dist/types/shared/slides-text.d.ts +1 -0
  386. package/dist/types/slides/download.d.ts +29 -0
  387. package/dist/types/slides/extract-finalize.d.ts +57 -0
  388. package/dist/types/slides/extract.d.ts +2 -13
  389. package/dist/types/slides/frame-extraction.d.ts +38 -0
  390. package/dist/types/slides/index.d.ts +2 -1
  391. package/dist/types/slides/ingest.d.ts +47 -0
  392. package/dist/types/slides/ocr.d.ts +5 -0
  393. package/dist/types/slides/process.d.ts +22 -0
  394. package/dist/types/slides/scene-detection.d.ts +75 -0
  395. package/dist/types/slides/source-id.d.ts +2 -0
  396. package/dist/types/slides/source.d.ts +8 -0
  397. package/dist/types/tty/progress/fetch-html.d.ts +1 -0
  398. package/dist/types/tty/progress/transcript-state.d.ts +27 -0
  399. package/dist/types/tty/progress/transcript.d.ts +1 -0
  400. package/dist/types/tty/spinner.d.ts +1 -0
  401. package/dist/types/version.d.ts +1 -1
  402. package/docs/README.md +1 -1
  403. package/docs/_config.yml +1 -0
  404. package/docs/agent.md +3 -2
  405. package/docs/assets/site.css +145 -2
  406. package/docs/cache.md +2 -1
  407. package/docs/chrome-extension.md +19 -5
  408. package/docs/cli.md +26 -8
  409. package/docs/config.md +30 -9
  410. package/docs/extract-only.md +2 -2
  411. package/docs/firecrawl.md +2 -1
  412. package/docs/index.html +5 -0
  413. package/docs/llm.md +34 -5
  414. package/docs/manual-tests.md +3 -0
  415. package/docs/media.md +9 -1
  416. package/docs/model-auto.md +2 -2
  417. package/docs/model-provider-resolution.md +57 -0
  418. package/docs/releasing.md +9 -12
  419. package/docs/site/docs/chrome-extension.html +1 -1
  420. package/docs/site/index.html +5 -0
  421. package/docs/slides-rendering-flow.md +46 -0
  422. package/docs/slides.md +5 -5
  423. package/docs/smoketest.md +1 -1
  424. package/docs/transcript-provider-flow.md +73 -0
  425. package/docs/website.md +3 -1
  426. package/docs/youtube.md +4 -2
  427. package/package.json +17 -16
@@ -0,0 +1,17 @@
1
+ export type UrlProgressStatusState = {
2
+ summaryText: string | null;
3
+ slidesActive: boolean;
4
+ slidesText: string | null;
5
+ lastSlideRenderAt: number;
6
+ };
7
+ export declare function createUrlProgressStatusState(): UrlProgressStatusState;
8
+ export declare function applySummaryText(state: UrlProgressStatusState, text: string): {
9
+ renderText: string | null;
10
+ };
11
+ export declare function applySlidesText(state: UrlProgressStatusState, text: string, nowMs: number): {
12
+ renderText: string | null;
13
+ };
14
+ export declare function clearSlidesText(state: UrlProgressStatusState): {
15
+ renderText: string | null;
16
+ summaryText: string | null;
17
+ };
@@ -0,0 +1,17 @@
1
+ import type { OscProgressController } from "../../../tty/osc-progress.js";
2
+ export declare function createUrlProgressStatus({ enabled, spinner, oscProgress, now, }: {
3
+ enabled: boolean;
4
+ spinner: {
5
+ setText: (text: string) => void;
6
+ refresh?: () => void;
7
+ };
8
+ oscProgress: OscProgressController;
9
+ now?: () => number;
10
+ }): {
11
+ setSummary(text: string, oscLabel?: string | null): void;
12
+ setSlides(text: string, percent?: number | null): void;
13
+ clearSlides(): void;
14
+ isSlidesActive(): boolean;
15
+ getSummaryText(): string | null;
16
+ getSlidesText(): string | null;
17
+ };
@@ -0,0 +1,43 @@
1
+ import type { SlideExtractionResult } from "../../../slides/index.js";
2
+ import type { SlideState } from "./slides-output-state.js";
3
+ export declare function createInlineSlidesUnsupportedNotifier({ inlineNoticeEnabled, flags, io, richTty, clearProgressForStdout, restoreProgressAfterStdout, }: {
4
+ inlineNoticeEnabled: boolean;
5
+ flags: {
6
+ plain: boolean;
7
+ };
8
+ io: {
9
+ stderr: NodeJS.WritableStream;
10
+ };
11
+ richTty: boolean;
12
+ clearProgressForStdout: () => void;
13
+ restoreProgressAfterStdout?: (() => void) | null;
14
+ }): (nextSlides: SlideExtractionResult) => void;
15
+ export declare function createSlidesTerminalRenderer({ io, flags, inlineEnabled, richTty, inlineRenderer, labelTheme, clearProgressForStdout, restoreProgressAfterStdout, onProgressText, getOrder, getSlide, getSourceUrl, waitForSlide, initialSlides, }: {
16
+ io: {
17
+ stdout: NodeJS.WritableStream;
18
+ };
19
+ flags: {
20
+ slidesDebug?: boolean;
21
+ };
22
+ inlineEnabled: boolean;
23
+ richTty: boolean;
24
+ inlineRenderer: {
25
+ renderSlide: (slide: {
26
+ index: number;
27
+ timestamp: number;
28
+ imagePath: string;
29
+ }, title?: string | null) => Promise<boolean>;
30
+ } | null;
31
+ labelTheme: {
32
+ dim: (text: string) => string;
33
+ heading: (text: string) => string;
34
+ };
35
+ clearProgressForStdout: () => void;
36
+ restoreProgressAfterStdout?: (() => void) | null;
37
+ onProgressText?: ((text: string) => void) | null;
38
+ getOrder: () => number[];
39
+ getSlide: (index: number) => SlideState | null;
40
+ getSourceUrl: () => string;
41
+ waitForSlide: (index: number) => Promise<SlideState | null>;
42
+ initialSlides: SlideExtractionResult | null | undefined;
43
+ }): (index: number, title?: string | null) => Promise<void>;
@@ -0,0 +1,21 @@
1
+ import type { SlideImage, SlideExtractionResult } from "../../../slides/index.js";
2
+ import type { SlideTimelineEntry } from "./slides-text.js";
3
+ export type SlideState = SlideTimelineEntry & {
4
+ imagePath: string | null;
5
+ };
6
+ export declare function createSlideOutputState(initialSlides: SlideExtractionResult | null | undefined): {
7
+ setMeta: (meta: {
8
+ slidesDir?: string | null;
9
+ sourceUrl?: string | null;
10
+ }) => void;
11
+ updateFromSlides: (slides: SlideExtractionResult) => void;
12
+ updateSlideEntry: (slide: SlideImage) => void;
13
+ waitForSlide: (index: number) => Promise<SlideState | null>;
14
+ markDone: () => void;
15
+ getSlides: () => SlideState[];
16
+ getSlide: (index: number) => SlideState | null;
17
+ getOrder: () => number[];
18
+ getSlidesDir: () => string;
19
+ getSourceUrl: () => string;
20
+ isDone: () => boolean;
21
+ };
@@ -0,0 +1,18 @@
1
+ import { type StreamOutputMode } from "../../stream-output.js";
2
+ import type { SummaryStreamHandler } from "../../summary-engine.js";
3
+ export declare function createSlidesSummaryStreamHandler({ stdout, env, envForRun, plain, outputMode, clearProgressForStdout, restoreProgressAfterStdout, renderSlide, getSlideIndexOrder, getSlideMeta, debugWrite, }: {
4
+ stdout: NodeJS.WritableStream;
5
+ env: Record<string, string | undefined>;
6
+ envForRun: Record<string, string | undefined>;
7
+ plain: boolean;
8
+ outputMode: StreamOutputMode;
9
+ clearProgressForStdout: () => void;
10
+ restoreProgressAfterStdout?: (() => void) | null;
11
+ renderSlide: (index: number, title?: string | null) => Promise<void>;
12
+ getSlideIndexOrder: () => number[];
13
+ getSlideMeta?: ((index: number) => {
14
+ total: number;
15
+ timestamp: number | null;
16
+ }) | null;
17
+ debugWrite?: ((text: string) => void) | null;
18
+ }): SummaryStreamHandler;
@@ -1,8 +1,9 @@
1
1
  import type { ExtractedLinkContent } from "../../../content/index.js";
2
2
  import type { SummaryLength } from "../../../shared/contracts.js";
3
3
  import type { SlideExtractionResult, SlideImage, SlideSourceKind } from "../../../slides/index.js";
4
+ import type { StreamOutputMode } from "../../stream-output.js";
4
5
  import type { SummaryStreamHandler } from "../../summary-engine.js";
5
- import { type StreamOutputMode } from "../../stream-output.js";
6
+ export { createSlidesSummaryStreamHandler } from "./slides-output-stream.js";
6
7
  export type SlidesTerminalOutput = {
7
8
  onSlidesExtracted: (slides: SlideExtractionResult) => void;
8
9
  onSlidesDone: (result: {
@@ -48,19 +49,3 @@ export declare function createSlidesTerminalOutput({ io, flags, extracted, slide
48
49
  restoreProgressAfterStdout?: (() => void) | null;
49
50
  onProgressText?: ((text: string) => void) | null;
50
51
  }): SlidesTerminalOutput | null;
51
- export declare function createSlidesSummaryStreamHandler({ stdout, env, envForRun, plain, outputMode, clearProgressForStdout, restoreProgressAfterStdout, renderSlide, getSlideIndexOrder, getSlideMeta, debugWrite, }: {
52
- stdout: NodeJS.WritableStream;
53
- env: Record<string, string | undefined>;
54
- envForRun: Record<string, string | undefined>;
55
- plain: boolean;
56
- outputMode: StreamOutputMode;
57
- clearProgressForStdout: () => void;
58
- restoreProgressAfterStdout?: (() => void) | null;
59
- renderSlide: (index: number, title?: string | null) => Promise<void>;
60
- getSlideIndexOrder: () => number[];
61
- getSlideMeta?: ((index: number) => {
62
- total: number;
63
- timestamp: number | null;
64
- }) | null;
65
- debugWrite?: ((text: string) => void) | null;
66
- }): SummaryStreamHandler;
@@ -0,0 +1,26 @@
1
+ import type { ExtractedLinkContent } from "../../../content/index.js";
2
+ import { type SlideExtractionResult } from "../../../slides/index.js";
3
+ import { type SlidesTerminalOutput } from "./slides-output.js";
4
+ import { type UrlFlowContext } from "./types.js";
5
+ type ProgressStatusLike = {
6
+ clearSlides: () => void;
7
+ setSlides: (text: string, percent?: number | null) => void;
8
+ };
9
+ export type UrlSlidesSession = {
10
+ getSlidesExtracted: () => SlideExtractionResult | null;
11
+ runSlidesExtraction: () => Promise<SlideExtractionResult | null>;
12
+ slidesOutput: SlidesTerminalOutput | null;
13
+ slidesTimelinePromise: Promise<SlideExtractionResult | null> | null;
14
+ setExtracted: (value: ExtractedLinkContent) => void;
15
+ };
16
+ export declare function createUrlSlidesSession({ ctx, url, extracted: initialExtracted, cacheStore, progressStatus, renderStatus, renderStatusFromText, updateSummaryProgress, }: {
17
+ ctx: UrlFlowContext;
18
+ url: string;
19
+ extracted: ExtractedLinkContent;
20
+ cacheStore: UrlFlowContext["cache"]["store"] | null;
21
+ progressStatus: ProgressStatusLike;
22
+ renderStatus: (label: string, detail?: string) => string;
23
+ renderStatusFromText: (text: string) => string;
24
+ updateSummaryProgress: () => void;
25
+ }): UrlSlidesSession;
26
+ export {};
@@ -0,0 +1,46 @@
1
+ import type { SummaryLength } from "../../../shared/contracts.js";
2
+ import type { SlideTimelineEntry } from "./slides-text-types.js";
3
+ export declare const splitSlideTitleFromText: ({ text, }: {
4
+ text: string;
5
+ slideIndex: number;
6
+ total: number;
7
+ }) => {
8
+ title: string | null;
9
+ body: string;
10
+ };
11
+ export declare const ensureSlideTitleLine: ({ text, slide, total, }: {
12
+ text: string;
13
+ slide: SlideTimelineEntry;
14
+ total: number;
15
+ }) => string;
16
+ export declare function findSlidesSectionStart(markdown: string): number | null;
17
+ export declare function splitSummaryFromSlides(markdown: string): {
18
+ summary: string;
19
+ slidesSection: string | null;
20
+ };
21
+ export declare function parseSlideSummariesFromMarkdown(markdown: string): Map<number, string>;
22
+ export declare function extractSlideMarkers(markdown: string): number[];
23
+ export declare function normalizeSummarySlideHeadings(markdown: string): string;
24
+ export declare function buildSlideTextFallback({ slides, transcriptTimedText, lengthArg, }: {
25
+ slides: SlideTimelineEntry[];
26
+ transcriptTimedText: string | null | undefined;
27
+ lengthArg: {
28
+ kind: "preset";
29
+ preset: SummaryLength;
30
+ } | {
31
+ kind: "chars";
32
+ maxCharacters: number;
33
+ };
34
+ }): Map<number, string>;
35
+ export declare function coerceSummaryWithSlides({ markdown, slides, transcriptTimedText, lengthArg, }: {
36
+ markdown: string;
37
+ slides: SlideTimelineEntry[];
38
+ transcriptTimedText?: string | null;
39
+ lengthArg: {
40
+ kind: "preset";
41
+ preset: SummaryLength;
42
+ } | {
43
+ kind: "chars";
44
+ maxCharacters: number;
45
+ };
46
+ }): string;
@@ -0,0 +1,36 @@
1
+ import type { SummaryLength } from "../../../shared/contracts.js";
2
+ import type { SlideTimelineEntry, TranscriptSegment } from "./slides-text-types.js";
3
+ export declare function interleaveSlidesIntoTranscript({ transcriptTimedText, slides, }: {
4
+ transcriptTimedText: string;
5
+ slides: SlideTimelineEntry[];
6
+ }): string;
7
+ export declare function parseTranscriptTimedText(input: string | null | undefined): TranscriptSegment[];
8
+ export declare function formatTimestamp(seconds: number): string;
9
+ export declare function resolveSlideTextBudget({ lengthArg, slideCount, }: {
10
+ lengthArg: {
11
+ kind: "preset";
12
+ preset: SummaryLength;
13
+ } | {
14
+ kind: "chars";
15
+ maxCharacters: number;
16
+ };
17
+ slideCount: number;
18
+ }): number;
19
+ export declare function resolveSlideWindowSeconds({ lengthArg, }: {
20
+ lengthArg: {
21
+ kind: "preset";
22
+ preset: SummaryLength;
23
+ } | {
24
+ kind: "chars";
25
+ maxCharacters: number;
26
+ };
27
+ }): number;
28
+ export declare function getTranscriptTextForSlide({ slide, nextSlide, segments, budget, windowSeconds, }: {
29
+ slide: SlideTimelineEntry;
30
+ nextSlide: SlideTimelineEntry | null;
31
+ segments: TranscriptSegment[];
32
+ budget: number;
33
+ windowSeconds: number;
34
+ }): string;
35
+ export declare function formatOsc8Link(label: string, url: string | null, enabled: boolean): string;
36
+ export declare function buildTimestampUrl(sourceUrl: string, seconds: number): string | null;
@@ -0,0 +1,8 @@
1
+ export type TranscriptSegment = {
2
+ startSeconds: number;
3
+ text: string;
4
+ };
5
+ export type SlideTimelineEntry = {
6
+ index: number;
7
+ timestamp: number;
8
+ };
@@ -1,87 +1,3 @@
1
- import type { SummaryLength } from "../../../shared/contracts.js";
2
- export type TranscriptSegment = {
3
- startSeconds: number;
4
- text: string;
5
- };
6
- export type SlideTimelineEntry = {
7
- index: number;
8
- timestamp: number;
9
- };
10
- export declare const splitSlideTitleFromText: ({ text, }: {
11
- text: string;
12
- slideIndex: number;
13
- total: number;
14
- }) => {
15
- title: string | null;
16
- body: string;
17
- };
18
- export declare const ensureSlideTitleLine: ({ text, slide, total, }: {
19
- text: string;
20
- slide: SlideTimelineEntry;
21
- total: number;
22
- }) => string;
23
- export declare function findSlidesSectionStart(markdown: string): number | null;
24
- export declare function splitSummaryFromSlides(markdown: string): {
25
- summary: string;
26
- slidesSection: string | null;
27
- };
28
- export declare function parseSlideSummariesFromMarkdown(markdown: string): Map<number, string>;
29
- export declare function extractSlideMarkers(markdown: string): number[];
30
- export declare function normalizeSummarySlideHeadings(markdown: string): string;
31
- export declare function buildSlideTextFallback({ slides, transcriptTimedText, lengthArg, }: {
32
- slides: SlideTimelineEntry[];
33
- transcriptTimedText: string | null | undefined;
34
- lengthArg: {
35
- kind: "preset";
36
- preset: SummaryLength;
37
- } | {
38
- kind: "chars";
39
- maxCharacters: number;
40
- };
41
- }): Map<number, string>;
42
- export declare function coerceSummaryWithSlides({ markdown, slides, transcriptTimedText, lengthArg, }: {
43
- markdown: string;
44
- slides: SlideTimelineEntry[];
45
- transcriptTimedText?: string | null;
46
- lengthArg: {
47
- kind: "preset";
48
- preset: SummaryLength;
49
- } | {
50
- kind: "chars";
51
- maxCharacters: number;
52
- };
53
- }): string;
54
- export declare function interleaveSlidesIntoTranscript({ transcriptTimedText, slides, }: {
55
- transcriptTimedText: string;
56
- slides: SlideTimelineEntry[];
57
- }): string;
58
- export declare function parseTranscriptTimedText(input: string | null | undefined): TranscriptSegment[];
59
- export declare function formatTimestamp(seconds: number): string;
60
- export declare function resolveSlideTextBudget({ lengthArg, slideCount, }: {
61
- lengthArg: {
62
- kind: "preset";
63
- preset: SummaryLength;
64
- } | {
65
- kind: "chars";
66
- maxCharacters: number;
67
- };
68
- slideCount: number;
69
- }): number;
70
- export declare function resolveSlideWindowSeconds({ lengthArg, }: {
71
- lengthArg: {
72
- kind: "preset";
73
- preset: SummaryLength;
74
- } | {
75
- kind: "chars";
76
- maxCharacters: number;
77
- };
78
- }): number;
79
- export declare function getTranscriptTextForSlide({ slide, nextSlide, segments, budget, windowSeconds, }: {
80
- slide: SlideTimelineEntry;
81
- nextSlide: SlideTimelineEntry | null;
82
- segments: TranscriptSegment[];
83
- budget: number;
84
- windowSeconds: number;
85
- }): string;
86
- export declare function formatOsc8Link(label: string, url: string | null, enabled: boolean): string;
87
- export declare function buildTimestampUrl(sourceUrl: string, seconds: number): string | null;
1
+ export type { SlideTimelineEntry, TranscriptSegment } from "./slides-text-types.js";
2
+ export { buildSlideTextFallback, coerceSummaryWithSlides, ensureSlideTitleLine, extractSlideMarkers, findSlidesSectionStart, normalizeSummarySlideHeadings, parseSlideSummariesFromMarkdown, splitSlideTitleFromText, splitSummaryFromSlides, } from "./slides-text-markdown.js";
3
+ export { buildTimestampUrl, formatOsc8Link, formatTimestamp, getTranscriptTextForSlide, interleaveSlidesIntoTranscript, parseTranscriptTimedText, resolveSlideTextBudget, resolveSlideWindowSeconds, } from "./slides-text-transcript.js";
@@ -0,0 +1,16 @@
1
+ import type { ExtractedLinkContent } from "../../../content/index.js";
2
+ import type { ModelAttempt } from "../../types.js";
3
+ import type { UrlFlowContext } from "./types.js";
4
+ export declare function buildFinishExtras({ extracted, metricsDetailed, transcriptionCostLabel, }: {
5
+ extracted: ExtractedLinkContent;
6
+ metricsDetailed: boolean;
7
+ transcriptionCostLabel: string | null;
8
+ }): string[] | null;
9
+ export declare function pickModelForFinishLine(llmCalls: UrlFlowContext["model"]["llmCalls"], fallback: string | null): string | null;
10
+ export declare function buildModelMetaFromAttempt(attempt: ModelAttempt): {
11
+ provider: "cli";
12
+ canonical: string;
13
+ } | {
14
+ provider: import("../../../llm/model-id.js").LlmProvider;
15
+ canonical: string;
16
+ };
@@ -0,0 +1,51 @@
1
+ import type { UrlFlowContext } from "./types.js";
2
+ export declare function buildUrlJsonInput(options: {
3
+ flags: UrlFlowContext["flags"];
4
+ url: string;
5
+ effectiveMarkdownMode: "off" | "auto" | "llm" | "readability";
6
+ modelLabel: string | null;
7
+ }): {
8
+ kind: "url";
9
+ url: string;
10
+ timeoutMs: number;
11
+ youtube: "auto" | "web" | "apify" | "yt-dlp" | "no-auto";
12
+ firecrawl: "auto" | "off" | "always";
13
+ format: "text" | "markdown";
14
+ markdown: "auto" | "off" | "llm" | "readability";
15
+ timestamps: boolean;
16
+ length: {
17
+ kind: "preset";
18
+ preset: "short" | "medium" | "long" | "xl" | "xxl";
19
+ maxCharacters?: undefined;
20
+ } | {
21
+ kind: "chars";
22
+ maxCharacters: number;
23
+ preset?: undefined;
24
+ };
25
+ maxOutputTokens: number | null;
26
+ model: string | null;
27
+ language: {
28
+ mode: "auto";
29
+ } | {
30
+ mode: "fixed";
31
+ tag: string;
32
+ label: string;
33
+ };
34
+ };
35
+ export declare function buildUrlJsonEnv(apiStatus: {
36
+ xaiApiKey: string | null;
37
+ apiKey: string | null;
38
+ openrouterApiKey: string | null;
39
+ apifyToken: string | null;
40
+ firecrawlConfigured: boolean;
41
+ googleConfigured: boolean;
42
+ anthropicConfigured: boolean;
43
+ }): {
44
+ hasXaiKey: boolean;
45
+ hasOpenAIKey: boolean;
46
+ hasOpenRouterKey: boolean;
47
+ hasApifyToken: boolean;
48
+ hasFirecrawlKey: boolean;
49
+ hasGoogleKey: boolean;
50
+ hasAnthropicKey: boolean;
51
+ };
@@ -0,0 +1,22 @@
1
+ import type { ExtractedLinkContent } from "../../../content/index.js";
2
+ import type { UrlFlowContext } from "./types.js";
3
+ type SlidesResult = Awaited<ReturnType<typeof import("../../../slides/index.js").extractSlidesForSource>>;
4
+ export declare function shouldBypassShortContentSummary({ extracted, lengthArg, forceSummary, maxOutputTokensArg, json, countTokens, }: {
5
+ extracted: ExtractedLinkContent;
6
+ lengthArg: UrlFlowContext["flags"]["lengthArg"];
7
+ forceSummary: boolean;
8
+ maxOutputTokensArg: number | null;
9
+ json: boolean;
10
+ countTokens: (value: string) => number;
11
+ }): boolean;
12
+ export declare function buildUrlPrompt({ extracted, outputLanguage, lengthArg, promptOverride, lengthInstruction, languageInstruction, slides, buildSummaryTimestampLimitInstruction, }: {
13
+ extracted: ExtractedLinkContent;
14
+ outputLanguage: UrlFlowContext["flags"]["outputLanguage"];
15
+ lengthArg: UrlFlowContext["flags"]["lengthArg"];
16
+ promptOverride?: string | null;
17
+ lengthInstruction?: string | null;
18
+ languageInstruction?: string | null;
19
+ slides?: SlidesResult | null;
20
+ buildSummaryTimestampLimitInstruction: (extracted: ExtractedLinkContent) => string | null;
21
+ }): string;
22
+ export {};
@@ -0,0 +1,31 @@
1
+ import type { ExtractedLinkContent } from "../../../content/index.js";
2
+ import type { ModelAttempt } from "../../types.js";
3
+ import type { SlidesTerminalOutput } from "./slides-output.js";
4
+ import { buildModelMetaFromAttempt } from "./summary-finish.js";
5
+ import type { UrlFlowContext } from "./types.js";
6
+ type SlidesResult = Awaited<ReturnType<typeof import("../../../slides/index.js").extractSlidesForSource>>;
7
+ type SummaryResolutionUseExtracted = {
8
+ kind: "use-extracted";
9
+ footerLabel: string;
10
+ verboseMessage: string | null;
11
+ };
12
+ type SummaryResolutionSummary = {
13
+ kind: "summary";
14
+ normalizedSummary: string;
15
+ summaryAlreadyPrinted: boolean;
16
+ summaryFromCache: boolean;
17
+ usedAttempt: ModelAttempt;
18
+ modelMeta: ReturnType<typeof buildModelMetaFromAttempt>;
19
+ maxOutputTokensForCall: number | null;
20
+ };
21
+ export type UrlSummaryResolution = SummaryResolutionUseExtracted | SummaryResolutionSummary;
22
+ export declare function resolveUrlSummaryExecution({ ctx, url, extracted, prompt, onModelChosen, slides, slidesOutput, }: {
23
+ ctx: UrlFlowContext;
24
+ url: string;
25
+ extracted: ExtractedLinkContent;
26
+ prompt: string;
27
+ onModelChosen?: ((modelId: string) => void) | null;
28
+ slides?: SlidesResult | null;
29
+ slidesOutput?: SlidesTerminalOutput | null;
30
+ }): Promise<UrlSummaryResolution>;
31
+ export {};
@@ -0,0 +1,11 @@
1
+ import type { ExtractedLinkContent } from "../../../content/index.js";
2
+ export declare function buildSummaryTimestampLimitInstruction(extracted: Pick<ExtractedLinkContent, "transcriptSegments" | "transcriptTimedText" | "mediaDurationSeconds">): string | null;
3
+ export declare function resolveSummaryTimestampUpperBound(extracted: Pick<ExtractedLinkContent, "transcriptSegments" | "transcriptTimedText" | "mediaDurationSeconds">): number | null;
4
+ export declare function shouldSanitizeSummaryKeyMoments({ extracted, hasSlides, }: {
5
+ extracted: Pick<ExtractedLinkContent, "transcriptSegments" | "transcriptTimedText" | "mediaDurationSeconds">;
6
+ hasSlides: boolean;
7
+ }): boolean;
8
+ export declare function sanitizeSummaryKeyMoments({ markdown, maxSeconds, }: {
9
+ markdown: string;
10
+ maxSeconds: number | null;
11
+ }): string;
@@ -80,6 +80,7 @@ export type UrlFlowModel = {
80
80
  apiStatus: {
81
81
  xaiApiKey: string | null;
82
82
  apiKey: string | null;
83
+ nvidiaApiKey: string | null;
83
84
  openrouterApiKey: string | null;
84
85
  openrouterConfigured: boolean;
85
86
  googleApiKey: string | null;
@@ -88,12 +89,14 @@ export type UrlFlowModel = {
88
89
  anthropicConfigured: boolean;
89
90
  providerBaseUrls: {
90
91
  openai: string | null;
92
+ nvidia: string | null;
91
93
  anthropic: string | null;
92
94
  google: string | null;
93
95
  xai: string | null;
94
96
  };
95
97
  zaiApiKey: string | null;
96
98
  zaiBaseUrl: string;
99
+ nvidiaBaseUrl: string;
97
100
  firecrawlConfigured: boolean;
98
101
  firecrawlApiKey: string | null;
99
102
  apifyToken: string | null;
@@ -101,6 +104,7 @@ export type UrlFlowModel = {
101
104
  ytDlpCookiesFromBrowser: string | null;
102
105
  falApiKey: string | null;
103
106
  groqApiKey: string | null;
107
+ assemblyaiApiKey: string | null;
104
108
  openaiTranscriptionKey: string | null;
105
109
  };
106
110
  summaryEngine: ReturnType<typeof createSummaryEngine>;
@@ -138,6 +142,22 @@ export type UrlFlowHooks = {
138
142
  buildReport: () => Promise<RunMetricsReport>;
139
143
  estimateCostUsd: () => Promise<number | null>;
140
144
  };
145
+ export type UrlFlowEventHooks = Pick<UrlFlowHooks, "onModelChosen" | "onExtracted" | "onSlidesExtracted" | "onSlidesProgress" | "onSlidesDone" | "onSlideChunk" | "onLinkPreviewProgress" | "onSummaryCached">;
146
+ export type UrlFlowRuntimeHooks = Pick<UrlFlowHooks, "setTranscriptionCost" | "summarizeAsset" | "writeViaFooter" | "clearProgressForStdout" | "restoreProgressAfterStdout" | "setClearProgressBeforeStdout" | "clearProgressIfCurrent" | "buildReport" | "estimateCostUsd">;
147
+ export declare function createUrlFlowHooks(options: {
148
+ runtime: UrlFlowRuntimeHooks;
149
+ events?: Partial<UrlFlowEventHooks>;
150
+ }): UrlFlowHooks;
151
+ export declare function composeUrlFlowHooks(base: UrlFlowHooks, overrides: Partial<UrlFlowHooks>): UrlFlowHooks;
152
+ export declare function createUrlFlowContext(options: {
153
+ io: UrlFlowIo;
154
+ flags: UrlFlowFlags;
155
+ model: UrlFlowModel;
156
+ cache: CacheState;
157
+ mediaCache: MediaCache | null;
158
+ runtimeHooks: UrlFlowRuntimeHooks;
159
+ eventHooks?: Partial<UrlFlowEventHooks>;
160
+ }): UrlFlowContext;
141
161
  /**
142
162
  * Wiring struct for `runUrlFlow`.
143
163
  * CLI runner populates the full surface; daemon uses a smaller subset (no TTY/progress/footer),
@@ -0,0 +1,27 @@
1
+ import { type ExtractedLinkContent } from "../../../content/index.js";
2
+ import type { SlideExtractionResult } from "../../../slides/index.js";
3
+ import { type UrlExtractionUi } from "./extract.js";
4
+ import type { UrlFlowContext } from "./types.js";
5
+ export type VideoOnlyResult = {
6
+ handled: true;
7
+ } | {
8
+ handled: false;
9
+ extracted: ExtractedLinkContent;
10
+ extractionUi: UrlExtractionUi;
11
+ };
12
+ export declare function handleVideoOnlyExtractedContent({ ctx, extracted, extractionUi, isYoutubeUrl, fetchWithCache, runSlidesExtraction, renderStatus, renderStatusWithMeta, spinner, styleDim, updateSummaryProgress, accent, }: {
13
+ ctx: UrlFlowContext;
14
+ extracted: ExtractedLinkContent;
15
+ extractionUi: UrlExtractionUi;
16
+ isYoutubeUrl: boolean;
17
+ fetchWithCache: (url: string) => Promise<ExtractedLinkContent>;
18
+ runSlidesExtraction: () => Promise<SlideExtractionResult | null>;
19
+ renderStatus: (label: string, detail?: string) => string;
20
+ renderStatusWithMeta: (label: string, meta: string, suffix?: string) => string;
21
+ spinner: {
22
+ setText: (text: string) => void;
23
+ };
24
+ styleDim: (text: string) => string;
25
+ updateSummaryProgress: () => void;
26
+ accent: (text: string) => string;
27
+ }): Promise<VideoOnlyResult>;
@@ -0,0 +1,3 @@
1
+ export declare function materializeInlineMarkdownLinks(markdown: string): string;
2
+ export declare function collapseExtraBlankLines(markdown: string): string;
3
+ export declare function inlineReferenceStyleLinks(markdown: string): string;
@@ -12,12 +12,15 @@ export declare function resolveRunContextState({ env, envForRun, programOpts, la
12
12
  openrouterApiKey: string | null;
13
13
  openrouterConfigured: boolean;
14
14
  groqApiKey: string | null;
15
+ assemblyaiApiKey: string | null;
15
16
  openaiTranscriptionKey: string | null;
16
17
  xaiApiKey: string | null;
17
18
  googleApiKey: string | null;
18
19
  anthropicApiKey: string | null;
19
20
  zaiApiKey: string | null;
20
21
  zaiBaseUrl: string;
22
+ nvidiaApiKey: string | null;
23
+ nvidiaBaseUrl: string;
21
24
  firecrawlApiKey: string | null;
22
25
  firecrawlConfigured: boolean;
23
26
  googleConfigured: boolean;
@@ -30,6 +33,7 @@ export declare function resolveRunContextState({ env, envForRun, programOpts, la
30
33
  envForAuto: Record<string, string | undefined>;
31
34
  providerBaseUrls: {
32
35
  openai: string | null;
36
+ nvidia: string | null;
33
37
  anthropic: string | null;
34
38
  google: string | null;
35
39
  xai: string | null;
@@ -4,12 +4,15 @@ export type EnvState = {
4
4
  openrouterApiKey: string | null;
5
5
  openrouterConfigured: boolean;
6
6
  groqApiKey: string | null;
7
+ assemblyaiApiKey: string | null;
7
8
  openaiTranscriptionKey: string | null;
8
9
  xaiApiKey: string | null;
9
10
  googleApiKey: string | null;
10
11
  anthropicApiKey: string | null;
11
12
  zaiApiKey: string | null;
12
13
  zaiBaseUrl: string;
14
+ nvidiaApiKey: string | null;
15
+ nvidiaBaseUrl: string;
13
16
  firecrawlApiKey: string | null;
14
17
  firecrawlConfigured: boolean;
15
18
  googleConfigured: boolean;
@@ -22,6 +25,7 @@ export type EnvState = {
22
25
  envForAuto: Record<string, string | undefined>;
23
26
  providerBaseUrls: {
24
27
  openai: string | null;
28
+ nvidia: string | null;
25
29
  anthropic: string | null;
26
30
  google: string | null;
27
31
  xai: string | null;
@@ -0,0 +1,5 @@
1
+ import type { CliProvider } from "../config.js";
2
+ export declare const parseOptionalSetting: <T>(raw: unknown, parse: (value: string) => T, strict: boolean) => T | null;
3
+ export declare const parseOptionalBoolean: (raw: unknown, strict: boolean, label?: string) => boolean | null;
4
+ export declare const parseCliProvider: (raw: string) => CliProvider | null;
5
+ export declare const parseOptionalCliProviderOrder: (raw: unknown, strict: boolean) => CliProvider[] | null;