@steipete/summarize 0.10.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 +74 -28
- package/README.md +115 -30
- package/dist/cli.js +1 -1
- package/dist/esm/cache.js +67 -65
- 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 +310 -166
- 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 +165 -164
- package/dist/esm/daemon/agent.js.map +1 -1
- 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 +16 -14
- 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 +63 -87
- 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 -31
- package/dist/esm/daemon/env-snapshot.js.map +1 -1
- package/dist/esm/daemon/flow-context.js +59 -28
- package/dist/esm/daemon/flow-context.js.map +1 -1
- package/dist/esm/daemon/launchd.js +100 -55
- 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 +15 -15
- package/dist/esm/daemon/process-registry.js.map +1 -1
- package/dist/esm/daemon/schtasks.js +42 -42
- package/dist/esm/daemon/schtasks.js.map +1 -1
- package/dist/esm/daemon/server.js +248 -244
- 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 +29 -29
- package/dist/esm/daemon/summarize.js.map +1 -1
- package/dist/esm/daemon/systemd.js +47 -47
- 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 +32 -32
- 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 +35 -34
- 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 +39 -39
- package/dist/esm/media-cache.js.map +1 -1
- 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 +1 -1
- package/dist/esm/processes.js.map +1 -1
- 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 +26 -26
- 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 +24 -24
- 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 +68 -68
- package/dist/esm/run/finish-line.js.map +1 -1
- package/dist/esm/run/flows/asset/extract.js +15 -15
- package/dist/esm/run/flows/asset/extract.js.map +1 -1
- package/dist/esm/run/flows/asset/input.js +47 -66
- package/dist/esm/run/flows/asset/input.js.map +1 -1
- package/dist/esm/run/flows/asset/media-policy.js +1 -1
- package/dist/esm/run/flows/asset/media-policy.js.map +1 -1
- package/dist/esm/run/flows/asset/media.js +49 -40
- package/dist/esm/run/flows/asset/media.js.map +1 -1
- package/dist/esm/run/flows/asset/output.js +12 -12
- package/dist/esm/run/flows/asset/output.js.map +1 -1
- 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 +173 -106
- package/dist/esm/run/flows/asset/summary.js.map +1 -1
- package/dist/esm/run/flows/url/extract.js +26 -26
- package/dist/esm/run/flows/url/extract.js.map +1 -1
- package/dist/esm/run/flows/url/flow.js +104 -98
- package/dist/esm/run/flows/url/flow.js.map +1 -1
- package/dist/esm/run/flows/url/markdown.js +57 -57
- package/dist/esm/run/flows/url/markdown.js.map +1 -1
- package/dist/esm/run/flows/url/slides-output.js +61 -59
- package/dist/esm/run/flows/url/slides-output.js.map +1 -1
- package/dist/esm/run/flows/url/slides-text.js +85 -85
- package/dist/esm/run/flows/url/slides-text.js.map +1 -1
- package/dist/esm/run/flows/url/summary.js +174 -107
- 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 +141 -135
- package/dist/esm/run/help.js.map +1 -1
- package/dist/esm/run/logging.js +10 -10
- 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 +5 -5
- package/dist/esm/run/media-cache-state.js.map +1 -1
- 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 +1 -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 +83 -34
- 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 +166 -127
- package/dist/esm/run/runner.js.map +1 -1
- package/dist/esm/run/slides-cli.js +43 -42
- package/dist/esm/run/slides-cli.js.map +1 -1
- package/dist/esm/run/slides-render.js +36 -36
- package/dist/esm/run/slides-render.js.map +1 -1
- 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 +7 -7
- 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 +57 -51
- 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 +49 -49
- package/dist/esm/run/transcriber-cli.js.map +1 -1
- 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 -16
- 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 +258 -249
- package/dist/esm/slides/extract.js.map +1 -1
- package/dist/esm/slides/index.js +3 -3
- package/dist/esm/slides/index.js.map +1 -1
- package/dist/esm/slides/settings.js +14 -14
- package/dist/esm/slides/settings.js.map +1 -1
- package/dist/esm/slides/store.js +9 -9
- package/dist/esm/slides/store.js.map +1 -1
- package/dist/esm/tty/format.js +13 -13
- package/dist/esm/tty/format.js.map +1 -1
- package/dist/esm/tty/osc-progress.js +1 -1
- package/dist/esm/tty/osc-progress.js.map +1 -1
- package/dist/esm/tty/progress/fetch-html.js +14 -14
- package/dist/esm/tty/progress/fetch-html.js.map +1 -1
- package/dist/esm/tty/progress/transcript.js +70 -62
- package/dist/esm/tty/progress/transcript.js.map +1 -1
- package/dist/esm/tty/spinner.js +20 -9
- package/dist/esm/tty/spinner.js.map +1 -1
- package/dist/esm/tty/theme.js +92 -92
- package/dist/esm/tty/theme.js.map +1 -1
- package/dist/esm/tty/website-progress.js +32 -32
- 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 +6 -6
- package/dist/types/config.d.ts +49 -7
- 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 +1 -1
- package/dist/types/daemon/auto-mode.d.ts +3 -3
- package/dist/types/daemon/chat.d.ts +2 -2
- 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 +7 -7
- package/dist/types/daemon/launchd.d.ts +8 -0
- package/dist/types/daemon/models.d.ts +6 -2
- package/dist/types/daemon/process-registry.d.ts +5 -5
- 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 +7 -7
- package/dist/types/firecrawl.d.ts +1 -1
- package/dist/types/flags.d.ts +11 -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 +2 -2
- 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 -1
- 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 +2 -2
- 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 +5 -5
- package/dist/types/run/flows/asset/extract.d.ts +4 -4
- package/dist/types/run/flows/asset/input.d.ts +9 -3
- package/dist/types/run/flows/asset/media.d.ts +1 -1
- package/dist/types/run/flows/asset/output.d.ts +5 -5
- package/dist/types/run/flows/asset/preprocess.d.ts +23 -17
- package/dist/types/run/flows/asset/summary.d.ts +19 -17
- package/dist/types/run/flows/url/extract.d.ts +1 -1
- 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 +7 -7
- package/dist/types/run/flows/url/slides-text.d.ts +9 -9
- package/dist/types/run/flows/url/summary.d.ts +11 -11
- package/dist/types/run/flows/url/types.d.ts +26 -22
- package/dist/types/run/format.d.ts +3 -3
- package/dist/types/run/help.d.ts +1 -1
- package/dist/types/run/media-cache-state.d.ts +2 -2
- package/dist/types/run/model-attempts.d.ts +1 -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 +15 -6
- package/dist/types/run/run-stream.d.ts +2 -2
- package/dist/types/run/runner.d.ts +3 -2
- package/dist/types/run/slides-render.d.ts +4 -4
- package/dist/types/run/stdin-temp-file.d.ts +9 -0
- package/dist/types/run/stream-output.d.ts +1 -1
- package/dist/types/run/streaming.d.ts +4 -4
- package/dist/types/run/summary-engine.d.ts +11 -11
- package/dist/types/run/summary-llm.d.ts +5 -5
- 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 +9 -9
- package/dist/types/slides/extract.d.ts +5 -4
- package/dist/types/slides/index.d.ts +5 -5
- package/dist/types/slides/store.d.ts +2 -2
- package/dist/types/slides/types.d.ts +2 -2
- package/dist/types/tty/osc-progress.d.ts +5 -5
- package/dist/types/tty/progress/fetch-html.d.ts +3 -3
- package/dist/types/tty/progress/transcript.d.ts +3 -3
- package/dist/types/tty/spinner.d.ts +2 -2
- package/dist/types/tty/theme.d.ts +2 -2
- package/dist/types/tty/website-progress.d.ts +3 -3
- package/dist/types/version.d.ts +1 -1
- package/docs/agent.md +38 -4
- package/docs/assets/site.js +46 -46
- package/docs/chrome-extension.md +11 -5
- package/docs/cli.md +59 -13
- package/docs/config.md +59 -10
- package/docs/extract-only.md +2 -0
- package/docs/index.html +33 -14
- package/docs/llm.md +7 -4
- package/docs/media.md +5 -4
- package/docs/model-auto.md +3 -2
- package/docs/nvidia-onnx-transcription.md +3 -3
- package/docs/openai.md +1 -1
- package/docs/releasing.md +3 -0
- package/docs/site/404.html +4 -1
- package/docs/site/assets/site.js +46 -46
- package/docs/site/docs/chrome-extension.html +18 -6
- package/docs/site/docs/config.html +29 -8
- package/docs/site/docs/extract-only.html +16 -4
- package/docs/site/docs/firecrawl.html +12 -3
- package/docs/site/docs/index.html +35 -6
- package/docs/site/docs/llm.html +19 -5
- package/docs/site/docs/openai.html +18 -5
- package/docs/site/docs/website.html +29 -9
- package/docs/site/docs/youtube.html +12 -3
- package/docs/site/index.html +33 -14
- package/docs/slides.md +13 -5
- package/docs/smoketest.md +29 -20
- package/docs/timestamps.md +21 -0
- package/docs/website.md +2 -1
- package/docs/youtube.md +4 -0
- package/package.json +53 -45
package/CHANGELOG.md
CHANGED
|
@@ -1,79 +1,124 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
-
## 0.
|
|
3
|
+
## 0.11.0 - Unreleased
|
|
4
|
+
|
|
5
|
+
### Highlights
|
|
6
|
+
|
|
7
|
+
- Auto CLI fallback: new controls and persisted last-success provider state (`~/.summarize/cli-state.json`) for no-key/local-CLI workflows.
|
|
8
|
+
- Transcription reliability: Groq Whisper is now the preferred cloud transcriber, with custom OpenAI-compatible Whisper endpoint overrides.
|
|
9
|
+
- Input reliability: binary-safe stdin handling, local media support in `--extract`, and fixes for local-file hangs/PDF preprocessing on custom OpenAI base URLs.
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
- CLI: add Cursor Agent provider (`--cli agent`) for CLI-model execution.
|
|
14
|
+
- CLI auto mode: add implicit auto CLI fallback controls (`cli.autoFallback`, `--auto-cli-fallback`) and provider priority controls (`cli.providers`, `--cli-priority`), with persisted provider success ordering.
|
|
15
|
+
- Transcription: add Groq Whisper as preferred cloud provider (#71, thanks @n0an).
|
|
16
|
+
- Transcription: support custom OpenAI-compatible Whisper endpoints via `OPENAI_WHISPER_BASE_URL` (with safe `OPENAI_BASE_URL` fallback) (#65, thanks @toanbot).
|
|
17
|
+
- Config: support generic `env` defaults in `~/.summarize/config.json` (fallback for any env var), while keeping legacy `apiKeys` mapping for compatibility (#63, thanks @entropyy0).
|
|
18
|
+
|
|
19
|
+
### Fixes
|
|
20
|
+
|
|
21
|
+
- CLI local files: avoid hangs when stream usage never resolves and preprocess PDFs automatically for custom OpenAI-compatible `OPENAI_BASE_URL` endpoints (e.g. non-`api.openai.com`).
|
|
22
|
+
- CLI stdin: support binary-safe piping/input temp files to prevent corruption on non-text stdin (#76).
|
|
23
|
+
- Extract mode: allow `--extract` for local media files (#72).
|
|
24
|
+
- Auto model/daemon fallback: skip model attempts when required API keys are missing and normalize env-key checks in daemon fallback (#67, #78).
|
|
25
|
+
- Cache: for auto presets (`auto`/`free`/named auto), prefer preset-level winner cache entries so stale per-candidate cache hits don’t override newer better-model results.
|
|
26
|
+
- Media: treat X broadcasts (`/i/broadcasts/...`) as transcript-first media and prefer URL mode.
|
|
27
|
+
- YouTube: keep explicit `--youtube apify` working when HTML fetch fails, while preserving duration metadata parity (#64, thanks @entropyy0).
|
|
28
|
+
- Transcription: stabilize Groq-first fallback flow (no duplicate Groq retries in file mode), improve terminal error reporting, and surface Groq setup in media guidance (#71, thanks @n0an).
|
|
29
|
+
- Media detection: detect more direct media URL extensions including `.ogg`/`.opus` (#65, thanks @toanbot).
|
|
30
|
+
- Slides: allow yt-dlp cookies-from-browser via `SUMMARIZE_YT_DLP_COOKIES_FROM_BROWSER` to avoid YouTube 403s.
|
|
31
|
+
- Daemon install: resolve symlinked/global bin paths and Windows shims when locating the CLI for install (#57, #62, thanks @entropyy0).
|
|
32
|
+
- Extraction: strip hidden HTML + invisible Unicode before summarization or extract output (#61).
|
|
33
|
+
- CLI: honor `--lang` for YouTube transcript→Markdown conversion in `--markdown-mode llm` (#56, thanks @entropyy0).
|
|
34
|
+
- LLM: map Anthropic bare model ids to versioned aliases (`claude-sonnet-4` → `claude-sonnet-4-0`) (#55, thanks @entropyy0).
|
|
35
|
+
|
|
36
|
+
### Improvements
|
|
37
|
+
|
|
38
|
+
- Tooling: remove Biome and standardize on `oxfmt` + type-aware `oxlint`; `pnpm check` now enforces `format:check` before lint/tests.
|
|
39
|
+
- Dependencies: update workspace dependencies to latest (including `@mariozechner/pi-ai` and `oxlint-tsgolint`).
|
|
40
|
+
|
|
41
|
+
## 0.10.0 - 2026-01-22
|
|
4
42
|
|
|
5
43
|
### Highlights
|
|
6
44
|
|
|
7
45
|
- Chrome Side Panel: **Chat mode** with metrics bar, message queue, and improved context (full transcript + summary metadata, jump-to-latest).
|
|
8
|
-
- Slides: **YouTube slide screenshots + OCR + transcript-aligned cards**, timestamped seek, and an OCR/Transcript toggle.
|
|
9
46
|
- Media-aware summarization in the Side Panel: Page vs Video/Audio dropdown, automatic media preference on video sites, plus visible word count/duration.
|
|
47
|
+
- Slides: **YouTube slide screenshots + OCR + transcript-aligned cards**, timestamped seek, and an OCR/Transcript toggle.
|
|
10
48
|
- CLI: robust URL + media extraction with transcript-first workflows and cache-aware streaming.
|
|
11
49
|
|
|
12
50
|
### Features
|
|
13
51
|
|
|
52
|
+
- Chrome Side Panel chat: stream agent replies over SSE and restore chat history from daemon cache (#33, thanks @dougvk).
|
|
53
|
+
- Media-aware summarization in the Side Panel: Page vs Video/Audio dropdown, automatic media preference on video sites, plus visible word count/duration.
|
|
54
|
+
- Transcripts: `--timestamps` adds segment-level timings (`transcriptSegments` + `transcriptTimedText`) for YouTube, podcasts, and embedded captions.
|
|
55
|
+
- Summaries: when transcript timestamps are available, prompts require timestamped bullet summaries; side panel auto-links `[mm:ss]` in summaries for media.
|
|
56
|
+
- Chrome Side Panel chat: timestamped transcript context plus clickable `[mm:ss]` links that seek the current media.
|
|
14
57
|
- Slides: extract slide screenshots + OCR for YouTube/direct video URLs in the CLI + extension (#41, thanks @philippb).
|
|
15
58
|
- Slides: top-of-summary slide strip with expand/collapse full-width cards, timestamps, and click-to-seek.
|
|
16
59
|
- Slides: slide descriptions without model calls (transcript windowing, OCR fallback) + OCR/Transcript toggle.
|
|
17
60
|
- Slides: stream slide extraction status/progress and show a single header progress bar (no duplicate spinners).
|
|
18
|
-
- Chrome Side Panel chat: stream agent replies over SSE and restore chat history from daemon cache (#33, thanks @dougvk).
|
|
19
|
-
- Chrome Side Panel chat: timestamped transcript context plus clickable `[mm:ss]` links that seek the current media.
|
|
20
|
-
- Summaries: when transcript timestamps are available, prompts require timestamped bullet summaries; side panel auto-links `[mm:ss]` in summaries for media.
|
|
21
|
-
- Transcripts: `--timestamps` adds segment-level timings (`transcriptSegments` + `transcriptTimedText`) for YouTube, podcasts, and embedded captions.
|
|
22
|
-
- Media-aware summarization in the Side Panel: Page vs Video/Audio dropdown, automatic media preference on video sites, plus visible word count/duration.
|
|
23
61
|
- CLI: transcribe local audio/video files with mtime-aware transcript cache invalidation (thanks @mvance!).
|
|
24
62
|
- Browser extension: add Firefox sidebar build + multi-browser config (#31, thanks @vlnd0).
|
|
63
|
+
- CLI: add Cursor Agent CLI provider (`cli/agent`, `--cli agent`).
|
|
25
64
|
- Chrome automation: add artifacts tool + REPL helpers for persistent session files (notes/JSON/CSV) and downloads.
|
|
26
65
|
- Chrome automation: expand navigate tool with list/switch tab support and return matching skills after navigation.
|
|
27
66
|
|
|
28
67
|
### Fixes
|
|
29
68
|
|
|
69
|
+
- Extract-only: remove implicit 8k cap; new `--max-extract-characters`/daemon `maxExtractCharacters` allow opt-in limits; resolves transcript truncation.
|
|
70
|
+
- Media: route direct media URLs to the transcription pipeline and raise the local media limit to 2GB (#47, thanks @n0an).
|
|
71
|
+
- Daemon (macOS): `daemon install` now falls back from `launchctl bootstrap gui/<uid>` to `user/<uid>` and resolves sudo/root uid targeting to avoid bootstrap `Input/output error` / `Domain does not support specified action` failures (#75).
|
|
72
|
+
- Slides: allow yt-dlp cookies-from-browser via `SUMMARIZE_YT_DLP_COOKIES_FROM_BROWSER` to avoid YouTube 403s.
|
|
73
|
+
- Chrome Side Panel chat: support JSON agent replies with explicit SSE/JSON negotiation to avoid “stream ended” errors.
|
|
74
|
+
- Chrome Side Panel: scope streams/state per window so other windows don’t wipe active summaries.
|
|
75
|
+
- Chrome Side Panel chat: keep auto-scroll pinned while streaming when you’re already at the bottom.
|
|
76
|
+
- Chrome Side Panel chat: clear streaming placeholders on errors/aborts.
|
|
77
|
+
- Chrome Side Panel: add inline error toast above chat composer; errors stay visible when scrolled.
|
|
78
|
+
- Chrome Side Panel: clear/hide the inline error toast when no message is present to avoid empty red boxes.
|
|
79
|
+
- Cache: include transcript timestamp requests in extract cache keys so timed summaries don’t reuse plain transcript content.
|
|
80
|
+
- CLI: `--no-cache` now bypasses summary caching only; transcript/media caches still apply.
|
|
81
|
+
- Media: treat X broadcasts (`/i/broadcasts/...`) as transcript-first media and prefer URL mode.
|
|
82
|
+
- Daemon: avoid URL flow crashes when url-preference helpers are missing (ReferenceError guard).
|
|
83
|
+
- YouTube: prefer English caption variants (`en-*`) when selecting caption tracks.
|
|
30
84
|
- Prompts: ignore sponsor/ads segments in video and podcast summaries.
|
|
31
85
|
- Prompts: enforce no-ads/no-skipped language and italicized standout excerpts (no quotation marks).
|
|
32
|
-
- Media: route direct media URLs to the transcription pipeline and raise the local media limit to 2GB (#47, thanks @n0an).
|
|
33
86
|
- Slides: render Slide X/Y labels and parse slide markers more robustly in streaming output.
|
|
87
|
+
- Slides: parse `Slide N/Total` labels and stabilize title/body extraction.
|
|
34
88
|
- Slides: ensure slide summary segments start with a title line when missing.
|
|
89
|
+
- Slides: detect headline-style first lines and render them as slide titles (no required `Title:` markers).
|
|
35
90
|
- Slides: progress updates during yt-dlp downloads and OSC progress mirrors slide extraction.
|
|
36
91
|
- Slides: reuse the media cache for downloaded videos (even with `--no-cache`).
|
|
37
92
|
- Slides: clear slide progress line before the finish summary to avoid stray `Slides x/y` output.
|
|
38
|
-
-
|
|
39
|
-
- CLI: `--no-cache` now bypasses summary caching only; transcript/media caches still apply.
|
|
40
|
-
- Chrome Side Panel chat: keep auto-scroll pinned while streaming when you’re already at the bottom.
|
|
41
|
-
- Chrome Side Panel: scope streams/state per window so other windows don’t wipe active summaries.
|
|
42
|
-
- Chrome Side Panel chat: support JSON agent replies with explicit SSE/JSON negotiation to avoid “stream ended” errors.
|
|
43
|
-
- Chrome Side Panel chat: clear streaming placeholders on errors/aborts.
|
|
44
|
-
- Chrome Side Panel: add inline error toast above chat composer; errors stay visible when scrolled.
|
|
45
|
-
- Chrome Side Panel: clear/hide the inline error toast when no message is present to avoid empty red boxes.
|
|
46
|
-
- Cache: include transcript timestamp requests in extract cache keys so timed summaries don’t reuse plain transcript content.
|
|
47
|
-
- Extract-only: remove implicit 8k cap; new `--max-extract-characters`/daemon `maxExtractCharacters` allow opt-in limits; resolves transcript truncation.
|
|
93
|
+
- CLI status line: ignore empty/ANSI-only spinner updates and duplicate texts to prevent flicker/blank status frames.
|
|
48
94
|
- Automation: require userScripts (no isolated-world fallback), with improved guidance and in-panel permission notice.
|
|
49
|
-
- Daemon: avoid URL flow crashes when url-preference helpers are missing (ReferenceError guard).
|
|
50
95
|
- CLI: clear OSC progress on SIGINT/SIGTERM to avoid stuck indicators.
|
|
51
|
-
-
|
|
52
|
-
- YouTube: prefer English caption variants (`en-*`) when selecting caption tracks.
|
|
96
|
+
- CLI local files: avoid hangs when stream usage never resolves and preprocess PDFs automatically for custom OpenAI-compatible `OPENAI_BASE_URL` endpoints (e.g. non-`api.openai.com`).
|
|
53
97
|
|
|
54
98
|
### Improvements
|
|
55
99
|
|
|
56
|
-
-
|
|
57
|
-
-
|
|
100
|
+
- Tooling: remove Biome and standardize on `oxfmt` + type-aware `oxlint`; `pnpm check` now enforces `format:check` before lint/tests.
|
|
101
|
+
- Transcription: add auto transcriber selection (default) with ONNX-first when configured + `summarize transcriber setup`.
|
|
102
|
+
- Cache: add media download caching with TTL/size caps + optional verification, plus `--no-media-cache`.
|
|
103
|
+
- CLI: add themed output (24-bit ANSI), `--theme`, and config/env defaults for a consistent color scheme.
|
|
58
104
|
- CLI: show determinate transcription progress percent when duration is known.
|
|
59
|
-
- CLI: theme transcription progress lines and mirror part-based progress to OSC when duration is unknown.
|
|
60
105
|
- CLI: show determinate OSC progress for transcription/download when totals are known.
|
|
61
106
|
- CLI: keep OSC progress determinate when recent percent updates are available.
|
|
107
|
+
- CLI: theme transcription progress lines and mirror part-based progress to OSC when duration is unknown.
|
|
62
108
|
- CLI: theme tweet/extraction progress lines for consistent loading indicators.
|
|
63
109
|
- CLI: theme file/slide spinner labels so all progress lines share the same styling.
|
|
64
110
|
- CLI: simplify media download labels (avoid “media, video” duplication).
|
|
65
|
-
- Transcription: add auto transcriber selection (default) with ONNX-first when configured + `summarize transcriber setup`.
|
|
66
111
|
- Slides: cap auto slide targets at 6 by default for long videos.
|
|
67
|
-
- CLI: add themed output (24-bit ANSI), `--theme`, and config/env defaults for a consistent color scheme.
|
|
68
|
-
- Cache: add media download caching with TTL/size caps + optional verification, plus `--no-media-cache`.
|
|
69
112
|
- Slides: render headline-style first lines as slide titles above the slide marker.
|
|
113
|
+
- Media: refactor routing helpers and size policy (#48, thanks @steipete).
|
|
114
|
+
- Daemon: emit slides start/progress/done metadata in extended logging for easier debugging.
|
|
70
115
|
- Prompts: allow straight quotes and encourage 1-2 short exact quotes when relevant.
|
|
71
116
|
|
|
72
117
|
### Docs
|
|
73
118
|
|
|
74
119
|
- README: 0.10.0 preview layout with clearer install flow, daemon rationale, and prominent Chrome Web Store link.
|
|
75
|
-
- README: document ONNX transcriber setup + auto selection.
|
|
76
120
|
- README/docs: add UI theme config + ONNX install hints.
|
|
121
|
+
- README: document ONNX transcriber setup + auto selection.
|
|
77
122
|
|
|
78
123
|
## 0.9.0 - 2025-12-31
|
|
79
124
|
|
|
@@ -315,6 +360,7 @@
|
|
|
315
360
|
- Add `--preprocess off|auto|always` and a `uvx markitdown` fallback for Markdown extraction and unsupported file attachments (when `--format md` is used).
|
|
316
361
|
|
|
317
362
|
## 0.3.0 - 2025-12-20
|
|
363
|
+
|
|
318
364
|
### Changes
|
|
319
365
|
|
|
320
366
|
- Add yt-dlp audio transcription fallback for YouTube; prefer OpenAI Whisper with FAL fallback. Thanks @dougvk.
|
package/README.md
CHANGED
|
@@ -1,10 +1,14 @@
|
|
|
1
|
-
# Summarize — Chrome Side Panel + CLI
|
|
1
|
+
# Summarize 📝 — Chrome Side Panel + CLI
|
|
2
|
+
|
|
3
|
+

|
|
4
|
+
|
|
5
|
+
<!-- Created with GitHub Repo Banner by Waren Gonzaga: https://ghrb.waren.build -->
|
|
2
6
|
|
|
3
7
|
Fast summaries from URLs, files, and media. Works in the terminal, a Chrome Side Panel and Firefox Sidebar.
|
|
4
8
|
|
|
5
|
-
**0.
|
|
9
|
+
**0.11.0 preview (unreleased):** this README reflects the upcoming release.
|
|
6
10
|
|
|
7
|
-
## 0.
|
|
11
|
+
## 0.11.0 preview highlights (most interesting first)
|
|
8
12
|
|
|
9
13
|
- Chrome Side Panel **chat** (streaming agent + history) inside the sidebar.
|
|
10
14
|
- **YouTube slides**: screenshots + OCR + transcript cards, timestamped seek, OCR/Transcript toggle.
|
|
@@ -36,14 +40,15 @@ YouTube slide screenshots (from the browser):
|
|
|
36
40
|
|
|
37
41
|
### Beginner quickstart (extension)
|
|
38
42
|
|
|
39
|
-
1
|
|
43
|
+
1. Install the CLI (choose one):
|
|
40
44
|
- **npm** (cross‑platform): `npm i -g @steipete/summarize`
|
|
41
45
|
- **Homebrew** (macOS arm64): `brew install steipete/tap/summarize`
|
|
42
|
-
2
|
|
43
|
-
3
|
|
46
|
+
2. Install the extension (Chrome Web Store link above) and open the Side Panel.
|
|
47
|
+
3. The panel shows a token + install command. Run it in Terminal:
|
|
44
48
|
- `summarize daemon install --token <TOKEN>`
|
|
45
49
|
|
|
46
50
|
Why a daemon/service?
|
|
51
|
+
|
|
47
52
|
- The extension can’t run heavy extraction inside the browser. It talks to a local background service on `127.0.0.1` for fast streaming and media tools (yt‑dlp, ffmpeg, OCR, transcription).
|
|
48
53
|
- The service autostarts (launchd/systemd/Scheduled Task) so the Side Panel is always ready.
|
|
49
54
|
|
|
@@ -72,15 +77,15 @@ More:
|
|
|
72
77
|
|
|
73
78
|
### Advanced (unpacked / dev)
|
|
74
79
|
|
|
75
|
-
1
|
|
80
|
+
1. Build + load the extension (unpacked):
|
|
76
81
|
- Chrome: `pnpm -C apps/chrome-extension build`
|
|
77
82
|
- `chrome://extensions` → Developer mode → Load unpacked
|
|
78
83
|
- Pick: `apps/chrome-extension/.output/chrome-mv3`
|
|
79
84
|
- Firefox: `pnpm -C apps/chrome-extension build:firefox`
|
|
80
85
|
- `about:debugging#/runtime/this-firefox` → Load Temporary Add-on
|
|
81
86
|
- Pick: `apps/chrome-extension/.output/firefox-mv3/manifest.json`
|
|
82
|
-
2
|
|
83
|
-
3
|
|
87
|
+
2. Open Side Panel/Sidebar → copy token.
|
|
88
|
+
3. Install daemon in dev mode:
|
|
84
89
|
- `pnpm summarize daemon install --token <TOKEN> --dev`
|
|
85
90
|
|
|
86
91
|
## CLI
|
|
@@ -110,7 +115,7 @@ npm i @steipete/summarize-core
|
|
|
110
115
|
```
|
|
111
116
|
|
|
112
117
|
```ts
|
|
113
|
-
import { createLinkPreviewClient } from
|
|
118
|
+
import { createLinkPreviewClient } from "@steipete/summarize-core/content";
|
|
114
119
|
```
|
|
115
120
|
|
|
116
121
|
- Homebrew (custom tap):
|
|
@@ -143,6 +148,23 @@ summarize "/path/to/audio.mp3"
|
|
|
143
148
|
summarize "/path/to/video.mp4"
|
|
144
149
|
```
|
|
145
150
|
|
|
151
|
+
Stdin (pipe content using `-`):
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
echo "content" | summarize -
|
|
155
|
+
pbpaste | summarize -
|
|
156
|
+
# binary stdin also works (PDF/image/audio/video bytes)
|
|
157
|
+
cat /path/to/file.pdf | summarize -
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
**Notes:**
|
|
161
|
+
|
|
162
|
+
- Stdin has a 50MB size limit
|
|
163
|
+
- The `-` argument tells summarize to read from standard input
|
|
164
|
+
- Text stdin is treated as UTF-8 text (whitespace-only input is rejected as empty)
|
|
165
|
+
- Binary stdin is preserved as raw bytes and file type is auto-detected when possible
|
|
166
|
+
- Useful for piping clipboard content or command output
|
|
167
|
+
|
|
146
168
|
YouTube (supports `youtube.com` and `youtu.be`):
|
|
147
169
|
|
|
148
170
|
```bash
|
|
@@ -243,7 +265,7 @@ Use `summarize --help` or `summarize help` for the full help text.
|
|
|
243
265
|
- `--length short|medium|long|xl|xxl|s|m|l|<chars>`
|
|
244
266
|
- `--language, --lang <language>`: output language (`auto` = match source)
|
|
245
267
|
- `--max-output-tokens <count>`: hard cap for LLM output tokens
|
|
246
|
-
- `--cli [provider]`: use a CLI provider (`--model cli/<provider>`). If omitted, uses auto selection with CLI enabled.
|
|
268
|
+
- `--cli [provider]`: use a CLI provider (`--model cli/<provider>`). Supports `claude`, `gemini`, `codex`, `agent`. If omitted, uses auto selection with CLI enabled.
|
|
247
269
|
- `--stream auto|on|off`: stream LLM output (`auto` = TTY only; disabled in `--json` mode)
|
|
248
270
|
- `--plain`: keep raw output (no ANSI/OSC Markdown rendering)
|
|
249
271
|
- `--no-color`: disable ANSI colors
|
|
@@ -252,7 +274,7 @@ Use `summarize --help` or `summarize help` for the full help text.
|
|
|
252
274
|
- `--markdown-mode off|auto|llm|readability`: HTML -> Markdown mode (default `readability`)
|
|
253
275
|
- `--preprocess off|auto|always`: controls `uvx markitdown` usage (default `auto`)
|
|
254
276
|
- Install `uvx`: `brew install uv` (or https://astral.sh/uv/)
|
|
255
|
-
- `--extract`: print extracted content and exit (URLs only)
|
|
277
|
+
- `--extract`: print extracted content and exit (URLs only; stdin `-` is not supported)
|
|
256
278
|
- Deprecated alias: `--extract-only`
|
|
257
279
|
- `--slides`: extract slides for YouTube/direct video URLs and render them inline in the summary narrative (auto-renders inline in supported terminals)
|
|
258
280
|
- `--slides-ocr`: run OCR on extracted slides (requires `tesseract`)
|
|
@@ -264,18 +286,66 @@ Use `summarize --help` or `summarize help` for the full help text.
|
|
|
264
286
|
- `--verbose`: debug/diagnostics on stderr
|
|
265
287
|
- `--metrics off|on|detailed`: metrics output (default `on`)
|
|
266
288
|
|
|
289
|
+
### Coding CLIs (Codex, Claude, Gemini, Agent)
|
|
290
|
+
|
|
291
|
+
Summarize can use common coding CLIs as local model backends:
|
|
292
|
+
|
|
293
|
+
- `codex` -> `--cli codex` / `--model cli/codex/<model>`
|
|
294
|
+
- `claude` -> `--cli claude` / `--model cli/claude/<model>`
|
|
295
|
+
- `gemini` -> `--cli gemini` / `--model cli/gemini/<model>`
|
|
296
|
+
- `agent` (Cursor Agent CLI) -> `--cli agent` / `--model cli/agent/<model>`
|
|
297
|
+
|
|
298
|
+
Requirements:
|
|
299
|
+
|
|
300
|
+
- Binary installed and on `PATH` (or set `CODEX_PATH`, `CLAUDE_PATH`, `GEMINI_PATH`, `AGENT_PATH`)
|
|
301
|
+
- Provider authenticated (`codex login`, `claude auth`, `gemini` login flow, `agent login` or `CURSOR_API_KEY`)
|
|
302
|
+
|
|
303
|
+
Quick smoke test:
|
|
304
|
+
|
|
305
|
+
```bash
|
|
306
|
+
printf "Summarize CLI smoke input.\nOne short paragraph. Reply can be brief.\n" >/tmp/summarize-cli-smoke.txt
|
|
307
|
+
|
|
308
|
+
summarize --cli codex --plain --timeout 2m /tmp/summarize-cli-smoke.txt
|
|
309
|
+
summarize --cli claude --plain --timeout 2m /tmp/summarize-cli-smoke.txt
|
|
310
|
+
summarize --cli gemini --plain --timeout 2m /tmp/summarize-cli-smoke.txt
|
|
311
|
+
summarize --cli agent --plain --timeout 2m /tmp/summarize-cli-smoke.txt
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
Set explicit CLI allowlist/order:
|
|
315
|
+
|
|
316
|
+
```json
|
|
317
|
+
{
|
|
318
|
+
"cli": { "enabled": ["codex", "claude", "gemini", "agent"] }
|
|
319
|
+
}
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
Configure implicit auto CLI fallback:
|
|
323
|
+
|
|
324
|
+
```json
|
|
325
|
+
{
|
|
326
|
+
"cli": {
|
|
327
|
+
"autoFallback": {
|
|
328
|
+
"enabled": true,
|
|
329
|
+
"onlyWhenNoApiKeys": true,
|
|
330
|
+
"order": ["claude", "gemini", "codex", "agent"]
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
}
|
|
334
|
+
```
|
|
335
|
+
|
|
336
|
+
More details: [`docs/cli.md`](docs/cli.md)
|
|
337
|
+
|
|
267
338
|
### Auto model ordering
|
|
268
339
|
|
|
269
340
|
`--model auto` builds candidate attempts from built-in rules (or your `model.rules` overrides).
|
|
270
|
-
CLI
|
|
271
|
-
Why: CLI adds ~4s latency per attempt and higher variance.
|
|
272
|
-
Shortcut: `--cli` (with no provider) uses auto selection with CLI enabled.
|
|
341
|
+
CLI attempts are prepended when:
|
|
273
342
|
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
(with OpenRouter fallbacks when configured).
|
|
343
|
+
- `cli.enabled` is set (explicit allowlist/order), or
|
|
344
|
+
- implicit auto selection is active and `cli.autoFallback` is enabled.
|
|
277
345
|
|
|
278
|
-
|
|
346
|
+
Default fallback behavior: only when no API keys are configured, order `claude, gemini, codex, agent`, and remember/prioritize last successful provider (`~/.summarize/cli-state.json`).
|
|
347
|
+
|
|
348
|
+
Set explicit CLI attempts:
|
|
279
349
|
|
|
280
350
|
```json
|
|
281
351
|
{
|
|
@@ -283,15 +353,15 @@ Enable CLI attempts:
|
|
|
283
353
|
}
|
|
284
354
|
```
|
|
285
355
|
|
|
286
|
-
Disable CLI
|
|
356
|
+
Disable implicit auto CLI fallback:
|
|
287
357
|
|
|
288
358
|
```json
|
|
289
359
|
{
|
|
290
|
-
"cli": { "enabled":
|
|
360
|
+
"cli": { "autoFallback": { "enabled": false } }
|
|
291
361
|
}
|
|
292
362
|
```
|
|
293
363
|
|
|
294
|
-
Note:
|
|
364
|
+
Note: explicit `--model auto` does not trigger implicit auto CLI fallback unless `cli.enabled` is set.
|
|
295
365
|
|
|
296
366
|
### Website extraction (Firecrawl + Markdown)
|
|
297
367
|
|
|
@@ -321,6 +391,7 @@ Environment variables for yt-dlp mode:
|
|
|
321
391
|
- `SUMMARIZE_WHISPER_CPP_BINARY` - optional override for the local binary (default: `whisper-cli`)
|
|
322
392
|
- `SUMMARIZE_DISABLE_LOCAL_WHISPER_CPP=1` - disable local whisper.cpp (force remote)
|
|
323
393
|
- `OPENAI_API_KEY` - OpenAI Whisper transcription
|
|
394
|
+
- `OPENAI_WHISPER_BASE_URL` - optional OpenAI-compatible Whisper endpoint override
|
|
324
395
|
- `FAL_KEY` - FAL AI Whisper fallback
|
|
325
396
|
|
|
326
397
|
Apify costs money but tends to be more reliable when captions exist.
|
|
@@ -411,6 +482,7 @@ Supported keys today:
|
|
|
411
482
|
```json
|
|
412
483
|
{
|
|
413
484
|
"model": { "id": "openai/gpt-5-mini" },
|
|
485
|
+
"env": { "OPENAI_API_KEY": "sk-..." },
|
|
414
486
|
"ui": { "theme": "ember" }
|
|
415
487
|
}
|
|
416
488
|
```
|
|
@@ -428,6 +500,8 @@ Also supported:
|
|
|
428
500
|
- `model: { "mode": "auto" }` (automatic model selection + fallback; see [docs/model-auto.md](docs/model-auto.md))
|
|
429
501
|
- `model.rules` (customize candidates / ordering)
|
|
430
502
|
- `models` (define presets selectable via `--model <preset>`)
|
|
503
|
+
- `env` (generic env var defaults; process env still wins)
|
|
504
|
+
- `apiKeys` (legacy shortcut, mapped to env names; prefer `env` for new configs)
|
|
431
505
|
- `cache.media` (media download cache: TTL 7 days, 2048 MB cap by default; `--no-media-cache` disables)
|
|
432
506
|
- `media.videoMode: "auto"|"transcript"|"understand"`
|
|
433
507
|
- `slides.enabled` / `slides.max` / `slides.ocr` / `slides.dir` (defaults for `--slides`)
|
|
@@ -450,22 +524,33 @@ Note: `--no-cache` bypasses summary caching only (LLM output). Extract/transcrip
|
|
|
450
524
|
|
|
451
525
|
Precedence:
|
|
452
526
|
|
|
453
|
-
1
|
|
454
|
-
2
|
|
455
|
-
3
|
|
456
|
-
4
|
|
527
|
+
1. `--model`
|
|
528
|
+
2. `SUMMARIZE_MODEL`
|
|
529
|
+
3. `~/.summarize/config.json`
|
|
530
|
+
4. default (`auto`)
|
|
457
531
|
|
|
458
532
|
Theme precedence:
|
|
459
533
|
|
|
460
|
-
1
|
|
461
|
-
2
|
|
462
|
-
3
|
|
463
|
-
4
|
|
534
|
+
1. `--theme`
|
|
535
|
+
2. `SUMMARIZE_THEME`
|
|
536
|
+
3. `~/.summarize/config.json` (`ui.theme`)
|
|
537
|
+
4. default (`aurora`)
|
|
538
|
+
|
|
539
|
+
Environment variable precedence:
|
|
540
|
+
|
|
541
|
+
1. process env
|
|
542
|
+
2. `~/.summarize/config.json` (`env`)
|
|
543
|
+
3. `~/.summarize/config.json` (`apiKeys`, legacy)
|
|
464
544
|
|
|
465
545
|
### Environment variables
|
|
466
546
|
|
|
467
547
|
Set the key matching your chosen `--model`:
|
|
468
548
|
|
|
549
|
+
- Optional fallback defaults can be stored in config:
|
|
550
|
+
- `~/.summarize/config.json` -> `"env": { "OPENAI_API_KEY": "sk-..." }`
|
|
551
|
+
- process env always takes precedence
|
|
552
|
+
- legacy `"apiKeys"` still works (mapped to env names)
|
|
553
|
+
|
|
469
554
|
- `OPENAI_API_KEY` (for `openai/...`)
|
|
470
555
|
- `ANTHROPIC_API_KEY` (for `anthropic/...`)
|
|
471
556
|
- `XAI_API_KEY` (for `xai/...`)
|
package/dist/cli.js
CHANGED