@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.
- package/CHANGELOG.md +121 -0
- package/LICENSE +1 -1
- package/README.md +391 -183
- package/dist/cli.js +1 -1
- package/dist/esm/cache.js +134 -64
- package/dist/esm/cache.js.map +1 -1
- package/dist/esm/cli-main.js +27 -27
- package/dist/esm/cli-main.js.map +1 -1
- package/dist/esm/cli.js +2 -2
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/config.js +396 -126
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/content/asset.js +53 -50
- package/dist/esm/content/asset.js.map +1 -1
- package/dist/esm/content/index.js +1 -1
- package/dist/esm/content/index.js.map +1 -1
- package/dist/esm/costs.js +1 -1
- package/dist/esm/costs.js.map +1 -1
- package/dist/esm/daemon/agent.js +548 -0
- package/dist/esm/daemon/agent.js.map +1 -0
- package/dist/esm/daemon/auto-mode.js +3 -3
- package/dist/esm/daemon/auto-mode.js.map +1 -1
- package/dist/esm/daemon/chat.js +88 -178
- package/dist/esm/daemon/chat.js.map +1 -1
- package/dist/esm/daemon/cli-entrypoint.js +72 -0
- package/dist/esm/daemon/cli-entrypoint.js.map +1 -0
- package/dist/esm/daemon/cli.js +91 -83
- package/dist/esm/daemon/cli.js.map +1 -1
- package/dist/esm/daemon/config.js +15 -15
- package/dist/esm/daemon/config.js.map +1 -1
- package/dist/esm/daemon/constants.js +6 -6
- package/dist/esm/daemon/constants.js.map +1 -1
- package/dist/esm/daemon/env-merge.js.map +1 -1
- package/dist/esm/daemon/env-snapshot.js +36 -28
- package/dist/esm/daemon/env-snapshot.js.map +1 -1
- package/dist/esm/daemon/flow-context.js +86 -32
- package/dist/esm/daemon/flow-context.js.map +1 -1
- package/dist/esm/daemon/launchd.js +119 -47
- package/dist/esm/daemon/launchd.js.map +1 -1
- package/dist/esm/daemon/meta.js +5 -5
- package/dist/esm/daemon/meta.js.map +1 -1
- package/dist/esm/daemon/models.js +54 -31
- package/dist/esm/daemon/models.js.map +1 -1
- package/dist/esm/daemon/process-registry.js +206 -0
- package/dist/esm/daemon/process-registry.js.map +1 -0
- package/dist/esm/daemon/schtasks.js +96 -32
- package/dist/esm/daemon/schtasks.js.map +1 -1
- package/dist/esm/daemon/server.js +832 -158
- package/dist/esm/daemon/server.js.map +1 -1
- package/dist/esm/daemon/summarize-progress.js +11 -11
- package/dist/esm/daemon/summarize-progress.js.map +1 -1
- package/dist/esm/daemon/summarize.js +61 -32
- package/dist/esm/daemon/summarize.js.map +1 -1
- package/dist/esm/daemon/systemd.js +96 -35
- package/dist/esm/daemon/systemd.js.map +1 -1
- package/dist/esm/firecrawl.js +12 -12
- package/dist/esm/firecrawl.js.map +1 -1
- package/dist/esm/flags.js +55 -31
- package/dist/esm/flags.js.map +1 -1
- package/dist/esm/index.js +3 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/language.js +1 -1
- package/dist/esm/language.js.map +1 -1
- package/dist/esm/llm/cli.js +128 -64
- package/dist/esm/llm/cli.js.map +1 -1
- package/dist/esm/llm/errors.js +1 -1
- package/dist/esm/llm/errors.js.map +1 -1
- package/dist/esm/llm/generate-text.js +107 -98
- package/dist/esm/llm/generate-text.js.map +1 -1
- package/dist/esm/llm/google-models.js +17 -17
- package/dist/esm/llm/google-models.js.map +1 -1
- package/dist/esm/llm/html-to-markdown.js +3 -3
- package/dist/esm/llm/html-to-markdown.js.map +1 -1
- package/dist/esm/llm/model-id.js +38 -16
- package/dist/esm/llm/model-id.js.map +1 -1
- package/dist/esm/llm/prompt.js +5 -5
- package/dist/esm/llm/prompt.js.map +1 -1
- package/dist/esm/llm/providers/anthropic.js +33 -33
- package/dist/esm/llm/providers/anthropic.js.map +1 -1
- package/dist/esm/llm/providers/google.js +19 -19
- package/dist/esm/llm/providers/google.js.map +1 -1
- package/dist/esm/llm/providers/models.js +30 -30
- package/dist/esm/llm/providers/models.js.map +1 -1
- package/dist/esm/llm/providers/openai.js +36 -35
- package/dist/esm/llm/providers/openai.js.map +1 -1
- package/dist/esm/llm/providers/shared.js +8 -8
- package/dist/esm/llm/providers/shared.js.map +1 -1
- package/dist/esm/llm/transcript-to-markdown.js +9 -5
- package/dist/esm/llm/transcript-to-markdown.js.map +1 -1
- package/dist/esm/llm/usage.js +18 -18
- package/dist/esm/llm/usage.js.map +1 -1
- package/dist/esm/logging/daemon.js +21 -21
- package/dist/esm/logging/daemon.js.map +1 -1
- package/dist/esm/logging/ring-file.js +5 -5
- package/dist/esm/logging/ring-file.js.map +1 -1
- package/dist/esm/markitdown.js +21 -19
- package/dist/esm/markitdown.js.map +1 -1
- package/dist/esm/media-cache.js +251 -0
- package/dist/esm/media-cache.js.map +1 -0
- package/dist/esm/model-auto.js +175 -106
- package/dist/esm/model-auto.js.map +1 -1
- package/dist/esm/model-spec.js +52 -42
- package/dist/esm/model-spec.js.map +1 -1
- package/dist/esm/pricing/litellm.js +4 -4
- package/dist/esm/pricing/litellm.js.map +1 -1
- package/dist/esm/processes.js +2 -0
- package/dist/esm/processes.js.map +1 -0
- package/dist/esm/prompts/index.js +1 -1
- package/dist/esm/prompts/index.js.map +1 -1
- package/dist/esm/refresh-free.js +81 -81
- package/dist/esm/refresh-free.js.map +1 -1
- package/dist/esm/run/attachments.js +47 -44
- package/dist/esm/run/attachments.js.map +1 -1
- package/dist/esm/run/bird.js +125 -12
- package/dist/esm/run/bird.js.map +1 -1
- package/dist/esm/run/cache-state.js +7 -7
- package/dist/esm/run/cache-state.js.map +1 -1
- package/dist/esm/run/cli-fallback-state.js +45 -0
- package/dist/esm/run/cli-fallback-state.js.map +1 -0
- package/dist/esm/run/cli-preflight.js +40 -22
- package/dist/esm/run/cli-preflight.js.map +1 -1
- package/dist/esm/run/constants.js +12 -12
- package/dist/esm/run/constants.js.map +1 -1
- package/dist/esm/run/cookies/twitter.js +47 -47
- package/dist/esm/run/cookies/twitter.js.map +1 -1
- package/dist/esm/run/env.js +21 -15
- package/dist/esm/run/env.js.map +1 -1
- package/dist/esm/run/fetch-with-timeout.js +4 -4
- package/dist/esm/run/fetch-with-timeout.js.map +1 -1
- package/dist/esm/run/finish-line.js +78 -71
- package/dist/esm/run/finish-line.js.map +1 -1
- package/dist/esm/run/flows/asset/extract.js +70 -0
- package/dist/esm/run/flows/asset/extract.js.map +1 -0
- package/dist/esm/run/flows/asset/input.js +202 -37
- package/dist/esm/run/flows/asset/input.js.map +1 -1
- package/dist/esm/run/flows/asset/media-policy.js +3 -0
- package/dist/esm/run/flows/asset/media-policy.js.map +1 -0
- package/dist/esm/run/flows/asset/media.js +233 -0
- package/dist/esm/run/flows/asset/media.js.map +1 -0
- package/dist/esm/run/flows/asset/output.js +98 -0
- package/dist/esm/run/flows/asset/output.js.map +1 -0
- package/dist/esm/run/flows/asset/preprocess.js +79 -44
- package/dist/esm/run/flows/asset/preprocess.js.map +1 -1
- package/dist/esm/run/flows/asset/summary.js +306 -89
- package/dist/esm/run/flows/asset/summary.js.map +1 -1
- package/dist/esm/run/flows/url/extract.js +31 -31
- package/dist/esm/run/flows/url/extract.js.map +1 -1
- package/dist/esm/run/flows/url/flow.js +388 -82
- package/dist/esm/run/flows/url/flow.js.map +1 -1
- package/dist/esm/run/flows/url/markdown.js +61 -56
- package/dist/esm/run/flows/url/markdown.js.map +1 -1
- package/dist/esm/run/flows/url/slides-output.js +487 -0
- package/dist/esm/run/flows/url/slides-output.js.map +1 -0
- package/dist/esm/run/flows/url/slides-text.js +628 -0
- package/dist/esm/run/flows/url/slides-text.js.map +1 -0
- package/dist/esm/run/flows/url/summary.js +493 -152
- package/dist/esm/run/flows/url/summary.js.map +1 -1
- package/dist/esm/run/format.js +10 -10
- package/dist/esm/run/format.js.map +1 -1
- package/dist/esm/run/help.js +179 -84
- package/dist/esm/run/help.js.map +1 -1
- package/dist/esm/run/logging.js +20 -12
- package/dist/esm/run/logging.js.map +1 -1
- package/dist/esm/run/markdown.js +12 -12
- package/dist/esm/run/markdown.js.map +1 -1
- package/dist/esm/run/media-cache-state.js +33 -0
- package/dist/esm/run/media-cache-state.js.map +1 -0
- package/dist/esm/run/model-attempts.js.map +1 -1
- package/dist/esm/run/openrouter.js +11 -11
- package/dist/esm/run/openrouter.js.map +1 -1
- package/dist/esm/run/progress.js +19 -1
- package/dist/esm/run/progress.js.map +1 -1
- package/dist/esm/run/run-config.js +16 -16
- package/dist/esm/run/run-config.js.map +1 -1
- package/dist/esm/run/run-context.js +2 -2
- package/dist/esm/run/run-context.js.map +1 -1
- package/dist/esm/run/run-env.js +55 -54
- package/dist/esm/run/run-env.js.map +1 -1
- package/dist/esm/run/run-input.js +3 -3
- package/dist/esm/run/run-input.js.map +1 -1
- package/dist/esm/run/run-metrics.js +16 -16
- package/dist/esm/run/run-metrics.js.map +1 -1
- package/dist/esm/run/run-models.js +28 -23
- package/dist/esm/run/run-models.js.map +1 -1
- package/dist/esm/run/run-output.js +3 -3
- package/dist/esm/run/run-output.js.map +1 -1
- package/dist/esm/run/run-settings.js +108 -21
- package/dist/esm/run/run-settings.js.map +1 -1
- package/dist/esm/run/run-stream.js +4 -4
- package/dist/esm/run/run-stream.js.map +1 -1
- package/dist/esm/run/runner.js +327 -100
- package/dist/esm/run/runner.js.map +1 -1
- package/dist/esm/run/slides-cli.js +226 -0
- package/dist/esm/run/slides-cli.js.map +1 -0
- package/dist/esm/run/slides-render.js +163 -0
- package/dist/esm/run/slides-render.js.map +1 -0
- package/dist/esm/run/stdin-temp-file.js +77 -0
- package/dist/esm/run/stdin-temp-file.js.map +1 -0
- package/dist/esm/run/stream-output.js +17 -10
- package/dist/esm/run/stream-output.js.map +1 -1
- package/dist/esm/run/streaming.js +16 -16
- package/dist/esm/run/streaming.js.map +1 -1
- package/dist/esm/run/summary-engine.js +89 -57
- package/dist/esm/run/summary-engine.js.map +1 -1
- package/dist/esm/run/summary-llm.js +3 -3
- package/dist/esm/run/summary-llm.js.map +1 -1
- package/dist/esm/run/terminal.js +4 -4
- package/dist/esm/run/terminal.js.map +1 -1
- package/dist/esm/run/tips.js +2 -2
- package/dist/esm/run/tips.js.map +1 -1
- package/dist/esm/run/transcriber-cli.js +148 -0
- package/dist/esm/run/transcriber-cli.js.map +1 -0
- package/dist/esm/run.js +1 -1
- package/dist/esm/run.js.map +1 -1
- package/dist/esm/shared/contracts.js +1 -1
- package/dist/esm/shared/contracts.js.map +1 -1
- package/dist/esm/shared/sse-events.js +16 -12
- package/dist/esm/shared/sse-events.js.map +1 -1
- package/dist/esm/shared/streaming-merge.js +3 -3
- package/dist/esm/shared/streaming-merge.js.map +1 -1
- package/dist/esm/slides/extract.js +1951 -0
- package/dist/esm/slides/extract.js.map +1 -0
- package/dist/esm/slides/index.js +4 -0
- package/dist/esm/slides/index.js.map +1 -0
- package/dist/esm/slides/settings.js +73 -0
- package/dist/esm/slides/settings.js.map +1 -0
- package/dist/esm/slides/store.js +111 -0
- package/dist/esm/slides/store.js.map +1 -0
- package/dist/esm/slides/types.js +2 -0
- package/dist/esm/slides/types.js.map +1 -0
- package/dist/esm/tty/format.js +13 -13
- package/dist/esm/tty/format.js.map +1 -1
- package/dist/esm/tty/osc-progress.js +22 -2
- package/dist/esm/tty/osc-progress.js.map +1 -1
- package/dist/esm/tty/progress/fetch-html.js +20 -16
- package/dist/esm/tty/progress/fetch-html.js.map +1 -1
- package/dist/esm/tty/progress/transcript.js +127 -68
- package/dist/esm/tty/progress/transcript.js.map +1 -1
- package/dist/esm/tty/spinner.js +21 -10
- package/dist/esm/tty/spinner.js.map +1 -1
- package/dist/esm/tty/theme.js +189 -0
- package/dist/esm/tty/theme.js.map +1 -0
- package/dist/esm/tty/website-progress.js +38 -34
- package/dist/esm/tty/website-progress.js.map +1 -1
- package/dist/esm/version.js +29 -29
- package/dist/esm/version.js.map +1 -1
- package/dist/types/cache.d.ts +19 -7
- package/dist/types/config.d.ts +71 -6
- package/dist/types/content/asset.d.ts +8 -6
- package/dist/types/content/index.d.ts +1 -1
- package/dist/types/costs.d.ts +3 -3
- package/dist/types/daemon/agent.d.ts +25 -0
- package/dist/types/daemon/auto-mode.d.ts +3 -3
- package/dist/types/daemon/chat.d.ts +10 -18
- package/dist/types/daemon/cli-entrypoint.d.ts +2 -0
- package/dist/types/daemon/config.d.ts +2 -2
- package/dist/types/daemon/env-merge.d.ts +1 -1
- package/dist/types/daemon/env-snapshot.d.ts +1 -1
- package/dist/types/daemon/flow-context.d.ts +24 -4
- package/dist/types/daemon/launchd.d.ts +12 -0
- package/dist/types/daemon/models.d.ts +6 -2
- package/dist/types/daemon/process-registry.d.ts +73 -0
- package/dist/types/daemon/schtasks.d.ts +4 -0
- package/dist/types/daemon/server.d.ts +2 -2
- package/dist/types/daemon/summarize-progress.d.ts +1 -1
- package/dist/types/daemon/summarize.d.ts +38 -7
- package/dist/types/daemon/systemd.d.ts +4 -0
- package/dist/types/firecrawl.d.ts +1 -1
- package/dist/types/flags.d.ts +12 -11
- package/dist/types/index.d.ts +4 -4
- package/dist/types/language.d.ts +1 -1
- package/dist/types/llm/attachments.d.ts +1 -1
- package/dist/types/llm/cli.d.ts +3 -3
- package/dist/types/llm/generate-text.d.ts +7 -7
- package/dist/types/llm/html-to-markdown.d.ts +3 -3
- package/dist/types/llm/model-id.d.ts +1 -1
- package/dist/types/llm/prompt.d.ts +2 -2
- package/dist/types/llm/providers/anthropic.d.ts +3 -3
- package/dist/types/llm/providers/google.d.ts +3 -3
- package/dist/types/llm/providers/models.d.ts +2 -2
- package/dist/types/llm/providers/openai.d.ts +4 -4
- package/dist/types/llm/providers/shared.d.ts +2 -2
- package/dist/types/llm/transcript-to-markdown.d.ts +4 -2
- package/dist/types/llm/usage.d.ts +1 -1
- package/dist/types/logging/daemon.d.ts +4 -4
- package/dist/types/markitdown.d.ts +1 -1
- package/dist/types/media-cache.d.ts +22 -0
- package/dist/types/model-auto.d.ts +14 -4
- package/dist/types/model-spec.d.ts +10 -10
- package/dist/types/pricing/litellm.d.ts +1 -1
- package/dist/types/processes.d.ts +1 -0
- package/dist/types/prompts/index.d.ts +1 -1
- package/dist/types/run/attachments.d.ts +7 -7
- package/dist/types/run/bird.d.ts +7 -0
- package/dist/types/run/cache-state.d.ts +2 -2
- package/dist/types/run/cli-fallback-state.d.ts +6 -0
- package/dist/types/run/constants.d.ts +1 -1
- package/dist/types/run/cookies/twitter.d.ts +1 -1
- package/dist/types/run/env.d.ts +1 -1
- package/dist/types/run/finish-line.d.ts +7 -6
- package/dist/types/run/flows/asset/extract.d.ts +18 -0
- package/dist/types/run/flows/asset/input.d.ts +19 -3
- package/dist/types/run/flows/asset/media-policy.d.ts +2 -0
- package/dist/types/run/flows/asset/media.d.ts +21 -0
- package/dist/types/run/flows/asset/output.d.ts +42 -0
- package/dist/types/run/flows/asset/preprocess.d.ts +23 -17
- package/dist/types/run/flows/asset/summary.d.ts +24 -16
- package/dist/types/run/flows/url/extract.d.ts +3 -2
- package/dist/types/run/flows/url/flow.d.ts +1 -1
- package/dist/types/run/flows/url/markdown.d.ts +6 -6
- package/dist/types/run/flows/url/slides-output.d.ts +66 -0
- package/dist/types/run/flows/url/slides-text.d.ts +87 -0
- package/dist/types/run/flows/url/summary.d.ts +18 -10
- package/dist/types/run/flows/url/types.d.ts +52 -21
- package/dist/types/run/format.d.ts +3 -3
- package/dist/types/run/help.d.ts +4 -1
- package/dist/types/run/logging.d.ts +3 -2
- package/dist/types/run/media-cache-state.d.ts +7 -0
- package/dist/types/run/model-attempts.d.ts +1 -1
- package/dist/types/run/progress.d.ts +2 -1
- package/dist/types/run/run-config.d.ts +4 -4
- package/dist/types/run/run-context.d.ts +3 -1
- package/dist/types/run/run-env.d.ts +3 -1
- package/dist/types/run/run-input.d.ts +2 -2
- package/dist/types/run/run-metrics.d.ts +3 -3
- package/dist/types/run/run-models.d.ts +3 -2
- package/dist/types/run/run-output.d.ts +1 -1
- package/dist/types/run/run-settings.d.ts +20 -5
- package/dist/types/run/run-stream.d.ts +2 -2
- package/dist/types/run/runner.d.ts +3 -2
- package/dist/types/run/slides-cli.d.ts +9 -0
- package/dist/types/run/slides-render.d.ts +30 -0
- package/dist/types/run/stdin-temp-file.d.ts +9 -0
- package/dist/types/run/stream-output.d.ts +3 -2
- package/dist/types/run/streaming.d.ts +4 -4
- package/dist/types/run/summary-engine.d.ts +22 -12
- package/dist/types/run/summary-llm.d.ts +5 -5
- package/dist/types/run/transcriber-cli.d.ts +8 -0
- package/dist/types/run/types.d.ts +4 -4
- package/dist/types/run.d.ts +1 -1
- package/dist/types/shared/contracts.d.ts +2 -2
- package/dist/types/shared/sse-events.d.ts +26 -6
- package/dist/types/slides/extract.d.ts +43 -0
- package/dist/types/slides/index.d.ts +5 -0
- package/dist/types/slides/settings.d.ts +20 -0
- package/dist/types/slides/store.d.ts +15 -0
- package/dist/types/slides/types.d.ts +40 -0
- package/dist/types/tty/osc-progress.d.ts +5 -5
- package/dist/types/tty/progress/fetch-html.d.ts +5 -3
- package/dist/types/tty/progress/transcript.d.ts +5 -3
- package/dist/types/tty/spinner.d.ts +3 -1
- package/dist/types/tty/theme.d.ts +44 -0
- package/dist/types/tty/website-progress.d.ts +5 -3
- package/dist/types/version.d.ts +1 -1
- package/docs/README.md +1 -1
- package/docs/_config.yml +26 -0
- package/docs/_layouts/default.html +60 -0
- package/docs/agent.md +367 -0
- package/docs/assets/site.css +748 -0
- package/docs/assets/site.js +72 -0
- package/docs/assets/summarize-cli.png +0 -0
- package/docs/assets/summarize-extension.png +0 -0
- package/docs/assets/youtube-slides.png +0 -0
- package/docs/cache.md +29 -3
- package/docs/chrome-extension.md +72 -16
- package/docs/cli.md +59 -13
- package/docs/config.md +109 -12
- package/docs/extract-only.md +10 -0
- package/docs/index.html +224 -0
- package/docs/index.md +25 -0
- package/docs/llm.md +18 -5
- package/docs/manual-tests.md +2 -0
- package/docs/media.md +6 -2
- package/docs/model-auto.md +3 -2
- package/docs/nvidia-onnx-transcription.md +55 -0
- package/docs/openai.md +1 -1
- package/docs/releasing.md +3 -0
- package/docs/site/404.html +4 -1
- package/docs/site/assets/site.css +399 -228
- package/docs/site/assets/site.js +46 -46
- package/docs/site/assets/summarize-cli.png +0 -0
- package/docs/site/assets/summarize-extension.png +0 -0
- package/docs/site/docs/chrome-extension.html +101 -0
- package/docs/site/docs/config.html +30 -8
- package/docs/site/docs/extract-only.html +17 -4
- package/docs/site/docs/firecrawl.html +13 -3
- package/docs/site/docs/index.html +40 -6
- package/docs/site/docs/llm.html +20 -5
- package/docs/site/docs/openai.html +19 -5
- package/docs/site/docs/website.html +30 -9
- package/docs/site/docs/youtube.html +13 -3
- package/docs/site/index.html +168 -85
- package/docs/slides.md +82 -0
- package/docs/smoketest.md +29 -20
- package/docs/timestamps.md +124 -0
- package/docs/website.md +13 -0
- package/docs/youtube.md +20 -0
- package/package.json +57 -48
|
@@ -1,13 +1,85 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
1
|
+
import { isDirectMediaExtension, isDirectMediaUrl } from "@steipete/summarize-core/content/url";
|
|
2
|
+
import fs from "node:fs/promises";
|
|
3
|
+
import path from "node:path";
|
|
4
|
+
import { classifyUrl, loadLocalAsset, loadRemoteAsset, } from "../../../content/asset.js";
|
|
5
|
+
import { formatBytes } from "../../../tty/format.js";
|
|
6
|
+
import { startOscProgress } from "../../../tty/osc-progress.js";
|
|
7
|
+
import { startSpinner } from "../../../tty/spinner.js";
|
|
8
|
+
import { createThemeRenderer, resolveThemeNameFromSources, resolveTrueColor, } from "../../../tty/theme.js";
|
|
9
|
+
import { assertAssetMediaTypeSupported } from "../../attachments.js";
|
|
10
|
+
/**
|
|
11
|
+
* Check if a media type should route through transcription.
|
|
12
|
+
*/
|
|
13
|
+
function isTranscribableMediaType(mediaType) {
|
|
14
|
+
const normalized = mediaType.toLowerCase();
|
|
15
|
+
return normalized.startsWith("audio/") || normalized.startsWith("video/");
|
|
16
|
+
}
|
|
17
|
+
const createProgressTheme = (envForRun, enabled) => {
|
|
18
|
+
const env = envForRun ?? {};
|
|
19
|
+
return createThemeRenderer({
|
|
20
|
+
themeName: resolveThemeNameFromSources({ env: env.SUMMARIZE_THEME }),
|
|
21
|
+
enabled,
|
|
22
|
+
trueColor: resolveTrueColor(env),
|
|
23
|
+
});
|
|
24
|
+
};
|
|
25
|
+
const renderStatus = (theme, label, detail = "…") => `${theme.label(label)}${theme.dim(detail)}`;
|
|
26
|
+
const renderStatusWithMeta = (theme, label, meta, suffix = "…") => `${theme.label(label)} ${meta}${theme.dim(suffix)}`;
|
|
27
|
+
const renderModelSuffix = (theme, modelId) => `${theme.dim(" (model: ")}${theme.accent(modelId)}${theme.dim(")")}`;
|
|
28
|
+
function normalizePathForExtension(value) {
|
|
29
|
+
try {
|
|
30
|
+
return new URL(value).pathname;
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return value.split(/[?#]/, 1)[0];
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Check if a file extension indicates transcribable media.
|
|
38
|
+
* Used to route large audio/video files directly to the media handler
|
|
39
|
+
* which has a higher size limit (2GB vs 50MB).
|
|
40
|
+
*/
|
|
41
|
+
export function isTranscribableExtension(filePath) {
|
|
42
|
+
if (isDirectMediaUrl(filePath))
|
|
43
|
+
return true;
|
|
44
|
+
const ext = path.extname(normalizePathForExtension(filePath));
|
|
45
|
+
return isDirectMediaExtension(ext);
|
|
46
|
+
}
|
|
47
|
+
function formatTranscriptionMeta({ filename, sizeLabel, dim, }) {
|
|
48
|
+
const details = sizeLabel ? `${sizeLabel}` : "";
|
|
49
|
+
return details ? `${filename} ${dim("(")}${details}${dim(")")}` : filename;
|
|
50
|
+
}
|
|
51
|
+
function setTranscribingSpinnerText({ spinner, theme, meta, modelId, }) {
|
|
52
|
+
const modelLabel = modelId ? renderModelSuffix(theme, modelId) : "";
|
|
53
|
+
spinner.setText(renderStatusWithMeta(theme, "Transcribing", `${meta}${modelLabel}`));
|
|
54
|
+
}
|
|
55
|
+
async function runMediaTranscription({ ctx, sourceKind, sourceLabel, filename, sizeLabel, spinner, }) {
|
|
56
|
+
const theme = createProgressTheme(ctx.envForRun, ctx.progressEnabled);
|
|
57
|
+
const dim = (value) => theme.dim(value);
|
|
58
|
+
const meta = formatTranscriptionMeta({ filename, sizeLabel, dim });
|
|
59
|
+
if (ctx.progressEnabled) {
|
|
60
|
+
setTranscribingSpinnerText({ spinner, theme, meta });
|
|
61
|
+
}
|
|
62
|
+
await ctx.summarizeMediaFile?.({
|
|
63
|
+
sourceKind,
|
|
64
|
+
sourceLabel,
|
|
65
|
+
attachment: {
|
|
66
|
+
kind: "file",
|
|
67
|
+
filename,
|
|
68
|
+
mediaType: "audio/mpeg", // Will be detected properly by summarizeMediaFile
|
|
69
|
+
bytes: new Uint8Array(0), // Placeholder - summarizeMediaFile reads from path directly
|
|
70
|
+
},
|
|
71
|
+
onModelChosen: (modelId) => {
|
|
72
|
+
if (!ctx.progressEnabled)
|
|
73
|
+
return;
|
|
74
|
+
setTranscribingSpinnerText({ spinner, theme, meta, modelId });
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
}
|
|
7
78
|
export async function handleFileInput(ctx, inputTarget) {
|
|
8
|
-
if (inputTarget.kind !==
|
|
79
|
+
if (inputTarget.kind !== "file")
|
|
9
80
|
return false;
|
|
10
81
|
let sizeLabel = null;
|
|
82
|
+
const theme = createProgressTheme(ctx.envForRun, ctx.progressEnabled);
|
|
11
83
|
try {
|
|
12
84
|
const stat = await fs.stat(inputTarget.filePath);
|
|
13
85
|
if (stat.isFile()) {
|
|
@@ -18,16 +90,17 @@ export async function handleFileInput(ctx, inputTarget) {
|
|
|
18
90
|
// Ignore size preflight; loadLocalAsset will throw a user-friendly error if needed.
|
|
19
91
|
}
|
|
20
92
|
const stopOscProgress = startOscProgress({
|
|
21
|
-
label:
|
|
93
|
+
label: "Loading file",
|
|
22
94
|
indeterminate: true,
|
|
23
95
|
env: ctx.env,
|
|
24
96
|
isTty: ctx.progressEnabled,
|
|
25
97
|
write: (data) => ctx.stderr.write(data),
|
|
26
98
|
});
|
|
27
99
|
const spinner = startSpinner({
|
|
28
|
-
text: sizeLabel ? `
|
|
100
|
+
text: renderStatus(theme, "Loading file", sizeLabel ? ` (${sizeLabel})…` : "…"),
|
|
29
101
|
enabled: ctx.progressEnabled,
|
|
30
102
|
stream: ctx.stderr,
|
|
103
|
+
color: theme.palette.spinner,
|
|
31
104
|
});
|
|
32
105
|
let stopped = false;
|
|
33
106
|
const stopProgress = () => {
|
|
@@ -37,21 +110,42 @@ export async function handleFileInput(ctx, inputTarget) {
|
|
|
37
110
|
spinner.stopAndClear();
|
|
38
111
|
stopOscProgress();
|
|
39
112
|
};
|
|
40
|
-
const
|
|
41
|
-
|
|
113
|
+
const pauseProgressLine = () => {
|
|
114
|
+
spinner.pause();
|
|
115
|
+
return () => spinner.resume();
|
|
42
116
|
};
|
|
43
|
-
ctx.setClearProgressBeforeStdout(
|
|
117
|
+
ctx.setClearProgressBeforeStdout(pauseProgressLine);
|
|
44
118
|
try {
|
|
119
|
+
// Check if file looks like transcribable media by extension.
|
|
120
|
+
// If so, route directly to summarizeMediaFile which has a higher size limit (2GB).
|
|
121
|
+
// This avoids the 50MB limit in loadLocalAsset for audio/video files.
|
|
122
|
+
if (isTranscribableExtension(inputTarget.filePath) && ctx.summarizeMediaFile) {
|
|
123
|
+
const filename = path.basename(inputTarget.filePath);
|
|
124
|
+
await runMediaTranscription({
|
|
125
|
+
ctx,
|
|
126
|
+
sourceKind: "file",
|
|
127
|
+
sourceLabel: inputTarget.filePath,
|
|
128
|
+
filename,
|
|
129
|
+
sizeLabel,
|
|
130
|
+
spinner,
|
|
131
|
+
});
|
|
132
|
+
return true;
|
|
133
|
+
}
|
|
45
134
|
const loaded = await loadLocalAsset({ filePath: inputTarget.filePath });
|
|
46
135
|
assertAssetMediaTypeSupported({ attachment: loaded.attachment, sizeLabel });
|
|
136
|
+
const isTranscribable = isTranscribableMediaType(loaded.attachment.mediaType);
|
|
137
|
+
const handler = isTranscribable && ctx.summarizeMediaFile ? ctx.summarizeMediaFile : ctx.summarizeAsset;
|
|
138
|
+
const dim = (value) => theme.dim(value);
|
|
47
139
|
if (ctx.progressEnabled) {
|
|
48
140
|
const mt = loaded.attachment.mediaType;
|
|
49
141
|
const name = loaded.attachment.filename;
|
|
50
142
|
const details = sizeLabel ? `${mt}, ${sizeLabel}` : mt;
|
|
51
|
-
|
|
143
|
+
const action = isTranscribable ? "Transcribing" : "Summarizing";
|
|
144
|
+
const meta = name ? `${name} ${dim("(")}${details}${dim(")")}` : details;
|
|
145
|
+
spinner.setText(renderStatusWithMeta(theme, action, meta));
|
|
52
146
|
}
|
|
53
|
-
await
|
|
54
|
-
sourceKind:
|
|
147
|
+
await handler({
|
|
148
|
+
sourceKind: "file",
|
|
55
149
|
sourceLabel: loaded.sourceLabel,
|
|
56
150
|
attachment: loaded.attachment,
|
|
57
151
|
onModelChosen: (modelId) => {
|
|
@@ -60,35 +154,91 @@ export async function handleFileInput(ctx, inputTarget) {
|
|
|
60
154
|
const mt = loaded.attachment.mediaType;
|
|
61
155
|
const name = loaded.attachment.filename;
|
|
62
156
|
const details = sizeLabel ? `${mt}, ${sizeLabel}` : mt;
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
157
|
+
const meta = name ? `${name} ${dim("(")}${details}${dim(")")}` : details;
|
|
158
|
+
const modelLabel = renderModelSuffix(theme, modelId);
|
|
159
|
+
spinner.setText(renderStatusWithMeta(theme, "Summarizing", `${meta}${modelLabel}`));
|
|
66
160
|
},
|
|
67
161
|
});
|
|
68
162
|
return true;
|
|
69
163
|
}
|
|
70
164
|
finally {
|
|
71
|
-
ctx.clearProgressIfCurrent(
|
|
165
|
+
ctx.clearProgressIfCurrent(pauseProgressLine);
|
|
72
166
|
stopProgress();
|
|
73
167
|
}
|
|
74
168
|
}
|
|
75
|
-
export async function
|
|
169
|
+
export async function withUrlAsset(ctx, url, isYoutubeUrl, handler) {
|
|
76
170
|
if (!url || isYoutubeUrl)
|
|
77
171
|
return false;
|
|
172
|
+
// For remote media URLs (by extension), route directly to summarizeMediaFile.
|
|
173
|
+
// This avoids the 50MB limit in loadRemoteAsset - yt-dlp handles streaming download.
|
|
174
|
+
if (isTranscribableExtension(url) && ctx.summarizeMediaFile) {
|
|
175
|
+
const theme = createProgressTheme(ctx.envForRun, ctx.progressEnabled);
|
|
176
|
+
const filename = (() => {
|
|
177
|
+
try {
|
|
178
|
+
return path.basename(new URL(url).pathname) || "media";
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
return "media";
|
|
182
|
+
}
|
|
183
|
+
})();
|
|
184
|
+
const stopOscProgress = startOscProgress({
|
|
185
|
+
label: "Transcribing media",
|
|
186
|
+
indeterminate: true,
|
|
187
|
+
env: ctx.env,
|
|
188
|
+
isTty: ctx.progressEnabled,
|
|
189
|
+
write: (data) => ctx.stderr.write(data),
|
|
190
|
+
});
|
|
191
|
+
const spinner = startSpinner({
|
|
192
|
+
text: renderStatusWithMeta(theme, "Transcribing", filename),
|
|
193
|
+
enabled: ctx.progressEnabled,
|
|
194
|
+
stream: ctx.stderr,
|
|
195
|
+
color: theme.palette.spinner,
|
|
196
|
+
});
|
|
197
|
+
let stopped = false;
|
|
198
|
+
const stopProgress = () => {
|
|
199
|
+
if (stopped)
|
|
200
|
+
return;
|
|
201
|
+
stopped = true;
|
|
202
|
+
spinner.stopAndClear();
|
|
203
|
+
stopOscProgress();
|
|
204
|
+
};
|
|
205
|
+
const pauseProgressLine = () => {
|
|
206
|
+
spinner.pause();
|
|
207
|
+
return () => spinner.resume();
|
|
208
|
+
};
|
|
209
|
+
ctx.setClearProgressBeforeStdout(pauseProgressLine);
|
|
210
|
+
try {
|
|
211
|
+
await runMediaTranscription({
|
|
212
|
+
ctx,
|
|
213
|
+
sourceKind: "asset-url",
|
|
214
|
+
sourceLabel: url,
|
|
215
|
+
filename,
|
|
216
|
+
sizeLabel: null,
|
|
217
|
+
spinner,
|
|
218
|
+
});
|
|
219
|
+
return true;
|
|
220
|
+
}
|
|
221
|
+
finally {
|
|
222
|
+
ctx.clearProgressIfCurrent(pauseProgressLine);
|
|
223
|
+
stopProgress();
|
|
224
|
+
}
|
|
225
|
+
}
|
|
78
226
|
const kind = await classifyUrl({ url, fetchImpl: ctx.trackedFetch, timeoutMs: ctx.timeoutMs });
|
|
79
|
-
if (kind.kind !==
|
|
227
|
+
if (kind.kind !== "asset")
|
|
80
228
|
return false;
|
|
229
|
+
const theme = createProgressTheme(ctx.envForRun, ctx.progressEnabled);
|
|
81
230
|
const stopOscProgress = startOscProgress({
|
|
82
|
-
label:
|
|
231
|
+
label: "Downloading file",
|
|
83
232
|
indeterminate: true,
|
|
84
233
|
env: ctx.env,
|
|
85
234
|
isTty: ctx.progressEnabled,
|
|
86
235
|
write: (data) => ctx.stderr.write(data),
|
|
87
236
|
});
|
|
88
237
|
const spinner = startSpinner({
|
|
89
|
-
text:
|
|
238
|
+
text: renderStatus(theme, "Downloading file"),
|
|
90
239
|
enabled: ctx.progressEnabled,
|
|
91
240
|
stream: ctx.stderr,
|
|
241
|
+
color: theme.palette.spinner,
|
|
92
242
|
});
|
|
93
243
|
let stopped = false;
|
|
94
244
|
const stopProgress = () => {
|
|
@@ -98,14 +248,19 @@ export async function handleUrlAsset(ctx, url, isYoutubeUrl) {
|
|
|
98
248
|
spinner.stopAndClear();
|
|
99
249
|
stopOscProgress();
|
|
100
250
|
};
|
|
101
|
-
const
|
|
102
|
-
|
|
251
|
+
const pauseProgressLine = () => {
|
|
252
|
+
spinner.pause();
|
|
253
|
+
return () => spinner.resume();
|
|
103
254
|
};
|
|
104
|
-
ctx.setClearProgressBeforeStdout(
|
|
255
|
+
ctx.setClearProgressBeforeStdout(pauseProgressLine);
|
|
105
256
|
try {
|
|
106
257
|
const loaded = await (async () => {
|
|
107
258
|
try {
|
|
108
|
-
return await loadRemoteAsset({
|
|
259
|
+
return await loadRemoteAsset({
|
|
260
|
+
url,
|
|
261
|
+
fetchImpl: ctx.trackedFetch,
|
|
262
|
+
timeoutMs: ctx.timeoutMs,
|
|
263
|
+
});
|
|
109
264
|
}
|
|
110
265
|
catch (error) {
|
|
111
266
|
if (error instanceof Error && /HTML/i.test(error.message)) {
|
|
@@ -117,23 +272,33 @@ export async function handleUrlAsset(ctx, url, isYoutubeUrl) {
|
|
|
117
272
|
if (!loaded)
|
|
118
273
|
return false;
|
|
119
274
|
assertAssetMediaTypeSupported({ attachment: loaded.attachment, sizeLabel: null });
|
|
120
|
-
|
|
121
|
-
|
|
275
|
+
await handler({ loaded, spinner, clearProgressLine: pauseProgressLine });
|
|
276
|
+
return true;
|
|
277
|
+
}
|
|
278
|
+
finally {
|
|
279
|
+
ctx.clearProgressIfCurrent(pauseProgressLine);
|
|
280
|
+
stopProgress();
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
export async function handleUrlAsset(ctx, url, isYoutubeUrl) {
|
|
284
|
+
// Media URL handling is now in withUrlAsset
|
|
285
|
+
return withUrlAsset(ctx, url, isYoutubeUrl, async ({ loaded, spinner }) => {
|
|
286
|
+
const theme = createProgressTheme(ctx.envForRun, ctx.progressEnabled);
|
|
287
|
+
const dim = (value) => theme.dim(value);
|
|
288
|
+
if (ctx.progressEnabled) {
|
|
289
|
+
spinner.setText(renderStatusWithMeta(theme, "Summarizing", dim("file")));
|
|
290
|
+
}
|
|
122
291
|
await ctx.summarizeAsset({
|
|
123
|
-
sourceKind:
|
|
292
|
+
sourceKind: "asset-url",
|
|
124
293
|
sourceLabel: loaded.sourceLabel,
|
|
125
294
|
attachment: loaded.attachment,
|
|
126
295
|
onModelChosen: (modelId) => {
|
|
127
296
|
if (!ctx.progressEnabled)
|
|
128
297
|
return;
|
|
129
|
-
|
|
298
|
+
const modelLabel = renderModelSuffix(theme, modelId);
|
|
299
|
+
spinner.setText(renderStatusWithMeta(theme, "Summarizing", `${dim("file")}${modelLabel}`));
|
|
130
300
|
},
|
|
131
301
|
});
|
|
132
|
-
|
|
133
|
-
}
|
|
134
|
-
finally {
|
|
135
|
-
ctx.clearProgressIfCurrent(clearProgressLine);
|
|
136
|
-
stopProgress();
|
|
137
|
-
}
|
|
302
|
+
});
|
|
138
303
|
}
|
|
139
304
|
//# sourceMappingURL=input.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../../../../src/run/flows/asset/input.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"input.js","sourceRoot":"","sources":["../../../../../src/run/flows/asset/input.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media-policy.js","sourceRoot":"","sources":["../../../../../src/run/flows/asset/media-policy.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC;AAC5D,MAAM,CAAC,MAAM,qBAAqB,GAAG,MAAM,CAAC"}
|
|
@@ -0,0 +1,233 @@
|
|
|
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 { statSync } from "node:fs";
|
|
7
|
+
import { isAbsolute, resolve as resolvePath } from "node:path";
|
|
8
|
+
import { pathToFileURL } from "node:url";
|
|
9
|
+
import { createLinkPreviewClient } from "../../../content/index.js";
|
|
10
|
+
import { createFirecrawlScraper } from "../../../firecrawl.js";
|
|
11
|
+
import { readTweetWithBird } from "../../bird.js";
|
|
12
|
+
import { resolveTwitterCookies } from "../../cookies/twitter.js";
|
|
13
|
+
import { hasBirdCli } from "../../env.js";
|
|
14
|
+
import { writeVerbose } from "../../logging.js";
|
|
15
|
+
import { MAX_LOCAL_MEDIA_BYTES, MAX_LOCAL_MEDIA_LABEL } from "./media-policy.js";
|
|
16
|
+
/**
|
|
17
|
+
* Get file modification time for cache invalidation support.
|
|
18
|
+
* Returns null if the path is not a local file or file doesn't exist.
|
|
19
|
+
*/
|
|
20
|
+
function getFileModificationTime(filePath) {
|
|
21
|
+
// Only support absolute local file paths
|
|
22
|
+
if (!isAbsolute(filePath)) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
try {
|
|
26
|
+
const stats = statSync(filePath);
|
|
27
|
+
return stats.mtimeMs ?? null;
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
// File doesn't exist or can't be accessed
|
|
31
|
+
return null;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Handler for local audio/video files.
|
|
36
|
+
*
|
|
37
|
+
* Phase 2 Implementation:
|
|
38
|
+
* 1. Validates transcription provider availability
|
|
39
|
+
* 2. Creates LinkPreviewClient with necessary dependencies
|
|
40
|
+
* 3. Calls client.fetchLinkContent to trigger transcription
|
|
41
|
+
* 4. Converts transcript text to AssetAttachment
|
|
42
|
+
* 5. Calls summarizeAsset with the transcript
|
|
43
|
+
*
|
|
44
|
+
* Phase 2.2 Enhancement:
|
|
45
|
+
* - Captures file modification time for cache invalidation
|
|
46
|
+
* - Passes fileMtime to transcript cache for local file support
|
|
47
|
+
*/
|
|
48
|
+
export async function summarizeMediaFile(ctx, args) {
|
|
49
|
+
// Check if basic transcription setup is available
|
|
50
|
+
const groqKey = ctx.env.GROQ_API_KEY;
|
|
51
|
+
const openaiKey = ctx.env.OPENAI_API_KEY;
|
|
52
|
+
const falKey = ctx.env.FAL_KEY;
|
|
53
|
+
// Helper to check if a binary is available on PATH
|
|
54
|
+
const isBinaryAvailable = async (binary) => {
|
|
55
|
+
const { spawn } = await import("node:child_process");
|
|
56
|
+
return new Promise((resolve) => {
|
|
57
|
+
const proc = spawn(binary, ["--help"], {
|
|
58
|
+
stdio: ["ignore", "ignore", "ignore"],
|
|
59
|
+
env: ctx.env,
|
|
60
|
+
});
|
|
61
|
+
proc.on("error", () => resolve(false));
|
|
62
|
+
proc.on("close", (code) => resolve(code === 0));
|
|
63
|
+
});
|
|
64
|
+
};
|
|
65
|
+
// Check for yt-dlp: either via env var or on PATH
|
|
66
|
+
const ytDlpPath = ctx.env.YT_DLP_PATH || ((await isBinaryAvailable("yt-dlp")) ? "yt-dlp" : null);
|
|
67
|
+
// Check for whisper.cpp: either via env var or by checking if whisper-cli is on PATH
|
|
68
|
+
const hasLocalWhisper = ctx.env.SUMMARIZE_WHISPER_CPP_BINARY
|
|
69
|
+
? true
|
|
70
|
+
: await isBinaryAvailable("whisper-cli");
|
|
71
|
+
const hasAnyTranscriptionProvider = groqKey || openaiKey || falKey || hasLocalWhisper;
|
|
72
|
+
if (!hasAnyTranscriptionProvider) {
|
|
73
|
+
throw new Error(`Media file transcription requires one of the following:
|
|
74
|
+
|
|
75
|
+
1. Groq Whisper (fast, free tier):
|
|
76
|
+
Set GROQ_API_KEY=gsk_...
|
|
77
|
+
|
|
78
|
+
2. OpenAI Whisper:
|
|
79
|
+
Set OPENAI_API_KEY=sk-...
|
|
80
|
+
|
|
81
|
+
3. FAL Whisper:
|
|
82
|
+
Set FAL_KEY=...
|
|
83
|
+
|
|
84
|
+
4. Local whisper.cpp (recommended, free):
|
|
85
|
+
brew install ggerganov/ggerganov/whisper-cpp
|
|
86
|
+
Ensure whisper-cli is on your PATH (or set SUMMARIZE_WHISPER_CPP_BINARY)
|
|
87
|
+
|
|
88
|
+
See: https://github.com/openai/whisper for setup details`);
|
|
89
|
+
}
|
|
90
|
+
const isHttpUrl = (value) => {
|
|
91
|
+
try {
|
|
92
|
+
const parsed = new URL(value);
|
|
93
|
+
return parsed.protocol === "http:" || parsed.protocol === "https:";
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
return false;
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
// For URLs, skip local file validation - yt-dlp will handle the download
|
|
100
|
+
const isUrl = args.sourceKind === "asset-url" || isHttpUrl(args.sourceLabel);
|
|
101
|
+
let absolutePath;
|
|
102
|
+
let fileMtime = null;
|
|
103
|
+
if (isUrl) {
|
|
104
|
+
// For URLs, use the URL directly - no local path resolution needed
|
|
105
|
+
absolutePath = args.sourceLabel;
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
absolutePath = resolvePath(args.sourceLabel);
|
|
109
|
+
// Get file modification time for cache invalidation (after path resolution)
|
|
110
|
+
fileMtime = getFileModificationTime(absolutePath);
|
|
111
|
+
// Validate file size before attempting transcription
|
|
112
|
+
try {
|
|
113
|
+
const stats = statSync(absolutePath);
|
|
114
|
+
const fileSizeBytes = stats.size;
|
|
115
|
+
const maxSizeBytes = MAX_LOCAL_MEDIA_BYTES;
|
|
116
|
+
if (fileSizeBytes === 0) {
|
|
117
|
+
throw new Error("Media file is empty (0 bytes). Please provide a valid audio/video file.");
|
|
118
|
+
}
|
|
119
|
+
if (fileSizeBytes > maxSizeBytes) {
|
|
120
|
+
const fileSizeMB = Math.round(fileSizeBytes / (1024 * 1024));
|
|
121
|
+
throw new Error(`Media file is too large (${fileSizeMB} MB). Maximum supported size is ${MAX_LOCAL_MEDIA_LABEL}.`);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
if (error instanceof Error &&
|
|
126
|
+
(error.message.includes("empty") || error.message.includes("large"))) {
|
|
127
|
+
throw error; // Re-throw our validation errors
|
|
128
|
+
}
|
|
129
|
+
// For other statSync errors (e.g., file not found), let them bubble up
|
|
130
|
+
throw new Error(`Unable to access media file: ${error instanceof Error ? error.message : "Unknown error"}`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
const cacheMode = ctx.cache.mode;
|
|
134
|
+
// Create Firecrawl scraper if configured
|
|
135
|
+
const firecrawlScraper = ctx.apiStatus.firecrawlConfigured && ctx.env.FIRECRAWL_API_KEY
|
|
136
|
+
? createFirecrawlScraper({
|
|
137
|
+
apiKey: ctx.env.FIRECRAWL_API_KEY,
|
|
138
|
+
fetchImpl: ctx.trackedFetch,
|
|
139
|
+
})
|
|
140
|
+
: null;
|
|
141
|
+
// Create reader for bird tweets (for completeness, not used for media)
|
|
142
|
+
const readTweetWithBirdClient = hasBirdCli(ctx.env)
|
|
143
|
+
? ({ url, timeoutMs }) => readTweetWithBird({ url, timeoutMs, env: ctx.env })
|
|
144
|
+
: null;
|
|
145
|
+
// Create link preview client for transcript resolution
|
|
146
|
+
const transcriptCache = cacheMode === "default" ? (ctx.cache.store?.transcriptCache ?? null) : null;
|
|
147
|
+
const client = createLinkPreviewClient({
|
|
148
|
+
env: ctx.envForRun,
|
|
149
|
+
apifyApiToken: ctx.apiStatus.apifyToken,
|
|
150
|
+
ytDlpPath: ytDlpPath,
|
|
151
|
+
transcription: {
|
|
152
|
+
env: ctx.envForRun,
|
|
153
|
+
falApiKey: falKey,
|
|
154
|
+
groqApiKey: groqKey,
|
|
155
|
+
openaiApiKey: openaiKey,
|
|
156
|
+
},
|
|
157
|
+
scrapeWithFirecrawl: firecrawlScraper,
|
|
158
|
+
convertHtmlToMarkdown: null, // Not needed for media
|
|
159
|
+
readTweetWithBird: readTweetWithBirdClient,
|
|
160
|
+
resolveTwitterCookies: async (_args) => {
|
|
161
|
+
const res = await resolveTwitterCookies({ env: ctx.env });
|
|
162
|
+
return {
|
|
163
|
+
cookiesFromBrowser: res.cookies.cookiesFromBrowser,
|
|
164
|
+
source: res.cookies.source,
|
|
165
|
+
warnings: res.warnings,
|
|
166
|
+
};
|
|
167
|
+
},
|
|
168
|
+
fetch: ctx.trackedFetch,
|
|
169
|
+
transcriptCache,
|
|
170
|
+
mediaCache: ctx.mediaCache ?? null,
|
|
171
|
+
onProgress: (_event) => {
|
|
172
|
+
// Could update progress here if needed
|
|
173
|
+
// For now, silent transcription
|
|
174
|
+
},
|
|
175
|
+
});
|
|
176
|
+
try {
|
|
177
|
+
// For URLs, use directly. For local files, convert to file:// URL.
|
|
178
|
+
// yt-dlp can handle both http(s) URLs and file:// URLs.
|
|
179
|
+
const fileUrl = isUrl ? absolutePath : pathToFileURL(absolutePath).href;
|
|
180
|
+
// Fetch the link content (will trigger transcription for media)
|
|
181
|
+
// Using file:// URL ensures the provider chain can handle local files properly
|
|
182
|
+
const extracted = await client.fetchLinkContent(fileUrl, {
|
|
183
|
+
timeoutMs: ctx.timeoutMs,
|
|
184
|
+
cacheMode,
|
|
185
|
+
youtubeTranscript: "auto", // Not used for local files, but set for completeness
|
|
186
|
+
mediaTranscript: "prefer", // Prefer transcription for media files
|
|
187
|
+
transcriptTimestamps: false,
|
|
188
|
+
fileMtime, // Include file modification time for cache invalidation
|
|
189
|
+
});
|
|
190
|
+
// Check if we got a transcript
|
|
191
|
+
if (!extracted.content || extracted.content.trim().length === 0) {
|
|
192
|
+
throw new Error(`Failed to transcribe media file. Check that:
|
|
193
|
+
- Audio/video format is supported (MP3, WAV, M4A, OGG, FLAC, MP4, MOV, WEBM)
|
|
194
|
+
- Transcription provider is configured
|
|
195
|
+
- File is readable
|
|
196
|
+
- Media file is not corrupted`);
|
|
197
|
+
}
|
|
198
|
+
// Create a text-based attachment from the transcript
|
|
199
|
+
const filename = args.sourceLabel.split("/").pop() ?? "media";
|
|
200
|
+
const transcriptAttachment = {
|
|
201
|
+
mediaType: "text/plain",
|
|
202
|
+
filename: `${filename}.transcript.txt`,
|
|
203
|
+
kind: "file",
|
|
204
|
+
bytes: new TextEncoder().encode(extracted.content),
|
|
205
|
+
};
|
|
206
|
+
writeVerbose(ctx.stderr, ctx.verbose, `transcription done media file: ${extracted.diagnostics?.transcript?.provider ?? "unknown"}`, false, ctx.envForRun);
|
|
207
|
+
// If extract mode, output the transcript directly without LLM summarization
|
|
208
|
+
if (ctx.extractMode) {
|
|
209
|
+
ctx.clearProgressForStdout();
|
|
210
|
+
ctx.stdout.write(extracted.content);
|
|
211
|
+
if (!extracted.content.endsWith("\n")) {
|
|
212
|
+
ctx.stdout.write("\n");
|
|
213
|
+
}
|
|
214
|
+
return;
|
|
215
|
+
}
|
|
216
|
+
// Call the standard asset summarization with the transcript
|
|
217
|
+
const { summarizeAsset } = await import("./summary.js");
|
|
218
|
+
await summarizeAsset(ctx, {
|
|
219
|
+
sourceKind: "file",
|
|
220
|
+
sourceLabel: `${args.sourceLabel} (transcript)`,
|
|
221
|
+
attachment: transcriptAttachment,
|
|
222
|
+
onModelChosen: args.onModelChosen,
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
catch (error) {
|
|
226
|
+
// Re-throw with better context for transcription errors
|
|
227
|
+
if (error instanceof Error && error.message.includes("transcribe")) {
|
|
228
|
+
throw error;
|
|
229
|
+
}
|
|
230
|
+
throw new Error(`Transcription failed: ${error instanceof Error ? error.message : String(error)}`);
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=media.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"media.js","sourceRoot":"","sources":["../../../../../src/run/flows/asset/media.ts"],"names":[],"mappings":"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"}
|