@steipete/summarize 0.11.1 → 0.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +73 -1
- package/README.md +102 -32
- package/dist/cli.js +1 -1
- package/dist/esm/cache-keys.js +83 -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 +15 -92
- 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 +55 -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 +472 -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/costs.js.map +1 -1
- package/dist/esm/daemon/agent-model.js +283 -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 +118 -9
- package/dist/esm/daemon/chat.js.map +1 -1
- package/dist/esm/daemon/cli.js +121 -9
- 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 +6 -0
- package/dist/esm/daemon/env-snapshot.js.map +1 -1
- package/dist/esm/daemon/flow-context.js +84 -74
- package/dist/esm/daemon/flow-context.js.map +1 -1
- package/dist/esm/daemon/models.js +26 -0
- package/dist/esm/daemon/models.js.map +1 -1
- package/dist/esm/daemon/process-registry.js.map +1 -1
- package/dist/esm/daemon/schtasks.js +101 -5
- package/dist/esm/daemon/schtasks.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 +79 -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/daemon/windows-container.js +21 -0
- package/dist/esm/daemon/windows-container.js.map +1 -0
- 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 +415 -0
- package/dist/esm/llm/cli-provider-output.js.map +1 -0
- package/dist/esm/llm/cli.js +97 -218
- 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 +121 -0
- package/dist/esm/llm/generate-text-shared.js.map +1 -0
- package/dist/esm/llm/generate-text-stream.js +291 -0
- package/dist/esm/llm/generate-text-stream.js.map +1 -0
- package/dist/esm/llm/generate-text.js +172 -480
- package/dist/esm/llm/generate-text.js.map +1 -1
- package/dist/esm/llm/github-models.js +45 -0
- package/dist/esm/llm/github-models.js.map +1 -0
- package/dist/esm/llm/html-to-markdown.js.map +1 -1
- package/dist/esm/llm/model-id.js +37 -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 +184 -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 +19 -1
- package/dist/esm/llm/providers/models.js.map +1 -1
- package/dist/esm/llm/providers/openai.js +243 -5
- package/dist/esm/llm/providers/openai.js.map +1 -1
- package/dist/esm/llm/transcript-to-markdown.js.map +1 -1
- package/dist/esm/media-cache.js +3 -0
- package/dist/esm/media-cache.js.map +1 -1
- package/dist/esm/model-auto-cli.js +91 -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 +62 -19
- 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/cli-fallback-state.js +6 -1
- package/dist/esm/run/cli-fallback-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 +24 -3
- 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 +117 -0
- package/dist/esm/run/flows/asset/summary-attempts.js.map +1 -0
- package/dist/esm/run/flows/asset/summary.js +30 -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/extraction-session.js +174 -0
- package/dist/esm/run/flows/url/extraction-session.js.map +1 -0
- package/dist/esm/run/flows/url/fetch-options.js +32 -0
- package/dist/esm/run/flows/url/fetch-options.js.map +1 -0
- package/dist/esm/run/flows/url/flow-progress.js +123 -0
- package/dist/esm/run/flows/url/flow-progress.js.map +1 -0
- package/dist/esm/run/flows/url/flow.js +70 -462
- package/dist/esm/run/flows/url/flow.js.map +1 -1
- package/dist/esm/run/flows/url/markdown.js +38 -3
- package/dist/esm/run/flows/url/markdown.js.map +1 -1
- package/dist/esm/run/flows/url/progress-status-state.js +28 -0
- package/dist/esm/run/flows/url/progress-status-state.js.map +1 -0
- package/dist/esm/run/flows/url/progress-status.js +51 -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-session.js +159 -0
- package/dist/esm/run/flows/url/slides-session.js.map +1 -0
- 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 +40 -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 +327 -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 +139 -667
- package/dist/esm/run/flows/url/summary.js.map +1 -1
- package/dist/esm/run/flows/url/types.js +31 -1
- package/dist/esm/run/flows/url/types.js.map +1 -1
- package/dist/esm/run/flows/url/video-only.js +68 -0
- package/dist/esm/run/flows/url/video-only.js.map +1 -0
- package/dist/esm/run/help.js +15 -5
- 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-config.js +1 -1
- package/dist/esm/run/run-config.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-models.js +35 -5
- package/dist/esm/run/run-models.js.map +1 -1
- package/dist/esm/run/run-settings-parse.js +77 -0
- package/dist/esm/run/run-settings-parse.js.map +1 -0
- package/dist/esm/run/run-settings.js +7 -72
- package/dist/esm/run/run-settings.js.map +1 -1
- package/dist/esm/run/runner-contexts.js +122 -0
- package/dist/esm/run/runner-contexts.js.map +1 -0
- package/dist/esm/run/runner-execution.js +82 -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-plan.js +369 -0
- package/dist/esm/run/runner-plan.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 +49 -0
- package/dist/esm/run/runner-slides.js.map +1 -0
- package/dist/esm/run/runner.js +53 -692
- package/dist/esm/run/runner.js.map +1 -1
- package/dist/esm/run/slides-cli.js +3 -2
- package/dist/esm/run/slides-cli.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 +2 -0
- package/dist/esm/run/streaming.js.map +1 -1
- package/dist/esm/run/summary-engine.js +50 -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/shared/slides-text.js +2 -0
- package/dist/esm/shared/slides-text.js.map +1 -0
- 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 +105 -1685
- 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/index.js +2 -1
- package/dist/esm/slides/index.js.map +1 -1
- package/dist/esm/slides/ingest.js +194 -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/slides/source.js +80 -0
- package/dist/esm/slides/source.js.map +1 -0
- package/dist/esm/tty/progress/fetch-html.js +6 -0
- package/dist/esm/tty/progress/fetch-html.js.map +1 -1
- package/dist/esm/tty/progress/transcript-state.js +202 -0
- package/dist/esm/tty/progress/transcript-state.js.map +1 -0
- package/dist/esm/tty/progress/transcript.js +43 -194
- package/dist/esm/tty/progress/transcript.js.map +1 -1
- package/dist/esm/tty/spinner.js +17 -3
- package/dist/esm/tty/spinner.js.map +1 -1
- package/dist/esm/tty/website-progress.js +16 -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 +2 -10
- 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 +34 -0
- package/dist/types/config/types.d.ts +238 -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 +2 -2
- package/dist/types/daemon/models.d.ts +3 -0
- package/dist/types/daemon/schtasks.d.ts +2 -1
- 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 +4 -4
- package/dist/types/daemon/summarize.d.ts +1 -1
- package/dist/types/daemon/windows-container.d.ts +1 -0
- package/dist/types/llm/cli-exec.d.ts +13 -0
- package/dist/types/llm/cli-provider-output.d.ts +25 -0
- package/dist/types/llm/generate-text-document.d.ts +35 -0
- package/dist/types/llm/generate-text-shared.d.ts +32 -0
- package/dist/types/llm/generate-text-stream.d.ts +27 -0
- package/dist/types/llm/generate-text.d.ts +7 -26
- package/dist/types/llm/github-models.d.ts +5 -0
- package/dist/types/llm/html-to-markdown.d.ts +2 -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/providers/openai.d.ts +9 -5
- package/dist/types/llm/providers/types.d.ts +1 -0
- package/dist/types/llm/transcript-to-markdown.d.ts +2 -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 +4 -3
- package/dist/types/run/attachments.d.ts +3 -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 +6 -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 +16 -2
- package/dist/types/run/flows/url/extraction-session.d.ts +22 -0
- package/dist/types/run/flows/url/fetch-options.d.ts +29 -0
- package/dist/types/run/flows/url/flow-progress.d.ts +43 -0
- package/dist/types/run/flows/url/markdown.d.ts +2 -2
- package/dist/types/run/flows/url/progress-status-state.d.ts +17 -0
- package/dist/types/run/flows/url/progress-status.d.ts +17 -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-session.d.ts +26 -0
- 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 +20 -0
- package/dist/types/run/flows/url/video-only.d.ts +27 -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/run-settings.d.ts +2 -1
- package/dist/types/run/runner-contexts.d.ts +37 -0
- package/dist/types/run/runner-execution.d.ts +58 -0
- package/dist/types/run/runner-flags.d.ts +41 -0
- package/dist/types/run/runner-plan.d.ts +19 -0
- package/dist/types/run/runner-setup.d.ts +21 -0
- package/dist/types/run/runner-slides.d.ts +9 -0
- package/dist/types/run/streaming.d.ts +2 -1
- package/dist/types/run/summary-engine.d.ts +8 -4
- package/dist/types/run/summary-llm.d.ts +5 -3
- package/dist/types/run/terminal.d.ts +2 -0
- package/dist/types/run/types.d.ts +3 -2
- package/dist/types/shared/slides-text.d.ts +1 -0
- 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 +2 -13
- package/dist/types/slides/frame-extraction.d.ts +38 -0
- package/dist/types/slides/index.d.ts +2 -1
- 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/slides/source.d.ts +8 -0
- package/dist/types/tty/progress/fetch-html.d.ts +1 -0
- package/dist/types/tty/progress/transcript-state.d.ts +27 -0
- package/dist/types/tty/progress/transcript.d.ts +1 -0
- package/dist/types/tty/spinner.d.ts +1 -0
- package/dist/types/version.d.ts +1 -1
- package/docs/README.md +1 -1
- package/docs/_config.yml +1 -0
- package/docs/agent.md +3 -2
- package/docs/assets/site.css +145 -2
- package/docs/cache.md +2 -1
- package/docs/chrome-extension.md +19 -5
- package/docs/cli.md +26 -8
- package/docs/config.md +30 -9
- package/docs/extract-only.md +2 -2
- package/docs/firecrawl.md +2 -1
- package/docs/index.html +5 -0
- package/docs/llm.md +34 -5
- package/docs/manual-tests.md +3 -0
- package/docs/media.md +9 -1
- package/docs/model-auto.md +2 -2
- package/docs/model-provider-resolution.md +57 -0
- package/docs/releasing.md +9 -12
- package/docs/site/docs/chrome-extension.html +1 -1
- 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 +73 -0
- package/docs/website.md +3 -1
- package/docs/youtube.md +4 -2
- package/package.json +17 -16
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type UrlProgressStatusState = {
|
|
2
|
+
summaryText: string | null;
|
|
3
|
+
slidesActive: boolean;
|
|
4
|
+
slidesText: string | null;
|
|
5
|
+
lastSlideRenderAt: number;
|
|
6
|
+
};
|
|
7
|
+
export declare function createUrlProgressStatusState(): UrlProgressStatusState;
|
|
8
|
+
export declare function applySummaryText(state: UrlProgressStatusState, text: string): {
|
|
9
|
+
renderText: string | null;
|
|
10
|
+
};
|
|
11
|
+
export declare function applySlidesText(state: UrlProgressStatusState, text: string, nowMs: number): {
|
|
12
|
+
renderText: string | null;
|
|
13
|
+
};
|
|
14
|
+
export declare function clearSlidesText(state: UrlProgressStatusState): {
|
|
15
|
+
renderText: string | null;
|
|
16
|
+
summaryText: string | null;
|
|
17
|
+
};
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { OscProgressController } from "../../../tty/osc-progress.js";
|
|
2
|
+
export declare function createUrlProgressStatus({ enabled, spinner, oscProgress, now, }: {
|
|
3
|
+
enabled: boolean;
|
|
4
|
+
spinner: {
|
|
5
|
+
setText: (text: string) => void;
|
|
6
|
+
refresh?: () => void;
|
|
7
|
+
};
|
|
8
|
+
oscProgress: OscProgressController;
|
|
9
|
+
now?: () => number;
|
|
10
|
+
}): {
|
|
11
|
+
setSummary(text: string, oscLabel?: string | null): void;
|
|
12
|
+
setSlides(text: string, percent?: number | null): void;
|
|
13
|
+
clearSlides(): void;
|
|
14
|
+
isSlidesActive(): boolean;
|
|
15
|
+
getSummaryText(): string | null;
|
|
16
|
+
getSlidesText(): string | null;
|
|
17
|
+
};
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import type { SlideExtractionResult } from "../../../slides/index.js";
|
|
2
|
+
import type { SlideState } from "./slides-output-state.js";
|
|
3
|
+
export declare function createInlineSlidesUnsupportedNotifier({ inlineNoticeEnabled, flags, io, richTty, clearProgressForStdout, restoreProgressAfterStdout, }: {
|
|
4
|
+
inlineNoticeEnabled: boolean;
|
|
5
|
+
flags: {
|
|
6
|
+
plain: boolean;
|
|
7
|
+
};
|
|
8
|
+
io: {
|
|
9
|
+
stderr: NodeJS.WritableStream;
|
|
10
|
+
};
|
|
11
|
+
richTty: boolean;
|
|
12
|
+
clearProgressForStdout: () => void;
|
|
13
|
+
restoreProgressAfterStdout?: (() => void) | null;
|
|
14
|
+
}): (nextSlides: SlideExtractionResult) => void;
|
|
15
|
+
export declare function createSlidesTerminalRenderer({ io, flags, inlineEnabled, richTty, inlineRenderer, labelTheme, clearProgressForStdout, restoreProgressAfterStdout, onProgressText, getOrder, getSlide, getSourceUrl, waitForSlide, initialSlides, }: {
|
|
16
|
+
io: {
|
|
17
|
+
stdout: NodeJS.WritableStream;
|
|
18
|
+
};
|
|
19
|
+
flags: {
|
|
20
|
+
slidesDebug?: boolean;
|
|
21
|
+
};
|
|
22
|
+
inlineEnabled: boolean;
|
|
23
|
+
richTty: boolean;
|
|
24
|
+
inlineRenderer: {
|
|
25
|
+
renderSlide: (slide: {
|
|
26
|
+
index: number;
|
|
27
|
+
timestamp: number;
|
|
28
|
+
imagePath: string;
|
|
29
|
+
}, title?: string | null) => Promise<boolean>;
|
|
30
|
+
} | null;
|
|
31
|
+
labelTheme: {
|
|
32
|
+
dim: (text: string) => string;
|
|
33
|
+
heading: (text: string) => string;
|
|
34
|
+
};
|
|
35
|
+
clearProgressForStdout: () => void;
|
|
36
|
+
restoreProgressAfterStdout?: (() => void) | null;
|
|
37
|
+
onProgressText?: ((text: string) => void) | null;
|
|
38
|
+
getOrder: () => number[];
|
|
39
|
+
getSlide: (index: number) => SlideState | null;
|
|
40
|
+
getSourceUrl: () => string;
|
|
41
|
+
waitForSlide: (index: number) => Promise<SlideState | null>;
|
|
42
|
+
initialSlides: SlideExtractionResult | null | undefined;
|
|
43
|
+
}): (index: number, title?: string | null) => Promise<void>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import type { SlideImage, SlideExtractionResult } from "../../../slides/index.js";
|
|
2
|
+
import type { SlideTimelineEntry } from "./slides-text.js";
|
|
3
|
+
export type SlideState = SlideTimelineEntry & {
|
|
4
|
+
imagePath: string | null;
|
|
5
|
+
};
|
|
6
|
+
export declare function createSlideOutputState(initialSlides: SlideExtractionResult | null | undefined): {
|
|
7
|
+
setMeta: (meta: {
|
|
8
|
+
slidesDir?: string | null;
|
|
9
|
+
sourceUrl?: string | null;
|
|
10
|
+
}) => void;
|
|
11
|
+
updateFromSlides: (slides: SlideExtractionResult) => void;
|
|
12
|
+
updateSlideEntry: (slide: SlideImage) => void;
|
|
13
|
+
waitForSlide: (index: number) => Promise<SlideState | null>;
|
|
14
|
+
markDone: () => void;
|
|
15
|
+
getSlides: () => SlideState[];
|
|
16
|
+
getSlide: (index: number) => SlideState | null;
|
|
17
|
+
getOrder: () => number[];
|
|
18
|
+
getSlidesDir: () => string;
|
|
19
|
+
getSourceUrl: () => string;
|
|
20
|
+
isDone: () => boolean;
|
|
21
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type StreamOutputMode } from "../../stream-output.js";
|
|
2
|
+
import type { SummaryStreamHandler } from "../../summary-engine.js";
|
|
3
|
+
export declare function createSlidesSummaryStreamHandler({ stdout, env, envForRun, plain, outputMode, clearProgressForStdout, restoreProgressAfterStdout, renderSlide, getSlideIndexOrder, getSlideMeta, debugWrite, }: {
|
|
4
|
+
stdout: NodeJS.WritableStream;
|
|
5
|
+
env: Record<string, string | undefined>;
|
|
6
|
+
envForRun: Record<string, string | undefined>;
|
|
7
|
+
plain: boolean;
|
|
8
|
+
outputMode: StreamOutputMode;
|
|
9
|
+
clearProgressForStdout: () => void;
|
|
10
|
+
restoreProgressAfterStdout?: (() => void) | null;
|
|
11
|
+
renderSlide: (index: number, title?: string | null) => Promise<void>;
|
|
12
|
+
getSlideIndexOrder: () => number[];
|
|
13
|
+
getSlideMeta?: ((index: number) => {
|
|
14
|
+
total: number;
|
|
15
|
+
timestamp: number | null;
|
|
16
|
+
}) | null;
|
|
17
|
+
debugWrite?: ((text: string) => void) | null;
|
|
18
|
+
}): SummaryStreamHandler;
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import type { ExtractedLinkContent } from "../../../content/index.js";
|
|
2
2
|
import type { SummaryLength } from "../../../shared/contracts.js";
|
|
3
3
|
import type { SlideExtractionResult, SlideImage, SlideSourceKind } from "../../../slides/index.js";
|
|
4
|
+
import type { StreamOutputMode } from "../../stream-output.js";
|
|
4
5
|
import type { SummaryStreamHandler } from "../../summary-engine.js";
|
|
5
|
-
|
|
6
|
+
export { createSlidesSummaryStreamHandler } from "./slides-output-stream.js";
|
|
6
7
|
export type SlidesTerminalOutput = {
|
|
7
8
|
onSlidesExtracted: (slides: SlideExtractionResult) => void;
|
|
8
9
|
onSlidesDone: (result: {
|
|
@@ -48,19 +49,3 @@ export declare function createSlidesTerminalOutput({ io, flags, extracted, slide
|
|
|
48
49
|
restoreProgressAfterStdout?: (() => void) | null;
|
|
49
50
|
onProgressText?: ((text: string) => void) | null;
|
|
50
51
|
}): SlidesTerminalOutput | null;
|
|
51
|
-
export declare function createSlidesSummaryStreamHandler({ stdout, env, envForRun, plain, outputMode, clearProgressForStdout, restoreProgressAfterStdout, renderSlide, getSlideIndexOrder, getSlideMeta, debugWrite, }: {
|
|
52
|
-
stdout: NodeJS.WritableStream;
|
|
53
|
-
env: Record<string, string | undefined>;
|
|
54
|
-
envForRun: Record<string, string | undefined>;
|
|
55
|
-
plain: boolean;
|
|
56
|
-
outputMode: StreamOutputMode;
|
|
57
|
-
clearProgressForStdout: () => void;
|
|
58
|
-
restoreProgressAfterStdout?: (() => void) | null;
|
|
59
|
-
renderSlide: (index: number, title?: string | null) => Promise<void>;
|
|
60
|
-
getSlideIndexOrder: () => number[];
|
|
61
|
-
getSlideMeta?: ((index: number) => {
|
|
62
|
-
total: number;
|
|
63
|
-
timestamp: number | null;
|
|
64
|
-
}) | null;
|
|
65
|
-
debugWrite?: ((text: string) => void) | null;
|
|
66
|
-
}): SummaryStreamHandler;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { ExtractedLinkContent } from "../../../content/index.js";
|
|
2
|
+
import { type SlideExtractionResult } from "../../../slides/index.js";
|
|
3
|
+
import { type SlidesTerminalOutput } from "./slides-output.js";
|
|
4
|
+
import { type UrlFlowContext } from "./types.js";
|
|
5
|
+
type ProgressStatusLike = {
|
|
6
|
+
clearSlides: () => void;
|
|
7
|
+
setSlides: (text: string, percent?: number | null) => void;
|
|
8
|
+
};
|
|
9
|
+
export type UrlSlidesSession = {
|
|
10
|
+
getSlidesExtracted: () => SlideExtractionResult | null;
|
|
11
|
+
runSlidesExtraction: () => Promise<SlideExtractionResult | null>;
|
|
12
|
+
slidesOutput: SlidesTerminalOutput | null;
|
|
13
|
+
slidesTimelinePromise: Promise<SlideExtractionResult | null> | null;
|
|
14
|
+
setExtracted: (value: ExtractedLinkContent) => void;
|
|
15
|
+
};
|
|
16
|
+
export declare function createUrlSlidesSession({ ctx, url, extracted: initialExtracted, cacheStore, progressStatus, renderStatus, renderStatusFromText, updateSummaryProgress, }: {
|
|
17
|
+
ctx: UrlFlowContext;
|
|
18
|
+
url: string;
|
|
19
|
+
extracted: ExtractedLinkContent;
|
|
20
|
+
cacheStore: UrlFlowContext["cache"]["store"] | null;
|
|
21
|
+
progressStatus: ProgressStatusLike;
|
|
22
|
+
renderStatus: (label: string, detail?: string) => string;
|
|
23
|
+
renderStatusFromText: (text: string) => string;
|
|
24
|
+
updateSummaryProgress: () => void;
|
|
25
|
+
}): UrlSlidesSession;
|
|
26
|
+
export {};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { SummaryLength } from "../../../shared/contracts.js";
|
|
2
|
+
import type { SlideTimelineEntry } from "./slides-text-types.js";
|
|
3
|
+
export declare const splitSlideTitleFromText: ({ text, }: {
|
|
4
|
+
text: string;
|
|
5
|
+
slideIndex: number;
|
|
6
|
+
total: number;
|
|
7
|
+
}) => {
|
|
8
|
+
title: string | null;
|
|
9
|
+
body: string;
|
|
10
|
+
};
|
|
11
|
+
export declare const ensureSlideTitleLine: ({ text, slide, total, }: {
|
|
12
|
+
text: string;
|
|
13
|
+
slide: SlideTimelineEntry;
|
|
14
|
+
total: number;
|
|
15
|
+
}) => string;
|
|
16
|
+
export declare function findSlidesSectionStart(markdown: string): number | null;
|
|
17
|
+
export declare function splitSummaryFromSlides(markdown: string): {
|
|
18
|
+
summary: string;
|
|
19
|
+
slidesSection: string | null;
|
|
20
|
+
};
|
|
21
|
+
export declare function parseSlideSummariesFromMarkdown(markdown: string): Map<number, string>;
|
|
22
|
+
export declare function extractSlideMarkers(markdown: string): number[];
|
|
23
|
+
export declare function normalizeSummarySlideHeadings(markdown: string): string;
|
|
24
|
+
export declare function buildSlideTextFallback({ slides, transcriptTimedText, lengthArg, }: {
|
|
25
|
+
slides: SlideTimelineEntry[];
|
|
26
|
+
transcriptTimedText: string | null | undefined;
|
|
27
|
+
lengthArg: {
|
|
28
|
+
kind: "preset";
|
|
29
|
+
preset: SummaryLength;
|
|
30
|
+
} | {
|
|
31
|
+
kind: "chars";
|
|
32
|
+
maxCharacters: number;
|
|
33
|
+
};
|
|
34
|
+
}): Map<number, string>;
|
|
35
|
+
export declare function coerceSummaryWithSlides({ markdown, slides, transcriptTimedText, lengthArg, }: {
|
|
36
|
+
markdown: string;
|
|
37
|
+
slides: SlideTimelineEntry[];
|
|
38
|
+
transcriptTimedText?: string | null;
|
|
39
|
+
lengthArg: {
|
|
40
|
+
kind: "preset";
|
|
41
|
+
preset: SummaryLength;
|
|
42
|
+
} | {
|
|
43
|
+
kind: "chars";
|
|
44
|
+
maxCharacters: number;
|
|
45
|
+
};
|
|
46
|
+
}): string;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { SummaryLength } from "../../../shared/contracts.js";
|
|
2
|
+
import type { SlideTimelineEntry, TranscriptSegment } from "./slides-text-types.js";
|
|
3
|
+
export declare function interleaveSlidesIntoTranscript({ transcriptTimedText, slides, }: {
|
|
4
|
+
transcriptTimedText: string;
|
|
5
|
+
slides: SlideTimelineEntry[];
|
|
6
|
+
}): string;
|
|
7
|
+
export declare function parseTranscriptTimedText(input: string | null | undefined): TranscriptSegment[];
|
|
8
|
+
export declare function formatTimestamp(seconds: number): string;
|
|
9
|
+
export declare function resolveSlideTextBudget({ lengthArg, slideCount, }: {
|
|
10
|
+
lengthArg: {
|
|
11
|
+
kind: "preset";
|
|
12
|
+
preset: SummaryLength;
|
|
13
|
+
} | {
|
|
14
|
+
kind: "chars";
|
|
15
|
+
maxCharacters: number;
|
|
16
|
+
};
|
|
17
|
+
slideCount: number;
|
|
18
|
+
}): number;
|
|
19
|
+
export declare function resolveSlideWindowSeconds({ lengthArg, }: {
|
|
20
|
+
lengthArg: {
|
|
21
|
+
kind: "preset";
|
|
22
|
+
preset: SummaryLength;
|
|
23
|
+
} | {
|
|
24
|
+
kind: "chars";
|
|
25
|
+
maxCharacters: number;
|
|
26
|
+
};
|
|
27
|
+
}): number;
|
|
28
|
+
export declare function getTranscriptTextForSlide({ slide, nextSlide, segments, budget, windowSeconds, }: {
|
|
29
|
+
slide: SlideTimelineEntry;
|
|
30
|
+
nextSlide: SlideTimelineEntry | null;
|
|
31
|
+
segments: TranscriptSegment[];
|
|
32
|
+
budget: number;
|
|
33
|
+
windowSeconds: number;
|
|
34
|
+
}): string;
|
|
35
|
+
export declare function formatOsc8Link(label: string, url: string | null, enabled: boolean): string;
|
|
36
|
+
export declare function buildTimestampUrl(sourceUrl: string, seconds: number): string | null;
|
|
@@ -1,87 +1,3 @@
|
|
|
1
|
-
|
|
2
|
-
export
|
|
3
|
-
|
|
4
|
-
text: string;
|
|
5
|
-
};
|
|
6
|
-
export type SlideTimelineEntry = {
|
|
7
|
-
index: number;
|
|
8
|
-
timestamp: number;
|
|
9
|
-
};
|
|
10
|
-
export declare const splitSlideTitleFromText: ({ text, }: {
|
|
11
|
-
text: string;
|
|
12
|
-
slideIndex: number;
|
|
13
|
-
total: number;
|
|
14
|
-
}) => {
|
|
15
|
-
title: string | null;
|
|
16
|
-
body: string;
|
|
17
|
-
};
|
|
18
|
-
export declare const ensureSlideTitleLine: ({ text, slide, total, }: {
|
|
19
|
-
text: string;
|
|
20
|
-
slide: SlideTimelineEntry;
|
|
21
|
-
total: number;
|
|
22
|
-
}) => string;
|
|
23
|
-
export declare function findSlidesSectionStart(markdown: string): number | null;
|
|
24
|
-
export declare function splitSummaryFromSlides(markdown: string): {
|
|
25
|
-
summary: string;
|
|
26
|
-
slidesSection: string | null;
|
|
27
|
-
};
|
|
28
|
-
export declare function parseSlideSummariesFromMarkdown(markdown: string): Map<number, string>;
|
|
29
|
-
export declare function extractSlideMarkers(markdown: string): number[];
|
|
30
|
-
export declare function normalizeSummarySlideHeadings(markdown: string): string;
|
|
31
|
-
export declare function buildSlideTextFallback({ slides, transcriptTimedText, lengthArg, }: {
|
|
32
|
-
slides: SlideTimelineEntry[];
|
|
33
|
-
transcriptTimedText: string | null | undefined;
|
|
34
|
-
lengthArg: {
|
|
35
|
-
kind: "preset";
|
|
36
|
-
preset: SummaryLength;
|
|
37
|
-
} | {
|
|
38
|
-
kind: "chars";
|
|
39
|
-
maxCharacters: number;
|
|
40
|
-
};
|
|
41
|
-
}): Map<number, string>;
|
|
42
|
-
export declare function coerceSummaryWithSlides({ markdown, slides, transcriptTimedText, lengthArg, }: {
|
|
43
|
-
markdown: string;
|
|
44
|
-
slides: SlideTimelineEntry[];
|
|
45
|
-
transcriptTimedText?: string | null;
|
|
46
|
-
lengthArg: {
|
|
47
|
-
kind: "preset";
|
|
48
|
-
preset: SummaryLength;
|
|
49
|
-
} | {
|
|
50
|
-
kind: "chars";
|
|
51
|
-
maxCharacters: number;
|
|
52
|
-
};
|
|
53
|
-
}): string;
|
|
54
|
-
export declare function interleaveSlidesIntoTranscript({ transcriptTimedText, slides, }: {
|
|
55
|
-
transcriptTimedText: string;
|
|
56
|
-
slides: SlideTimelineEntry[];
|
|
57
|
-
}): string;
|
|
58
|
-
export declare function parseTranscriptTimedText(input: string | null | undefined): TranscriptSegment[];
|
|
59
|
-
export declare function formatTimestamp(seconds: number): string;
|
|
60
|
-
export declare function resolveSlideTextBudget({ lengthArg, slideCount, }: {
|
|
61
|
-
lengthArg: {
|
|
62
|
-
kind: "preset";
|
|
63
|
-
preset: SummaryLength;
|
|
64
|
-
} | {
|
|
65
|
-
kind: "chars";
|
|
66
|
-
maxCharacters: number;
|
|
67
|
-
};
|
|
68
|
-
slideCount: number;
|
|
69
|
-
}): number;
|
|
70
|
-
export declare function resolveSlideWindowSeconds({ lengthArg, }: {
|
|
71
|
-
lengthArg: {
|
|
72
|
-
kind: "preset";
|
|
73
|
-
preset: SummaryLength;
|
|
74
|
-
} | {
|
|
75
|
-
kind: "chars";
|
|
76
|
-
maxCharacters: number;
|
|
77
|
-
};
|
|
78
|
-
}): number;
|
|
79
|
-
export declare function getTranscriptTextForSlide({ slide, nextSlide, segments, budget, windowSeconds, }: {
|
|
80
|
-
slide: SlideTimelineEntry;
|
|
81
|
-
nextSlide: SlideTimelineEntry | null;
|
|
82
|
-
segments: TranscriptSegment[];
|
|
83
|
-
budget: number;
|
|
84
|
-
windowSeconds: number;
|
|
85
|
-
}): string;
|
|
86
|
-
export declare function formatOsc8Link(label: string, url: string | null, enabled: boolean): string;
|
|
87
|
-
export declare function buildTimestampUrl(sourceUrl: string, seconds: number): string | null;
|
|
1
|
+
export type { SlideTimelineEntry, TranscriptSegment } from "./slides-text-types.js";
|
|
2
|
+
export { buildSlideTextFallback, coerceSummaryWithSlides, ensureSlideTitleLine, extractSlideMarkers, findSlidesSectionStart, normalizeSummarySlideHeadings, parseSlideSummariesFromMarkdown, splitSlideTitleFromText, splitSummaryFromSlides, } from "./slides-text-markdown.js";
|
|
3
|
+
export { buildTimestampUrl, formatOsc8Link, formatTimestamp, getTranscriptTextForSlide, interleaveSlidesIntoTranscript, parseTranscriptTimedText, resolveSlideTextBudget, resolveSlideWindowSeconds, } from "./slides-text-transcript.js";
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { ExtractedLinkContent } from "../../../content/index.js";
|
|
2
|
+
import type { ModelAttempt } from "../../types.js";
|
|
3
|
+
import type { UrlFlowContext } from "./types.js";
|
|
4
|
+
export declare function buildFinishExtras({ extracted, metricsDetailed, transcriptionCostLabel, }: {
|
|
5
|
+
extracted: ExtractedLinkContent;
|
|
6
|
+
metricsDetailed: boolean;
|
|
7
|
+
transcriptionCostLabel: string | null;
|
|
8
|
+
}): string[] | null;
|
|
9
|
+
export declare function pickModelForFinishLine(llmCalls: UrlFlowContext["model"]["llmCalls"], fallback: string | null): string | null;
|
|
10
|
+
export declare function buildModelMetaFromAttempt(attempt: ModelAttempt): {
|
|
11
|
+
provider: "cli";
|
|
12
|
+
canonical: string;
|
|
13
|
+
} | {
|
|
14
|
+
provider: import("../../../llm/model-id.js").LlmProvider;
|
|
15
|
+
canonical: string;
|
|
16
|
+
};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import type { UrlFlowContext } from "./types.js";
|
|
2
|
+
export declare function buildUrlJsonInput(options: {
|
|
3
|
+
flags: UrlFlowContext["flags"];
|
|
4
|
+
url: string;
|
|
5
|
+
effectiveMarkdownMode: "off" | "auto" | "llm" | "readability";
|
|
6
|
+
modelLabel: string | null;
|
|
7
|
+
}): {
|
|
8
|
+
kind: "url";
|
|
9
|
+
url: string;
|
|
10
|
+
timeoutMs: number;
|
|
11
|
+
youtube: "auto" | "web" | "apify" | "yt-dlp" | "no-auto";
|
|
12
|
+
firecrawl: "auto" | "off" | "always";
|
|
13
|
+
format: "text" | "markdown";
|
|
14
|
+
markdown: "auto" | "off" | "llm" | "readability";
|
|
15
|
+
timestamps: boolean;
|
|
16
|
+
length: {
|
|
17
|
+
kind: "preset";
|
|
18
|
+
preset: "short" | "medium" | "long" | "xl" | "xxl";
|
|
19
|
+
maxCharacters?: undefined;
|
|
20
|
+
} | {
|
|
21
|
+
kind: "chars";
|
|
22
|
+
maxCharacters: number;
|
|
23
|
+
preset?: undefined;
|
|
24
|
+
};
|
|
25
|
+
maxOutputTokens: number | null;
|
|
26
|
+
model: string | null;
|
|
27
|
+
language: {
|
|
28
|
+
mode: "auto";
|
|
29
|
+
} | {
|
|
30
|
+
mode: "fixed";
|
|
31
|
+
tag: string;
|
|
32
|
+
label: string;
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
export declare function buildUrlJsonEnv(apiStatus: {
|
|
36
|
+
xaiApiKey: string | null;
|
|
37
|
+
apiKey: string | null;
|
|
38
|
+
openrouterApiKey: string | null;
|
|
39
|
+
apifyToken: string | null;
|
|
40
|
+
firecrawlConfigured: boolean;
|
|
41
|
+
googleConfigured: boolean;
|
|
42
|
+
anthropicConfigured: boolean;
|
|
43
|
+
}): {
|
|
44
|
+
hasXaiKey: boolean;
|
|
45
|
+
hasOpenAIKey: boolean;
|
|
46
|
+
hasOpenRouterKey: boolean;
|
|
47
|
+
hasApifyToken: boolean;
|
|
48
|
+
hasFirecrawlKey: boolean;
|
|
49
|
+
hasGoogleKey: boolean;
|
|
50
|
+
hasAnthropicKey: boolean;
|
|
51
|
+
};
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { ExtractedLinkContent } from "../../../content/index.js";
|
|
2
|
+
import type { UrlFlowContext } from "./types.js";
|
|
3
|
+
type SlidesResult = Awaited<ReturnType<typeof import("../../../slides/index.js").extractSlidesForSource>>;
|
|
4
|
+
export declare function shouldBypassShortContentSummary({ extracted, lengthArg, forceSummary, maxOutputTokensArg, json, countTokens, }: {
|
|
5
|
+
extracted: ExtractedLinkContent;
|
|
6
|
+
lengthArg: UrlFlowContext["flags"]["lengthArg"];
|
|
7
|
+
forceSummary: boolean;
|
|
8
|
+
maxOutputTokensArg: number | null;
|
|
9
|
+
json: boolean;
|
|
10
|
+
countTokens: (value: string) => number;
|
|
11
|
+
}): boolean;
|
|
12
|
+
export declare function buildUrlPrompt({ extracted, outputLanguage, lengthArg, promptOverride, lengthInstruction, languageInstruction, slides, buildSummaryTimestampLimitInstruction, }: {
|
|
13
|
+
extracted: ExtractedLinkContent;
|
|
14
|
+
outputLanguage: UrlFlowContext["flags"]["outputLanguage"];
|
|
15
|
+
lengthArg: UrlFlowContext["flags"]["lengthArg"];
|
|
16
|
+
promptOverride?: string | null;
|
|
17
|
+
lengthInstruction?: string | null;
|
|
18
|
+
languageInstruction?: string | null;
|
|
19
|
+
slides?: SlidesResult | null;
|
|
20
|
+
buildSummaryTimestampLimitInstruction: (extracted: ExtractedLinkContent) => string | null;
|
|
21
|
+
}): string;
|
|
22
|
+
export {};
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { ExtractedLinkContent } from "../../../content/index.js";
|
|
2
|
+
import type { ModelAttempt } from "../../types.js";
|
|
3
|
+
import type { SlidesTerminalOutput } from "./slides-output.js";
|
|
4
|
+
import { buildModelMetaFromAttempt } from "./summary-finish.js";
|
|
5
|
+
import type { UrlFlowContext } from "./types.js";
|
|
6
|
+
type SlidesResult = Awaited<ReturnType<typeof import("../../../slides/index.js").extractSlidesForSource>>;
|
|
7
|
+
type SummaryResolutionUseExtracted = {
|
|
8
|
+
kind: "use-extracted";
|
|
9
|
+
footerLabel: string;
|
|
10
|
+
verboseMessage: string | null;
|
|
11
|
+
};
|
|
12
|
+
type SummaryResolutionSummary = {
|
|
13
|
+
kind: "summary";
|
|
14
|
+
normalizedSummary: string;
|
|
15
|
+
summaryAlreadyPrinted: boolean;
|
|
16
|
+
summaryFromCache: boolean;
|
|
17
|
+
usedAttempt: ModelAttempt;
|
|
18
|
+
modelMeta: ReturnType<typeof buildModelMetaFromAttempt>;
|
|
19
|
+
maxOutputTokensForCall: number | null;
|
|
20
|
+
};
|
|
21
|
+
export type UrlSummaryResolution = SummaryResolutionUseExtracted | SummaryResolutionSummary;
|
|
22
|
+
export declare function resolveUrlSummaryExecution({ ctx, url, extracted, prompt, onModelChosen, slides, slidesOutput, }: {
|
|
23
|
+
ctx: UrlFlowContext;
|
|
24
|
+
url: string;
|
|
25
|
+
extracted: ExtractedLinkContent;
|
|
26
|
+
prompt: string;
|
|
27
|
+
onModelChosen?: ((modelId: string) => void) | null;
|
|
28
|
+
slides?: SlidesResult | null;
|
|
29
|
+
slidesOutput?: SlidesTerminalOutput | null;
|
|
30
|
+
}): Promise<UrlSummaryResolution>;
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { ExtractedLinkContent } from "../../../content/index.js";
|
|
2
|
+
export declare function buildSummaryTimestampLimitInstruction(extracted: Pick<ExtractedLinkContent, "transcriptSegments" | "transcriptTimedText" | "mediaDurationSeconds">): string | null;
|
|
3
|
+
export declare function resolveSummaryTimestampUpperBound(extracted: Pick<ExtractedLinkContent, "transcriptSegments" | "transcriptTimedText" | "mediaDurationSeconds">): number | null;
|
|
4
|
+
export declare function shouldSanitizeSummaryKeyMoments({ extracted, hasSlides, }: {
|
|
5
|
+
extracted: Pick<ExtractedLinkContent, "transcriptSegments" | "transcriptTimedText" | "mediaDurationSeconds">;
|
|
6
|
+
hasSlides: boolean;
|
|
7
|
+
}): boolean;
|
|
8
|
+
export declare function sanitizeSummaryKeyMoments({ markdown, maxSeconds, }: {
|
|
9
|
+
markdown: string;
|
|
10
|
+
maxSeconds: number | null;
|
|
11
|
+
}): string;
|
|
@@ -80,6 +80,7 @@ export type UrlFlowModel = {
|
|
|
80
80
|
apiStatus: {
|
|
81
81
|
xaiApiKey: string | null;
|
|
82
82
|
apiKey: string | null;
|
|
83
|
+
nvidiaApiKey: string | null;
|
|
83
84
|
openrouterApiKey: string | null;
|
|
84
85
|
openrouterConfigured: boolean;
|
|
85
86
|
googleApiKey: string | null;
|
|
@@ -88,12 +89,14 @@ export type UrlFlowModel = {
|
|
|
88
89
|
anthropicConfigured: boolean;
|
|
89
90
|
providerBaseUrls: {
|
|
90
91
|
openai: string | null;
|
|
92
|
+
nvidia: string | null;
|
|
91
93
|
anthropic: string | null;
|
|
92
94
|
google: string | null;
|
|
93
95
|
xai: string | null;
|
|
94
96
|
};
|
|
95
97
|
zaiApiKey: string | null;
|
|
96
98
|
zaiBaseUrl: string;
|
|
99
|
+
nvidiaBaseUrl: string;
|
|
97
100
|
firecrawlConfigured: boolean;
|
|
98
101
|
firecrawlApiKey: string | null;
|
|
99
102
|
apifyToken: string | null;
|
|
@@ -101,6 +104,7 @@ export type UrlFlowModel = {
|
|
|
101
104
|
ytDlpCookiesFromBrowser: string | null;
|
|
102
105
|
falApiKey: string | null;
|
|
103
106
|
groqApiKey: string | null;
|
|
107
|
+
assemblyaiApiKey: string | null;
|
|
104
108
|
openaiTranscriptionKey: string | null;
|
|
105
109
|
};
|
|
106
110
|
summaryEngine: ReturnType<typeof createSummaryEngine>;
|
|
@@ -138,6 +142,22 @@ export type UrlFlowHooks = {
|
|
|
138
142
|
buildReport: () => Promise<RunMetricsReport>;
|
|
139
143
|
estimateCostUsd: () => Promise<number | null>;
|
|
140
144
|
};
|
|
145
|
+
export type UrlFlowEventHooks = Pick<UrlFlowHooks, "onModelChosen" | "onExtracted" | "onSlidesExtracted" | "onSlidesProgress" | "onSlidesDone" | "onSlideChunk" | "onLinkPreviewProgress" | "onSummaryCached">;
|
|
146
|
+
export type UrlFlowRuntimeHooks = Pick<UrlFlowHooks, "setTranscriptionCost" | "summarizeAsset" | "writeViaFooter" | "clearProgressForStdout" | "restoreProgressAfterStdout" | "setClearProgressBeforeStdout" | "clearProgressIfCurrent" | "buildReport" | "estimateCostUsd">;
|
|
147
|
+
export declare function createUrlFlowHooks(options: {
|
|
148
|
+
runtime: UrlFlowRuntimeHooks;
|
|
149
|
+
events?: Partial<UrlFlowEventHooks>;
|
|
150
|
+
}): UrlFlowHooks;
|
|
151
|
+
export declare function composeUrlFlowHooks(base: UrlFlowHooks, overrides: Partial<UrlFlowHooks>): UrlFlowHooks;
|
|
152
|
+
export declare function createUrlFlowContext(options: {
|
|
153
|
+
io: UrlFlowIo;
|
|
154
|
+
flags: UrlFlowFlags;
|
|
155
|
+
model: UrlFlowModel;
|
|
156
|
+
cache: CacheState;
|
|
157
|
+
mediaCache: MediaCache | null;
|
|
158
|
+
runtimeHooks: UrlFlowRuntimeHooks;
|
|
159
|
+
eventHooks?: Partial<UrlFlowEventHooks>;
|
|
160
|
+
}): UrlFlowContext;
|
|
141
161
|
/**
|
|
142
162
|
* Wiring struct for `runUrlFlow`.
|
|
143
163
|
* CLI runner populates the full surface; daemon uses a smaller subset (no TTY/progress/footer),
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type ExtractedLinkContent } from "../../../content/index.js";
|
|
2
|
+
import type { SlideExtractionResult } from "../../../slides/index.js";
|
|
3
|
+
import { type UrlExtractionUi } from "./extract.js";
|
|
4
|
+
import type { UrlFlowContext } from "./types.js";
|
|
5
|
+
export type VideoOnlyResult = {
|
|
6
|
+
handled: true;
|
|
7
|
+
} | {
|
|
8
|
+
handled: false;
|
|
9
|
+
extracted: ExtractedLinkContent;
|
|
10
|
+
extractionUi: UrlExtractionUi;
|
|
11
|
+
};
|
|
12
|
+
export declare function handleVideoOnlyExtractedContent({ ctx, extracted, extractionUi, isYoutubeUrl, fetchWithCache, runSlidesExtraction, renderStatus, renderStatusWithMeta, spinner, styleDim, updateSummaryProgress, accent, }: {
|
|
13
|
+
ctx: UrlFlowContext;
|
|
14
|
+
extracted: ExtractedLinkContent;
|
|
15
|
+
extractionUi: UrlExtractionUi;
|
|
16
|
+
isYoutubeUrl: boolean;
|
|
17
|
+
fetchWithCache: (url: string) => Promise<ExtractedLinkContent>;
|
|
18
|
+
runSlidesExtraction: () => Promise<SlideExtractionResult | null>;
|
|
19
|
+
renderStatus: (label: string, detail?: string) => string;
|
|
20
|
+
renderStatusWithMeta: (label: string, meta: string, suffix?: string) => string;
|
|
21
|
+
spinner: {
|
|
22
|
+
setText: (text: string) => void;
|
|
23
|
+
};
|
|
24
|
+
styleDim: (text: string) => string;
|
|
25
|
+
updateSummaryProgress: () => void;
|
|
26
|
+
accent: (text: string) => string;
|
|
27
|
+
}): Promise<VideoOnlyResult>;
|
|
@@ -12,12 +12,15 @@ export declare function resolveRunContextState({ env, envForRun, programOpts, la
|
|
|
12
12
|
openrouterApiKey: string | null;
|
|
13
13
|
openrouterConfigured: boolean;
|
|
14
14
|
groqApiKey: string | null;
|
|
15
|
+
assemblyaiApiKey: string | null;
|
|
15
16
|
openaiTranscriptionKey: string | null;
|
|
16
17
|
xaiApiKey: string | null;
|
|
17
18
|
googleApiKey: string | null;
|
|
18
19
|
anthropicApiKey: string | null;
|
|
19
20
|
zaiApiKey: string | null;
|
|
20
21
|
zaiBaseUrl: string;
|
|
22
|
+
nvidiaApiKey: string | null;
|
|
23
|
+
nvidiaBaseUrl: string;
|
|
21
24
|
firecrawlApiKey: string | null;
|
|
22
25
|
firecrawlConfigured: boolean;
|
|
23
26
|
googleConfigured: boolean;
|
|
@@ -30,6 +33,7 @@ export declare function resolveRunContextState({ env, envForRun, programOpts, la
|
|
|
30
33
|
envForAuto: Record<string, string | undefined>;
|
|
31
34
|
providerBaseUrls: {
|
|
32
35
|
openai: string | null;
|
|
36
|
+
nvidia: string | null;
|
|
33
37
|
anthropic: string | null;
|
|
34
38
|
google: string | null;
|
|
35
39
|
xai: string | null;
|
|
@@ -4,12 +4,15 @@ export type EnvState = {
|
|
|
4
4
|
openrouterApiKey: string | null;
|
|
5
5
|
openrouterConfigured: boolean;
|
|
6
6
|
groqApiKey: string | null;
|
|
7
|
+
assemblyaiApiKey: string | null;
|
|
7
8
|
openaiTranscriptionKey: string | null;
|
|
8
9
|
xaiApiKey: string | null;
|
|
9
10
|
googleApiKey: string | null;
|
|
10
11
|
anthropicApiKey: string | null;
|
|
11
12
|
zaiApiKey: string | null;
|
|
12
13
|
zaiBaseUrl: string;
|
|
14
|
+
nvidiaApiKey: string | null;
|
|
15
|
+
nvidiaBaseUrl: string;
|
|
13
16
|
firecrawlApiKey: string | null;
|
|
14
17
|
firecrawlConfigured: boolean;
|
|
15
18
|
googleConfigured: boolean;
|
|
@@ -22,6 +25,7 @@ export type EnvState = {
|
|
|
22
25
|
envForAuto: Record<string, string | undefined>;
|
|
23
26
|
providerBaseUrls: {
|
|
24
27
|
openai: string | null;
|
|
28
|
+
nvidia: string | null;
|
|
25
29
|
anthropic: string | null;
|
|
26
30
|
google: string | null;
|
|
27
31
|
xai: string | null;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { CliProvider } from "../config.js";
|
|
2
|
+
export declare const parseOptionalSetting: <T>(raw: unknown, parse: (value: string) => T, strict: boolean) => T | null;
|
|
3
|
+
export declare const parseOptionalBoolean: (raw: unknown, strict: boolean, label?: string) => boolean | null;
|
|
4
|
+
export declare const parseCliProvider: (raw: string) => CliProvider | null;
|
|
5
|
+
export declare const parseOptionalCliProviderOrder: (raw: unknown, strict: boolean) => CliProvider[] | null;
|