@steipete/summarize 0.9.0 → 0.11.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 (398) hide show
  1. package/CHANGELOG.md +121 -0
  2. package/LICENSE +1 -1
  3. package/README.md +391 -183
  4. package/dist/cli.js +1 -1
  5. package/dist/esm/cache.js +134 -64
  6. package/dist/esm/cache.js.map +1 -1
  7. package/dist/esm/cli-main.js +27 -27
  8. package/dist/esm/cli-main.js.map +1 -1
  9. package/dist/esm/cli.js +2 -2
  10. package/dist/esm/cli.js.map +1 -1
  11. package/dist/esm/config.js +396 -126
  12. package/dist/esm/config.js.map +1 -1
  13. package/dist/esm/content/asset.js +53 -50
  14. package/dist/esm/content/asset.js.map +1 -1
  15. package/dist/esm/content/index.js +1 -1
  16. package/dist/esm/content/index.js.map +1 -1
  17. package/dist/esm/costs.js +1 -1
  18. package/dist/esm/costs.js.map +1 -1
  19. package/dist/esm/daemon/agent.js +548 -0
  20. package/dist/esm/daemon/agent.js.map +1 -0
  21. package/dist/esm/daemon/auto-mode.js +3 -3
  22. package/dist/esm/daemon/auto-mode.js.map +1 -1
  23. package/dist/esm/daemon/chat.js +88 -178
  24. package/dist/esm/daemon/chat.js.map +1 -1
  25. package/dist/esm/daemon/cli-entrypoint.js +72 -0
  26. package/dist/esm/daemon/cli-entrypoint.js.map +1 -0
  27. package/dist/esm/daemon/cli.js +91 -83
  28. package/dist/esm/daemon/cli.js.map +1 -1
  29. package/dist/esm/daemon/config.js +15 -15
  30. package/dist/esm/daemon/config.js.map +1 -1
  31. package/dist/esm/daemon/constants.js +6 -6
  32. package/dist/esm/daemon/constants.js.map +1 -1
  33. package/dist/esm/daemon/env-merge.js.map +1 -1
  34. package/dist/esm/daemon/env-snapshot.js +36 -28
  35. package/dist/esm/daemon/env-snapshot.js.map +1 -1
  36. package/dist/esm/daemon/flow-context.js +86 -32
  37. package/dist/esm/daemon/flow-context.js.map +1 -1
  38. package/dist/esm/daemon/launchd.js +119 -47
  39. package/dist/esm/daemon/launchd.js.map +1 -1
  40. package/dist/esm/daemon/meta.js +5 -5
  41. package/dist/esm/daemon/meta.js.map +1 -1
  42. package/dist/esm/daemon/models.js +54 -31
  43. package/dist/esm/daemon/models.js.map +1 -1
  44. package/dist/esm/daemon/process-registry.js +206 -0
  45. package/dist/esm/daemon/process-registry.js.map +1 -0
  46. package/dist/esm/daemon/schtasks.js +96 -32
  47. package/dist/esm/daemon/schtasks.js.map +1 -1
  48. package/dist/esm/daemon/server.js +832 -158
  49. package/dist/esm/daemon/server.js.map +1 -1
  50. package/dist/esm/daemon/summarize-progress.js +11 -11
  51. package/dist/esm/daemon/summarize-progress.js.map +1 -1
  52. package/dist/esm/daemon/summarize.js +61 -32
  53. package/dist/esm/daemon/summarize.js.map +1 -1
  54. package/dist/esm/daemon/systemd.js +96 -35
  55. package/dist/esm/daemon/systemd.js.map +1 -1
  56. package/dist/esm/firecrawl.js +12 -12
  57. package/dist/esm/firecrawl.js.map +1 -1
  58. package/dist/esm/flags.js +55 -31
  59. package/dist/esm/flags.js.map +1 -1
  60. package/dist/esm/index.js +3 -3
  61. package/dist/esm/index.js.map +1 -1
  62. package/dist/esm/language.js +1 -1
  63. package/dist/esm/language.js.map +1 -1
  64. package/dist/esm/llm/cli.js +128 -64
  65. package/dist/esm/llm/cli.js.map +1 -1
  66. package/dist/esm/llm/errors.js +1 -1
  67. package/dist/esm/llm/errors.js.map +1 -1
  68. package/dist/esm/llm/generate-text.js +107 -98
  69. package/dist/esm/llm/generate-text.js.map +1 -1
  70. package/dist/esm/llm/google-models.js +17 -17
  71. package/dist/esm/llm/google-models.js.map +1 -1
  72. package/dist/esm/llm/html-to-markdown.js +3 -3
  73. package/dist/esm/llm/html-to-markdown.js.map +1 -1
  74. package/dist/esm/llm/model-id.js +38 -16
  75. package/dist/esm/llm/model-id.js.map +1 -1
  76. package/dist/esm/llm/prompt.js +5 -5
  77. package/dist/esm/llm/prompt.js.map +1 -1
  78. package/dist/esm/llm/providers/anthropic.js +33 -33
  79. package/dist/esm/llm/providers/anthropic.js.map +1 -1
  80. package/dist/esm/llm/providers/google.js +19 -19
  81. package/dist/esm/llm/providers/google.js.map +1 -1
  82. package/dist/esm/llm/providers/models.js +30 -30
  83. package/dist/esm/llm/providers/models.js.map +1 -1
  84. package/dist/esm/llm/providers/openai.js +36 -35
  85. package/dist/esm/llm/providers/openai.js.map +1 -1
  86. package/dist/esm/llm/providers/shared.js +8 -8
  87. package/dist/esm/llm/providers/shared.js.map +1 -1
  88. package/dist/esm/llm/transcript-to-markdown.js +9 -5
  89. package/dist/esm/llm/transcript-to-markdown.js.map +1 -1
  90. package/dist/esm/llm/usage.js +18 -18
  91. package/dist/esm/llm/usage.js.map +1 -1
  92. package/dist/esm/logging/daemon.js +21 -21
  93. package/dist/esm/logging/daemon.js.map +1 -1
  94. package/dist/esm/logging/ring-file.js +5 -5
  95. package/dist/esm/logging/ring-file.js.map +1 -1
  96. package/dist/esm/markitdown.js +21 -19
  97. package/dist/esm/markitdown.js.map +1 -1
  98. package/dist/esm/media-cache.js +251 -0
  99. package/dist/esm/media-cache.js.map +1 -0
  100. package/dist/esm/model-auto.js +175 -106
  101. package/dist/esm/model-auto.js.map +1 -1
  102. package/dist/esm/model-spec.js +52 -42
  103. package/dist/esm/model-spec.js.map +1 -1
  104. package/dist/esm/pricing/litellm.js +4 -4
  105. package/dist/esm/pricing/litellm.js.map +1 -1
  106. package/dist/esm/processes.js +2 -0
  107. package/dist/esm/processes.js.map +1 -0
  108. package/dist/esm/prompts/index.js +1 -1
  109. package/dist/esm/prompts/index.js.map +1 -1
  110. package/dist/esm/refresh-free.js +81 -81
  111. package/dist/esm/refresh-free.js.map +1 -1
  112. package/dist/esm/run/attachments.js +47 -44
  113. package/dist/esm/run/attachments.js.map +1 -1
  114. package/dist/esm/run/bird.js +125 -12
  115. package/dist/esm/run/bird.js.map +1 -1
  116. package/dist/esm/run/cache-state.js +7 -7
  117. package/dist/esm/run/cache-state.js.map +1 -1
  118. package/dist/esm/run/cli-fallback-state.js +45 -0
  119. package/dist/esm/run/cli-fallback-state.js.map +1 -0
  120. package/dist/esm/run/cli-preflight.js +40 -22
  121. package/dist/esm/run/cli-preflight.js.map +1 -1
  122. package/dist/esm/run/constants.js +12 -12
  123. package/dist/esm/run/constants.js.map +1 -1
  124. package/dist/esm/run/cookies/twitter.js +47 -47
  125. package/dist/esm/run/cookies/twitter.js.map +1 -1
  126. package/dist/esm/run/env.js +21 -15
  127. package/dist/esm/run/env.js.map +1 -1
  128. package/dist/esm/run/fetch-with-timeout.js +4 -4
  129. package/dist/esm/run/fetch-with-timeout.js.map +1 -1
  130. package/dist/esm/run/finish-line.js +78 -71
  131. package/dist/esm/run/finish-line.js.map +1 -1
  132. package/dist/esm/run/flows/asset/extract.js +70 -0
  133. package/dist/esm/run/flows/asset/extract.js.map +1 -0
  134. package/dist/esm/run/flows/asset/input.js +202 -37
  135. package/dist/esm/run/flows/asset/input.js.map +1 -1
  136. package/dist/esm/run/flows/asset/media-policy.js +3 -0
  137. package/dist/esm/run/flows/asset/media-policy.js.map +1 -0
  138. package/dist/esm/run/flows/asset/media.js +233 -0
  139. package/dist/esm/run/flows/asset/media.js.map +1 -0
  140. package/dist/esm/run/flows/asset/output.js +98 -0
  141. package/dist/esm/run/flows/asset/output.js.map +1 -0
  142. package/dist/esm/run/flows/asset/preprocess.js +79 -44
  143. package/dist/esm/run/flows/asset/preprocess.js.map +1 -1
  144. package/dist/esm/run/flows/asset/summary.js +306 -89
  145. package/dist/esm/run/flows/asset/summary.js.map +1 -1
  146. package/dist/esm/run/flows/url/extract.js +31 -31
  147. package/dist/esm/run/flows/url/extract.js.map +1 -1
  148. package/dist/esm/run/flows/url/flow.js +388 -82
  149. package/dist/esm/run/flows/url/flow.js.map +1 -1
  150. package/dist/esm/run/flows/url/markdown.js +61 -56
  151. package/dist/esm/run/flows/url/markdown.js.map +1 -1
  152. package/dist/esm/run/flows/url/slides-output.js +487 -0
  153. package/dist/esm/run/flows/url/slides-output.js.map +1 -0
  154. package/dist/esm/run/flows/url/slides-text.js +628 -0
  155. package/dist/esm/run/flows/url/slides-text.js.map +1 -0
  156. package/dist/esm/run/flows/url/summary.js +493 -152
  157. package/dist/esm/run/flows/url/summary.js.map +1 -1
  158. package/dist/esm/run/format.js +10 -10
  159. package/dist/esm/run/format.js.map +1 -1
  160. package/dist/esm/run/help.js +179 -84
  161. package/dist/esm/run/help.js.map +1 -1
  162. package/dist/esm/run/logging.js +20 -12
  163. package/dist/esm/run/logging.js.map +1 -1
  164. package/dist/esm/run/markdown.js +12 -12
  165. package/dist/esm/run/markdown.js.map +1 -1
  166. package/dist/esm/run/media-cache-state.js +33 -0
  167. package/dist/esm/run/media-cache-state.js.map +1 -0
  168. package/dist/esm/run/model-attempts.js.map +1 -1
  169. package/dist/esm/run/openrouter.js +11 -11
  170. package/dist/esm/run/openrouter.js.map +1 -1
  171. package/dist/esm/run/progress.js +19 -1
  172. package/dist/esm/run/progress.js.map +1 -1
  173. package/dist/esm/run/run-config.js +16 -16
  174. package/dist/esm/run/run-config.js.map +1 -1
  175. package/dist/esm/run/run-context.js +2 -2
  176. package/dist/esm/run/run-context.js.map +1 -1
  177. package/dist/esm/run/run-env.js +55 -54
  178. package/dist/esm/run/run-env.js.map +1 -1
  179. package/dist/esm/run/run-input.js +3 -3
  180. package/dist/esm/run/run-input.js.map +1 -1
  181. package/dist/esm/run/run-metrics.js +16 -16
  182. package/dist/esm/run/run-metrics.js.map +1 -1
  183. package/dist/esm/run/run-models.js +28 -23
  184. package/dist/esm/run/run-models.js.map +1 -1
  185. package/dist/esm/run/run-output.js +3 -3
  186. package/dist/esm/run/run-output.js.map +1 -1
  187. package/dist/esm/run/run-settings.js +108 -21
  188. package/dist/esm/run/run-settings.js.map +1 -1
  189. package/dist/esm/run/run-stream.js +4 -4
  190. package/dist/esm/run/run-stream.js.map +1 -1
  191. package/dist/esm/run/runner.js +327 -100
  192. package/dist/esm/run/runner.js.map +1 -1
  193. package/dist/esm/run/slides-cli.js +226 -0
  194. package/dist/esm/run/slides-cli.js.map +1 -0
  195. package/dist/esm/run/slides-render.js +163 -0
  196. package/dist/esm/run/slides-render.js.map +1 -0
  197. package/dist/esm/run/stdin-temp-file.js +77 -0
  198. package/dist/esm/run/stdin-temp-file.js.map +1 -0
  199. package/dist/esm/run/stream-output.js +17 -10
  200. package/dist/esm/run/stream-output.js.map +1 -1
  201. package/dist/esm/run/streaming.js +16 -16
  202. package/dist/esm/run/streaming.js.map +1 -1
  203. package/dist/esm/run/summary-engine.js +89 -57
  204. package/dist/esm/run/summary-engine.js.map +1 -1
  205. package/dist/esm/run/summary-llm.js +3 -3
  206. package/dist/esm/run/summary-llm.js.map +1 -1
  207. package/dist/esm/run/terminal.js +4 -4
  208. package/dist/esm/run/terminal.js.map +1 -1
  209. package/dist/esm/run/tips.js +2 -2
  210. package/dist/esm/run/tips.js.map +1 -1
  211. package/dist/esm/run/transcriber-cli.js +148 -0
  212. package/dist/esm/run/transcriber-cli.js.map +1 -0
  213. package/dist/esm/run.js +1 -1
  214. package/dist/esm/run.js.map +1 -1
  215. package/dist/esm/shared/contracts.js +1 -1
  216. package/dist/esm/shared/contracts.js.map +1 -1
  217. package/dist/esm/shared/sse-events.js +16 -12
  218. package/dist/esm/shared/sse-events.js.map +1 -1
  219. package/dist/esm/shared/streaming-merge.js +3 -3
  220. package/dist/esm/shared/streaming-merge.js.map +1 -1
  221. package/dist/esm/slides/extract.js +1951 -0
  222. package/dist/esm/slides/extract.js.map +1 -0
  223. package/dist/esm/slides/index.js +4 -0
  224. package/dist/esm/slides/index.js.map +1 -0
  225. package/dist/esm/slides/settings.js +73 -0
  226. package/dist/esm/slides/settings.js.map +1 -0
  227. package/dist/esm/slides/store.js +111 -0
  228. package/dist/esm/slides/store.js.map +1 -0
  229. package/dist/esm/slides/types.js +2 -0
  230. package/dist/esm/slides/types.js.map +1 -0
  231. package/dist/esm/tty/format.js +13 -13
  232. package/dist/esm/tty/format.js.map +1 -1
  233. package/dist/esm/tty/osc-progress.js +22 -2
  234. package/dist/esm/tty/osc-progress.js.map +1 -1
  235. package/dist/esm/tty/progress/fetch-html.js +20 -16
  236. package/dist/esm/tty/progress/fetch-html.js.map +1 -1
  237. package/dist/esm/tty/progress/transcript.js +127 -68
  238. package/dist/esm/tty/progress/transcript.js.map +1 -1
  239. package/dist/esm/tty/spinner.js +21 -10
  240. package/dist/esm/tty/spinner.js.map +1 -1
  241. package/dist/esm/tty/theme.js +189 -0
  242. package/dist/esm/tty/theme.js.map +1 -0
  243. package/dist/esm/tty/website-progress.js +38 -34
  244. package/dist/esm/tty/website-progress.js.map +1 -1
  245. package/dist/esm/version.js +29 -29
  246. package/dist/esm/version.js.map +1 -1
  247. package/dist/types/cache.d.ts +19 -7
  248. package/dist/types/config.d.ts +71 -6
  249. package/dist/types/content/asset.d.ts +8 -6
  250. package/dist/types/content/index.d.ts +1 -1
  251. package/dist/types/costs.d.ts +3 -3
  252. package/dist/types/daemon/agent.d.ts +25 -0
  253. package/dist/types/daemon/auto-mode.d.ts +3 -3
  254. package/dist/types/daemon/chat.d.ts +10 -18
  255. package/dist/types/daemon/cli-entrypoint.d.ts +2 -0
  256. package/dist/types/daemon/config.d.ts +2 -2
  257. package/dist/types/daemon/env-merge.d.ts +1 -1
  258. package/dist/types/daemon/env-snapshot.d.ts +1 -1
  259. package/dist/types/daemon/flow-context.d.ts +24 -4
  260. package/dist/types/daemon/launchd.d.ts +12 -0
  261. package/dist/types/daemon/models.d.ts +6 -2
  262. package/dist/types/daemon/process-registry.d.ts +73 -0
  263. package/dist/types/daemon/schtasks.d.ts +4 -0
  264. package/dist/types/daemon/server.d.ts +2 -2
  265. package/dist/types/daemon/summarize-progress.d.ts +1 -1
  266. package/dist/types/daemon/summarize.d.ts +38 -7
  267. package/dist/types/daemon/systemd.d.ts +4 -0
  268. package/dist/types/firecrawl.d.ts +1 -1
  269. package/dist/types/flags.d.ts +12 -11
  270. package/dist/types/index.d.ts +4 -4
  271. package/dist/types/language.d.ts +1 -1
  272. package/dist/types/llm/attachments.d.ts +1 -1
  273. package/dist/types/llm/cli.d.ts +3 -3
  274. package/dist/types/llm/generate-text.d.ts +7 -7
  275. package/dist/types/llm/html-to-markdown.d.ts +3 -3
  276. package/dist/types/llm/model-id.d.ts +1 -1
  277. package/dist/types/llm/prompt.d.ts +2 -2
  278. package/dist/types/llm/providers/anthropic.d.ts +3 -3
  279. package/dist/types/llm/providers/google.d.ts +3 -3
  280. package/dist/types/llm/providers/models.d.ts +2 -2
  281. package/dist/types/llm/providers/openai.d.ts +4 -4
  282. package/dist/types/llm/providers/shared.d.ts +2 -2
  283. package/dist/types/llm/transcript-to-markdown.d.ts +4 -2
  284. package/dist/types/llm/usage.d.ts +1 -1
  285. package/dist/types/logging/daemon.d.ts +4 -4
  286. package/dist/types/markitdown.d.ts +1 -1
  287. package/dist/types/media-cache.d.ts +22 -0
  288. package/dist/types/model-auto.d.ts +14 -4
  289. package/dist/types/model-spec.d.ts +10 -10
  290. package/dist/types/pricing/litellm.d.ts +1 -1
  291. package/dist/types/processes.d.ts +1 -0
  292. package/dist/types/prompts/index.d.ts +1 -1
  293. package/dist/types/run/attachments.d.ts +7 -7
  294. package/dist/types/run/bird.d.ts +7 -0
  295. package/dist/types/run/cache-state.d.ts +2 -2
  296. package/dist/types/run/cli-fallback-state.d.ts +6 -0
  297. package/dist/types/run/constants.d.ts +1 -1
  298. package/dist/types/run/cookies/twitter.d.ts +1 -1
  299. package/dist/types/run/env.d.ts +1 -1
  300. package/dist/types/run/finish-line.d.ts +7 -6
  301. package/dist/types/run/flows/asset/extract.d.ts +18 -0
  302. package/dist/types/run/flows/asset/input.d.ts +19 -3
  303. package/dist/types/run/flows/asset/media-policy.d.ts +2 -0
  304. package/dist/types/run/flows/asset/media.d.ts +21 -0
  305. package/dist/types/run/flows/asset/output.d.ts +42 -0
  306. package/dist/types/run/flows/asset/preprocess.d.ts +23 -17
  307. package/dist/types/run/flows/asset/summary.d.ts +24 -16
  308. package/dist/types/run/flows/url/extract.d.ts +3 -2
  309. package/dist/types/run/flows/url/flow.d.ts +1 -1
  310. package/dist/types/run/flows/url/markdown.d.ts +6 -6
  311. package/dist/types/run/flows/url/slides-output.d.ts +66 -0
  312. package/dist/types/run/flows/url/slides-text.d.ts +87 -0
  313. package/dist/types/run/flows/url/summary.d.ts +18 -10
  314. package/dist/types/run/flows/url/types.d.ts +52 -21
  315. package/dist/types/run/format.d.ts +3 -3
  316. package/dist/types/run/help.d.ts +4 -1
  317. package/dist/types/run/logging.d.ts +3 -2
  318. package/dist/types/run/media-cache-state.d.ts +7 -0
  319. package/dist/types/run/model-attempts.d.ts +1 -1
  320. package/dist/types/run/progress.d.ts +2 -1
  321. package/dist/types/run/run-config.d.ts +4 -4
  322. package/dist/types/run/run-context.d.ts +3 -1
  323. package/dist/types/run/run-env.d.ts +3 -1
  324. package/dist/types/run/run-input.d.ts +2 -2
  325. package/dist/types/run/run-metrics.d.ts +3 -3
  326. package/dist/types/run/run-models.d.ts +3 -2
  327. package/dist/types/run/run-output.d.ts +1 -1
  328. package/dist/types/run/run-settings.d.ts +20 -5
  329. package/dist/types/run/run-stream.d.ts +2 -2
  330. package/dist/types/run/runner.d.ts +3 -2
  331. package/dist/types/run/slides-cli.d.ts +9 -0
  332. package/dist/types/run/slides-render.d.ts +30 -0
  333. package/dist/types/run/stdin-temp-file.d.ts +9 -0
  334. package/dist/types/run/stream-output.d.ts +3 -2
  335. package/dist/types/run/streaming.d.ts +4 -4
  336. package/dist/types/run/summary-engine.d.ts +22 -12
  337. package/dist/types/run/summary-llm.d.ts +5 -5
  338. package/dist/types/run/transcriber-cli.d.ts +8 -0
  339. package/dist/types/run/types.d.ts +4 -4
  340. package/dist/types/run.d.ts +1 -1
  341. package/dist/types/shared/contracts.d.ts +2 -2
  342. package/dist/types/shared/sse-events.d.ts +26 -6
  343. package/dist/types/slides/extract.d.ts +43 -0
  344. package/dist/types/slides/index.d.ts +5 -0
  345. package/dist/types/slides/settings.d.ts +20 -0
  346. package/dist/types/slides/store.d.ts +15 -0
  347. package/dist/types/slides/types.d.ts +40 -0
  348. package/dist/types/tty/osc-progress.d.ts +5 -5
  349. package/dist/types/tty/progress/fetch-html.d.ts +5 -3
  350. package/dist/types/tty/progress/transcript.d.ts +5 -3
  351. package/dist/types/tty/spinner.d.ts +3 -1
  352. package/dist/types/tty/theme.d.ts +44 -0
  353. package/dist/types/tty/website-progress.d.ts +5 -3
  354. package/dist/types/version.d.ts +1 -1
  355. package/docs/README.md +1 -1
  356. package/docs/_config.yml +26 -0
  357. package/docs/_layouts/default.html +60 -0
  358. package/docs/agent.md +367 -0
  359. package/docs/assets/site.css +748 -0
  360. package/docs/assets/site.js +72 -0
  361. package/docs/assets/summarize-cli.png +0 -0
  362. package/docs/assets/summarize-extension.png +0 -0
  363. package/docs/assets/youtube-slides.png +0 -0
  364. package/docs/cache.md +29 -3
  365. package/docs/chrome-extension.md +72 -16
  366. package/docs/cli.md +59 -13
  367. package/docs/config.md +109 -12
  368. package/docs/extract-only.md +10 -0
  369. package/docs/index.html +224 -0
  370. package/docs/index.md +25 -0
  371. package/docs/llm.md +18 -5
  372. package/docs/manual-tests.md +2 -0
  373. package/docs/media.md +6 -2
  374. package/docs/model-auto.md +3 -2
  375. package/docs/nvidia-onnx-transcription.md +55 -0
  376. package/docs/openai.md +1 -1
  377. package/docs/releasing.md +3 -0
  378. package/docs/site/404.html +4 -1
  379. package/docs/site/assets/site.css +399 -228
  380. package/docs/site/assets/site.js +46 -46
  381. package/docs/site/assets/summarize-cli.png +0 -0
  382. package/docs/site/assets/summarize-extension.png +0 -0
  383. package/docs/site/docs/chrome-extension.html +101 -0
  384. package/docs/site/docs/config.html +30 -8
  385. package/docs/site/docs/extract-only.html +17 -4
  386. package/docs/site/docs/firecrawl.html +13 -3
  387. package/docs/site/docs/index.html +40 -6
  388. package/docs/site/docs/llm.html +20 -5
  389. package/docs/site/docs/openai.html +19 -5
  390. package/docs/site/docs/website.html +30 -9
  391. package/docs/site/docs/youtube.html +13 -3
  392. package/docs/site/index.html +168 -85
  393. package/docs/slides.md +82 -0
  394. package/docs/smoketest.md +29 -20
  395. package/docs/timestamps.md +124 -0
  396. package/docs/website.md +13 -0
  397. package/docs/youtube.md +20 -0
  398. package/package.json +57 -48
@@ -1,5 +1,5 @@
1
- import type { AutoRuleKind, CliProvider, SummarizeConfig } from './config.js';
2
- import type { LiteLlmCatalog } from './pricing/litellm.js';
1
+ import type { AutoRuleKind, CliProvider, SummarizeConfig } from "./config.js";
2
+ import type { LiteLlmCatalog } from "./pricing/litellm.js";
3
3
  export type AutoSelectionInput = {
4
4
  kind: AutoRuleKind;
5
5
  promptTokens: number | null;
@@ -11,14 +11,24 @@ export type AutoSelectionInput = {
11
11
  openrouterProvidersFromEnv: string[] | null;
12
12
  openrouterModelIds?: string[] | null;
13
13
  cliAvailability?: Partial<Record<CliProvider, boolean>>;
14
+ isImplicitAutoSelection?: boolean;
15
+ allowAutoCliFallback?: boolean;
16
+ lastSuccessfulCliProvider?: CliProvider | null;
14
17
  };
15
18
  export type AutoModelAttempt = {
16
- transport: 'native' | 'openrouter' | 'cli';
19
+ transport: "native" | "openrouter" | "cli";
17
20
  userModelId: string;
18
21
  llmModelId: string | null;
19
22
  openrouterProviders: string[] | null;
20
23
  forceOpenRouter: boolean;
21
- requiredEnv: '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';
24
+ requiredEnv: "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";
22
25
  debug: string;
23
26
  };
27
+ export type ResolvedCliAutoFallbackConfig = {
28
+ enabled: boolean;
29
+ onlyWhenNoApiKeys: boolean;
30
+ order: CliProvider[];
31
+ };
32
+ export declare function resolveCliAutoFallbackConfig(config: SummarizeConfig | null): ResolvedCliAutoFallbackConfig;
33
+ export declare function envHasKey(env: Record<string, string | undefined>, requiredEnv: AutoModelAttempt["requiredEnv"]): boolean;
24
34
  export declare function buildAutoModelAttempts(input: AutoSelectionInput): AutoModelAttempt[];
@@ -1,35 +1,35 @@
1
- import type { CliProvider } from './config.js';
1
+ import type { CliProvider } from "./config.js";
2
2
  export type FixedModelSpec = {
3
- transport: 'native';
3
+ transport: "native";
4
4
  userModelId: string;
5
5
  llmModelId: string;
6
- provider: 'xai' | 'openai' | 'google' | 'anthropic' | 'zai';
6
+ provider: "xai" | "openai" | "google" | "anthropic" | "zai";
7
7
  openrouterProviders: string[] | null;
8
8
  forceOpenRouter: false;
9
- requiredEnv: 'XAI_API_KEY' | 'OPENAI_API_KEY' | 'GEMINI_API_KEY' | 'ANTHROPIC_API_KEY' | 'Z_AI_API_KEY';
9
+ requiredEnv: "XAI_API_KEY" | "OPENAI_API_KEY" | "GEMINI_API_KEY" | "ANTHROPIC_API_KEY" | "Z_AI_API_KEY";
10
10
  openaiBaseUrlOverride?: string | null;
11
11
  forceChatCompletions?: boolean;
12
12
  } | {
13
- transport: 'openrouter';
13
+ transport: "openrouter";
14
14
  userModelId: string;
15
15
  openrouterModelId: string;
16
16
  llmModelId: string;
17
17
  openrouterProviders: string[] | null;
18
18
  forceOpenRouter: true;
19
- requiredEnv: 'OPENROUTER_API_KEY';
19
+ requiredEnv: "OPENROUTER_API_KEY";
20
20
  } | {
21
- transport: 'cli';
21
+ transport: "cli";
22
22
  userModelId: string;
23
23
  llmModelId: null;
24
24
  openrouterProviders: null;
25
25
  forceOpenRouter: false;
26
- requiredEnv: 'CLI_CLAUDE' | 'CLI_CODEX' | 'CLI_GEMINI';
26
+ requiredEnv: "CLI_CLAUDE" | "CLI_CODEX" | "CLI_GEMINI" | "CLI_AGENT";
27
27
  cliProvider: CliProvider;
28
28
  cliModel: string | null;
29
29
  };
30
30
  export type RequestedModel = {
31
- kind: 'auto';
31
+ kind: "auto";
32
32
  } | ({
33
- kind: 'fixed';
33
+ kind: "fixed";
34
34
  } & FixedModelSpec);
35
35
  export declare function parseRequestedModelId(raw: string): RequestedModel;
@@ -1,4 +1,4 @@
1
- import { type LiteLlmCatalog, type LiteLlmLoadResult } from 'tokentally/node';
1
+ import { type LiteLlmCatalog, type LiteLlmLoadResult } from "tokentally/node";
2
2
  export type { LiteLlmCatalog, LiteLlmLoadResult };
3
3
  export declare function loadLiteLlmCatalog({ env, fetchImpl, nowMs, }: {
4
4
  env: Record<string, string | undefined>;
@@ -0,0 +1 @@
1
+ export * from "@steipete/summarize-core/processes";
@@ -1 +1 @@
1
- export * from '@steipete/summarize-core/prompts';
1
+ export * from "@steipete/summarize-core/prompts";
@@ -1,5 +1,5 @@
1
- import type { loadLocalAsset } from '../content/asset.js';
2
- export type AssetAttachment = Awaited<ReturnType<typeof loadLocalAsset>>['attachment'];
1
+ import type { loadLocalAsset } from "../content/asset.js";
2
+ export type AssetAttachment = Awaited<ReturnType<typeof loadLocalAsset>>["attachment"];
3
3
  export declare const MAX_DOCUMENT_BYTES_DEFAULT: number;
4
4
  export declare function isUnsupportedAttachmentError(error: unknown): boolean;
5
5
  export declare function isTextLikeMediaType(mediaType: string): boolean;
@@ -13,23 +13,23 @@ export declare function getTextContentFromAttachment(attachment: AssetAttachment
13
13
  } | null;
14
14
  export declare function getFileBytesFromAttachment(attachment: AssetAttachment): Uint8Array | null;
15
15
  export declare function ensureCliAttachmentPath({ sourceKind, sourceLabel, attachment, }: {
16
- sourceKind: 'file' | 'asset-url';
16
+ sourceKind: "file" | "asset-url";
17
17
  sourceLabel: string;
18
18
  attachment: AssetAttachment;
19
19
  }): Promise<string>;
20
20
  export declare function shouldMarkitdownConvertMediaType(mediaType: string): boolean;
21
21
  export declare function supportsNativeFileAttachment({ provider, attachment, }: {
22
- provider: 'xai' | 'openai' | 'google' | 'anthropic' | 'zai';
22
+ provider: "xai" | "openai" | "google" | "anthropic" | "zai";
23
23
  attachment: {
24
- kind: 'image' | 'file';
24
+ kind: "image" | "file";
25
25
  mediaType: string;
26
26
  };
27
27
  }): boolean;
28
28
  export declare function assertProviderSupportsAttachment({ provider, modelId, attachment, }: {
29
- provider: 'xai' | 'openai' | 'google' | 'anthropic' | 'zai';
29
+ provider: "xai" | "openai" | "google" | "anthropic" | "zai";
30
30
  modelId: string;
31
31
  attachment: {
32
- kind: 'image' | 'file';
32
+ kind: "image" | "file";
33
33
  mediaType: string;
34
34
  };
35
35
  }): void;
@@ -6,6 +6,13 @@ type BirdTweetPayload = {
6
6
  name?: string;
7
7
  };
8
8
  createdAt?: string;
9
+ media?: BirdTweetMedia | null;
10
+ };
11
+ type BirdTweetMedia = {
12
+ kind: "video" | "audio";
13
+ urls: string[];
14
+ preferredUrl: string | null;
15
+ source: "extended_entities" | "card" | "entities";
9
16
  };
10
17
  export declare function readTweetWithBird(args: {
11
18
  url: string;
@@ -1,5 +1,5 @@
1
- import { type CacheState } from '../cache.js';
2
- import type { SummarizeConfig } from '../config.js';
1
+ import type { SummarizeConfig } from "../config.js";
2
+ import { type CacheState } from "../cache.js";
3
3
  export declare function createCacheStateFromConfig({ envForRun, config, noCacheFlag, transcriptNamespace, }: {
4
4
  envForRun: Record<string, string | undefined>;
5
5
  config: SummarizeConfig | null;
@@ -0,0 +1,6 @@
1
+ import type { CliProvider } from "../config.js";
2
+ export declare function readLastSuccessfulCliProvider(env: Record<string, string | undefined>): Promise<CliProvider | null>;
3
+ export declare function writeLastSuccessfulCliProvider({ env, provider, }: {
4
+ env: Record<string, string | undefined>;
5
+ provider: CliProvider;
6
+ }): Promise<void>;
@@ -1,4 +1,4 @@
1
- import type { ModelConfig } from '../config.js';
1
+ import type { ModelConfig } from "../config.js";
2
2
  export declare const BIRD_TIP = "Tip: Install bird\uD83D\uDC26 for better Twitter support: https://github.com/steipete/bird";
3
3
  export declare const UVX_TIP = "Tip: Install uv (uvx) for local Markdown conversion: brew install uv (or set UVX_PATH to your uvx binary).";
4
4
  export declare const SUPPORT_URL = "https://github.com/steipete/summarize";
@@ -1,4 +1,4 @@
1
- export type BrowserName = 'chrome' | 'safari' | 'firefox';
1
+ export type BrowserName = "chrome" | "safari" | "firefox";
2
2
  export type TwitterCookies = {
3
3
  cookiesFromBrowser: string | null;
4
4
  source: string | null;
@@ -1,4 +1,4 @@
1
- import type { CliProvider, SummarizeConfig } from '../config.js';
1
+ import type { CliProvider, SummarizeConfig } from "../config.js";
2
2
  type ConfigForCli = SummarizeConfig | null;
3
3
  export declare function resolveExecutableInPath(binary: string, env: Record<string, string | undefined>): string | null;
4
4
  export declare function hasBirdCli(env: Record<string, string | undefined>): boolean;
@@ -7,13 +7,13 @@ export type FinishLineModel = {
7
7
  detailParts: string[];
8
8
  };
9
9
  export type ExtractDiagnosticsForFinishLine = {
10
- strategy: 'bird' | 'firecrawl' | 'html' | 'nitter';
10
+ strategy: "bird" | "firecrawl" | "html" | "nitter";
11
11
  firecrawl: {
12
12
  used: boolean;
13
13
  };
14
14
  markdown: {
15
15
  used: boolean;
16
- provider: 'firecrawl' | 'llm' | null;
16
+ provider: "firecrawl" | "llm" | null;
17
17
  notes?: string | null;
18
18
  };
19
19
  transcript: {
@@ -33,7 +33,7 @@ export type ExtractedForLengths = {
33
33
  transcriptionProvider: string | null;
34
34
  mediaDurationSeconds: number | null;
35
35
  video: {
36
- kind: 'youtube' | 'direct';
36
+ kind: "youtube" | "direct";
37
37
  url: string;
38
38
  } | null;
39
39
  isVideoOnly: boolean;
@@ -45,7 +45,7 @@ export type ExtractedForLengths = {
45
45
  };
46
46
  export declare function formatModelLabelForDisplay(model: string): string;
47
47
  export declare function buildLengthPartsForFinishLine(extracted: ExtractedForLengths, detailed: boolean): string[] | null;
48
- export declare function writeFinishLine({ stderr, elapsedMs, elapsedLabel, label, model, report, costUsd, detailed, extraParts, color, }: {
48
+ export declare function writeFinishLine({ stderr, elapsedMs, elapsedLabel, label, model, report, costUsd, detailed, extraParts, color, env, }: {
49
49
  stderr: NodeJS.WritableStream;
50
50
  elapsedMs: number;
51
51
  elapsedLabel?: string | null;
@@ -71,6 +71,7 @@ export declare function writeFinishLine({ stderr, elapsedMs, elapsedLabel, label
71
71
  detailed: boolean;
72
72
  extraParts?: string[] | null;
73
73
  color: boolean;
74
+ env?: Record<string, string | undefined>;
74
75
  }): void;
75
76
  export declare function buildFinishLineText({ elapsedMs, elapsedLabel, label, model, report, costUsd, detailed, extraParts, }: {
76
77
  elapsedMs: number;
@@ -154,8 +155,8 @@ export declare function buildExtractFinishLabel(args: {
154
155
  extracted: {
155
156
  diagnostics: ExtractDiagnosticsForFinishLine;
156
157
  };
157
- format: 'text' | 'markdown';
158
- markdownMode: 'off' | 'auto' | 'llm' | 'readability';
158
+ format: "text" | "markdown";
159
+ markdownMode: "off" | "auto" | "llm" | "readability";
159
160
  hasMarkdownLlmCall: boolean;
160
161
  }): string;
161
162
  export declare function buildSummaryFinishLabel(args: {
@@ -0,0 +1,18 @@
1
+ import type { ExecFileFn } from "../../../markitdown.js";
2
+ import type { ExtractDiagnosticsForFinishLine } from "../../finish-line.js";
3
+ import { type AssetAttachment } from "../../attachments.js";
4
+ export type AssetExtractContext = {
5
+ env: Record<string, string | undefined>;
6
+ envForRun: Record<string, string | undefined>;
7
+ execFileImpl: ExecFileFn;
8
+ timeoutMs: number;
9
+ preprocessMode: "off" | "auto" | "always";
10
+ };
11
+ export type AssetExtractResult = {
12
+ content: string;
13
+ diagnostics: ExtractDiagnosticsForFinishLine;
14
+ };
15
+ export declare function extractAssetContent({ ctx, attachment, }: {
16
+ ctx: AssetExtractContext;
17
+ attachment: AssetAttachment;
18
+ }): Promise<AssetExtractResult>;
@@ -1,14 +1,30 @@
1
- import { type InputTarget } from '../../../content/asset.js';
2
- import type { SummarizeAssetArgs } from './summary.js';
1
+ import type { SummarizeAssetArgs } from "./summary.js";
2
+ import { type InputTarget, loadRemoteAsset } from "../../../content/asset.js";
3
+ import { startSpinner } from "../../../tty/spinner.js";
4
+ /**
5
+ * Check if a file extension indicates transcribable media.
6
+ * Used to route large audio/video files directly to the media handler
7
+ * which has a higher size limit (2GB vs 50MB).
8
+ */
9
+ export declare function isTranscribableExtension(filePath: string): boolean;
3
10
  export type AssetInputContext = {
4
11
  env: Record<string, string | undefined>;
12
+ envForRun: Record<string, string | undefined>;
5
13
  stderr: NodeJS.WritableStream;
6
14
  progressEnabled: boolean;
7
15
  timeoutMs: number;
8
16
  trackedFetch: typeof fetch;
9
17
  summarizeAsset: (args: SummarizeAssetArgs) => Promise<void>;
10
- setClearProgressBeforeStdout: (fn: (() => void) | null) => void;
18
+ summarizeMediaFile?: (args: SummarizeAssetArgs) => Promise<void>;
19
+ setClearProgressBeforeStdout: (fn: (() => undefined | (() => void)) | null) => void;
11
20
  clearProgressIfCurrent: (fn: () => void) => void;
12
21
  };
22
+ type UrlAssetHandler = (args: {
23
+ loaded: Awaited<ReturnType<typeof loadRemoteAsset>>;
24
+ spinner: ReturnType<typeof startSpinner>;
25
+ clearProgressLine: () => void;
26
+ }) => Promise<void>;
13
27
  export declare function handleFileInput(ctx: AssetInputContext, inputTarget: InputTarget): Promise<boolean>;
28
+ export declare function withUrlAsset(ctx: AssetInputContext, url: string, isYoutubeUrl: boolean, handler: UrlAssetHandler): Promise<boolean>;
14
29
  export declare function handleUrlAsset(ctx: AssetInputContext, url: string, isYoutubeUrl: boolean): Promise<boolean>;
30
+ export {};
@@ -0,0 +1,2 @@
1
+ export declare const MAX_LOCAL_MEDIA_BYTES: number;
2
+ export declare const MAX_LOCAL_MEDIA_LABEL = "2 GB";
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Media file transcription handler for local audio/video files.
3
+ * Phase 2: Transcript provider integration
4
+ * Phase 2.2: Local file path handling for transcript caching
5
+ */
6
+ import type { AssetSummaryContext, SummarizeAssetArgs } from "./summary.js";
7
+ /**
8
+ * Handler for local audio/video files.
9
+ *
10
+ * Phase 2 Implementation:
11
+ * 1. Validates transcription provider availability
12
+ * 2. Creates LinkPreviewClient with necessary dependencies
13
+ * 3. Calls client.fetchLinkContent to trigger transcription
14
+ * 4. Converts transcript text to AssetAttachment
15
+ * 5. Calls summarizeAsset with the transcript
16
+ *
17
+ * Phase 2.2 Enhancement:
18
+ * - Captures file modification time for cache invalidation
19
+ * - Passes fileMtime to transcript cache for local file support
20
+ */
21
+ export declare function summarizeMediaFile(ctx: AssetSummaryContext, args: SummarizeAssetArgs): Promise<void>;
@@ -0,0 +1,42 @@
1
+ import type { RunMetricsReport } from "../../../costs.js";
2
+ import type { AssetAttachment } from "../../attachments.js";
3
+ import type { AssetExtractResult } from "./extract.js";
4
+ export declare function outputExtractedAsset({ io, flags, hooks, url, sourceLabel, attachment, extracted, apiStatus, }: {
5
+ io: {
6
+ env: Record<string, string | undefined>;
7
+ envForRun: Record<string, string | undefined>;
8
+ stdout: NodeJS.WritableStream;
9
+ stderr: NodeJS.WritableStream;
10
+ };
11
+ flags: {
12
+ timeoutMs: number;
13
+ preprocessMode: "off" | "auto" | "always";
14
+ format: "text" | "markdown";
15
+ plain: boolean;
16
+ json: boolean;
17
+ metricsEnabled: boolean;
18
+ metricsDetailed: boolean;
19
+ shouldComputeReport: boolean;
20
+ runStartedAtMs: number;
21
+ verboseColor: boolean;
22
+ };
23
+ hooks: {
24
+ clearProgressForStdout: () => void;
25
+ restoreProgressAfterStdout?: (() => void) | null;
26
+ buildReport: () => Promise<RunMetricsReport>;
27
+ estimateCostUsd: () => Promise<number | null>;
28
+ };
29
+ url: string;
30
+ sourceLabel: string;
31
+ attachment: AssetAttachment;
32
+ extracted: AssetExtractResult;
33
+ apiStatus: {
34
+ xaiApiKey: string | null;
35
+ apiKey: string | null;
36
+ openrouterApiKey: string | null;
37
+ apifyToken: string | null;
38
+ firecrawlConfigured: boolean;
39
+ googleConfigured: boolean;
40
+ anthropicConfigured: boolean;
41
+ };
42
+ }): Promise<void>;
@@ -1,21 +1,21 @@
1
- import type { OutputLanguage } from '../../../language.js';
2
- import type { Attachment } from '../../../llm/attachments.js';
3
- import { convertToMarkdownWithMarkitdown } from '../../../markitdown.js';
4
- import type { FixedModelSpec } from '../../../model-spec.js';
5
- import type { SummaryLength } from '../../../shared/contracts.js';
6
- import { type AssetAttachment } from '../../attachments.js';
1
+ import type { OutputLanguage } from "../../../language.js";
2
+ import type { Attachment } from "../../../llm/attachments.js";
3
+ import type { FixedModelSpec } from "../../../model-spec.js";
4
+ import type { SummaryLength } from "../../../shared/contracts.js";
5
+ import { convertToMarkdownWithMarkitdown } from "../../../markitdown.js";
6
+ import { type AssetAttachment } from "../../attachments.js";
7
7
  export type AssetPreprocessContext = {
8
8
  env: Record<string, string | undefined>;
9
9
  envForRun: Record<string, string | undefined>;
10
- execFileImpl: Parameters<typeof convertToMarkdownWithMarkitdown>[0]['execFileImpl'];
10
+ execFileImpl: Parameters<typeof convertToMarkdownWithMarkitdown>[0]["execFileImpl"];
11
11
  timeoutMs: number;
12
- preprocessMode: 'off' | 'auto' | 'always';
13
- format: 'text' | 'markdown';
12
+ preprocessMode: "off" | "auto" | "always";
13
+ format: "text" | "markdown";
14
14
  lengthArg: {
15
- kind: 'preset';
15
+ kind: "preset";
16
16
  preset: SummaryLength;
17
17
  } | {
18
- kind: 'chars';
18
+ kind: "chars";
19
19
  maxCharacters: number;
20
20
  };
21
21
  outputLanguage: OutputLanguage;
@@ -23,6 +23,9 @@ export type AssetPreprocessContext = {
23
23
  promptOverride?: string | null;
24
24
  lengthInstruction?: string | null;
25
25
  languageInstruction?: string | null;
26
+ openaiApiKey?: string | null;
27
+ openrouterApiKey?: string | null;
28
+ openaiBaseUrl?: string | null;
26
29
  };
27
30
  export type AssetPreprocessResult = {
28
31
  promptText: string;
@@ -34,24 +37,27 @@ export type AssetPreprocessResult = {
34
37
  } | null;
35
38
  };
36
39
  export type DocumentHandlingDecision = {
37
- mode: 'inline';
40
+ mode: "inline";
38
41
  } | {
39
- mode: 'attach';
42
+ mode: "attach";
40
43
  } | {
41
- mode: 'preprocess';
44
+ mode: "preprocess";
42
45
  } | {
43
- mode: 'error';
46
+ mode: "error";
44
47
  error: Error;
45
48
  };
46
- export declare function resolveDocumentHandling({ attachment, textContent, fileBytes, preprocessMode, fixedModelSpec, }: {
49
+ export declare function resolveDocumentHandling({ attachment, textContent, fileBytes, preprocessMode, fixedModelSpec, openaiApiKey, openrouterApiKey, openaiBaseUrl, }: {
47
50
  attachment: AssetAttachment;
48
51
  textContent: {
49
52
  content: string;
50
53
  bytes: number;
51
54
  } | null;
52
55
  fileBytes: Uint8Array | null;
53
- preprocessMode: 'off' | 'auto' | 'always';
56
+ preprocessMode: "off" | "auto" | "always";
54
57
  fixedModelSpec: FixedModelSpec | null;
58
+ openaiApiKey?: string | null;
59
+ openrouterApiKey?: string | null;
60
+ openaiBaseUrl?: string | null;
55
61
  }): DocumentHandlingDecision;
56
62
  export declare function prepareAssetPrompt({ ctx, attachment, }: {
57
63
  ctx: AssetPreprocessContext;
@@ -1,12 +1,13 @@
1
- import { type CacheState } from '../../../cache.js';
2
- import type { CliProvider, SummarizeConfig } from '../../../config.js';
3
- import type { LlmCall, RunMetricsReport } from '../../../costs.js';
4
- import type { OutputLanguage } from '../../../language.js';
5
- import type { ExecFileFn } from '../../../markitdown.js';
6
- import type { FixedModelSpec, RequestedModel } from '../../../model-spec.js';
7
- import type { SummaryLength } from '../../../shared/contracts.js';
8
- import { type AssetAttachment } from '../../attachments.js';
9
- import type { createSummaryEngine } from '../../summary-engine.js';
1
+ import type { CliProvider, SummarizeConfig } from "../../../config.js";
2
+ import type { MediaCache } from "../../../content/index.js";
3
+ import type { LlmCall, RunMetricsReport } from "../../../costs.js";
4
+ import type { OutputLanguage } from "../../../language.js";
5
+ import type { ExecFileFn } from "../../../markitdown.js";
6
+ import type { FixedModelSpec, RequestedModel } from "../../../model-spec.js";
7
+ import type { SummaryLength } from "../../../shared/contracts.js";
8
+ import type { createSummaryEngine } from "../../summary-engine.js";
9
+ import { type CacheState } from "../../../cache.js";
10
+ import { type AssetAttachment } from "../../attachments.js";
10
11
  export type AssetSummaryContext = {
11
12
  env: Record<string, string | undefined>;
12
13
  envForRun: Record<string, string | undefined>;
@@ -14,22 +15,26 @@ export type AssetSummaryContext = {
14
15
  stderr: NodeJS.WritableStream;
15
16
  execFileImpl: ExecFileFn;
16
17
  timeoutMs: number;
17
- preprocessMode: 'off' | 'auto' | 'always';
18
- format: 'text' | 'markdown';
18
+ preprocessMode: "off" | "auto" | "always";
19
+ format: "text" | "markdown";
20
+ extractMode: boolean;
19
21
  lengthArg: {
20
- kind: 'preset';
22
+ kind: "preset";
21
23
  preset: SummaryLength;
22
24
  } | {
23
- kind: 'chars';
25
+ kind: "chars";
24
26
  maxCharacters: number;
25
27
  };
28
+ forceSummary: boolean;
26
29
  outputLanguage: OutputLanguage;
27
- videoMode: 'auto' | 'transcript' | 'understand';
30
+ videoMode: "auto" | "transcript" | "understand";
28
31
  fixedModelSpec: FixedModelSpec | null;
29
32
  promptOverride?: string | null;
30
33
  lengthInstruction?: string | null;
31
34
  languageInstruction?: string | null;
32
35
  isFallbackModel: boolean;
36
+ isImplicitAutoSelection: boolean;
37
+ allowAutoCliFallback: boolean;
33
38
  desiredOutputTokens: number | null;
34
39
  envForAuto: Record<string, string | undefined>;
35
40
  configForModelSelection: SummarizeConfig | null;
@@ -53,11 +58,14 @@ export type AssetSummaryContext = {
53
58
  trackedFetch: typeof fetch;
54
59
  writeViaFooter: (parts: string[]) => void;
55
60
  clearProgressForStdout: () => void;
56
- getLiteLlmCatalog: () => Promise<Awaited<ReturnType<typeof import('../../../pricing/litellm.js').loadLiteLlmCatalog>>['catalog']>;
61
+ restoreProgressAfterStdout?: (() => void) | null;
62
+ getLiteLlmCatalog: () => Promise<Awaited<ReturnType<typeof import("../../../pricing/litellm.js").loadLiteLlmCatalog>>["catalog"]>;
57
63
  buildReport: () => Promise<RunMetricsReport>;
58
64
  estimateCostUsd: () => Promise<number | null>;
59
65
  llmCalls: LlmCall[];
60
66
  cache: CacheState;
67
+ summaryCacheBypass: boolean;
68
+ mediaCache: MediaCache | null;
61
69
  apiStatus: {
62
70
  xaiApiKey: string | null;
63
71
  apiKey: string | null;
@@ -77,7 +85,7 @@ export type AssetSummaryContext = {
77
85
  };
78
86
  };
79
87
  export type SummarizeAssetArgs = {
80
- sourceKind: 'file' | 'asset-url';
88
+ sourceKind: "file" | "asset-url";
81
89
  sourceLabel: string;
82
90
  attachment: AssetAttachment;
83
91
  onModelChosen?: ((modelId: string) => void) | null;
@@ -1,4 +1,4 @@
1
- import type { ExtractedLinkContent, FetchLinkContentOptions } from '../../../content/index.js';
1
+ import type { ExtractedLinkContent, FetchLinkContentOptions } from "../../../content/index.js";
2
2
  export type UrlExtractionUi = {
3
3
  contentSizeLabel: string;
4
4
  viaSourceLabel: string;
@@ -14,9 +14,10 @@ export declare function fetchLinkContentWithBirdTip({ client, url, options, env,
14
14
  env: Record<string, string | undefined>;
15
15
  }): Promise<ExtractedLinkContent>;
16
16
  export declare function deriveExtractionUi(extracted: ExtractedLinkContent): UrlExtractionUi;
17
- export declare function logExtractionDiagnostics({ extracted, stderr, verbose, verboseColor, }: {
17
+ export declare function logExtractionDiagnostics({ extracted, stderr, verbose, verboseColor, env, }: {
18
18
  extracted: ExtractedLinkContent;
19
19
  stderr: NodeJS.WritableStream;
20
20
  verbose: boolean;
21
21
  verboseColor: boolean;
22
+ env?: Record<string, string | undefined>;
22
23
  }): void;
@@ -1,4 +1,4 @@
1
- import type { UrlFlowContext } from './types.js';
1
+ import type { UrlFlowContext } from "./types.js";
2
2
  export declare function runUrlFlow({ ctx, url, isYoutubeUrl, }: {
3
3
  ctx: UrlFlowContext;
4
4
  url: string;
@@ -1,19 +1,19 @@
1
- import { type ConvertTranscriptToMarkdown } from '../../../llm/transcript-to-markdown.js';
2
- import type { ModelAttempt } from '../../types.js';
3
- import type { UrlFlowContext } from './types.js';
1
+ import type { ModelAttempt } from "../../types.js";
2
+ import type { UrlFlowContext } from "./types.js";
3
+ import { type ConvertTranscriptToMarkdown } from "../../../llm/transcript-to-markdown.js";
4
4
  export type MarkdownModel = {
5
5
  llmModelId: string;
6
6
  forceOpenRouter: boolean;
7
7
  openaiApiKeyOverride?: string | null;
8
8
  openaiBaseUrlOverride?: string | null;
9
9
  forceChatCompletions?: boolean;
10
- requiredEnv?: ModelAttempt['requiredEnv'];
10
+ requiredEnv?: ModelAttempt["requiredEnv"];
11
11
  };
12
12
  export type MarkdownConverters = {
13
13
  markdownRequested: boolean;
14
14
  transcriptMarkdownRequested: boolean;
15
- effectiveMarkdownMode: 'off' | 'auto' | 'llm' | 'readability';
16
- markdownProvider: 'none' | 'xai' | 'openai' | 'google' | 'anthropic' | 'zai';
15
+ effectiveMarkdownMode: "off" | "auto" | "llm" | "readability";
16
+ markdownProvider: "none" | "xai" | "openai" | "google" | "anthropic" | "zai";
17
17
  markdownModel: MarkdownModel | null;
18
18
  convertHtmlToMarkdown: ((args: {
19
19
  url: string;