@steipete/summarize 0.11.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +44 -1
- package/README.md +63 -17
- package/dist/cli.js +1 -1
- package/dist/esm/cache-keys.js +75 -0
- package/dist/esm/cache-keys.js.map +1 -0
- package/dist/esm/cache-slides-cleanup.js +47 -0
- package/dist/esm/cache-slides-cleanup.js.map +1 -0
- package/dist/esm/cache.js +14 -91
- package/dist/esm/cache.js.map +1 -1
- package/dist/esm/config/env.js +49 -0
- package/dist/esm/config/env.js.map +1 -0
- package/dist/esm/config/model.js +193 -0
- package/dist/esm/config/model.js.map +1 -0
- package/dist/esm/config/parse-helpers.js +50 -0
- package/dist/esm/config/parse-helpers.js.map +1 -0
- package/dist/esm/config/read.js +83 -0
- package/dist/esm/config/read.js.map +1 -0
- package/dist/esm/config/sections.js +438 -0
- package/dist/esm/config/sections.js.map +1 -0
- package/dist/esm/config/types.js +2 -0
- package/dist/esm/config/types.js.map +1 -0
- package/dist/esm/config.js +24 -807
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/content/asset.js +2 -2
- package/dist/esm/content/asset.js.map +1 -1
- package/dist/esm/daemon/agent-model.js +235 -0
- package/dist/esm/daemon/agent-model.js.map +1 -0
- package/dist/esm/daemon/agent-request.js +87 -0
- package/dist/esm/daemon/agent-request.js.map +1 -0
- package/dist/esm/daemon/agent.js +42 -243
- package/dist/esm/daemon/agent.js.map +1 -1
- package/dist/esm/daemon/chat.js +69 -8
- package/dist/esm/daemon/chat.js.map +1 -1
- package/dist/esm/daemon/cli.js +21 -4
- package/dist/esm/daemon/cli.js.map +1 -1
- package/dist/esm/daemon/config.js +65 -9
- package/dist/esm/daemon/config.js.map +1 -1
- package/dist/esm/daemon/env-snapshot.js +4 -0
- package/dist/esm/daemon/env-snapshot.js.map +1 -1
- package/dist/esm/daemon/flow-context.js +8 -1
- package/dist/esm/daemon/flow-context.js.map +1 -1
- package/dist/esm/daemon/models.js +16 -0
- package/dist/esm/daemon/models.js.map +1 -1
- package/dist/esm/daemon/process-registry.js.map +1 -1
- package/dist/esm/daemon/server-admin-routes.js +134 -0
- package/dist/esm/daemon/server-admin-routes.js.map +1 -0
- package/dist/esm/daemon/server-agent-route.js +104 -0
- package/dist/esm/daemon/server-agent-route.js.map +1 -0
- package/dist/esm/daemon/server-http.js +89 -0
- package/dist/esm/daemon/server-http.js.map +1 -0
- package/dist/esm/daemon/server-session-routes.js +209 -0
- package/dist/esm/daemon/server-session-routes.js.map +1 -0
- package/dist/esm/daemon/server-session.js +118 -0
- package/dist/esm/daemon/server-session.js.map +1 -0
- package/dist/esm/daemon/server-sse.js +28 -0
- package/dist/esm/daemon/server-sse.js.map +1 -0
- package/dist/esm/daemon/server-summarize-execution.js +357 -0
- package/dist/esm/daemon/server-summarize-execution.js.map +1 -0
- package/dist/esm/daemon/server-summarize-request.js +119 -0
- package/dist/esm/daemon/server-summarize-request.js.map +1 -0
- package/dist/esm/daemon/server.js +72 -1121
- package/dist/esm/daemon/server.js.map +1 -1
- package/dist/esm/daemon/summarize-progress.js +1 -1
- package/dist/esm/daemon/summarize-progress.js.map +1 -1
- package/dist/esm/daemon/summarize.js.map +1 -1
- package/dist/esm/llm/cli-exec.js +75 -0
- package/dist/esm/llm/cli-exec.js.map +1 -0
- package/dist/esm/llm/cli-provider-output.js +191 -0
- package/dist/esm/llm/cli-provider-output.js.map +1 -0
- package/dist/esm/llm/cli.js +3 -212
- package/dist/esm/llm/cli.js.map +1 -1
- package/dist/esm/llm/generate-text-document.js +109 -0
- package/dist/esm/llm/generate-text-document.js.map +1 -0
- package/dist/esm/llm/generate-text-shared.js +102 -0
- package/dist/esm/llm/generate-text-shared.js.map +1 -0
- package/dist/esm/llm/generate-text-stream.js +258 -0
- package/dist/esm/llm/generate-text-stream.js.map +1 -0
- package/dist/esm/llm/generate-text.js +145 -480
- package/dist/esm/llm/generate-text.js.map +1 -1
- package/dist/esm/llm/model-id.js +21 -20
- package/dist/esm/llm/model-id.js.map +1 -1
- package/dist/esm/llm/provider-capabilities.js +2 -0
- package/dist/esm/llm/provider-capabilities.js.map +1 -0
- package/dist/esm/llm/provider-profile.js +142 -0
- package/dist/esm/llm/provider-profile.js.map +1 -0
- package/dist/esm/llm/providers/google.js +42 -5
- package/dist/esm/llm/providers/google.js.map +1 -1
- package/dist/esm/llm/providers/models.js +13 -0
- package/dist/esm/llm/providers/models.js.map +1 -1
- package/dist/esm/llm/providers/openai.js.map +1 -1
- package/dist/esm/llm/transcript-to-markdown.js.map +1 -1
- package/dist/esm/model-auto-cli.js +89 -0
- package/dist/esm/model-auto-cli.js.map +1 -0
- package/dist/esm/model-auto-rules.js +86 -0
- package/dist/esm/model-auto-rules.js.map +1 -0
- package/dist/esm/model-auto.js +10 -245
- package/dist/esm/model-auto.js.map +1 -1
- package/dist/esm/model-spec.js +23 -17
- package/dist/esm/model-spec.js.map +1 -1
- package/dist/esm/refresh-free.js +1 -1
- package/dist/esm/refresh-free.js.map +1 -1
- package/dist/esm/run/attachments.js +1 -1
- package/dist/esm/run/attachments.js.map +1 -1
- package/dist/esm/run/bird/exec.js +23 -0
- package/dist/esm/run/bird/exec.js.map +1 -0
- package/dist/esm/run/bird/media.js +171 -0
- package/dist/esm/run/bird/media.js.map +1 -0
- package/dist/esm/run/bird/parse.js +82 -0
- package/dist/esm/run/bird/parse.js.map +1 -0
- package/dist/esm/run/bird/types.js +2 -0
- package/dist/esm/run/bird/types.js.map +1 -0
- package/dist/esm/run/bird.js +86 -144
- package/dist/esm/run/bird.js.map +1 -1
- package/dist/esm/run/cache-state.js.map +1 -1
- package/dist/esm/run/constants.js +2 -1
- package/dist/esm/run/constants.js.map +1 -1
- package/dist/esm/run/env.js +3 -0
- package/dist/esm/run/env.js.map +1 -1
- package/dist/esm/run/finish-line-labels.js +76 -0
- package/dist/esm/run/finish-line-labels.js.map +1 -0
- package/dist/esm/run/finish-line-lengths.js +96 -0
- package/dist/esm/run/finish-line-lengths.js.map +1 -0
- package/dist/esm/run/finish-line.js +3 -169
- package/dist/esm/run/finish-line.js.map +1 -1
- package/dist/esm/run/flows/asset/extract.js.map +1 -1
- package/dist/esm/run/flows/asset/input.js +1 -1
- package/dist/esm/run/flows/asset/input.js.map +1 -1
- package/dist/esm/run/flows/asset/media.js +19 -10
- package/dist/esm/run/flows/asset/media.js.map +1 -1
- package/dist/esm/run/flows/asset/output.js.map +1 -1
- package/dist/esm/run/flows/asset/preprocess.js.map +1 -1
- package/dist/esm/run/flows/asset/summary-attempts.js +109 -0
- package/dist/esm/run/flows/asset/summary-attempts.js.map +1 -0
- package/dist/esm/run/flows/asset/summary.js +19 -107
- package/dist/esm/run/flows/asset/summary.js.map +1 -1
- package/dist/esm/run/flows/url/extract.js +7 -4
- package/dist/esm/run/flows/url/extract.js.map +1 -1
- package/dist/esm/run/flows/url/flow-progress.js +119 -0
- package/dist/esm/run/flows/url/flow-progress.js.map +1 -0
- package/dist/esm/run/flows/url/flow.js +22 -93
- package/dist/esm/run/flows/url/flow.js.map +1 -1
- package/dist/esm/run/flows/url/markdown.js +21 -3
- package/dist/esm/run/flows/url/markdown.js.map +1 -1
- package/dist/esm/run/flows/url/progress-status.js +56 -0
- package/dist/esm/run/flows/url/progress-status.js.map +1 -0
- package/dist/esm/run/flows/url/slides-output-render.js +78 -0
- package/dist/esm/run/flows/url/slides-output-render.js.map +1 -0
- package/dist/esm/run/flows/url/slides-output-state.js +86 -0
- package/dist/esm/run/flows/url/slides-output-state.js.map +1 -0
- package/dist/esm/run/flows/url/slides-output-stream.js +271 -0
- package/dist/esm/run/flows/url/slides-output-stream.js.map +1 -0
- package/dist/esm/run/flows/url/slides-output.js +29 -422
- package/dist/esm/run/flows/url/slides-output.js.map +1 -1
- package/dist/esm/run/flows/url/slides-text-markdown.js +431 -0
- package/dist/esm/run/flows/url/slides-text-markdown.js.map +1 -0
- package/dist/esm/run/flows/url/slides-text-transcript.js +199 -0
- package/dist/esm/run/flows/url/slides-text-transcript.js.map +1 -0
- package/dist/esm/run/flows/url/slides-text-types.js +2 -0
- package/dist/esm/run/flows/url/slides-text-types.js.map +1 -0
- package/dist/esm/run/flows/url/slides-text.js +2 -627
- package/dist/esm/run/flows/url/slides-text.js.map +1 -1
- package/dist/esm/run/flows/url/summary-finish.js +34 -0
- package/dist/esm/run/flows/url/summary-finish.js.map +1 -0
- package/dist/esm/run/flows/url/summary-json.js +32 -0
- package/dist/esm/run/flows/url/summary-json.js.map +1 -0
- package/dist/esm/run/flows/url/summary-prompt.js +147 -0
- package/dist/esm/run/flows/url/summary-prompt.js.map +1 -0
- package/dist/esm/run/flows/url/summary-resolution.js +320 -0
- package/dist/esm/run/flows/url/summary-resolution.js.map +1 -0
- package/dist/esm/run/flows/url/summary-timestamps.js +136 -0
- package/dist/esm/run/flows/url/summary-timestamps.js.map +1 -0
- package/dist/esm/run/flows/url/summary.js +49 -543
- package/dist/esm/run/flows/url/summary.js.map +1 -1
- package/dist/esm/run/help.js +9 -3
- package/dist/esm/run/help.js.map +1 -1
- package/dist/esm/run/markdown-transforms.js +89 -0
- package/dist/esm/run/markdown-transforms.js.map +1 -0
- package/dist/esm/run/markdown.js +1 -96
- package/dist/esm/run/markdown.js.map +1 -1
- package/dist/esm/run/run-env.js +28 -7
- package/dist/esm/run/run-env.js.map +1 -1
- package/dist/esm/run/run-settings-parse.js +73 -0
- package/dist/esm/run/run-settings-parse.js.map +1 -0
- package/dist/esm/run/run-settings.js +1 -72
- package/dist/esm/run/run-settings.js.map +1 -1
- package/dist/esm/run/runner-contexts.js +116 -0
- package/dist/esm/run/runner-contexts.js.map +1 -0
- package/dist/esm/run/runner-execution.js +62 -0
- package/dist/esm/run/runner-execution.js.map +1 -0
- package/dist/esm/run/runner-flags.js +97 -0
- package/dist/esm/run/runner-flags.js.map +1 -0
- package/dist/esm/run/runner-setup.js +109 -0
- package/dist/esm/run/runner-setup.js.map +1 -0
- package/dist/esm/run/runner-slides.js +38 -0
- package/dist/esm/run/runner-slides.js.map +1 -0
- package/dist/esm/run/runner.js +99 -390
- package/dist/esm/run/runner.js.map +1 -1
- package/dist/esm/run/slides-render.js +5 -2
- package/dist/esm/run/slides-render.js.map +1 -1
- package/dist/esm/run/stdin-temp-file.js +1 -1
- package/dist/esm/run/stdin-temp-file.js.map +1 -1
- package/dist/esm/run/streaming.js +1 -0
- package/dist/esm/run/streaming.js.map +1 -1
- package/dist/esm/run/summary-engine.js +26 -10
- package/dist/esm/run/summary-engine.js.map +1 -1
- package/dist/esm/run/summary-llm.js +2 -1
- package/dist/esm/run/summary-llm.js.map +1 -1
- package/dist/esm/run/terminal.js +4 -1
- package/dist/esm/run/terminal.js.map +1 -1
- package/dist/esm/run/transcriber-cli.js +1 -1
- package/dist/esm/run/transcriber-cli.js.map +1 -1
- package/dist/esm/slides/download.js +242 -0
- package/dist/esm/slides/download.js.map +1 -0
- package/dist/esm/slides/extract-finalize.js +98 -0
- package/dist/esm/slides/extract-finalize.js.map +1 -0
- package/dist/esm/slides/extract.js +64 -1621
- package/dist/esm/slides/extract.js.map +1 -1
- package/dist/esm/slides/frame-extraction.js +372 -0
- package/dist/esm/slides/frame-extraction.js.map +1 -0
- package/dist/esm/slides/ingest.js +167 -0
- package/dist/esm/slides/ingest.js.map +1 -0
- package/dist/esm/slides/ocr.js +91 -0
- package/dist/esm/slides/ocr.js.map +1 -0
- package/dist/esm/slides/process.js +218 -0
- package/dist/esm/slides/process.js.map +1 -0
- package/dist/esm/slides/scene-detection.js +387 -0
- package/dist/esm/slides/scene-detection.js.map +1 -0
- package/dist/esm/slides/source-id.js +42 -0
- package/dist/esm/slides/source-id.js.map +1 -0
- package/dist/esm/tty/progress/fetch-html.js.map +1 -1
- package/dist/esm/tty/progress/transcript.js +21 -8
- package/dist/esm/tty/progress/transcript.js.map +1 -1
- package/dist/esm/tty/spinner.js +8 -2
- package/dist/esm/tty/spinner.js.map +1 -1
- package/dist/esm/tty/website-progress.js +5 -3
- package/dist/esm/tty/website-progress.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/types/cache-keys.d.ts +44 -0
- package/dist/types/cache-slides-cleanup.d.ts +1 -0
- package/dist/types/cache.d.ts +1 -9
- package/dist/types/config/env.d.ts +6 -0
- package/dist/types/config/model.d.ts +3 -0
- package/dist/types/config/parse-helpers.d.ts +7 -0
- package/dist/types/config/read.d.ts +2 -0
- package/dist/types/config/sections.d.ts +33 -0
- package/dist/types/config/types.d.ts +230 -0
- package/dist/types/config.d.ts +3 -209
- package/dist/types/costs.d.ts +1 -1
- package/dist/types/daemon/agent-model.d.ts +40 -0
- package/dist/types/daemon/agent-request.d.ts +14 -0
- package/dist/types/daemon/chat.d.ts +3 -1
- package/dist/types/daemon/config.d.ts +13 -2
- package/dist/types/daemon/env-snapshot.d.ts +1 -1
- package/dist/types/daemon/flow-context.d.ts +1 -1
- package/dist/types/daemon/models.d.ts +1 -0
- package/dist/types/daemon/server-admin-routes.d.ts +22 -0
- package/dist/types/daemon/server-agent-route.d.ts +9 -0
- package/dist/types/daemon/server-http.d.ts +10 -0
- package/dist/types/daemon/server-session-routes.d.ts +11 -0
- package/dist/types/daemon/server-session.d.ts +52 -0
- package/dist/types/daemon/server-sse.d.ts +12 -0
- package/dist/types/daemon/server-summarize-execution.d.ts +70 -0
- package/dist/types/daemon/server-summarize-request.d.ts +36 -0
- package/dist/types/daemon/server.d.ts +3 -4
- package/dist/types/daemon/summarize.d.ts +1 -1
- package/dist/types/llm/cli-exec.d.ts +13 -0
- package/dist/types/llm/cli-provider-output.d.ts +16 -0
- package/dist/types/llm/generate-text-document.d.ts +34 -0
- package/dist/types/llm/generate-text-shared.d.ts +25 -0
- package/dist/types/llm/generate-text-stream.d.ts +26 -0
- package/dist/types/llm/generate-text.d.ts +6 -26
- package/dist/types/llm/html-to-markdown.d.ts +1 -1
- package/dist/types/llm/model-id.d.ts +1 -1
- package/dist/types/llm/provider-capabilities.d.ts +2 -0
- package/dist/types/llm/provider-profile.d.ts +31 -0
- package/dist/types/llm/providers/google.d.ts +6 -0
- package/dist/types/llm/providers/models.d.ts +5 -0
- package/dist/types/llm/transcript-to-markdown.d.ts +1 -1
- package/dist/types/model-auto-cli.d.ts +15 -0
- package/dist/types/model-auto-rules.d.ts +7 -0
- package/dist/types/model-auto.d.ts +5 -7
- package/dist/types/model-spec.d.ts +2 -2
- package/dist/types/run/attachments.d.ts +2 -2
- package/dist/types/run/bird/exec.d.ts +1 -0
- package/dist/types/run/bird/media.d.ts +3 -0
- package/dist/types/run/bird/parse.d.ts +3 -0
- package/dist/types/run/bird/types.d.ts +18 -0
- package/dist/types/run/bird.d.ts +12 -17
- package/dist/types/run/cache-state.d.ts +1 -1
- package/dist/types/run/constants.d.ts +2 -1
- package/dist/types/run/env.d.ts +1 -0
- package/dist/types/run/finish-line-labels.d.ts +29 -0
- package/dist/types/run/finish-line-lengths.d.ts +23 -0
- package/dist/types/run/finish-line.d.ts +2 -52
- package/dist/types/run/flows/asset/extract.d.ts +1 -1
- package/dist/types/run/flows/asset/input.d.ts +1 -1
- package/dist/types/run/flows/asset/preprocess.d.ts +1 -1
- package/dist/types/run/flows/asset/summary-attempts.d.ts +24 -0
- package/dist/types/run/flows/asset/summary.d.ts +6 -2
- package/dist/types/run/flows/url/flow-progress.d.ts +41 -0
- package/dist/types/run/flows/url/markdown.d.ts +2 -2
- package/dist/types/run/flows/url/progress-status.d.ts +16 -0
- package/dist/types/run/flows/url/slides-output-render.d.ts +43 -0
- package/dist/types/run/flows/url/slides-output-state.d.ts +21 -0
- package/dist/types/run/flows/url/slides-output-stream.d.ts +18 -0
- package/dist/types/run/flows/url/slides-output.d.ts +2 -17
- package/dist/types/run/flows/url/slides-text-markdown.d.ts +46 -0
- package/dist/types/run/flows/url/slides-text-transcript.d.ts +36 -0
- package/dist/types/run/flows/url/slides-text-types.d.ts +8 -0
- package/dist/types/run/flows/url/slides-text.d.ts +3 -87
- package/dist/types/run/flows/url/summary-finish.d.ts +16 -0
- package/dist/types/run/flows/url/summary-json.d.ts +51 -0
- package/dist/types/run/flows/url/summary-prompt.d.ts +22 -0
- package/dist/types/run/flows/url/summary-resolution.d.ts +31 -0
- package/dist/types/run/flows/url/summary-timestamps.d.ts +11 -0
- package/dist/types/run/flows/url/types.d.ts +4 -0
- package/dist/types/run/markdown-transforms.d.ts +3 -0
- package/dist/types/run/run-context.d.ts +4 -0
- package/dist/types/run/run-env.d.ts +4 -0
- package/dist/types/run/run-settings-parse.d.ts +5 -0
- package/dist/types/run/runner-contexts.d.ts +62 -0
- package/dist/types/run/runner-execution.d.ts +57 -0
- package/dist/types/run/runner-flags.d.ts +41 -0
- package/dist/types/run/runner-setup.d.ts +21 -0
- package/dist/types/run/runner-slides.d.ts +8 -0
- package/dist/types/run/streaming.d.ts +1 -1
- package/dist/types/run/summary-engine.d.ts +8 -4
- package/dist/types/run/summary-llm.d.ts +4 -3
- package/dist/types/run/terminal.d.ts +2 -0
- package/dist/types/run/types.d.ts +2 -2
- package/dist/types/slides/download.d.ts +29 -0
- package/dist/types/slides/extract-finalize.d.ts +57 -0
- package/dist/types/slides/extract.d.ts +1 -7
- package/dist/types/slides/frame-extraction.d.ts +38 -0
- package/dist/types/slides/ingest.d.ts +47 -0
- package/dist/types/slides/ocr.d.ts +5 -0
- package/dist/types/slides/process.d.ts +22 -0
- package/dist/types/slides/scene-detection.d.ts +75 -0
- package/dist/types/slides/source-id.d.ts +2 -0
- package/dist/types/version.d.ts +1 -1
- package/docs/_config.yml +1 -0
- package/docs/agent.md +3 -2
- package/docs/assets/site.css +134 -2
- package/docs/cache.md +2 -1
- package/docs/chrome-extension.md +12 -4
- package/docs/cli.md +2 -2
- package/docs/config.md +11 -4
- package/docs/index.html +5 -0
- package/docs/llm.md +5 -2
- package/docs/manual-tests.md +3 -0
- package/docs/media.md +3 -1
- package/docs/model-auto.md +2 -2
- package/docs/model-provider-resolution.md +57 -0
- package/docs/site/index.html +5 -0
- package/docs/slides-rendering-flow.md +46 -0
- package/docs/slides.md +5 -5
- package/docs/smoketest.md +1 -1
- package/docs/transcript-provider-flow.md +66 -0
- package/docs/website.md +1 -0
- package/docs/youtube.md +4 -2
- package/package.json +34 -41
|
@@ -0,0 +1,387 @@
|
|
|
1
|
+
import { runProcess, runProcessCapture, runProcessCaptureBuffer } from "./process.js";
|
|
2
|
+
const FFMPEG_TIMEOUT_FALLBACK_MS = 300_000;
|
|
3
|
+
export function clamp(value, min, max) {
|
|
4
|
+
if (value < min)
|
|
5
|
+
return min;
|
|
6
|
+
if (value > max)
|
|
7
|
+
return max;
|
|
8
|
+
return value;
|
|
9
|
+
}
|
|
10
|
+
export function parseShowinfoTimestamp(line) {
|
|
11
|
+
if (!line.includes("showinfo"))
|
|
12
|
+
return null;
|
|
13
|
+
const match = /pts_time:(\d+\.?\d*)/.exec(line);
|
|
14
|
+
if (!match)
|
|
15
|
+
return null;
|
|
16
|
+
const ts = Number(match[1]);
|
|
17
|
+
if (!Number.isFinite(ts))
|
|
18
|
+
return null;
|
|
19
|
+
return ts;
|
|
20
|
+
}
|
|
21
|
+
export function resolveExtractedTimestamp({ requested, actual, seekBase, }) {
|
|
22
|
+
if (!Number.isFinite(requested))
|
|
23
|
+
return 0;
|
|
24
|
+
if (actual == null || !Number.isFinite(actual) || actual < 0)
|
|
25
|
+
return requested;
|
|
26
|
+
const base = typeof seekBase === "number" && Number.isFinite(seekBase) && seekBase > 0 ? seekBase : null;
|
|
27
|
+
if (!base) {
|
|
28
|
+
if (actual <= 5)
|
|
29
|
+
return requested + actual;
|
|
30
|
+
return actual;
|
|
31
|
+
}
|
|
32
|
+
const candidateRelative = base + actual;
|
|
33
|
+
const candidateAbsolute = actual;
|
|
34
|
+
return Math.abs(candidateRelative - requested) <= Math.abs(candidateAbsolute - requested)
|
|
35
|
+
? candidateRelative
|
|
36
|
+
: candidateAbsolute;
|
|
37
|
+
}
|
|
38
|
+
function buildCalibrationSampleTimestamps(durationSeconds, sampleCount) {
|
|
39
|
+
if (!durationSeconds || durationSeconds <= 0)
|
|
40
|
+
return [0];
|
|
41
|
+
const clamped = Math.max(3, Math.min(12, Math.round(sampleCount)));
|
|
42
|
+
const startRatio = 0.05;
|
|
43
|
+
const endRatio = 0.95;
|
|
44
|
+
if (clamped === 1)
|
|
45
|
+
return [clamp(durationSeconds * 0.5, 0, durationSeconds - 0.1)];
|
|
46
|
+
const step = (endRatio - startRatio) / (clamped - 1);
|
|
47
|
+
const points = [];
|
|
48
|
+
for (let i = 0; i < clamped; i += 1) {
|
|
49
|
+
const ratio = startRatio + step * i;
|
|
50
|
+
points.push(clamp(durationSeconds * ratio, 0, durationSeconds - 0.1));
|
|
51
|
+
}
|
|
52
|
+
return points;
|
|
53
|
+
}
|
|
54
|
+
function computeDiffStats(values) {
|
|
55
|
+
if (values.length === 0)
|
|
56
|
+
return { median: 0, p75: 0, p90: 0, max: 0 };
|
|
57
|
+
const sorted = [...values].sort((a, b) => a - b);
|
|
58
|
+
const at = (p) => sorted[Math.min(sorted.length - 1, Math.max(0, Math.round(p)))] ?? 0;
|
|
59
|
+
return {
|
|
60
|
+
median: at((sorted.length - 1) * 0.5),
|
|
61
|
+
p75: at((sorted.length - 1) * 0.75),
|
|
62
|
+
p90: at((sorted.length - 1) * 0.9),
|
|
63
|
+
max: sorted[sorted.length - 1] ?? 0,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
export function roundThreshold(value) {
|
|
67
|
+
return Math.round(value * 100) / 100;
|
|
68
|
+
}
|
|
69
|
+
function buildAverageHash(pixels) {
|
|
70
|
+
let sum = 0;
|
|
71
|
+
for (const value of pixels)
|
|
72
|
+
sum += value;
|
|
73
|
+
const avg = sum / pixels.length;
|
|
74
|
+
const bits = new Uint8Array(pixels.length);
|
|
75
|
+
for (let i = 0; i < pixels.length; i += 1) {
|
|
76
|
+
bits[i] = pixels[i] >= avg ? 1 : 0;
|
|
77
|
+
}
|
|
78
|
+
return bits;
|
|
79
|
+
}
|
|
80
|
+
function computeHashDistanceRatio(a, b) {
|
|
81
|
+
const len = Math.min(a.length, b.length);
|
|
82
|
+
let diff = 0;
|
|
83
|
+
for (let i = 0; i < len; i += 1) {
|
|
84
|
+
if (a[i] !== b[i])
|
|
85
|
+
diff += 1;
|
|
86
|
+
}
|
|
87
|
+
return len === 0 ? 0 : diff / len;
|
|
88
|
+
}
|
|
89
|
+
async function hashFrameAtTimestamp({ ffmpegPath, inputPath, timestamp, timeoutMs, }) {
|
|
90
|
+
try {
|
|
91
|
+
const buffer = await runProcessCaptureBuffer({
|
|
92
|
+
command: ffmpegPath,
|
|
93
|
+
args: [
|
|
94
|
+
"-hide_banner",
|
|
95
|
+
"-ss",
|
|
96
|
+
String(timestamp),
|
|
97
|
+
"-i",
|
|
98
|
+
inputPath,
|
|
99
|
+
"-frames:v",
|
|
100
|
+
"1",
|
|
101
|
+
"-vf",
|
|
102
|
+
"scale=32:32,format=gray",
|
|
103
|
+
"-f",
|
|
104
|
+
"rawvideo",
|
|
105
|
+
"-pix_fmt",
|
|
106
|
+
"gray",
|
|
107
|
+
"-",
|
|
108
|
+
],
|
|
109
|
+
timeoutMs,
|
|
110
|
+
errorLabel: "ffmpeg",
|
|
111
|
+
});
|
|
112
|
+
if (buffer.length < 1024)
|
|
113
|
+
return null;
|
|
114
|
+
return buildAverageHash(buffer.subarray(0, 1024));
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
return null;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
export async function calibrateSceneThreshold({ ffmpegPath, inputPath, durationSeconds, sampleCount, timeoutMs, logSlides, }) {
|
|
121
|
+
const timestamps = buildCalibrationSampleTimestamps(durationSeconds, sampleCount);
|
|
122
|
+
if (timestamps.length < 2)
|
|
123
|
+
return { threshold: 0.2, confidence: 0 };
|
|
124
|
+
const hashes = [];
|
|
125
|
+
for (const timestamp of timestamps) {
|
|
126
|
+
const hash = await hashFrameAtTimestamp({ ffmpegPath, inputPath, timestamp, timeoutMs });
|
|
127
|
+
if (hash)
|
|
128
|
+
hashes.push(hash);
|
|
129
|
+
}
|
|
130
|
+
const diffs = [];
|
|
131
|
+
for (let i = 1; i < hashes.length; i += 1) {
|
|
132
|
+
diffs.push(computeHashDistanceRatio(hashes[i - 1], hashes[i]));
|
|
133
|
+
}
|
|
134
|
+
const stats = computeDiffStats(diffs);
|
|
135
|
+
let threshold = roundThreshold(Math.max(stats.median * 0.15, stats.p75 * 0.2, stats.p90 * 0.25));
|
|
136
|
+
if (stats.p75 >= 0.12) {
|
|
137
|
+
threshold = Math.min(threshold, 0.05);
|
|
138
|
+
}
|
|
139
|
+
else if (stats.p90 < 0.05) {
|
|
140
|
+
threshold = 0.05;
|
|
141
|
+
}
|
|
142
|
+
threshold = clamp(threshold, 0.05, 0.3);
|
|
143
|
+
const confidence = diffs.length >= 2 ? clamp(stats.p75 / 0.25, 0, 1) : clamp(stats.max / 0.25, 0, 1);
|
|
144
|
+
logSlides?.(`calibration samples=${timestamps.length} diffs=${diffs.length} median=${stats.median.toFixed(3)} p75=${stats.p75.toFixed(3)} threshold=${threshold}`);
|
|
145
|
+
return { threshold, confidence };
|
|
146
|
+
}
|
|
147
|
+
export function buildSegments(durationSeconds, workers) {
|
|
148
|
+
if (!durationSeconds || durationSeconds <= 0 || workers <= 1) {
|
|
149
|
+
return [{ start: 0, duration: durationSeconds ?? 0 }];
|
|
150
|
+
}
|
|
151
|
+
const clampedWorkers = Math.max(1, Math.min(16, Math.round(workers)));
|
|
152
|
+
const segmentCount = Math.min(clampedWorkers, Math.ceil(durationSeconds / 60));
|
|
153
|
+
const segmentDuration = durationSeconds / segmentCount;
|
|
154
|
+
const segments = [];
|
|
155
|
+
for (let i = 0; i < segmentCount; i += 1) {
|
|
156
|
+
const start = i * segmentDuration;
|
|
157
|
+
const remaining = durationSeconds - start;
|
|
158
|
+
const duration = i === segmentCount - 1 ? remaining : segmentDuration;
|
|
159
|
+
segments.push({ start, duration });
|
|
160
|
+
}
|
|
161
|
+
return segments;
|
|
162
|
+
}
|
|
163
|
+
export async function detectSceneTimestamps({ ffmpegPath, inputPath, threshold, timeoutMs, segments, workers, onSegmentProgress, runWithConcurrency, }) {
|
|
164
|
+
const filter = `select='gt(scene,${threshold})',showinfo`;
|
|
165
|
+
const usedSegments = segments && segments.length > 0 ? segments : [{ start: 0, duration: 0 }];
|
|
166
|
+
const concurrency = workers && workers > 0 ? workers : 1;
|
|
167
|
+
const tasks = usedSegments.map((segment) => async () => {
|
|
168
|
+
const timestamps = [];
|
|
169
|
+
await runProcess({
|
|
170
|
+
command: ffmpegPath,
|
|
171
|
+
args: [
|
|
172
|
+
"-hide_banner",
|
|
173
|
+
...(segment.duration > 0
|
|
174
|
+
? ["-ss", String(segment.start), "-t", String(segment.duration)]
|
|
175
|
+
: []),
|
|
176
|
+
"-i",
|
|
177
|
+
inputPath,
|
|
178
|
+
"-vf",
|
|
179
|
+
filter,
|
|
180
|
+
"-fps_mode",
|
|
181
|
+
"vfr",
|
|
182
|
+
"-an",
|
|
183
|
+
"-sn",
|
|
184
|
+
"-f",
|
|
185
|
+
"null",
|
|
186
|
+
"-",
|
|
187
|
+
],
|
|
188
|
+
timeoutMs: Math.max(timeoutMs, FFMPEG_TIMEOUT_FALLBACK_MS),
|
|
189
|
+
errorLabel: "ffmpeg",
|
|
190
|
+
onStderrLine: (line) => {
|
|
191
|
+
const ts = parseShowinfoTimestamp(line);
|
|
192
|
+
if (ts != null)
|
|
193
|
+
timestamps.push(ts + segment.start);
|
|
194
|
+
},
|
|
195
|
+
});
|
|
196
|
+
return timestamps;
|
|
197
|
+
});
|
|
198
|
+
const results = await runWithConcurrency(tasks, concurrency, onSegmentProgress ?? undefined);
|
|
199
|
+
return results.flat().sort((a, b) => a - b);
|
|
200
|
+
}
|
|
201
|
+
export function applyMinDurationFilter(slides, minDurationSeconds, warnings, removeFile) {
|
|
202
|
+
if (minDurationSeconds <= 0)
|
|
203
|
+
return slides;
|
|
204
|
+
const filtered = [];
|
|
205
|
+
let lastTimestamp = -Infinity;
|
|
206
|
+
for (const slide of slides) {
|
|
207
|
+
if (slide.timestamp - lastTimestamp >= minDurationSeconds) {
|
|
208
|
+
filtered.push(slide);
|
|
209
|
+
lastTimestamp = slide.timestamp;
|
|
210
|
+
}
|
|
211
|
+
else {
|
|
212
|
+
removeFile(slide.imagePath);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
if (filtered.length < slides.length) {
|
|
216
|
+
warnings.push(`Filtered ${slides.length - filtered.length} slides by min duration`);
|
|
217
|
+
}
|
|
218
|
+
return filtered.map((slide, index) => ({ ...slide, index: index + 1 }));
|
|
219
|
+
}
|
|
220
|
+
export function mergeTimestamps(sceneTimestamps, intervalTimestamps, minDurationSeconds) {
|
|
221
|
+
const merged = [...sceneTimestamps, ...intervalTimestamps].filter((value) => Number.isFinite(value));
|
|
222
|
+
merged.sort((a, b) => a - b);
|
|
223
|
+
if (merged.length === 0)
|
|
224
|
+
return [];
|
|
225
|
+
const result = [];
|
|
226
|
+
const minGap = Math.max(0.1, minDurationSeconds * 0.5);
|
|
227
|
+
for (const ts of merged) {
|
|
228
|
+
if (result.length === 0 || ts - result[result.length - 1] >= minGap) {
|
|
229
|
+
result.push(ts);
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
return result;
|
|
233
|
+
}
|
|
234
|
+
export function filterTimestampsByMinDuration(timestamps, minDurationSeconds) {
|
|
235
|
+
if (minDurationSeconds <= 0)
|
|
236
|
+
return timestamps.slice();
|
|
237
|
+
const sorted = timestamps
|
|
238
|
+
.filter((value) => Number.isFinite(value))
|
|
239
|
+
.slice()
|
|
240
|
+
.sort((a, b) => a - b);
|
|
241
|
+
const filtered = [];
|
|
242
|
+
let lastTimestamp = -Infinity;
|
|
243
|
+
for (const ts of sorted) {
|
|
244
|
+
if (ts - lastTimestamp >= minDurationSeconds) {
|
|
245
|
+
filtered.push(ts);
|
|
246
|
+
lastTimestamp = ts;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
return filtered;
|
|
250
|
+
}
|
|
251
|
+
export function buildSceneSegments(sceneTimestamps, durationSeconds) {
|
|
252
|
+
const sorted = sceneTimestamps
|
|
253
|
+
.filter((value) => Number.isFinite(value) && value >= 0)
|
|
254
|
+
.slice()
|
|
255
|
+
.sort((a, b) => a - b);
|
|
256
|
+
const deduped = [];
|
|
257
|
+
for (const ts of sorted) {
|
|
258
|
+
if (deduped.length === 0 || ts - deduped[deduped.length - 1] > 0.05)
|
|
259
|
+
deduped.push(ts);
|
|
260
|
+
}
|
|
261
|
+
const starts = [0, ...deduped];
|
|
262
|
+
const ends = [...deduped, durationSeconds];
|
|
263
|
+
const segments = [];
|
|
264
|
+
for (let i = 0; i < starts.length; i += 1) {
|
|
265
|
+
const start = starts[i];
|
|
266
|
+
const rawEnd = ends[i];
|
|
267
|
+
const end = typeof rawEnd === "number" && Number.isFinite(rawEnd) && rawEnd > start ? rawEnd : null;
|
|
268
|
+
segments.push({ start, end });
|
|
269
|
+
}
|
|
270
|
+
return segments;
|
|
271
|
+
}
|
|
272
|
+
export function findSceneSegment(segments, timestamp) {
|
|
273
|
+
for (const segment of segments) {
|
|
274
|
+
if (timestamp >= segment.start && (segment.end == null || timestamp < segment.end)) {
|
|
275
|
+
return segment;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
return segments[segments.length - 1] ?? null;
|
|
279
|
+
}
|
|
280
|
+
export function adjustTimestampWithinSegment(timestamp, segment) {
|
|
281
|
+
if (!segment)
|
|
282
|
+
return timestamp;
|
|
283
|
+
const start = Math.max(0, segment.start);
|
|
284
|
+
const end = segment.end;
|
|
285
|
+
if (end == null || !Number.isFinite(end) || end <= start)
|
|
286
|
+
return Math.max(timestamp, start);
|
|
287
|
+
const duration = Math.max(0, end - start);
|
|
288
|
+
const padding = Math.min(1.5, Math.max(0.2, duration * 0.08));
|
|
289
|
+
if (duration <= padding * 2)
|
|
290
|
+
return start + duration * 0.5;
|
|
291
|
+
return clamp(timestamp, start + padding, end - padding);
|
|
292
|
+
}
|
|
293
|
+
export function selectTimestampTargets({ targets, sceneTimestamps, minDurationSeconds, intervalSeconds, }) {
|
|
294
|
+
const targetList = targets
|
|
295
|
+
.filter((value) => Number.isFinite(value))
|
|
296
|
+
.slice()
|
|
297
|
+
.sort((a, b) => a - b);
|
|
298
|
+
if (targetList.length === 0)
|
|
299
|
+
return [];
|
|
300
|
+
const sceneList = filterTimestampsByMinDuration(sceneTimestamps, Math.max(0.1, minDurationSeconds * 0.25));
|
|
301
|
+
const windowSeconds = Math.max(2, Math.min(10, intervalSeconds * 0.35));
|
|
302
|
+
const picked = [];
|
|
303
|
+
let lastPicked = -Infinity;
|
|
304
|
+
let sceneIndex = 0;
|
|
305
|
+
for (const target of targetList) {
|
|
306
|
+
while (sceneIndex < sceneList.length && sceneList[sceneIndex] < target - windowSeconds) {
|
|
307
|
+
sceneIndex += 1;
|
|
308
|
+
}
|
|
309
|
+
let best = null;
|
|
310
|
+
let bestDiff = Number.POSITIVE_INFINITY;
|
|
311
|
+
for (let idx = sceneIndex; idx < sceneList.length; idx += 1) {
|
|
312
|
+
const candidate = sceneList[idx];
|
|
313
|
+
if (candidate > target + windowSeconds)
|
|
314
|
+
break;
|
|
315
|
+
const diff = Math.abs(candidate - target);
|
|
316
|
+
if (diff < bestDiff) {
|
|
317
|
+
best = candidate;
|
|
318
|
+
bestDiff = diff;
|
|
319
|
+
}
|
|
320
|
+
}
|
|
321
|
+
const candidate = best ?? target;
|
|
322
|
+
const chosen = candidate - lastPicked >= minDurationSeconds ? candidate : target;
|
|
323
|
+
picked.push(chosen);
|
|
324
|
+
lastPicked = chosen;
|
|
325
|
+
}
|
|
326
|
+
return picked;
|
|
327
|
+
}
|
|
328
|
+
export function buildIntervalTimestamps({ durationSeconds, minDurationSeconds, maxSlides, }) {
|
|
329
|
+
if (!durationSeconds || durationSeconds <= 0)
|
|
330
|
+
return null;
|
|
331
|
+
const maxCount = Math.max(1, Math.floor(maxSlides));
|
|
332
|
+
const targetCount = Math.min(maxCount, clamp(Math.round(durationSeconds / 180), 6, 20));
|
|
333
|
+
const intervalSeconds = Math.max(minDurationSeconds, durationSeconds / targetCount);
|
|
334
|
+
if (!Number.isFinite(intervalSeconds) || intervalSeconds <= 0)
|
|
335
|
+
return null;
|
|
336
|
+
const timestamps = [];
|
|
337
|
+
for (let t = 0; t < durationSeconds; t += intervalSeconds)
|
|
338
|
+
timestamps.push(t);
|
|
339
|
+
return { timestamps, intervalSeconds };
|
|
340
|
+
}
|
|
341
|
+
export async function probeVideoInfo({ ffprobePath, inputPath, timeoutMs, }) {
|
|
342
|
+
try {
|
|
343
|
+
const output = await runProcessCapture({
|
|
344
|
+
command: ffprobePath,
|
|
345
|
+
args: ["-v", "quiet", "-print_format", "json", "-show_format", "-show_streams", inputPath],
|
|
346
|
+
timeoutMs: Math.min(timeoutMs, 30_000),
|
|
347
|
+
errorLabel: "ffprobe",
|
|
348
|
+
});
|
|
349
|
+
const parsed = JSON.parse(output);
|
|
350
|
+
let durationSeconds = null;
|
|
351
|
+
let width = null;
|
|
352
|
+
let height = null;
|
|
353
|
+
for (const stream of parsed.streams ?? []) {
|
|
354
|
+
if (stream.codec_type !== "video")
|
|
355
|
+
continue;
|
|
356
|
+
if (width == null && typeof stream.width === "number")
|
|
357
|
+
width = stream.width;
|
|
358
|
+
if (height == null && typeof stream.height === "number")
|
|
359
|
+
height = stream.height;
|
|
360
|
+
const duration = Number(stream.duration);
|
|
361
|
+
if (Number.isFinite(duration) && duration > 0)
|
|
362
|
+
durationSeconds = duration;
|
|
363
|
+
}
|
|
364
|
+
if (durationSeconds == null) {
|
|
365
|
+
const formatDuration = Number(parsed.format?.duration);
|
|
366
|
+
if (Number.isFinite(formatDuration) && formatDuration > 0)
|
|
367
|
+
durationSeconds = formatDuration;
|
|
368
|
+
}
|
|
369
|
+
return { durationSeconds, width, height };
|
|
370
|
+
}
|
|
371
|
+
catch {
|
|
372
|
+
return { durationSeconds: null, width: null, height: null };
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
export function applyMaxSlidesFilter(slides, maxSlides, warnings, removeFile) {
|
|
376
|
+
if (maxSlides <= 0 || slides.length <= maxSlides)
|
|
377
|
+
return slides;
|
|
378
|
+
const kept = slides.slice(0, maxSlides);
|
|
379
|
+
const removed = slides.slice(maxSlides);
|
|
380
|
+
for (const slide of removed) {
|
|
381
|
+
if (slide.imagePath)
|
|
382
|
+
removeFile(slide.imagePath);
|
|
383
|
+
}
|
|
384
|
+
warnings.push(`Trimmed slides to max ${maxSlides}`);
|
|
385
|
+
return kept.map((slide, index) => ({ ...slide, index: index + 1 }));
|
|
386
|
+
}
|
|
387
|
+
//# sourceMappingURL=scene-detection.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scene-detection.js","sourceRoot":"","sources":["../../../src/slides/scene-detection.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { createHash } from "node:crypto";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
export function buildYoutubeSourceId(videoId) {
|
|
4
|
+
return `youtube-${videoId}`;
|
|
5
|
+
}
|
|
6
|
+
export function buildDirectSourceId(url) {
|
|
7
|
+
const parsed = (() => {
|
|
8
|
+
try {
|
|
9
|
+
return new URL(url);
|
|
10
|
+
}
|
|
11
|
+
catch {
|
|
12
|
+
return null;
|
|
13
|
+
}
|
|
14
|
+
})();
|
|
15
|
+
const hostSlug = resolveHostSlug(parsed);
|
|
16
|
+
const rawName = parsed ? path.basename(parsed.pathname) : "video";
|
|
17
|
+
const base = rawName.replace(/\.[a-z0-9]+$/i, "").trim() || "video";
|
|
18
|
+
const slug = toSlug(base);
|
|
19
|
+
const combined = [hostSlug, slug].filter(Boolean).join("-");
|
|
20
|
+
const hash = createHash("sha1").update(url).digest("hex").slice(0, 8);
|
|
21
|
+
return combined ? `${combined}-${hash}` : `video-${hash}`;
|
|
22
|
+
}
|
|
23
|
+
function resolveHostSlug(parsed) {
|
|
24
|
+
if (!parsed?.hostname)
|
|
25
|
+
return null;
|
|
26
|
+
const host = parsed.hostname.toLowerCase();
|
|
27
|
+
if (host === "youtube.com" || host.endsWith(".youtube.com") || host === "youtu.be") {
|
|
28
|
+
return "youtube";
|
|
29
|
+
}
|
|
30
|
+
const slug = toSlug(host);
|
|
31
|
+
return slug || null;
|
|
32
|
+
}
|
|
33
|
+
function toSlug(value) {
|
|
34
|
+
const normalized = value
|
|
35
|
+
.toLowerCase()
|
|
36
|
+
.replace(/[^a-z0-9]+/g, "-")
|
|
37
|
+
.replace(/^-+|-+$/g, "");
|
|
38
|
+
if (!normalized)
|
|
39
|
+
return "";
|
|
40
|
+
return normalized.length <= 64 ? normalized : normalized.slice(0, 64).replace(/-+$/g, "");
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=source-id.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"source-id.js","sourceRoot":"","sources":["../../../src/slides/source-id.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAClD,OAAO,WAAW,OAAO,EAAE,CAAC;AAC9B,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAW;IAC7C,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE;QACnB,IAAI,CAAC;YACH,OAAO,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IACL,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAClE,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,OAAO,CAAC;IACpE,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1B,MAAM,QAAQ,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC5D,MAAM,IAAI,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACtE,OAAO,QAAQ,CAAC,CAAC,CAAC,GAAG,QAAQ,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC;AAC5D,CAAC;AAED,SAAS,eAAe,CAAC,MAAkB;IACzC,IAAI,CAAC,MAAM,EAAE,QAAQ;QAAE,OAAO,IAAI,CAAC;IACnC,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;IAC3C,IAAI,IAAI,KAAK,aAAa,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;QACnF,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1B,OAAO,IAAI,IAAI,IAAI,CAAC;AACtB,CAAC;AAED,SAAS,MAAM,CAAC,KAAa;IAC3B,MAAM,UAAU,GAAG,KAAK;SACrB,WAAW,EAAE;SACb,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC;SAC3B,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;IAC3B,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAC3B,OAAO,UAAU,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC5F,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fetch-html.js","sourceRoot":"","sources":["../../../../src/tty/progress/fetch-html.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"fetch-html.js","sourceRoot":"","sources":["../../../../src/tty/progress/fetch-html.ts"],"names":[],"mappings":"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"}
|
|
@@ -114,20 +114,33 @@ export function createTranscriptProgressRenderer({ spinner, oscProgress, theme,
|
|
|
114
114
|
return "Whisper.cpp";
|
|
115
115
|
if (hint === "onnx")
|
|
116
116
|
return "ONNX (Parakeet/Canary)";
|
|
117
|
+
const labelForPart = (part, chained) => {
|
|
118
|
+
if (part === "groq")
|
|
119
|
+
return "Whisper/Groq";
|
|
120
|
+
if (part === "assemblyai")
|
|
121
|
+
return "AssemblyAI";
|
|
122
|
+
if (part === "gemini")
|
|
123
|
+
return "Gemini";
|
|
124
|
+
if (part === "openai")
|
|
125
|
+
return "Whisper/OpenAI";
|
|
126
|
+
if (part === "fal")
|
|
127
|
+
return chained ? "FAL" : "Whisper/FAL";
|
|
128
|
+
return part;
|
|
129
|
+
};
|
|
130
|
+
if (hint.includes("->")) {
|
|
131
|
+
const parts = hint.split("->");
|
|
132
|
+
return parts.map((part) => labelForPart(part, parts.length > 1)).join("→");
|
|
133
|
+
}
|
|
117
134
|
if (hint === "groq")
|
|
118
135
|
return "Whisper/Groq";
|
|
119
|
-
if (hint === "
|
|
120
|
-
return "
|
|
121
|
-
if (hint === "
|
|
122
|
-
return "
|
|
123
|
-
if (hint === "groq->openai->fal")
|
|
124
|
-
return "Whisper/Groq→OpenAI→FAL";
|
|
136
|
+
if (hint === "assemblyai")
|
|
137
|
+
return "AssemblyAI";
|
|
138
|
+
if (hint === "gemini")
|
|
139
|
+
return "Gemini";
|
|
125
140
|
if (hint === "openai")
|
|
126
141
|
return "Whisper/OpenAI";
|
|
127
142
|
if (hint === "fal")
|
|
128
143
|
return "Whisper/FAL";
|
|
129
|
-
if (hint === "openai->fal")
|
|
130
|
-
return "Whisper/OpenAI→FAL";
|
|
131
144
|
return "Whisper";
|
|
132
145
|
};
|
|
133
146
|
const renderWhisperLine = () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcript.js","sourceRoot":"","sources":["../../../../src/tty/progress/transcript.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"transcript.js","sourceRoot":"","sources":["../../../../src/tty/progress/transcript.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/tty/spinner.js
CHANGED
|
@@ -19,6 +19,7 @@ export function startSpinner({ text, enabled, stream, color, }) {
|
|
|
19
19
|
}
|
|
20
20
|
let ended = false;
|
|
21
21
|
let paused = false;
|
|
22
|
+
let lastRenderAt = 0;
|
|
22
23
|
const oraStream = stream;
|
|
23
24
|
if (typeof oraStream.cursorTo !== "function")
|
|
24
25
|
oraStream.cursorTo = () => { };
|
|
@@ -74,8 +75,13 @@ export function startSpinner({ text, enabled, stream, color, }) {
|
|
|
74
75
|
if (spinner.text === next)
|
|
75
76
|
return;
|
|
76
77
|
spinner.text = next;
|
|
77
|
-
if (!paused)
|
|
78
|
-
|
|
78
|
+
if (!paused) {
|
|
79
|
+
const now = Date.now();
|
|
80
|
+
if (now - lastRenderAt >= 80) {
|
|
81
|
+
lastRenderAt = now;
|
|
82
|
+
spinner.render?.();
|
|
83
|
+
}
|
|
84
|
+
}
|
|
79
85
|
};
|
|
80
86
|
const spinner = ora({
|
|
81
87
|
text,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../../src/tty/spinner.ts"],"names":[],"mappings":"AAAA,OAAO,GAAmC,MAAM,KAAK,CAAC;AAEtD,SAAS,cAAc,CAAC,KAAa;IACnC,uEAAuE;IACvE,MAAM,WAAW,GAAG,KAAK;SACtB,OAAO,CAAC,4BAA4B,EAAE,EAAE,CAAC;SACzC,OAAO,CAAC,wCAAwC,EAAE,EAAE,CAAC,CAAC;IACzD,OAAO,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,EAC3B,IAAI,EACJ,OAAO,EACP,MAAM,EACN,KAAK,GAMN;IAQC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,OAAO;YACL,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;YACd,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;YACf,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;YACf,MAAM,EAAE,GAAG,EAAE,GAAE,CAAC;YAChB,YAAY,EAAE,GAAG,EAAE,GAAE,CAAC;YACtB,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;SAClB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,MAAM,GAAG,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"spinner.js","sourceRoot":"","sources":["../../../src/tty/spinner.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,7 @@ export function createWebsiteProgress({ enabled, spinner, oscProgress, theme, })
|
|
|
9
9
|
const styleLabel = (text) => (theme ? theme.label(text) : text);
|
|
10
10
|
const styleDim = (text) => (theme ? theme.dim(text) : text);
|
|
11
11
|
const renderStatus = (label, detail) => theme ? `${styleLabel(label)}${styleDim(detail)}` : `${label}${detail}`;
|
|
12
|
+
const renderTweetCliLabel = (client) => client === "xurl" ? "Xurl" : client === "bird" ? "Bird" : "X";
|
|
12
13
|
const stopAll = () => {
|
|
13
14
|
fetchRenderer.stop();
|
|
14
15
|
transcriptRenderer.stop();
|
|
@@ -30,16 +31,17 @@ export function createWebsiteProgress({ enabled, spinner, oscProgress, theme, })
|
|
|
30
31
|
transcriptRenderer.onProgress(event);
|
|
31
32
|
if (event.kind === "bird-start") {
|
|
32
33
|
stopAll();
|
|
33
|
-
spinner.setText(renderStatus(
|
|
34
|
+
spinner.setText(renderStatus(renderTweetCliLabel(event.client), ": reading tweet…"));
|
|
34
35
|
return;
|
|
35
36
|
}
|
|
36
37
|
if (event.kind === "bird-done") {
|
|
37
38
|
stopAll();
|
|
39
|
+
const label = renderTweetCliLabel(event.client);
|
|
38
40
|
if (event.ok && typeof event.textBytes === "number") {
|
|
39
|
-
spinner.setText(renderStatus(
|
|
41
|
+
spinner.setText(renderStatus(label, `: got ${formatBytes(event.textBytes)}…`));
|
|
40
42
|
return;
|
|
41
43
|
}
|
|
42
|
-
spinner.setText(renderStatus(
|
|
44
|
+
spinner.setText(renderStatus(label, ": failed; fallback…"));
|
|
43
45
|
return;
|
|
44
46
|
}
|
|
45
47
|
if (event.kind === "nitter-start") {
|