@steipete/summarize 0.11.1 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (427) hide show
  1. package/CHANGELOG.md +73 -1
  2. package/README.md +102 -32
  3. package/dist/cli.js +1 -1
  4. package/dist/esm/cache-keys.js +83 -0
  5. package/dist/esm/cache-keys.js.map +1 -0
  6. package/dist/esm/cache-slides-cleanup.js +47 -0
  7. package/dist/esm/cache-slides-cleanup.js.map +1 -0
  8. package/dist/esm/cache.js +15 -92
  9. package/dist/esm/cache.js.map +1 -1
  10. package/dist/esm/config/env.js +49 -0
  11. package/dist/esm/config/env.js.map +1 -0
  12. package/dist/esm/config/model.js +193 -0
  13. package/dist/esm/config/model.js.map +1 -0
  14. package/dist/esm/config/parse-helpers.js +55 -0
  15. package/dist/esm/config/parse-helpers.js.map +1 -0
  16. package/dist/esm/config/read.js +83 -0
  17. package/dist/esm/config/read.js.map +1 -0
  18. package/dist/esm/config/sections.js +472 -0
  19. package/dist/esm/config/sections.js.map +1 -0
  20. package/dist/esm/config/types.js +2 -0
  21. package/dist/esm/config/types.js.map +1 -0
  22. package/dist/esm/config.js +24 -807
  23. package/dist/esm/config.js.map +1 -1
  24. package/dist/esm/content/asset.js +2 -2
  25. package/dist/esm/content/asset.js.map +1 -1
  26. package/dist/esm/costs.js.map +1 -1
  27. package/dist/esm/daemon/agent-model.js +283 -0
  28. package/dist/esm/daemon/agent-model.js.map +1 -0
  29. package/dist/esm/daemon/agent-request.js +87 -0
  30. package/dist/esm/daemon/agent-request.js.map +1 -0
  31. package/dist/esm/daemon/agent.js +42 -243
  32. package/dist/esm/daemon/agent.js.map +1 -1
  33. package/dist/esm/daemon/chat.js +118 -9
  34. package/dist/esm/daemon/chat.js.map +1 -1
  35. package/dist/esm/daemon/cli.js +121 -9
  36. package/dist/esm/daemon/cli.js.map +1 -1
  37. package/dist/esm/daemon/config.js +65 -9
  38. package/dist/esm/daemon/config.js.map +1 -1
  39. package/dist/esm/daemon/env-snapshot.js +6 -0
  40. package/dist/esm/daemon/env-snapshot.js.map +1 -1
  41. package/dist/esm/daemon/flow-context.js +84 -74
  42. package/dist/esm/daemon/flow-context.js.map +1 -1
  43. package/dist/esm/daemon/models.js +26 -0
  44. package/dist/esm/daemon/models.js.map +1 -1
  45. package/dist/esm/daemon/process-registry.js.map +1 -1
  46. package/dist/esm/daemon/schtasks.js +101 -5
  47. package/dist/esm/daemon/schtasks.js.map +1 -1
  48. package/dist/esm/daemon/server-admin-routes.js +134 -0
  49. package/dist/esm/daemon/server-admin-routes.js.map +1 -0
  50. package/dist/esm/daemon/server-agent-route.js +104 -0
  51. package/dist/esm/daemon/server-agent-route.js.map +1 -0
  52. package/dist/esm/daemon/server-http.js +89 -0
  53. package/dist/esm/daemon/server-http.js.map +1 -0
  54. package/dist/esm/daemon/server-session-routes.js +209 -0
  55. package/dist/esm/daemon/server-session-routes.js.map +1 -0
  56. package/dist/esm/daemon/server-session.js +118 -0
  57. package/dist/esm/daemon/server-session.js.map +1 -0
  58. package/dist/esm/daemon/server-sse.js +28 -0
  59. package/dist/esm/daemon/server-sse.js.map +1 -0
  60. package/dist/esm/daemon/server-summarize-execution.js +357 -0
  61. package/dist/esm/daemon/server-summarize-execution.js.map +1 -0
  62. package/dist/esm/daemon/server-summarize-request.js +119 -0
  63. package/dist/esm/daemon/server-summarize-request.js.map +1 -0
  64. package/dist/esm/daemon/server.js +79 -1121
  65. package/dist/esm/daemon/server.js.map +1 -1
  66. package/dist/esm/daemon/summarize-progress.js +1 -1
  67. package/dist/esm/daemon/summarize-progress.js.map +1 -1
  68. package/dist/esm/daemon/summarize.js.map +1 -1
  69. package/dist/esm/daemon/windows-container.js +21 -0
  70. package/dist/esm/daemon/windows-container.js.map +1 -0
  71. package/dist/esm/llm/cli-exec.js +75 -0
  72. package/dist/esm/llm/cli-exec.js.map +1 -0
  73. package/dist/esm/llm/cli-provider-output.js +415 -0
  74. package/dist/esm/llm/cli-provider-output.js.map +1 -0
  75. package/dist/esm/llm/cli.js +97 -218
  76. package/dist/esm/llm/cli.js.map +1 -1
  77. package/dist/esm/llm/generate-text-document.js +109 -0
  78. package/dist/esm/llm/generate-text-document.js.map +1 -0
  79. package/dist/esm/llm/generate-text-shared.js +121 -0
  80. package/dist/esm/llm/generate-text-shared.js.map +1 -0
  81. package/dist/esm/llm/generate-text-stream.js +291 -0
  82. package/dist/esm/llm/generate-text-stream.js.map +1 -0
  83. package/dist/esm/llm/generate-text.js +172 -480
  84. package/dist/esm/llm/generate-text.js.map +1 -1
  85. package/dist/esm/llm/github-models.js +45 -0
  86. package/dist/esm/llm/github-models.js.map +1 -0
  87. package/dist/esm/llm/html-to-markdown.js.map +1 -1
  88. package/dist/esm/llm/model-id.js +37 -20
  89. package/dist/esm/llm/model-id.js.map +1 -1
  90. package/dist/esm/llm/provider-capabilities.js +2 -0
  91. package/dist/esm/llm/provider-capabilities.js.map +1 -0
  92. package/dist/esm/llm/provider-profile.js +184 -0
  93. package/dist/esm/llm/provider-profile.js.map +1 -0
  94. package/dist/esm/llm/providers/google.js +42 -5
  95. package/dist/esm/llm/providers/google.js.map +1 -1
  96. package/dist/esm/llm/providers/models.js +19 -1
  97. package/dist/esm/llm/providers/models.js.map +1 -1
  98. package/dist/esm/llm/providers/openai.js +243 -5
  99. package/dist/esm/llm/providers/openai.js.map +1 -1
  100. package/dist/esm/llm/transcript-to-markdown.js.map +1 -1
  101. package/dist/esm/media-cache.js +3 -0
  102. package/dist/esm/media-cache.js.map +1 -1
  103. package/dist/esm/model-auto-cli.js +91 -0
  104. package/dist/esm/model-auto-cli.js.map +1 -0
  105. package/dist/esm/model-auto-rules.js +86 -0
  106. package/dist/esm/model-auto-rules.js.map +1 -0
  107. package/dist/esm/model-auto.js +10 -245
  108. package/dist/esm/model-auto.js.map +1 -1
  109. package/dist/esm/model-spec.js +62 -19
  110. package/dist/esm/model-spec.js.map +1 -1
  111. package/dist/esm/refresh-free.js +1 -1
  112. package/dist/esm/refresh-free.js.map +1 -1
  113. package/dist/esm/run/attachments.js +1 -1
  114. package/dist/esm/run/attachments.js.map +1 -1
  115. package/dist/esm/run/bird/exec.js +23 -0
  116. package/dist/esm/run/bird/exec.js.map +1 -0
  117. package/dist/esm/run/bird/media.js +171 -0
  118. package/dist/esm/run/bird/media.js.map +1 -0
  119. package/dist/esm/run/bird/parse.js +82 -0
  120. package/dist/esm/run/bird/parse.js.map +1 -0
  121. package/dist/esm/run/bird/types.js +2 -0
  122. package/dist/esm/run/bird/types.js.map +1 -0
  123. package/dist/esm/run/bird.js +86 -144
  124. package/dist/esm/run/bird.js.map +1 -1
  125. package/dist/esm/run/cache-state.js.map +1 -1
  126. package/dist/esm/run/cli-fallback-state.js +6 -1
  127. package/dist/esm/run/cli-fallback-state.js.map +1 -1
  128. package/dist/esm/run/constants.js +2 -1
  129. package/dist/esm/run/constants.js.map +1 -1
  130. package/dist/esm/run/env.js +24 -3
  131. package/dist/esm/run/env.js.map +1 -1
  132. package/dist/esm/run/finish-line-labels.js +76 -0
  133. package/dist/esm/run/finish-line-labels.js.map +1 -0
  134. package/dist/esm/run/finish-line-lengths.js +96 -0
  135. package/dist/esm/run/finish-line-lengths.js.map +1 -0
  136. package/dist/esm/run/finish-line.js +3 -169
  137. package/dist/esm/run/finish-line.js.map +1 -1
  138. package/dist/esm/run/flows/asset/extract.js.map +1 -1
  139. package/dist/esm/run/flows/asset/input.js +1 -1
  140. package/dist/esm/run/flows/asset/input.js.map +1 -1
  141. package/dist/esm/run/flows/asset/media.js +19 -10
  142. package/dist/esm/run/flows/asset/media.js.map +1 -1
  143. package/dist/esm/run/flows/asset/output.js.map +1 -1
  144. package/dist/esm/run/flows/asset/preprocess.js.map +1 -1
  145. package/dist/esm/run/flows/asset/summary-attempts.js +117 -0
  146. package/dist/esm/run/flows/asset/summary-attempts.js.map +1 -0
  147. package/dist/esm/run/flows/asset/summary.js +30 -107
  148. package/dist/esm/run/flows/asset/summary.js.map +1 -1
  149. package/dist/esm/run/flows/url/extract.js +7 -4
  150. package/dist/esm/run/flows/url/extract.js.map +1 -1
  151. package/dist/esm/run/flows/url/extraction-session.js +174 -0
  152. package/dist/esm/run/flows/url/extraction-session.js.map +1 -0
  153. package/dist/esm/run/flows/url/fetch-options.js +32 -0
  154. package/dist/esm/run/flows/url/fetch-options.js.map +1 -0
  155. package/dist/esm/run/flows/url/flow-progress.js +123 -0
  156. package/dist/esm/run/flows/url/flow-progress.js.map +1 -0
  157. package/dist/esm/run/flows/url/flow.js +70 -462
  158. package/dist/esm/run/flows/url/flow.js.map +1 -1
  159. package/dist/esm/run/flows/url/markdown.js +38 -3
  160. package/dist/esm/run/flows/url/markdown.js.map +1 -1
  161. package/dist/esm/run/flows/url/progress-status-state.js +28 -0
  162. package/dist/esm/run/flows/url/progress-status-state.js.map +1 -0
  163. package/dist/esm/run/flows/url/progress-status.js +51 -0
  164. package/dist/esm/run/flows/url/progress-status.js.map +1 -0
  165. package/dist/esm/run/flows/url/slides-output-render.js +78 -0
  166. package/dist/esm/run/flows/url/slides-output-render.js.map +1 -0
  167. package/dist/esm/run/flows/url/slides-output-state.js +86 -0
  168. package/dist/esm/run/flows/url/slides-output-state.js.map +1 -0
  169. package/dist/esm/run/flows/url/slides-output-stream.js +271 -0
  170. package/dist/esm/run/flows/url/slides-output-stream.js.map +1 -0
  171. package/dist/esm/run/flows/url/slides-output.js +29 -422
  172. package/dist/esm/run/flows/url/slides-output.js.map +1 -1
  173. package/dist/esm/run/flows/url/slides-session.js +159 -0
  174. package/dist/esm/run/flows/url/slides-session.js.map +1 -0
  175. package/dist/esm/run/flows/url/slides-text-markdown.js +431 -0
  176. package/dist/esm/run/flows/url/slides-text-markdown.js.map +1 -0
  177. package/dist/esm/run/flows/url/slides-text-transcript.js +199 -0
  178. package/dist/esm/run/flows/url/slides-text-transcript.js.map +1 -0
  179. package/dist/esm/run/flows/url/slides-text-types.js +2 -0
  180. package/dist/esm/run/flows/url/slides-text-types.js.map +1 -0
  181. package/dist/esm/run/flows/url/slides-text.js +2 -627
  182. package/dist/esm/run/flows/url/slides-text.js.map +1 -1
  183. package/dist/esm/run/flows/url/summary-finish.js +40 -0
  184. package/dist/esm/run/flows/url/summary-finish.js.map +1 -0
  185. package/dist/esm/run/flows/url/summary-json.js +32 -0
  186. package/dist/esm/run/flows/url/summary-json.js.map +1 -0
  187. package/dist/esm/run/flows/url/summary-prompt.js +147 -0
  188. package/dist/esm/run/flows/url/summary-prompt.js.map +1 -0
  189. package/dist/esm/run/flows/url/summary-resolution.js +327 -0
  190. package/dist/esm/run/flows/url/summary-resolution.js.map +1 -0
  191. package/dist/esm/run/flows/url/summary-timestamps.js +136 -0
  192. package/dist/esm/run/flows/url/summary-timestamps.js.map +1 -0
  193. package/dist/esm/run/flows/url/summary.js +139 -667
  194. package/dist/esm/run/flows/url/summary.js.map +1 -1
  195. package/dist/esm/run/flows/url/types.js +31 -1
  196. package/dist/esm/run/flows/url/types.js.map +1 -1
  197. package/dist/esm/run/flows/url/video-only.js +68 -0
  198. package/dist/esm/run/flows/url/video-only.js.map +1 -0
  199. package/dist/esm/run/help.js +15 -5
  200. package/dist/esm/run/help.js.map +1 -1
  201. package/dist/esm/run/markdown-transforms.js +89 -0
  202. package/dist/esm/run/markdown-transforms.js.map +1 -0
  203. package/dist/esm/run/markdown.js +1 -96
  204. package/dist/esm/run/markdown.js.map +1 -1
  205. package/dist/esm/run/run-config.js +1 -1
  206. package/dist/esm/run/run-config.js.map +1 -1
  207. package/dist/esm/run/run-env.js +28 -7
  208. package/dist/esm/run/run-env.js.map +1 -1
  209. package/dist/esm/run/run-models.js +35 -5
  210. package/dist/esm/run/run-models.js.map +1 -1
  211. package/dist/esm/run/run-settings-parse.js +77 -0
  212. package/dist/esm/run/run-settings-parse.js.map +1 -0
  213. package/dist/esm/run/run-settings.js +7 -72
  214. package/dist/esm/run/run-settings.js.map +1 -1
  215. package/dist/esm/run/runner-contexts.js +122 -0
  216. package/dist/esm/run/runner-contexts.js.map +1 -0
  217. package/dist/esm/run/runner-execution.js +82 -0
  218. package/dist/esm/run/runner-execution.js.map +1 -0
  219. package/dist/esm/run/runner-flags.js +97 -0
  220. package/dist/esm/run/runner-flags.js.map +1 -0
  221. package/dist/esm/run/runner-plan.js +369 -0
  222. package/dist/esm/run/runner-plan.js.map +1 -0
  223. package/dist/esm/run/runner-setup.js +109 -0
  224. package/dist/esm/run/runner-setup.js.map +1 -0
  225. package/dist/esm/run/runner-slides.js +49 -0
  226. package/dist/esm/run/runner-slides.js.map +1 -0
  227. package/dist/esm/run/runner.js +53 -692
  228. package/dist/esm/run/runner.js.map +1 -1
  229. package/dist/esm/run/slides-cli.js +3 -2
  230. package/dist/esm/run/slides-cli.js.map +1 -1
  231. package/dist/esm/run/slides-render.js +5 -2
  232. package/dist/esm/run/slides-render.js.map +1 -1
  233. package/dist/esm/run/stdin-temp-file.js +1 -1
  234. package/dist/esm/run/stdin-temp-file.js.map +1 -1
  235. package/dist/esm/run/streaming.js +2 -0
  236. package/dist/esm/run/streaming.js.map +1 -1
  237. package/dist/esm/run/summary-engine.js +50 -10
  238. package/dist/esm/run/summary-engine.js.map +1 -1
  239. package/dist/esm/run/summary-llm.js +2 -1
  240. package/dist/esm/run/summary-llm.js.map +1 -1
  241. package/dist/esm/run/terminal.js +4 -1
  242. package/dist/esm/run/terminal.js.map +1 -1
  243. package/dist/esm/run/transcriber-cli.js +1 -1
  244. package/dist/esm/run/transcriber-cli.js.map +1 -1
  245. package/dist/esm/shared/slides-text.js +2 -0
  246. package/dist/esm/shared/slides-text.js.map +1 -0
  247. package/dist/esm/slides/download.js +242 -0
  248. package/dist/esm/slides/download.js.map +1 -0
  249. package/dist/esm/slides/extract-finalize.js +98 -0
  250. package/dist/esm/slides/extract-finalize.js.map +1 -0
  251. package/dist/esm/slides/extract.js +105 -1685
  252. package/dist/esm/slides/extract.js.map +1 -1
  253. package/dist/esm/slides/frame-extraction.js +372 -0
  254. package/dist/esm/slides/frame-extraction.js.map +1 -0
  255. package/dist/esm/slides/index.js +2 -1
  256. package/dist/esm/slides/index.js.map +1 -1
  257. package/dist/esm/slides/ingest.js +194 -0
  258. package/dist/esm/slides/ingest.js.map +1 -0
  259. package/dist/esm/slides/ocr.js +91 -0
  260. package/dist/esm/slides/ocr.js.map +1 -0
  261. package/dist/esm/slides/process.js +218 -0
  262. package/dist/esm/slides/process.js.map +1 -0
  263. package/dist/esm/slides/scene-detection.js +387 -0
  264. package/dist/esm/slides/scene-detection.js.map +1 -0
  265. package/dist/esm/slides/source-id.js +42 -0
  266. package/dist/esm/slides/source-id.js.map +1 -0
  267. package/dist/esm/slides/source.js +80 -0
  268. package/dist/esm/slides/source.js.map +1 -0
  269. package/dist/esm/tty/progress/fetch-html.js +6 -0
  270. package/dist/esm/tty/progress/fetch-html.js.map +1 -1
  271. package/dist/esm/tty/progress/transcript-state.js +202 -0
  272. package/dist/esm/tty/progress/transcript-state.js.map +1 -0
  273. package/dist/esm/tty/progress/transcript.js +43 -194
  274. package/dist/esm/tty/progress/transcript.js.map +1 -1
  275. package/dist/esm/tty/spinner.js +17 -3
  276. package/dist/esm/tty/spinner.js.map +1 -1
  277. package/dist/esm/tty/website-progress.js +16 -3
  278. package/dist/esm/tty/website-progress.js.map +1 -1
  279. package/dist/esm/version.js +1 -1
  280. package/dist/types/cache-keys.d.ts +44 -0
  281. package/dist/types/cache-slides-cleanup.d.ts +1 -0
  282. package/dist/types/cache.d.ts +2 -10
  283. package/dist/types/config/env.d.ts +6 -0
  284. package/dist/types/config/model.d.ts +3 -0
  285. package/dist/types/config/parse-helpers.d.ts +7 -0
  286. package/dist/types/config/read.d.ts +2 -0
  287. package/dist/types/config/sections.d.ts +34 -0
  288. package/dist/types/config/types.d.ts +238 -0
  289. package/dist/types/config.d.ts +3 -209
  290. package/dist/types/costs.d.ts +1 -1
  291. package/dist/types/daemon/agent-model.d.ts +40 -0
  292. package/dist/types/daemon/agent-request.d.ts +14 -0
  293. package/dist/types/daemon/chat.d.ts +3 -1
  294. package/dist/types/daemon/config.d.ts +13 -2
  295. package/dist/types/daemon/env-snapshot.d.ts +1 -1
  296. package/dist/types/daemon/flow-context.d.ts +2 -2
  297. package/dist/types/daemon/models.d.ts +3 -0
  298. package/dist/types/daemon/schtasks.d.ts +2 -1
  299. package/dist/types/daemon/server-admin-routes.d.ts +22 -0
  300. package/dist/types/daemon/server-agent-route.d.ts +9 -0
  301. package/dist/types/daemon/server-http.d.ts +10 -0
  302. package/dist/types/daemon/server-session-routes.d.ts +11 -0
  303. package/dist/types/daemon/server-session.d.ts +52 -0
  304. package/dist/types/daemon/server-sse.d.ts +12 -0
  305. package/dist/types/daemon/server-summarize-execution.d.ts +70 -0
  306. package/dist/types/daemon/server-summarize-request.d.ts +36 -0
  307. package/dist/types/daemon/server.d.ts +4 -4
  308. package/dist/types/daemon/summarize.d.ts +1 -1
  309. package/dist/types/daemon/windows-container.d.ts +1 -0
  310. package/dist/types/llm/cli-exec.d.ts +13 -0
  311. package/dist/types/llm/cli-provider-output.d.ts +25 -0
  312. package/dist/types/llm/generate-text-document.d.ts +35 -0
  313. package/dist/types/llm/generate-text-shared.d.ts +32 -0
  314. package/dist/types/llm/generate-text-stream.d.ts +27 -0
  315. package/dist/types/llm/generate-text.d.ts +7 -26
  316. package/dist/types/llm/github-models.d.ts +5 -0
  317. package/dist/types/llm/html-to-markdown.d.ts +2 -1
  318. package/dist/types/llm/model-id.d.ts +1 -1
  319. package/dist/types/llm/provider-capabilities.d.ts +2 -0
  320. package/dist/types/llm/provider-profile.d.ts +31 -0
  321. package/dist/types/llm/providers/google.d.ts +6 -0
  322. package/dist/types/llm/providers/models.d.ts +5 -0
  323. package/dist/types/llm/providers/openai.d.ts +9 -5
  324. package/dist/types/llm/providers/types.d.ts +1 -0
  325. package/dist/types/llm/transcript-to-markdown.d.ts +2 -1
  326. package/dist/types/model-auto-cli.d.ts +15 -0
  327. package/dist/types/model-auto-rules.d.ts +7 -0
  328. package/dist/types/model-auto.d.ts +5 -7
  329. package/dist/types/model-spec.d.ts +4 -3
  330. package/dist/types/run/attachments.d.ts +3 -2
  331. package/dist/types/run/bird/exec.d.ts +1 -0
  332. package/dist/types/run/bird/media.d.ts +3 -0
  333. package/dist/types/run/bird/parse.d.ts +3 -0
  334. package/dist/types/run/bird/types.d.ts +18 -0
  335. package/dist/types/run/bird.d.ts +12 -17
  336. package/dist/types/run/cache-state.d.ts +1 -1
  337. package/dist/types/run/constants.d.ts +2 -1
  338. package/dist/types/run/env.d.ts +6 -0
  339. package/dist/types/run/finish-line-labels.d.ts +29 -0
  340. package/dist/types/run/finish-line-lengths.d.ts +23 -0
  341. package/dist/types/run/finish-line.d.ts +2 -52
  342. package/dist/types/run/flows/asset/extract.d.ts +1 -1
  343. package/dist/types/run/flows/asset/input.d.ts +1 -1
  344. package/dist/types/run/flows/asset/preprocess.d.ts +1 -1
  345. package/dist/types/run/flows/asset/summary-attempts.d.ts +24 -0
  346. package/dist/types/run/flows/asset/summary.d.ts +16 -2
  347. package/dist/types/run/flows/url/extraction-session.d.ts +22 -0
  348. package/dist/types/run/flows/url/fetch-options.d.ts +29 -0
  349. package/dist/types/run/flows/url/flow-progress.d.ts +43 -0
  350. package/dist/types/run/flows/url/markdown.d.ts +2 -2
  351. package/dist/types/run/flows/url/progress-status-state.d.ts +17 -0
  352. package/dist/types/run/flows/url/progress-status.d.ts +17 -0
  353. package/dist/types/run/flows/url/slides-output-render.d.ts +43 -0
  354. package/dist/types/run/flows/url/slides-output-state.d.ts +21 -0
  355. package/dist/types/run/flows/url/slides-output-stream.d.ts +18 -0
  356. package/dist/types/run/flows/url/slides-output.d.ts +2 -17
  357. package/dist/types/run/flows/url/slides-session.d.ts +26 -0
  358. package/dist/types/run/flows/url/slides-text-markdown.d.ts +46 -0
  359. package/dist/types/run/flows/url/slides-text-transcript.d.ts +36 -0
  360. package/dist/types/run/flows/url/slides-text-types.d.ts +8 -0
  361. package/dist/types/run/flows/url/slides-text.d.ts +3 -87
  362. package/dist/types/run/flows/url/summary-finish.d.ts +16 -0
  363. package/dist/types/run/flows/url/summary-json.d.ts +51 -0
  364. package/dist/types/run/flows/url/summary-prompt.d.ts +22 -0
  365. package/dist/types/run/flows/url/summary-resolution.d.ts +31 -0
  366. package/dist/types/run/flows/url/summary-timestamps.d.ts +11 -0
  367. package/dist/types/run/flows/url/types.d.ts +20 -0
  368. package/dist/types/run/flows/url/video-only.d.ts +27 -0
  369. package/dist/types/run/markdown-transforms.d.ts +3 -0
  370. package/dist/types/run/run-context.d.ts +4 -0
  371. package/dist/types/run/run-env.d.ts +4 -0
  372. package/dist/types/run/run-settings-parse.d.ts +5 -0
  373. package/dist/types/run/run-settings.d.ts +2 -1
  374. package/dist/types/run/runner-contexts.d.ts +37 -0
  375. package/dist/types/run/runner-execution.d.ts +58 -0
  376. package/dist/types/run/runner-flags.d.ts +41 -0
  377. package/dist/types/run/runner-plan.d.ts +19 -0
  378. package/dist/types/run/runner-setup.d.ts +21 -0
  379. package/dist/types/run/runner-slides.d.ts +9 -0
  380. package/dist/types/run/streaming.d.ts +2 -1
  381. package/dist/types/run/summary-engine.d.ts +8 -4
  382. package/dist/types/run/summary-llm.d.ts +5 -3
  383. package/dist/types/run/terminal.d.ts +2 -0
  384. package/dist/types/run/types.d.ts +3 -2
  385. package/dist/types/shared/slides-text.d.ts +1 -0
  386. package/dist/types/slides/download.d.ts +29 -0
  387. package/dist/types/slides/extract-finalize.d.ts +57 -0
  388. package/dist/types/slides/extract.d.ts +2 -13
  389. package/dist/types/slides/frame-extraction.d.ts +38 -0
  390. package/dist/types/slides/index.d.ts +2 -1
  391. package/dist/types/slides/ingest.d.ts +47 -0
  392. package/dist/types/slides/ocr.d.ts +5 -0
  393. package/dist/types/slides/process.d.ts +22 -0
  394. package/dist/types/slides/scene-detection.d.ts +75 -0
  395. package/dist/types/slides/source-id.d.ts +2 -0
  396. package/dist/types/slides/source.d.ts +8 -0
  397. package/dist/types/tty/progress/fetch-html.d.ts +1 -0
  398. package/dist/types/tty/progress/transcript-state.d.ts +27 -0
  399. package/dist/types/tty/progress/transcript.d.ts +1 -0
  400. package/dist/types/tty/spinner.d.ts +1 -0
  401. package/dist/types/version.d.ts +1 -1
  402. package/docs/README.md +1 -1
  403. package/docs/_config.yml +1 -0
  404. package/docs/agent.md +3 -2
  405. package/docs/assets/site.css +145 -2
  406. package/docs/cache.md +2 -1
  407. package/docs/chrome-extension.md +19 -5
  408. package/docs/cli.md +26 -8
  409. package/docs/config.md +30 -9
  410. package/docs/extract-only.md +2 -2
  411. package/docs/firecrawl.md +2 -1
  412. package/docs/index.html +5 -0
  413. package/docs/llm.md +34 -5
  414. package/docs/manual-tests.md +3 -0
  415. package/docs/media.md +9 -1
  416. package/docs/model-auto.md +2 -2
  417. package/docs/model-provider-resolution.md +57 -0
  418. package/docs/releasing.md +9 -12
  419. package/docs/site/docs/chrome-extension.html +1 -1
  420. package/docs/site/index.html +5 -0
  421. package/docs/slides-rendering-flow.md +46 -0
  422. package/docs/slides.md +5 -5
  423. package/docs/smoketest.md +1 -1
  424. package/docs/transcript-provider-flow.md +73 -0
  425. package/docs/website.md +3 -1
  426. package/docs/youtube.md +4 -2
  427. package/package.json +17 -16
@@ -1,7 +1,7 @@
1
- import mime from "mime";
2
1
  import fs from "node:fs/promises";
3
2
  import { tmpdir } from "node:os";
4
3
  import path from "node:path";
4
+ import mime from "mime";
5
5
  import { formatBytes } from "../tty/format.js";
6
6
  export const MAX_DOCUMENT_BYTES_DEFAULT = 50 * 1024 * 1024;
7
7
  export function isUnsupportedAttachmentError(error) {
@@ -1 +1 @@
1
- {"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../../src/run/attachments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"attachments.js","sourceRoot":"","sources":["../../../src/run/attachments.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { execFileTracked } from "../../processes.js";
2
+ const stripAnsi = (value) => value.replace(/\u001b\[[0-9;]*m/g, "");
3
+ export function execTweetCli(binary, args, timeoutMs, env) {
4
+ return new Promise((resolve, reject) => {
5
+ const toText = (value) => typeof value === "string" ? value : value ? value.toString("utf8") : "";
6
+ execFileTracked(binary, args, {
7
+ timeout: timeoutMs,
8
+ env: { ...process.env, ...env },
9
+ maxBuffer: 1024 * 1024,
10
+ }, (error, stdout, stderr) => {
11
+ const stdoutText = toText(stdout).trim();
12
+ const stderrText = stripAnsi(toText(stderr)).trim();
13
+ if (error) {
14
+ const detail = stderrText || stdoutText;
15
+ const suffix = detail ? `: ${detail}` : "";
16
+ reject(new Error(`${binary} read failed${suffix}`));
17
+ return;
18
+ }
19
+ resolve(stdoutText);
20
+ });
21
+ });
22
+ }
23
+ //# sourceMappingURL=exec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"exec.js","sourceRoot":"","sources":["../../../../src/run/bird/exec.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAErD,MAAM,SAAS,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;AAEpF,MAAM,UAAU,YAAY,CAC1B,MAAc,EACd,IAAc,EACd,SAAiB,EACjB,GAAuC;IAEvC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,CAAC,KAAyC,EAAE,EAAE,CAC3D,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAE1E,eAAe,CACb,MAAM,EACN,IAAI,EACJ;YACE,OAAO,EAAE,SAAS;YAClB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,GAAG,EAAE;YAC/B,SAAS,EAAE,IAAI,GAAG,IAAI;SACvB,EACD,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACxB,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC;YACzC,MAAM,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YACpD,IAAI,KAAK,EAAE,CAAC;gBACV,MAAM,MAAM,GAAG,UAAU,IAAI,UAAU,CAAC;gBACxC,MAAM,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3C,MAAM,CAAC,IAAI,KAAK,CAAC,GAAG,MAAM,eAAe,MAAM,EAAE,CAAC,CAAC,CAAC;gBACpD,OAAO;YACT,CAAC;YACD,OAAO,CAAC,UAAU,CAAC,CAAC;QACtB,CAAC,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,171 @@
1
+ const URL_PREFIX_PATTERN = /^https?:\/\//i;
2
+ const asRecord = (value) => value && typeof value === "object" ? value : null;
3
+ const asArray = (value) => (Array.isArray(value) ? value : null);
4
+ const asString = (value) => (typeof value === "string" ? value : null);
5
+ const asNumber = (value) => (typeof value === "number" ? value : null);
6
+ const isLikelyVideoUrl = (url) => url.includes("video.twimg.com") || url.includes("/i/broadcasts/") || url.endsWith(".m3u8");
7
+ const addUrl = (set, value) => {
8
+ if (!value)
9
+ return;
10
+ if (!URL_PREFIX_PATTERN.test(value))
11
+ return;
12
+ set.add(value);
13
+ };
14
+ export function extractMediaFromBirdRaw(raw) {
15
+ const root = asRecord(raw);
16
+ if (!root)
17
+ return null;
18
+ const legacy = asRecord(root.legacy);
19
+ const extended = asRecord(legacy?.extended_entities);
20
+ const mediaEntries = asArray(extended?.media);
21
+ if (mediaEntries && mediaEntries.length > 0) {
22
+ const urls = new Set();
23
+ let preferredUrl = null;
24
+ let preferredBitrate = -1;
25
+ let kind = "video";
26
+ for (const entry of mediaEntries) {
27
+ const media = asRecord(entry);
28
+ const mediaType = asString(media?.type);
29
+ if (mediaType === "audio") {
30
+ kind = "audio";
31
+ }
32
+ if (mediaType !== "video" && mediaType !== "animated_gif" && mediaType !== "audio") {
33
+ continue;
34
+ }
35
+ const videoInfo = asRecord(media?.video_info);
36
+ const variants = asArray(videoInfo?.variants);
37
+ if (!variants)
38
+ continue;
39
+ for (const variant of variants) {
40
+ const variantRecord = asRecord(variant);
41
+ const url = asString(variantRecord?.url);
42
+ if (!url)
43
+ continue;
44
+ addUrl(urls, url);
45
+ const contentType = asString(variantRecord?.content_type) ?? "";
46
+ const bitrate = asNumber(variantRecord?.bitrate) ?? -1;
47
+ if (contentType.includes("video/mp4") && bitrate >= preferredBitrate) {
48
+ preferredBitrate = bitrate;
49
+ preferredUrl = url;
50
+ }
51
+ else if (!preferredUrl) {
52
+ preferredUrl = url;
53
+ }
54
+ }
55
+ }
56
+ if (urls.size > 0) {
57
+ return {
58
+ kind,
59
+ urls: Array.from(urls),
60
+ preferredUrl,
61
+ source: "extended_entities",
62
+ };
63
+ }
64
+ }
65
+ const card = asRecord(root.card);
66
+ const cardLegacy = asRecord(card?.legacy);
67
+ const bindings = asArray(cardLegacy?.binding_values);
68
+ if (bindings) {
69
+ const urls = new Set();
70
+ for (const binding of bindings) {
71
+ const record = asRecord(binding);
72
+ const key = asString(record?.key);
73
+ if (key !== "broadcast_url")
74
+ continue;
75
+ const value = asRecord(record?.value);
76
+ const url = asString(value?.string_value);
77
+ addUrl(urls, url);
78
+ }
79
+ if (urls.size > 0) {
80
+ const preferredUrl = urls.values().next().value ?? null;
81
+ return {
82
+ kind: "video",
83
+ urls: Array.from(urls),
84
+ preferredUrl,
85
+ source: "card",
86
+ };
87
+ }
88
+ }
89
+ const entities = asRecord(legacy?.entities);
90
+ const entityUrls = asArray(entities?.urls);
91
+ if (entityUrls) {
92
+ const urls = new Set();
93
+ for (const entity of entityUrls) {
94
+ const record = asRecord(entity);
95
+ const expanded = asString(record?.expanded_url);
96
+ if (!expanded || !isLikelyVideoUrl(expanded))
97
+ continue;
98
+ addUrl(urls, expanded);
99
+ }
100
+ if (urls.size > 0) {
101
+ const preferredUrl = urls.values().next().value ?? null;
102
+ return {
103
+ kind: "video",
104
+ urls: Array.from(urls),
105
+ preferredUrl,
106
+ source: "entities",
107
+ };
108
+ }
109
+ }
110
+ return null;
111
+ }
112
+ export function extractMediaFromXurlRaw(raw) {
113
+ const root = asRecord(raw);
114
+ if (!root)
115
+ return null;
116
+ const data = asRecord(root.data);
117
+ const includes = asRecord(root.includes);
118
+ const attachments = asRecord(data?.attachments);
119
+ const mediaKeys = new Set((asArray(attachments?.media_keys) ?? [])
120
+ .map((value) => asString(value))
121
+ .filter((value) => Boolean(value)));
122
+ const mediaEntries = asArray(includes?.media) ?? [];
123
+ if (mediaEntries.length === 0)
124
+ return null;
125
+ const urls = new Set();
126
+ let preferredUrl = null;
127
+ let preferredBitrate = -1;
128
+ let kind = "video";
129
+ for (const entry of mediaEntries) {
130
+ const media = asRecord(entry);
131
+ const mediaKey = asString(media?.media_key);
132
+ if (mediaKeys.size > 0 && mediaKey && !mediaKeys.has(mediaKey))
133
+ continue;
134
+ const mediaType = asString(media?.type);
135
+ if (mediaType !== "video" && mediaType !== "animated_gif" && mediaType !== "audio")
136
+ continue;
137
+ if (mediaType === "audio")
138
+ kind = "audio";
139
+ for (const variant of asArray(media?.variants) ?? []) {
140
+ const record = asRecord(variant);
141
+ const url = asString(record?.url);
142
+ if (!url)
143
+ continue;
144
+ addUrl(urls, url);
145
+ const contentType = asString(record?.content_type) ?? "";
146
+ const bitrate = asNumber(record?.bit_rate) ?? -1;
147
+ if (contentType.includes("video/mp4") && bitrate >= preferredBitrate) {
148
+ preferredBitrate = bitrate;
149
+ preferredUrl = url;
150
+ }
151
+ else if (!preferredUrl) {
152
+ preferredUrl = url;
153
+ }
154
+ }
155
+ const directUrl = asString(media?.url);
156
+ if (directUrl) {
157
+ addUrl(urls, directUrl);
158
+ if (!preferredUrl)
159
+ preferredUrl = directUrl;
160
+ }
161
+ }
162
+ if (urls.size === 0)
163
+ return null;
164
+ return {
165
+ kind,
166
+ urls: Array.from(urls),
167
+ preferredUrl,
168
+ source: "xurl",
169
+ };
170
+ }
171
+ //# sourceMappingURL=media.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media.js","sourceRoot":"","sources":["../../../../src/run/bird/media.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import { extractMediaFromBirdRaw, extractMediaFromXurlRaw } from "./media.js";
2
+ const asRecord = (value) => value && typeof value === "object" ? value : null;
3
+ const asArray = (value) => (Array.isArray(value) ? value : null);
4
+ const asString = (value) => (typeof value === "string" ? value : null);
5
+ function resolveXurlArticleText(article) {
6
+ if (!article)
7
+ return null;
8
+ const title = asString(article.title)?.trim() ?? "";
9
+ const body = asString(article.text)?.trim() ??
10
+ asString(article.body)?.trim() ??
11
+ asString(article.preview_text)?.trim() ??
12
+ asString(article.excerpt)?.trim() ??
13
+ "";
14
+ if (title && body && !body.includes(title)) {
15
+ return `${title}\n\n${body}`;
16
+ }
17
+ if (body)
18
+ return body;
19
+ if (title)
20
+ return title;
21
+ const articleResults = asRecord(article.article_results);
22
+ const articleResult = asRecord(articleResults?.result);
23
+ if (!articleResult)
24
+ return null;
25
+ return resolveXurlArticleText(articleResult);
26
+ }
27
+ function resolveXurlTweetText(data) {
28
+ const dataText = asString(data.text)?.trim() ?? "";
29
+ const noteTweet = asRecord(data.note_tweet);
30
+ const noteTweetText = asString(noteTweet?.text)?.trim() ?? "";
31
+ const articleText = resolveXurlArticleText(asRecord(data.article)) ?? "";
32
+ const candidates = [dataText, noteTweetText, articleText].filter((value) => value.length > 0);
33
+ if (candidates.length === 0)
34
+ return null;
35
+ return candidates.sort((left, right) => right.length - left.length)[0] ?? null;
36
+ }
37
+ export function parseXurlTweetPayload(raw) {
38
+ const root = asRecord(raw);
39
+ const errors = asArray(root?.errors);
40
+ if (errors && errors.length > 0) {
41
+ const first = asRecord(errors[0]);
42
+ const message = asString(first?.message);
43
+ if (message)
44
+ throw new Error(`xurl API error: ${message}`);
45
+ }
46
+ const data = asRecord(root?.data);
47
+ if (!data) {
48
+ throw new Error("xurl read returned invalid payload");
49
+ }
50
+ const text = resolveXurlTweetText(data);
51
+ if (!text) {
52
+ throw new Error("xurl read returned invalid payload");
53
+ }
54
+ const includes = asRecord(root?.includes);
55
+ const users = asArray(includes?.users) ?? [];
56
+ const authorId = asString(data.author_id);
57
+ const authorRecord = users.map((entry) => asRecord(entry)).find((entry) => asString(entry?.id) === authorId) ?? null;
58
+ return {
59
+ id: asString(data.id) ?? undefined,
60
+ text,
61
+ author: authorRecord && (asString(authorRecord.username) || asString(authorRecord.name))
62
+ ? {
63
+ username: asString(authorRecord.username) ?? undefined,
64
+ name: asString(authorRecord.name) ?? undefined,
65
+ }
66
+ : undefined,
67
+ createdAt: asString(data.created_at) ?? undefined,
68
+ media: extractMediaFromXurlRaw(raw),
69
+ client: "xurl",
70
+ };
71
+ }
72
+ export function parseBirdTweetPayload(raw) {
73
+ const parsed = raw;
74
+ const tweet = Array.isArray(parsed) ? parsed[0] : parsed;
75
+ if (!tweet || typeof tweet.text !== "string") {
76
+ throw new Error("bird read returned invalid payload");
77
+ }
78
+ const { _raw, ...rest } = tweet;
79
+ const media = extractMediaFromBirdRaw(_raw);
80
+ return { ...rest, media, client: "bird" };
81
+ }
82
+ //# sourceMappingURL=parse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parse.js","sourceRoot":"","sources":["../../../../src/run/bird/parse.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/run/bird/types.ts"],"names":[],"mappings":""}
@@ -1,115 +1,24 @@
1
- import { execFileTracked } from "../processes.js";
1
+ import { execTweetCli } from "./bird/exec.js";
2
+ import { parseBirdTweetPayload, parseXurlTweetPayload } from "./bird/parse.js";
2
3
  import { BIRD_TIP, TWITTER_HOSTS } from "./constants.js";
3
- import { hasBirdCli } from "./env.js";
4
- const URL_PREFIX_PATTERN = /^https?:\/\//i;
5
- const asRecord = (value) => value && typeof value === "object" ? value : null;
6
- const asArray = (value) => (Array.isArray(value) ? value : null);
7
- const asString = (value) => (typeof value === "string" ? value : null);
8
- const isLikelyVideoUrl = (url) => url.includes("video.twimg.com") || url.includes("/i/broadcasts/") || url.endsWith(".m3u8");
9
- const addUrl = (set, value) => {
10
- if (!value)
11
- return;
12
- if (!URL_PREFIX_PATTERN.test(value))
13
- return;
14
- set.add(value);
15
- };
16
- function extractMediaFromBirdRaw(raw) {
17
- const root = asRecord(raw);
18
- if (!root)
4
+ import { hasBirdCli, hasXurlCli } from "./env.js";
5
+ function parseTweetId(raw) {
6
+ const trimmed = raw.trim();
7
+ if (!trimmed)
19
8
  return null;
20
- const legacy = asRecord(root.legacy);
21
- const extended = asRecord(legacy?.extended_entities);
22
- const mediaEntries = asArray(extended?.media);
23
- if (mediaEntries && mediaEntries.length > 0) {
24
- const urls = new Set();
25
- let preferredUrl = null;
26
- let preferredBitrate = -1;
27
- let kind = "video";
28
- for (const entry of mediaEntries) {
29
- const media = asRecord(entry);
30
- const mediaType = asString(media?.type);
31
- if (mediaType === "audio") {
32
- kind = "audio";
33
- }
34
- if (mediaType !== "video" && mediaType !== "animated_gif" && mediaType !== "audio") {
35
- continue;
36
- }
37
- const videoInfo = asRecord(media?.video_info);
38
- const variants = asArray(videoInfo?.variants);
39
- if (!variants)
40
- continue;
41
- for (const variant of variants) {
42
- const variantRecord = asRecord(variant);
43
- const url = asString(variantRecord?.url);
44
- if (!url)
45
- continue;
46
- addUrl(urls, url);
47
- const contentType = asString(variantRecord?.content_type) ?? "";
48
- const bitrate = typeof variantRecord?.bitrate === "number" ? variantRecord.bitrate : -1;
49
- if (contentType.includes("video/mp4") && bitrate >= preferredBitrate) {
50
- preferredBitrate = bitrate;
51
- preferredUrl = url;
52
- }
53
- else if (!preferredUrl) {
54
- preferredUrl = url;
55
- }
56
- }
57
- }
58
- if (urls.size > 0) {
59
- return {
60
- kind,
61
- urls: Array.from(urls),
62
- preferredUrl,
63
- source: "extended_entities",
64
- };
65
- }
66
- }
67
- const card = asRecord(root.card);
68
- const cardLegacy = asRecord(card?.legacy);
69
- const bindings = asArray(cardLegacy?.binding_values);
70
- if (bindings) {
71
- const urls = new Set();
72
- for (const binding of bindings) {
73
- const record = asRecord(binding);
74
- const key = asString(record?.key);
75
- if (key !== "broadcast_url")
76
- continue;
77
- const value = asRecord(record?.value);
78
- const url = asString(value?.string_value);
79
- addUrl(urls, url);
80
- }
81
- if (urls.size > 0) {
82
- const preferredUrl = urls.values().next().value ?? null;
83
- return {
84
- kind: "video",
85
- urls: Array.from(urls),
86
- preferredUrl,
87
- source: "card",
88
- };
89
- }
9
+ if (/^\d+$/.test(trimmed))
10
+ return trimmed;
11
+ try {
12
+ const parsed = new URL(trimmed);
13
+ const host = parsed.hostname.toLowerCase().replace(/^www\./, "");
14
+ if (!TWITTER_HOSTS.has(host))
15
+ return null;
16
+ const match = parsed.pathname.match(/\/status\/(\d+)/);
17
+ return match?.[1] ?? null;
90
18
  }
91
- const entities = asRecord(legacy?.entities);
92
- const entityUrls = asArray(entities?.urls);
93
- if (entityUrls) {
94
- const urls = new Set();
95
- for (const entity of entityUrls) {
96
- const record = asRecord(entity);
97
- const expanded = asString(record?.expanded_url);
98
- if (!expanded || !isLikelyVideoUrl(expanded))
99
- continue;
100
- addUrl(urls, expanded);
101
- }
102
- if (urls.size > 0) {
103
- const preferredUrl = urls.values().next().value ?? null;
104
- return {
105
- kind: "video",
106
- urls: Array.from(urls),
107
- preferredUrl,
108
- source: "entities",
109
- };
110
- }
19
+ catch {
20
+ return null;
111
21
  }
112
- return null;
113
22
  }
114
23
  function isTwitterStatusUrl(raw) {
115
24
  try {
@@ -123,45 +32,78 @@ function isTwitterStatusUrl(raw) {
123
32
  return false;
124
33
  }
125
34
  }
126
- export async function readTweetWithBird(args) {
127
- return await new Promise((resolve, reject) => {
128
- const toText = (value) => typeof value === "string" ? value : value ? value.toString("utf8") : "";
129
- execFileTracked("bird", ["read", args.url, "--json-full"], {
130
- timeout: args.timeoutMs,
131
- env: { ...process.env, ...args.env },
132
- maxBuffer: 1024 * 1024,
133
- }, (error, stdout, stderr) => {
134
- if (error) {
135
- const detail = toText(stderr).trim();
136
- const suffix = detail ? `: ${detail}` : "";
137
- reject(new Error(`bird read failed${suffix}`));
138
- return;
139
- }
140
- const trimmed = toText(stdout).trim();
141
- if (!trimmed) {
142
- reject(new Error("bird read returned empty output"));
143
- return;
144
- }
145
- try {
146
- const parsed = JSON.parse(trimmed);
147
- const tweet = Array.isArray(parsed) ? parsed[0] : parsed;
148
- if (!tweet || typeof tweet.text !== "string") {
149
- reject(new Error("bird read returned invalid payload"));
150
- return;
151
- }
152
- const { _raw, ...rest } = tweet;
153
- const media = extractMediaFromBirdRaw(_raw);
154
- resolve({ ...rest, media });
155
- }
156
- catch (parseError) {
157
- const message = parseError instanceof Error ? parseError.message : String(parseError);
158
- reject(new Error(`bird read returned invalid JSON: ${message}`));
159
- }
160
- });
35
+ function buildXurlTweetEndpoint(tweetId) {
36
+ const params = new URLSearchParams({
37
+ expansions: "author_id,attachments.media_keys",
38
+ "tweet.fields": "created_at,attachments,entities,note_tweet,article",
39
+ "user.fields": "username,name",
40
+ "media.fields": "type,url,preview_image_url,variants",
161
41
  });
42
+ return `/2/tweets/${tweetId}?${params.toString()}`;
43
+ }
44
+ export async function readTweetWithXurl(args) {
45
+ const tweetId = parseTweetId(args.url);
46
+ if (!tweetId) {
47
+ throw new Error("xurl read requires a tweet status URL or id");
48
+ }
49
+ const stdout = await execTweetCli("xurl", [buildXurlTweetEndpoint(tweetId)], args.timeoutMs, args.env);
50
+ if (!stdout) {
51
+ throw new Error("xurl read returned empty output");
52
+ }
53
+ try {
54
+ return parseXurlTweetPayload(JSON.parse(stdout));
55
+ }
56
+ catch (parseError) {
57
+ if (parseError instanceof Error &&
58
+ (parseError.message.startsWith("xurl read returned") ||
59
+ parseError.message.startsWith("xurl API error"))) {
60
+ throw parseError;
61
+ }
62
+ const message = parseError instanceof Error ? parseError.message : String(parseError);
63
+ throw new Error(`xurl read returned invalid JSON: ${message}`);
64
+ }
65
+ }
66
+ export async function readTweetWithBird(args) {
67
+ const stdout = await execTweetCli("bird", ["read", args.url, "--json-full"], args.timeoutMs, args.env);
68
+ if (!stdout) {
69
+ throw new Error("bird read returned empty output");
70
+ }
71
+ try {
72
+ return parseBirdTweetPayload(JSON.parse(stdout));
73
+ }
74
+ catch (parseError) {
75
+ if (parseError instanceof Error && parseError.message.startsWith("bird read returned")) {
76
+ throw parseError;
77
+ }
78
+ const message = parseError instanceof Error ? parseError.message : String(parseError);
79
+ throw new Error(`bird read returned invalid JSON: ${message}`);
80
+ }
81
+ }
82
+ export async function readTweetWithPreferredClient(args) {
83
+ const attempts = [];
84
+ if (hasXurlCli(args.env)) {
85
+ attempts.push(["xurl", () => readTweetWithXurl(args)]);
86
+ }
87
+ if (hasBirdCli(args.env)) {
88
+ attempts.push(["bird", () => readTweetWithBird(args)]);
89
+ }
90
+ const errors = [];
91
+ for (const [client, run] of attempts) {
92
+ try {
93
+ const tweet = await run();
94
+ return { ...tweet, client };
95
+ }
96
+ catch (error) {
97
+ errors.push(`${client}: ${error instanceof Error ? error.message : String(error)}`);
98
+ }
99
+ }
100
+ if (errors.length > 0) {
101
+ throw new Error(errors.join("; "));
102
+ }
103
+ throw new Error("No X CLI available");
162
104
  }
163
105
  export function withBirdTip(error, url, env) {
164
- if (!url || !isTwitterStatusUrl(url) || hasBirdCli(env)) {
106
+ if (!url || !isTwitterStatusUrl(url) || hasXurlCli(env) || hasBirdCli(env)) {
165
107
  return error instanceof Error ? error : new Error(String(error));
166
108
  }
167
109
  const message = error instanceof Error ? error.message : String(error);
@@ -1 +1 @@
1
- {"version":3,"file":"bird.js","sourceRoot":"","sources":["../../../src/run/bird.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bird.js","sourceRoot":"","sources":["../../../src/run/bird.ts"],"names":[],"mappings":"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"}