@steipete/summarize 0.11.1 → 0.12.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 (361) hide show
  1. package/CHANGELOG.md +38 -1
  2. package/README.md +63 -17
  3. package/dist/cli.js +1 -1
  4. package/dist/esm/cache-keys.js +75 -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 +14 -91
  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 +50 -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 +438 -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/daemon/agent-model.js +235 -0
  27. package/dist/esm/daemon/agent-model.js.map +1 -0
  28. package/dist/esm/daemon/agent-request.js +87 -0
  29. package/dist/esm/daemon/agent-request.js.map +1 -0
  30. package/dist/esm/daemon/agent.js +42 -243
  31. package/dist/esm/daemon/agent.js.map +1 -1
  32. package/dist/esm/daemon/chat.js +69 -8
  33. package/dist/esm/daemon/chat.js.map +1 -1
  34. package/dist/esm/daemon/cli.js +21 -4
  35. package/dist/esm/daemon/cli.js.map +1 -1
  36. package/dist/esm/daemon/config.js +65 -9
  37. package/dist/esm/daemon/config.js.map +1 -1
  38. package/dist/esm/daemon/env-snapshot.js +4 -0
  39. package/dist/esm/daemon/env-snapshot.js.map +1 -1
  40. package/dist/esm/daemon/flow-context.js +8 -1
  41. package/dist/esm/daemon/flow-context.js.map +1 -1
  42. package/dist/esm/daemon/models.js +16 -0
  43. package/dist/esm/daemon/models.js.map +1 -1
  44. package/dist/esm/daemon/process-registry.js.map +1 -1
  45. package/dist/esm/daemon/server-admin-routes.js +134 -0
  46. package/dist/esm/daemon/server-admin-routes.js.map +1 -0
  47. package/dist/esm/daemon/server-agent-route.js +104 -0
  48. package/dist/esm/daemon/server-agent-route.js.map +1 -0
  49. package/dist/esm/daemon/server-http.js +89 -0
  50. package/dist/esm/daemon/server-http.js.map +1 -0
  51. package/dist/esm/daemon/server-session-routes.js +209 -0
  52. package/dist/esm/daemon/server-session-routes.js.map +1 -0
  53. package/dist/esm/daemon/server-session.js +118 -0
  54. package/dist/esm/daemon/server-session.js.map +1 -0
  55. package/dist/esm/daemon/server-sse.js +28 -0
  56. package/dist/esm/daemon/server-sse.js.map +1 -0
  57. package/dist/esm/daemon/server-summarize-execution.js +357 -0
  58. package/dist/esm/daemon/server-summarize-execution.js.map +1 -0
  59. package/dist/esm/daemon/server-summarize-request.js +119 -0
  60. package/dist/esm/daemon/server-summarize-request.js.map +1 -0
  61. package/dist/esm/daemon/server.js +72 -1121
  62. package/dist/esm/daemon/server.js.map +1 -1
  63. package/dist/esm/daemon/summarize-progress.js +1 -1
  64. package/dist/esm/daemon/summarize-progress.js.map +1 -1
  65. package/dist/esm/daemon/summarize.js.map +1 -1
  66. package/dist/esm/llm/cli-exec.js +75 -0
  67. package/dist/esm/llm/cli-exec.js.map +1 -0
  68. package/dist/esm/llm/cli-provider-output.js +191 -0
  69. package/dist/esm/llm/cli-provider-output.js.map +1 -0
  70. package/dist/esm/llm/cli.js +3 -212
  71. package/dist/esm/llm/cli.js.map +1 -1
  72. package/dist/esm/llm/generate-text-document.js +109 -0
  73. package/dist/esm/llm/generate-text-document.js.map +1 -0
  74. package/dist/esm/llm/generate-text-shared.js +102 -0
  75. package/dist/esm/llm/generate-text-shared.js.map +1 -0
  76. package/dist/esm/llm/generate-text-stream.js +258 -0
  77. package/dist/esm/llm/generate-text-stream.js.map +1 -0
  78. package/dist/esm/llm/generate-text.js +145 -480
  79. package/dist/esm/llm/generate-text.js.map +1 -1
  80. package/dist/esm/llm/model-id.js +21 -20
  81. package/dist/esm/llm/model-id.js.map +1 -1
  82. package/dist/esm/llm/provider-capabilities.js +2 -0
  83. package/dist/esm/llm/provider-capabilities.js.map +1 -0
  84. package/dist/esm/llm/provider-profile.js +142 -0
  85. package/dist/esm/llm/provider-profile.js.map +1 -0
  86. package/dist/esm/llm/providers/google.js +42 -5
  87. package/dist/esm/llm/providers/google.js.map +1 -1
  88. package/dist/esm/llm/providers/models.js +13 -0
  89. package/dist/esm/llm/providers/models.js.map +1 -1
  90. package/dist/esm/llm/providers/openai.js.map +1 -1
  91. package/dist/esm/llm/transcript-to-markdown.js.map +1 -1
  92. package/dist/esm/model-auto-cli.js +89 -0
  93. package/dist/esm/model-auto-cli.js.map +1 -0
  94. package/dist/esm/model-auto-rules.js +86 -0
  95. package/dist/esm/model-auto-rules.js.map +1 -0
  96. package/dist/esm/model-auto.js +10 -245
  97. package/dist/esm/model-auto.js.map +1 -1
  98. package/dist/esm/model-spec.js +23 -17
  99. package/dist/esm/model-spec.js.map +1 -1
  100. package/dist/esm/refresh-free.js +1 -1
  101. package/dist/esm/refresh-free.js.map +1 -1
  102. package/dist/esm/run/attachments.js +1 -1
  103. package/dist/esm/run/attachments.js.map +1 -1
  104. package/dist/esm/run/bird/exec.js +23 -0
  105. package/dist/esm/run/bird/exec.js.map +1 -0
  106. package/dist/esm/run/bird/media.js +171 -0
  107. package/dist/esm/run/bird/media.js.map +1 -0
  108. package/dist/esm/run/bird/parse.js +82 -0
  109. package/dist/esm/run/bird/parse.js.map +1 -0
  110. package/dist/esm/run/bird/types.js +2 -0
  111. package/dist/esm/run/bird/types.js.map +1 -0
  112. package/dist/esm/run/bird.js +86 -144
  113. package/dist/esm/run/bird.js.map +1 -1
  114. package/dist/esm/run/cache-state.js.map +1 -1
  115. package/dist/esm/run/constants.js +2 -1
  116. package/dist/esm/run/constants.js.map +1 -1
  117. package/dist/esm/run/env.js +3 -0
  118. package/dist/esm/run/env.js.map +1 -1
  119. package/dist/esm/run/finish-line-labels.js +76 -0
  120. package/dist/esm/run/finish-line-labels.js.map +1 -0
  121. package/dist/esm/run/finish-line-lengths.js +96 -0
  122. package/dist/esm/run/finish-line-lengths.js.map +1 -0
  123. package/dist/esm/run/finish-line.js +3 -169
  124. package/dist/esm/run/finish-line.js.map +1 -1
  125. package/dist/esm/run/flows/asset/extract.js.map +1 -1
  126. package/dist/esm/run/flows/asset/input.js +1 -1
  127. package/dist/esm/run/flows/asset/input.js.map +1 -1
  128. package/dist/esm/run/flows/asset/media.js +19 -10
  129. package/dist/esm/run/flows/asset/media.js.map +1 -1
  130. package/dist/esm/run/flows/asset/output.js.map +1 -1
  131. package/dist/esm/run/flows/asset/preprocess.js.map +1 -1
  132. package/dist/esm/run/flows/asset/summary-attempts.js +109 -0
  133. package/dist/esm/run/flows/asset/summary-attempts.js.map +1 -0
  134. package/dist/esm/run/flows/asset/summary.js +19 -107
  135. package/dist/esm/run/flows/asset/summary.js.map +1 -1
  136. package/dist/esm/run/flows/url/extract.js +7 -4
  137. package/dist/esm/run/flows/url/extract.js.map +1 -1
  138. package/dist/esm/run/flows/url/flow-progress.js +119 -0
  139. package/dist/esm/run/flows/url/flow-progress.js.map +1 -0
  140. package/dist/esm/run/flows/url/flow.js +22 -93
  141. package/dist/esm/run/flows/url/flow.js.map +1 -1
  142. package/dist/esm/run/flows/url/markdown.js +21 -3
  143. package/dist/esm/run/flows/url/markdown.js.map +1 -1
  144. package/dist/esm/run/flows/url/progress-status.js +56 -0
  145. package/dist/esm/run/flows/url/progress-status.js.map +1 -0
  146. package/dist/esm/run/flows/url/slides-output-render.js +78 -0
  147. package/dist/esm/run/flows/url/slides-output-render.js.map +1 -0
  148. package/dist/esm/run/flows/url/slides-output-state.js +86 -0
  149. package/dist/esm/run/flows/url/slides-output-state.js.map +1 -0
  150. package/dist/esm/run/flows/url/slides-output-stream.js +271 -0
  151. package/dist/esm/run/flows/url/slides-output-stream.js.map +1 -0
  152. package/dist/esm/run/flows/url/slides-output.js +29 -422
  153. package/dist/esm/run/flows/url/slides-output.js.map +1 -1
  154. package/dist/esm/run/flows/url/slides-text-markdown.js +431 -0
  155. package/dist/esm/run/flows/url/slides-text-markdown.js.map +1 -0
  156. package/dist/esm/run/flows/url/slides-text-transcript.js +199 -0
  157. package/dist/esm/run/flows/url/slides-text-transcript.js.map +1 -0
  158. package/dist/esm/run/flows/url/slides-text-types.js +2 -0
  159. package/dist/esm/run/flows/url/slides-text-types.js.map +1 -0
  160. package/dist/esm/run/flows/url/slides-text.js +2 -627
  161. package/dist/esm/run/flows/url/slides-text.js.map +1 -1
  162. package/dist/esm/run/flows/url/summary-finish.js +34 -0
  163. package/dist/esm/run/flows/url/summary-finish.js.map +1 -0
  164. package/dist/esm/run/flows/url/summary-json.js +32 -0
  165. package/dist/esm/run/flows/url/summary-json.js.map +1 -0
  166. package/dist/esm/run/flows/url/summary-prompt.js +147 -0
  167. package/dist/esm/run/flows/url/summary-prompt.js.map +1 -0
  168. package/dist/esm/run/flows/url/summary-resolution.js +320 -0
  169. package/dist/esm/run/flows/url/summary-resolution.js.map +1 -0
  170. package/dist/esm/run/flows/url/summary-timestamps.js +136 -0
  171. package/dist/esm/run/flows/url/summary-timestamps.js.map +1 -0
  172. package/dist/esm/run/flows/url/summary.js +49 -543
  173. package/dist/esm/run/flows/url/summary.js.map +1 -1
  174. package/dist/esm/run/help.js +9 -3
  175. package/dist/esm/run/help.js.map +1 -1
  176. package/dist/esm/run/markdown-transforms.js +89 -0
  177. package/dist/esm/run/markdown-transforms.js.map +1 -0
  178. package/dist/esm/run/markdown.js +1 -96
  179. package/dist/esm/run/markdown.js.map +1 -1
  180. package/dist/esm/run/run-env.js +28 -7
  181. package/dist/esm/run/run-env.js.map +1 -1
  182. package/dist/esm/run/run-settings-parse.js +73 -0
  183. package/dist/esm/run/run-settings-parse.js.map +1 -0
  184. package/dist/esm/run/run-settings.js +1 -72
  185. package/dist/esm/run/run-settings.js.map +1 -1
  186. package/dist/esm/run/runner-contexts.js +116 -0
  187. package/dist/esm/run/runner-contexts.js.map +1 -0
  188. package/dist/esm/run/runner-execution.js +62 -0
  189. package/dist/esm/run/runner-execution.js.map +1 -0
  190. package/dist/esm/run/runner-flags.js +97 -0
  191. package/dist/esm/run/runner-flags.js.map +1 -0
  192. package/dist/esm/run/runner-setup.js +109 -0
  193. package/dist/esm/run/runner-setup.js.map +1 -0
  194. package/dist/esm/run/runner-slides.js +38 -0
  195. package/dist/esm/run/runner-slides.js.map +1 -0
  196. package/dist/esm/run/runner.js +99 -390
  197. package/dist/esm/run/runner.js.map +1 -1
  198. package/dist/esm/run/slides-render.js +5 -2
  199. package/dist/esm/run/slides-render.js.map +1 -1
  200. package/dist/esm/run/stdin-temp-file.js +1 -1
  201. package/dist/esm/run/stdin-temp-file.js.map +1 -1
  202. package/dist/esm/run/streaming.js +1 -0
  203. package/dist/esm/run/streaming.js.map +1 -1
  204. package/dist/esm/run/summary-engine.js +26 -10
  205. package/dist/esm/run/summary-engine.js.map +1 -1
  206. package/dist/esm/run/summary-llm.js +2 -1
  207. package/dist/esm/run/summary-llm.js.map +1 -1
  208. package/dist/esm/run/terminal.js +4 -1
  209. package/dist/esm/run/terminal.js.map +1 -1
  210. package/dist/esm/run/transcriber-cli.js +1 -1
  211. package/dist/esm/run/transcriber-cli.js.map +1 -1
  212. package/dist/esm/slides/download.js +242 -0
  213. package/dist/esm/slides/download.js.map +1 -0
  214. package/dist/esm/slides/extract-finalize.js +98 -0
  215. package/dist/esm/slides/extract-finalize.js.map +1 -0
  216. package/dist/esm/slides/extract.js +64 -1621
  217. package/dist/esm/slides/extract.js.map +1 -1
  218. package/dist/esm/slides/frame-extraction.js +372 -0
  219. package/dist/esm/slides/frame-extraction.js.map +1 -0
  220. package/dist/esm/slides/ingest.js +167 -0
  221. package/dist/esm/slides/ingest.js.map +1 -0
  222. package/dist/esm/slides/ocr.js +91 -0
  223. package/dist/esm/slides/ocr.js.map +1 -0
  224. package/dist/esm/slides/process.js +218 -0
  225. package/dist/esm/slides/process.js.map +1 -0
  226. package/dist/esm/slides/scene-detection.js +387 -0
  227. package/dist/esm/slides/scene-detection.js.map +1 -0
  228. package/dist/esm/slides/source-id.js +42 -0
  229. package/dist/esm/slides/source-id.js.map +1 -0
  230. package/dist/esm/tty/progress/fetch-html.js.map +1 -1
  231. package/dist/esm/tty/progress/transcript.js +21 -8
  232. package/dist/esm/tty/progress/transcript.js.map +1 -1
  233. package/dist/esm/tty/spinner.js +8 -2
  234. package/dist/esm/tty/spinner.js.map +1 -1
  235. package/dist/esm/tty/website-progress.js +5 -3
  236. package/dist/esm/tty/website-progress.js.map +1 -1
  237. package/dist/esm/version.js +1 -1
  238. package/dist/types/cache-keys.d.ts +44 -0
  239. package/dist/types/cache-slides-cleanup.d.ts +1 -0
  240. package/dist/types/cache.d.ts +1 -9
  241. package/dist/types/config/env.d.ts +6 -0
  242. package/dist/types/config/model.d.ts +3 -0
  243. package/dist/types/config/parse-helpers.d.ts +7 -0
  244. package/dist/types/config/read.d.ts +2 -0
  245. package/dist/types/config/sections.d.ts +33 -0
  246. package/dist/types/config/types.d.ts +230 -0
  247. package/dist/types/config.d.ts +3 -209
  248. package/dist/types/costs.d.ts +1 -1
  249. package/dist/types/daemon/agent-model.d.ts +40 -0
  250. package/dist/types/daemon/agent-request.d.ts +14 -0
  251. package/dist/types/daemon/chat.d.ts +3 -1
  252. package/dist/types/daemon/config.d.ts +13 -2
  253. package/dist/types/daemon/env-snapshot.d.ts +1 -1
  254. package/dist/types/daemon/flow-context.d.ts +1 -1
  255. package/dist/types/daemon/models.d.ts +1 -0
  256. package/dist/types/daemon/server-admin-routes.d.ts +22 -0
  257. package/dist/types/daemon/server-agent-route.d.ts +9 -0
  258. package/dist/types/daemon/server-http.d.ts +10 -0
  259. package/dist/types/daemon/server-session-routes.d.ts +11 -0
  260. package/dist/types/daemon/server-session.d.ts +52 -0
  261. package/dist/types/daemon/server-sse.d.ts +12 -0
  262. package/dist/types/daemon/server-summarize-execution.d.ts +70 -0
  263. package/dist/types/daemon/server-summarize-request.d.ts +36 -0
  264. package/dist/types/daemon/server.d.ts +3 -4
  265. package/dist/types/daemon/summarize.d.ts +1 -1
  266. package/dist/types/llm/cli-exec.d.ts +13 -0
  267. package/dist/types/llm/cli-provider-output.d.ts +16 -0
  268. package/dist/types/llm/generate-text-document.d.ts +34 -0
  269. package/dist/types/llm/generate-text-shared.d.ts +25 -0
  270. package/dist/types/llm/generate-text-stream.d.ts +26 -0
  271. package/dist/types/llm/generate-text.d.ts +6 -26
  272. package/dist/types/llm/html-to-markdown.d.ts +1 -1
  273. package/dist/types/llm/model-id.d.ts +1 -1
  274. package/dist/types/llm/provider-capabilities.d.ts +2 -0
  275. package/dist/types/llm/provider-profile.d.ts +31 -0
  276. package/dist/types/llm/providers/google.d.ts +6 -0
  277. package/dist/types/llm/providers/models.d.ts +5 -0
  278. package/dist/types/llm/transcript-to-markdown.d.ts +1 -1
  279. package/dist/types/model-auto-cli.d.ts +15 -0
  280. package/dist/types/model-auto-rules.d.ts +7 -0
  281. package/dist/types/model-auto.d.ts +5 -7
  282. package/dist/types/model-spec.d.ts +2 -2
  283. package/dist/types/run/attachments.d.ts +2 -2
  284. package/dist/types/run/bird/exec.d.ts +1 -0
  285. package/dist/types/run/bird/media.d.ts +3 -0
  286. package/dist/types/run/bird/parse.d.ts +3 -0
  287. package/dist/types/run/bird/types.d.ts +18 -0
  288. package/dist/types/run/bird.d.ts +12 -17
  289. package/dist/types/run/cache-state.d.ts +1 -1
  290. package/dist/types/run/constants.d.ts +2 -1
  291. package/dist/types/run/env.d.ts +1 -0
  292. package/dist/types/run/finish-line-labels.d.ts +29 -0
  293. package/dist/types/run/finish-line-lengths.d.ts +23 -0
  294. package/dist/types/run/finish-line.d.ts +2 -52
  295. package/dist/types/run/flows/asset/extract.d.ts +1 -1
  296. package/dist/types/run/flows/asset/input.d.ts +1 -1
  297. package/dist/types/run/flows/asset/preprocess.d.ts +1 -1
  298. package/dist/types/run/flows/asset/summary-attempts.d.ts +24 -0
  299. package/dist/types/run/flows/asset/summary.d.ts +6 -2
  300. package/dist/types/run/flows/url/flow-progress.d.ts +41 -0
  301. package/dist/types/run/flows/url/markdown.d.ts +2 -2
  302. package/dist/types/run/flows/url/progress-status.d.ts +16 -0
  303. package/dist/types/run/flows/url/slides-output-render.d.ts +43 -0
  304. package/dist/types/run/flows/url/slides-output-state.d.ts +21 -0
  305. package/dist/types/run/flows/url/slides-output-stream.d.ts +18 -0
  306. package/dist/types/run/flows/url/slides-output.d.ts +2 -17
  307. package/dist/types/run/flows/url/slides-text-markdown.d.ts +46 -0
  308. package/dist/types/run/flows/url/slides-text-transcript.d.ts +36 -0
  309. package/dist/types/run/flows/url/slides-text-types.d.ts +8 -0
  310. package/dist/types/run/flows/url/slides-text.d.ts +3 -87
  311. package/dist/types/run/flows/url/summary-finish.d.ts +16 -0
  312. package/dist/types/run/flows/url/summary-json.d.ts +51 -0
  313. package/dist/types/run/flows/url/summary-prompt.d.ts +22 -0
  314. package/dist/types/run/flows/url/summary-resolution.d.ts +31 -0
  315. package/dist/types/run/flows/url/summary-timestamps.d.ts +11 -0
  316. package/dist/types/run/flows/url/types.d.ts +4 -0
  317. package/dist/types/run/markdown-transforms.d.ts +3 -0
  318. package/dist/types/run/run-context.d.ts +4 -0
  319. package/dist/types/run/run-env.d.ts +4 -0
  320. package/dist/types/run/run-settings-parse.d.ts +5 -0
  321. package/dist/types/run/runner-contexts.d.ts +62 -0
  322. package/dist/types/run/runner-execution.d.ts +57 -0
  323. package/dist/types/run/runner-flags.d.ts +41 -0
  324. package/dist/types/run/runner-setup.d.ts +21 -0
  325. package/dist/types/run/runner-slides.d.ts +8 -0
  326. package/dist/types/run/streaming.d.ts +1 -1
  327. package/dist/types/run/summary-engine.d.ts +8 -4
  328. package/dist/types/run/summary-llm.d.ts +4 -3
  329. package/dist/types/run/terminal.d.ts +2 -0
  330. package/dist/types/run/types.d.ts +2 -2
  331. package/dist/types/slides/download.d.ts +29 -0
  332. package/dist/types/slides/extract-finalize.d.ts +57 -0
  333. package/dist/types/slides/extract.d.ts +1 -7
  334. package/dist/types/slides/frame-extraction.d.ts +38 -0
  335. package/dist/types/slides/ingest.d.ts +47 -0
  336. package/dist/types/slides/ocr.d.ts +5 -0
  337. package/dist/types/slides/process.d.ts +22 -0
  338. package/dist/types/slides/scene-detection.d.ts +75 -0
  339. package/dist/types/slides/source-id.d.ts +2 -0
  340. package/dist/types/version.d.ts +1 -1
  341. package/docs/_config.yml +1 -0
  342. package/docs/agent.md +3 -2
  343. package/docs/assets/site.css +134 -2
  344. package/docs/cache.md +2 -1
  345. package/docs/chrome-extension.md +12 -4
  346. package/docs/cli.md +2 -2
  347. package/docs/config.md +11 -4
  348. package/docs/index.html +5 -0
  349. package/docs/llm.md +5 -2
  350. package/docs/manual-tests.md +3 -0
  351. package/docs/media.md +3 -1
  352. package/docs/model-auto.md +2 -2
  353. package/docs/model-provider-resolution.md +57 -0
  354. package/docs/site/index.html +5 -0
  355. package/docs/slides-rendering-flow.md +46 -0
  356. package/docs/slides.md +5 -5
  357. package/docs/smoketest.md +1 -1
  358. package/docs/transcript-provider-flow.md +66 -0
  359. package/docs/website.md +1 -0
  360. package/docs/youtube.md +4 -2
  361. package/package.json +11 -11
@@ -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>;
@@ -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;
@@ -0,0 +1,62 @@
1
+ import type { CacheState } from "../cache.js";
2
+ import type { MediaCache } from "../content/index.js";
3
+ import type { SummarizeAssetArgs } from "./flows/asset/summary.js";
4
+ import type { UrlFlowContext } from "./flows/url/types.js";
5
+ type SummarizeMediaFile = typeof import("./flows/asset/media.js").summarizeMediaFile;
6
+ export declare function createRunnerFlowContexts(options: {
7
+ summarizeMediaFileImpl: SummarizeMediaFile;
8
+ cacheState: CacheState;
9
+ mediaCache: MediaCache | null;
10
+ io: UrlFlowContext["io"];
11
+ flags: UrlFlowContext["flags"];
12
+ model: UrlFlowContext["model"];
13
+ setTranscriptionCost: UrlFlowContext["hooks"]["setTranscriptionCost"];
14
+ writeViaFooter: UrlFlowContext["hooks"]["writeViaFooter"];
15
+ clearProgressForStdout: UrlFlowContext["hooks"]["clearProgressForStdout"];
16
+ restoreProgressAfterStdout: UrlFlowContext["hooks"]["restoreProgressAfterStdout"];
17
+ setClearProgressBeforeStdout: UrlFlowContext["hooks"]["setClearProgressBeforeStdout"];
18
+ clearProgressIfCurrent: UrlFlowContext["hooks"]["clearProgressIfCurrent"];
19
+ buildReport: UrlFlowContext["hooks"]["buildReport"];
20
+ estimateCostUsd: UrlFlowContext["hooks"]["estimateCostUsd"];
21
+ }): {
22
+ summarizeAsset: (args: SummarizeAssetArgs) => Promise<void>;
23
+ assetInputContext: {
24
+ env: Record<string, string | undefined>;
25
+ envForRun: Record<string, string | undefined>;
26
+ stderr: NodeJS.WritableStream;
27
+ progressEnabled: boolean;
28
+ timeoutMs: number;
29
+ trackedFetch: typeof fetch;
30
+ summarizeAsset: (args: SummarizeAssetArgs) => Promise<void>;
31
+ summarizeMediaFile: (args: Parameters<SummarizeMediaFile>[1]) => Promise<void>;
32
+ setClearProgressBeforeStdout: (fn: (() => undefined | (() => void)) | null) => void;
33
+ clearProgressIfCurrent: (fn: () => void) => void;
34
+ };
35
+ urlFlowContext: {
36
+ io: import("./flows/url/types.js").UrlFlowIo;
37
+ flags: import("./flows/url/types.js").UrlFlowFlags;
38
+ model: import("./flows/url/types.js").UrlFlowModel;
39
+ cache: CacheState;
40
+ mediaCache: MediaCache | null;
41
+ hooks: {
42
+ onModelChosen: null;
43
+ onExtracted: null;
44
+ onSlidesExtracted: null;
45
+ onSlidesProgress: null;
46
+ onLinkPreviewProgress: null;
47
+ onSummaryCached: null;
48
+ setTranscriptionCost: (costUsd: number | null, label: string | null) => void;
49
+ summarizeAsset: (args: SummarizeAssetArgs) => Promise<void>;
50
+ writeViaFooter: (parts: string[]) => void;
51
+ clearProgressForStdout: () => void;
52
+ restoreProgressAfterStdout: (() => void) | null | undefined;
53
+ setClearProgressBeforeStdout: (fn: (() => undefined | (() => void)) | null) => void;
54
+ clearProgressIfCurrent: (fn: () => void) => void;
55
+ buildReport: () => Promise<import("../costs.js").RunMetricsReport>;
56
+ estimateCostUsd: () => Promise<number | null>;
57
+ onSlideChunk: undefined;
58
+ onSlidesDone: null;
59
+ };
60
+ };
61
+ };
62
+ export {};
@@ -0,0 +1,57 @@
1
+ import type { InputTarget } from "../content/asset.js";
2
+ import type { RunMetricsReport } from "../costs.js";
3
+ import type { ExecFileFn } from "../markitdown.js";
4
+ import type { AssetExtractContext } from "./flows/asset/extract.js";
5
+ import type { SummarizeAssetArgs } from "./flows/asset/summary.js";
6
+ export declare function executeRunnerInput(options: {
7
+ inputTarget: InputTarget;
8
+ stdin: NodeJS.ReadableStream;
9
+ handleFileInputContext: unknown;
10
+ url: string | null;
11
+ isYoutubeUrl: boolean;
12
+ withUrlAssetContext: unknown;
13
+ extractMode: boolean;
14
+ progressEnabled: boolean;
15
+ renderSpinnerStatus: (label: string, detail?: string) => string;
16
+ renderSpinnerStatusWithModel: (label: string, modelId: string) => string;
17
+ extractAssetContext: AssetExtractContext & {
18
+ execFileImpl: ExecFileFn;
19
+ };
20
+ outputExtractedAssetContext: {
21
+ io: {
22
+ env: Record<string, string | undefined>;
23
+ envForRun: Record<string, string | undefined>;
24
+ stdout: NodeJS.WritableStream;
25
+ stderr: NodeJS.WritableStream;
26
+ };
27
+ flags: {
28
+ timeoutMs: number;
29
+ preprocessMode: "off" | "auto" | "always";
30
+ format: "text" | "markdown";
31
+ plain: boolean;
32
+ json: boolean;
33
+ metricsEnabled: boolean;
34
+ metricsDetailed: boolean;
35
+ shouldComputeReport: boolean;
36
+ runStartedAtMs: number;
37
+ verboseColor: boolean;
38
+ };
39
+ hooks: {
40
+ clearProgressForStdout: () => void;
41
+ restoreProgressAfterStdout?: (() => void) | null;
42
+ buildReport: () => Promise<RunMetricsReport>;
43
+ estimateCostUsd: () => Promise<number | null>;
44
+ };
45
+ apiStatus: {
46
+ xaiApiKey: string | null;
47
+ apiKey: string | null;
48
+ openrouterApiKey: string | null;
49
+ apifyToken: string | null;
50
+ firecrawlConfigured: boolean;
51
+ googleConfigured: boolean;
52
+ anthropicConfigured: boolean;
53
+ };
54
+ };
55
+ summarizeAsset: (args: SummarizeAssetArgs) => Promise<void>;
56
+ runUrlFlowContext: unknown;
57
+ }): Promise<void>;
@@ -0,0 +1,41 @@
1
+ import { type FirecrawlMode, type LengthArg, type MarkdownMode, type PreprocessMode, parseExtractFormat, parseMaxExtractCharactersArg, parseMetricsMode, parseStreamMode, type YoutubeMode } from "../flags.js";
2
+ type Transcriber = "auto" | "whisper" | "parakeet" | "canary";
3
+ export type RunnerFlagResolution = {
4
+ videoModeExplicitlySet: boolean;
5
+ lengthExplicitlySet: boolean;
6
+ languageExplicitlySet: boolean;
7
+ noCacheFlag: boolean;
8
+ noMediaCacheFlag: boolean;
9
+ extractMode: boolean;
10
+ json: boolean;
11
+ forceSummary: boolean;
12
+ slidesDebug: boolean;
13
+ streamMode: ReturnType<typeof parseStreamMode>;
14
+ plain: boolean;
15
+ debug: boolean;
16
+ verbose: boolean;
17
+ transcriber: Transcriber;
18
+ maxExtractCharacters: ReturnType<typeof parseMaxExtractCharactersArg>;
19
+ isYoutubeUrl: boolean;
20
+ format: ReturnType<typeof parseExtractFormat>;
21
+ youtubeMode: YoutubeMode;
22
+ lengthArg: LengthArg;
23
+ maxOutputTokensArg: number | null;
24
+ timeoutMs: number;
25
+ retries: number;
26
+ preprocessMode: PreprocessMode;
27
+ requestedFirecrawlMode: FirecrawlMode;
28
+ markdownMode: MarkdownMode;
29
+ metricsMode: ReturnType<typeof parseMetricsMode>;
30
+ metricsEnabled: boolean;
31
+ metricsDetailed: boolean;
32
+ shouldComputeReport: boolean;
33
+ markdownModeExplicitlySet: boolean;
34
+ };
35
+ export declare function resolveRunnerFlags({ normalizedArgv, programOpts, envForRun, url, }: {
36
+ normalizedArgv: readonly string[];
37
+ programOpts: Record<string, unknown>;
38
+ envForRun: Record<string, string | undefined>;
39
+ url: string | null;
40
+ }): RunnerFlagResolution;
41
+ export {};
@@ -0,0 +1,21 @@
1
+ export declare function prepareRunEnvironment(argv: string[], inputEnv: Record<string, string | undefined>): {
2
+ normalizedArgv: string[];
3
+ envForRun: Record<string, string | undefined>;
4
+ };
5
+ export declare function handleVersionFlag({ versionRequested, stdout, }: {
6
+ versionRequested: boolean;
7
+ stdout: NodeJS.WritableStream;
8
+ }): boolean;
9
+ export declare function applyWidthOverride({ width, env, }: {
10
+ width: unknown;
11
+ env: Record<string, string | undefined>;
12
+ }): void;
13
+ export declare function resolvePromptOverride({ prompt, promptFile, }: {
14
+ prompt: unknown;
15
+ promptFile: unknown;
16
+ }): Promise<string | null>;
17
+ export declare function handleCacheUtilityFlags({ normalizedArgv, envForRun, stdout, }: {
18
+ normalizedArgv: string[];
19
+ envForRun: Record<string, string | undefined>;
20
+ stdout: NodeJS.WritableStream;
21
+ }): Promise<boolean>;
@@ -0,0 +1,8 @@
1
+ import type { SummarizeConfig } from "../config.js";
2
+ import { type SlideSettings } from "../slides/index.js";
3
+ export declare function resolveRunnerSlidesSettings(options: {
4
+ normalizedArgv: string[];
5
+ programOpts: Record<string, unknown>;
6
+ config: SummarizeConfig | null;
7
+ inputKind: "url" | "file" | "stdin";
8
+ }): SlideSettings | null;
@@ -2,7 +2,7 @@ export { mergeStreamingChunk } from "../shared/streaming-merge.js";
2
2
  export declare function isGoogleStreamingUnsupportedError(error: unknown): boolean;
3
3
  export declare function isStreamingTimeoutError(error: unknown): boolean;
4
4
  export declare function canStream({ provider, prompt, transport, }: {
5
- provider: "xai" | "openai" | "google" | "anthropic" | "zai";
5
+ provider: "xai" | "openai" | "google" | "anthropic" | "zai" | "nvidia";
6
6
  prompt: {
7
7
  attachments?: Array<{
8
8
  kind: "text" | "image" | "document";
@@ -1,9 +1,9 @@
1
1
  import type { CliProvider } from "../config.js";
2
- import type { Prompt } from "../llm/prompt.js";
3
- import type { ModelAttempt, ModelMeta } from "./types.js";
4
2
  import { runCliModel } from "../llm/cli.js";
3
+ import type { Prompt } from "../llm/prompt.js";
5
4
  import { type StreamOutputMode } from "./stream-output.js";
6
5
  import { summarizeWithModelId } from "./summary-llm.js";
6
+ import type { ModelAttempt, ModelMeta } from "./types.js";
7
7
  export type SummaryEngineDeps = {
8
8
  env: Record<string, string | undefined>;
9
9
  envForRun: Record<string, string | undefined>;
@@ -24,7 +24,7 @@ export type SummaryEngineDeps = {
24
24
  resolveMaxOutputTokensForCall: (modelId: string) => Promise<number | null>;
25
25
  resolveMaxInputTokensForCall: (modelId: string) => Promise<number | null>;
26
26
  llmCalls: Array<{
27
- provider: "xai" | "openai" | "google" | "anthropic" | "zai" | "cli";
27
+ provider: "xai" | "openai" | "google" | "anthropic" | "zai" | "nvidia" | "cli";
28
28
  model: string;
29
29
  usage: Awaited<ReturnType<typeof summarizeWithModelId>>["usage"] | null;
30
30
  costUsd?: number | null;
@@ -48,6 +48,10 @@ export type SummaryEngineDeps = {
48
48
  apiKey: string | null;
49
49
  baseUrl: string;
50
50
  };
51
+ nvidia: {
52
+ apiKey: string | null;
53
+ baseUrl: string;
54
+ };
51
55
  providerBaseUrls: {
52
56
  openai: string | null;
53
57
  anthropic: string | null;
@@ -64,7 +68,7 @@ export type SummaryStreamHandler = {
64
68
  onDone?: ((finalText: string) => void | Promise<void>) | null;
65
69
  };
66
70
  export declare function createSummaryEngine(deps: SummaryEngineDeps): {
67
- applyZaiOverrides: (attempt: ModelAttempt) => ModelAttempt;
71
+ applyOpenAiGatewayOverrides: (attempt: ModelAttempt) => ModelAttempt;
68
72
  envHasKeyFor: (requiredEnv: ModelAttempt["requiredEnv"]) => boolean;
69
73
  formatMissingModelError: (attempt: ModelAttempt) => string;
70
74
  runSummaryAttempt: ({ attempt, prompt, allowStreaming, onModelChosen, cli, streamHandler, }: {
@@ -1,6 +1,6 @@
1
+ import { generateTextWithModelId } from "../llm/generate-text.js";
1
2
  import type { parseGatewayStyleModelId } from "../llm/model-id.js";
2
3
  import type { Prompt } from "../llm/prompt.js";
3
- import { generateTextWithModelId } from "../llm/generate-text.js";
4
4
  export declare function resolveModelIdForLlmCall({ parsedModel, apiKeys, fetchImpl, timeoutMs, }: {
5
5
  parsedModel: ReturnType<typeof parseGatewayStyleModelId>;
6
6
  apiKeys: {
@@ -13,7 +13,7 @@ export declare function resolveModelIdForLlmCall({ parsedModel, apiKeys, fetchIm
13
13
  note: string | null;
14
14
  forceStreamOff: boolean;
15
15
  }>;
16
- export declare function summarizeWithModelId({ modelId, prompt, maxOutputTokens, timeoutMs, fetchImpl, apiKeys, forceOpenRouter, openaiBaseUrlOverride, anthropicBaseUrlOverride, googleBaseUrlOverride, xaiBaseUrlOverride, forceChatCompletions, retries, onRetry, }: {
16
+ export declare function summarizeWithModelId({ modelId, prompt, maxOutputTokens, timeoutMs, fetchImpl, apiKeys, forceOpenRouter, openaiBaseUrlOverride, anthropicBaseUrlOverride, googleBaseUrlOverride, xaiBaseUrlOverride, zaiBaseUrlOverride, forceChatCompletions, retries, onRetry, }: {
17
17
  modelId: string;
18
18
  prompt: Prompt;
19
19
  maxOutputTokens?: number;
@@ -31,6 +31,7 @@ export declare function summarizeWithModelId({ modelId, prompt, maxOutputTokens,
31
31
  anthropicBaseUrlOverride?: string | null;
32
32
  googleBaseUrlOverride?: string | null;
33
33
  xaiBaseUrlOverride?: string | null;
34
+ zaiBaseUrlOverride?: string | null;
34
35
  forceChatCompletions?: boolean;
35
36
  retries: number;
36
37
  onRetry?: (notice: {
@@ -41,7 +42,7 @@ export declare function summarizeWithModelId({ modelId, prompt, maxOutputTokens,
41
42
  }) => void;
42
43
  }): Promise<{
43
44
  text: string;
44
- provider: "xai" | "openai" | "google" | "anthropic" | "zai";
45
+ provider: "xai" | "openai" | "google" | "anthropic" | "zai" | "nvidia";
45
46
  canonicalModelId: string;
46
47
  usage: Awaited<ReturnType<typeof generateTextWithModelId>>["usage"];
47
48
  }>;
@@ -2,5 +2,7 @@ export declare function isRichTty(stream: NodeJS.WritableStream): boolean;
2
2
  export declare function supportsColor(stream: NodeJS.WritableStream, env: Record<string, string | undefined>): boolean;
3
3
  export declare function terminalWidth(stream: NodeJS.WritableStream, env: Record<string, string | undefined>): number;
4
4
  export declare function terminalHeight(stream: NodeJS.WritableStream, env: Record<string, string | undefined>): number;
5
+ /** Default max width for markdown rendering to keep text readable on wide terminals. */
6
+ export declare const DEFAULT_MAX_RENDER_WIDTH = 120;
5
7
  export declare function markdownRenderWidth(stream: NodeJS.WritableStream, env: Record<string, string | undefined>): number;
6
8
  export declare function ansi(code: string, input: string, enabled: boolean): string;
@@ -1,5 +1,5 @@
1
1
  import type { CliProvider } from "../config.js";
2
- export type ModelAttemptRequiredEnv = "XAI_API_KEY" | "OPENAI_API_KEY" | "GEMINI_API_KEY" | "ANTHROPIC_API_KEY" | "OPENROUTER_API_KEY" | "Z_AI_API_KEY" | "CLI_CLAUDE" | "CLI_CODEX" | "CLI_GEMINI" | "CLI_AGENT";
2
+ export type ModelAttemptRequiredEnv = "XAI_API_KEY" | "OPENAI_API_KEY" | "NVIDIA_API_KEY" | "GEMINI_API_KEY" | "ANTHROPIC_API_KEY" | "OPENROUTER_API_KEY" | "Z_AI_API_KEY" | "CLI_CLAUDE" | "CLI_CODEX" | "CLI_GEMINI" | "CLI_AGENT";
3
3
  export type ModelAttempt = {
4
4
  transport: "native" | "openrouter" | "cli";
5
5
  userModelId: string;
@@ -14,7 +14,7 @@ export type ModelAttempt = {
14
14
  cliModel?: string | null;
15
15
  };
16
16
  export type ModelMeta = {
17
- provider: "xai" | "openai" | "google" | "anthropic" | "zai" | "cli";
17
+ provider: "xai" | "openai" | "google" | "anthropic" | "zai" | "nvidia" | "cli";
18
18
  canonical: string;
19
19
  };
20
20
  export type MarkdownModel = {