@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
|
@@ -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>;
|
|
@@ -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;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import type { CacheState } from "../cache.js";
|
|
2
|
+
import type { MediaCache } from "../content/index.js";
|
|
3
|
+
import type { SummarizeAssetArgs } from "./flows/asset/summary.js";
|
|
4
|
+
import type { UrlFlowContext } from "./flows/url/types.js";
|
|
5
|
+
type SummarizeMediaFile = typeof import("./flows/asset/media.js").summarizeMediaFile;
|
|
6
|
+
export declare function createRunnerFlowContexts(options: {
|
|
7
|
+
summarizeMediaFileImpl: SummarizeMediaFile;
|
|
8
|
+
cacheState: CacheState;
|
|
9
|
+
mediaCache: MediaCache | null;
|
|
10
|
+
io: UrlFlowContext["io"];
|
|
11
|
+
flags: UrlFlowContext["flags"];
|
|
12
|
+
model: UrlFlowContext["model"];
|
|
13
|
+
setTranscriptionCost: UrlFlowContext["hooks"]["setTranscriptionCost"];
|
|
14
|
+
writeViaFooter: UrlFlowContext["hooks"]["writeViaFooter"];
|
|
15
|
+
clearProgressForStdout: UrlFlowContext["hooks"]["clearProgressForStdout"];
|
|
16
|
+
restoreProgressAfterStdout: UrlFlowContext["hooks"]["restoreProgressAfterStdout"];
|
|
17
|
+
setClearProgressBeforeStdout: UrlFlowContext["hooks"]["setClearProgressBeforeStdout"];
|
|
18
|
+
clearProgressIfCurrent: UrlFlowContext["hooks"]["clearProgressIfCurrent"];
|
|
19
|
+
buildReport: UrlFlowContext["hooks"]["buildReport"];
|
|
20
|
+
estimateCostUsd: UrlFlowContext["hooks"]["estimateCostUsd"];
|
|
21
|
+
}): {
|
|
22
|
+
summarizeAsset: (args: SummarizeAssetArgs) => Promise<void>;
|
|
23
|
+
assetInputContext: {
|
|
24
|
+
env: Record<string, string | undefined>;
|
|
25
|
+
envForRun: Record<string, string | undefined>;
|
|
26
|
+
stderr: NodeJS.WritableStream;
|
|
27
|
+
progressEnabled: boolean;
|
|
28
|
+
timeoutMs: number;
|
|
29
|
+
trackedFetch: typeof fetch;
|
|
30
|
+
summarizeAsset: (args: SummarizeAssetArgs) => Promise<void>;
|
|
31
|
+
summarizeMediaFile: (args: Parameters<SummarizeMediaFile>[1]) => Promise<void>;
|
|
32
|
+
setClearProgressBeforeStdout: (fn: (() => undefined | (() => void)) | null) => void;
|
|
33
|
+
clearProgressIfCurrent: (fn: () => void) => void;
|
|
34
|
+
};
|
|
35
|
+
urlFlowContext: {
|
|
36
|
+
io: import("./flows/url/types.js").UrlFlowIo;
|
|
37
|
+
flags: import("./flows/url/types.js").UrlFlowFlags;
|
|
38
|
+
model: import("./flows/url/types.js").UrlFlowModel;
|
|
39
|
+
cache: CacheState;
|
|
40
|
+
mediaCache: MediaCache | null;
|
|
41
|
+
hooks: {
|
|
42
|
+
onModelChosen: null;
|
|
43
|
+
onExtracted: null;
|
|
44
|
+
onSlidesExtracted: null;
|
|
45
|
+
onSlidesProgress: null;
|
|
46
|
+
onLinkPreviewProgress: null;
|
|
47
|
+
onSummaryCached: null;
|
|
48
|
+
setTranscriptionCost: (costUsd: number | null, label: string | null) => void;
|
|
49
|
+
summarizeAsset: (args: SummarizeAssetArgs) => Promise<void>;
|
|
50
|
+
writeViaFooter: (parts: string[]) => void;
|
|
51
|
+
clearProgressForStdout: () => void;
|
|
52
|
+
restoreProgressAfterStdout: (() => void) | null | undefined;
|
|
53
|
+
setClearProgressBeforeStdout: (fn: (() => undefined | (() => void)) | null) => void;
|
|
54
|
+
clearProgressIfCurrent: (fn: () => void) => void;
|
|
55
|
+
buildReport: () => Promise<import("../costs.js").RunMetricsReport>;
|
|
56
|
+
estimateCostUsd: () => Promise<number | null>;
|
|
57
|
+
onSlideChunk: undefined;
|
|
58
|
+
onSlidesDone: null;
|
|
59
|
+
};
|
|
60
|
+
};
|
|
61
|
+
};
|
|
62
|
+
export {};
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import type { InputTarget } from "../content/asset.js";
|
|
2
|
+
import type { RunMetricsReport } from "../costs.js";
|
|
3
|
+
import type { ExecFileFn } from "../markitdown.js";
|
|
4
|
+
import type { AssetExtractContext } from "./flows/asset/extract.js";
|
|
5
|
+
import type { SummarizeAssetArgs } from "./flows/asset/summary.js";
|
|
6
|
+
export declare function executeRunnerInput(options: {
|
|
7
|
+
inputTarget: InputTarget;
|
|
8
|
+
stdin: NodeJS.ReadableStream;
|
|
9
|
+
handleFileInputContext: unknown;
|
|
10
|
+
url: string | null;
|
|
11
|
+
isYoutubeUrl: boolean;
|
|
12
|
+
withUrlAssetContext: unknown;
|
|
13
|
+
extractMode: boolean;
|
|
14
|
+
progressEnabled: boolean;
|
|
15
|
+
renderSpinnerStatus: (label: string, detail?: string) => string;
|
|
16
|
+
renderSpinnerStatusWithModel: (label: string, modelId: string) => string;
|
|
17
|
+
extractAssetContext: AssetExtractContext & {
|
|
18
|
+
execFileImpl: ExecFileFn;
|
|
19
|
+
};
|
|
20
|
+
outputExtractedAssetContext: {
|
|
21
|
+
io: {
|
|
22
|
+
env: Record<string, string | undefined>;
|
|
23
|
+
envForRun: Record<string, string | undefined>;
|
|
24
|
+
stdout: NodeJS.WritableStream;
|
|
25
|
+
stderr: NodeJS.WritableStream;
|
|
26
|
+
};
|
|
27
|
+
flags: {
|
|
28
|
+
timeoutMs: number;
|
|
29
|
+
preprocessMode: "off" | "auto" | "always";
|
|
30
|
+
format: "text" | "markdown";
|
|
31
|
+
plain: boolean;
|
|
32
|
+
json: boolean;
|
|
33
|
+
metricsEnabled: boolean;
|
|
34
|
+
metricsDetailed: boolean;
|
|
35
|
+
shouldComputeReport: boolean;
|
|
36
|
+
runStartedAtMs: number;
|
|
37
|
+
verboseColor: boolean;
|
|
38
|
+
};
|
|
39
|
+
hooks: {
|
|
40
|
+
clearProgressForStdout: () => void;
|
|
41
|
+
restoreProgressAfterStdout?: (() => void) | null;
|
|
42
|
+
buildReport: () => Promise<RunMetricsReport>;
|
|
43
|
+
estimateCostUsd: () => Promise<number | null>;
|
|
44
|
+
};
|
|
45
|
+
apiStatus: {
|
|
46
|
+
xaiApiKey: string | null;
|
|
47
|
+
apiKey: string | null;
|
|
48
|
+
openrouterApiKey: string | null;
|
|
49
|
+
apifyToken: string | null;
|
|
50
|
+
firecrawlConfigured: boolean;
|
|
51
|
+
googleConfigured: boolean;
|
|
52
|
+
anthropicConfigured: boolean;
|
|
53
|
+
};
|
|
54
|
+
};
|
|
55
|
+
summarizeAsset: (args: SummarizeAssetArgs) => Promise<void>;
|
|
56
|
+
runUrlFlowContext: unknown;
|
|
57
|
+
}): Promise<void>;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type FirecrawlMode, type LengthArg, type MarkdownMode, type PreprocessMode, parseExtractFormat, parseMaxExtractCharactersArg, parseMetricsMode, parseStreamMode, type YoutubeMode } from "../flags.js";
|
|
2
|
+
type Transcriber = "auto" | "whisper" | "parakeet" | "canary";
|
|
3
|
+
export type RunnerFlagResolution = {
|
|
4
|
+
videoModeExplicitlySet: boolean;
|
|
5
|
+
lengthExplicitlySet: boolean;
|
|
6
|
+
languageExplicitlySet: boolean;
|
|
7
|
+
noCacheFlag: boolean;
|
|
8
|
+
noMediaCacheFlag: boolean;
|
|
9
|
+
extractMode: boolean;
|
|
10
|
+
json: boolean;
|
|
11
|
+
forceSummary: boolean;
|
|
12
|
+
slidesDebug: boolean;
|
|
13
|
+
streamMode: ReturnType<typeof parseStreamMode>;
|
|
14
|
+
plain: boolean;
|
|
15
|
+
debug: boolean;
|
|
16
|
+
verbose: boolean;
|
|
17
|
+
transcriber: Transcriber;
|
|
18
|
+
maxExtractCharacters: ReturnType<typeof parseMaxExtractCharactersArg>;
|
|
19
|
+
isYoutubeUrl: boolean;
|
|
20
|
+
format: ReturnType<typeof parseExtractFormat>;
|
|
21
|
+
youtubeMode: YoutubeMode;
|
|
22
|
+
lengthArg: LengthArg;
|
|
23
|
+
maxOutputTokensArg: number | null;
|
|
24
|
+
timeoutMs: number;
|
|
25
|
+
retries: number;
|
|
26
|
+
preprocessMode: PreprocessMode;
|
|
27
|
+
requestedFirecrawlMode: FirecrawlMode;
|
|
28
|
+
markdownMode: MarkdownMode;
|
|
29
|
+
metricsMode: ReturnType<typeof parseMetricsMode>;
|
|
30
|
+
metricsEnabled: boolean;
|
|
31
|
+
metricsDetailed: boolean;
|
|
32
|
+
shouldComputeReport: boolean;
|
|
33
|
+
markdownModeExplicitlySet: boolean;
|
|
34
|
+
};
|
|
35
|
+
export declare function resolveRunnerFlags({ normalizedArgv, programOpts, envForRun, url, }: {
|
|
36
|
+
normalizedArgv: readonly string[];
|
|
37
|
+
programOpts: Record<string, unknown>;
|
|
38
|
+
envForRun: Record<string, string | undefined>;
|
|
39
|
+
url: string | null;
|
|
40
|
+
}): RunnerFlagResolution;
|
|
41
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare function prepareRunEnvironment(argv: string[], inputEnv: Record<string, string | undefined>): {
|
|
2
|
+
normalizedArgv: string[];
|
|
3
|
+
envForRun: Record<string, string | undefined>;
|
|
4
|
+
};
|
|
5
|
+
export declare function handleVersionFlag({ versionRequested, stdout, }: {
|
|
6
|
+
versionRequested: boolean;
|
|
7
|
+
stdout: NodeJS.WritableStream;
|
|
8
|
+
}): boolean;
|
|
9
|
+
export declare function applyWidthOverride({ width, env, }: {
|
|
10
|
+
width: unknown;
|
|
11
|
+
env: Record<string, string | undefined>;
|
|
12
|
+
}): void;
|
|
13
|
+
export declare function resolvePromptOverride({ prompt, promptFile, }: {
|
|
14
|
+
prompt: unknown;
|
|
15
|
+
promptFile: unknown;
|
|
16
|
+
}): Promise<string | null>;
|
|
17
|
+
export declare function handleCacheUtilityFlags({ normalizedArgv, envForRun, stdout, }: {
|
|
18
|
+
normalizedArgv: string[];
|
|
19
|
+
envForRun: Record<string, string | undefined>;
|
|
20
|
+
stdout: NodeJS.WritableStream;
|
|
21
|
+
}): Promise<boolean>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { SummarizeConfig } from "../config.js";
|
|
2
|
+
import { type SlideSettings } from "../slides/index.js";
|
|
3
|
+
export declare function resolveRunnerSlidesSettings(options: {
|
|
4
|
+
normalizedArgv: string[];
|
|
5
|
+
programOpts: Record<string, unknown>;
|
|
6
|
+
config: SummarizeConfig | null;
|
|
7
|
+
inputKind: "url" | "file" | "stdin";
|
|
8
|
+
}): SlideSettings | null;
|
|
@@ -2,7 +2,7 @@ export { mergeStreamingChunk } from "../shared/streaming-merge.js";
|
|
|
2
2
|
export declare function isGoogleStreamingUnsupportedError(error: unknown): boolean;
|
|
3
3
|
export declare function isStreamingTimeoutError(error: unknown): boolean;
|
|
4
4
|
export declare function canStream({ provider, prompt, transport, }: {
|
|
5
|
-
provider: "xai" | "openai" | "google" | "anthropic" | "zai";
|
|
5
|
+
provider: "xai" | "openai" | "google" | "anthropic" | "zai" | "nvidia";
|
|
6
6
|
prompt: {
|
|
7
7
|
attachments?: Array<{
|
|
8
8
|
kind: "text" | "image" | "document";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import type { CliProvider } from "../config.js";
|
|
2
|
-
import type { Prompt } from "../llm/prompt.js";
|
|
3
|
-
import type { ModelAttempt, ModelMeta } from "./types.js";
|
|
4
2
|
import { runCliModel } from "../llm/cli.js";
|
|
3
|
+
import type { Prompt } from "../llm/prompt.js";
|
|
5
4
|
import { type StreamOutputMode } from "./stream-output.js";
|
|
6
5
|
import { summarizeWithModelId } from "./summary-llm.js";
|
|
6
|
+
import type { ModelAttempt, ModelMeta } from "./types.js";
|
|
7
7
|
export type SummaryEngineDeps = {
|
|
8
8
|
env: Record<string, string | undefined>;
|
|
9
9
|
envForRun: Record<string, string | undefined>;
|
|
@@ -24,7 +24,7 @@ export type SummaryEngineDeps = {
|
|
|
24
24
|
resolveMaxOutputTokensForCall: (modelId: string) => Promise<number | null>;
|
|
25
25
|
resolveMaxInputTokensForCall: (modelId: string) => Promise<number | null>;
|
|
26
26
|
llmCalls: Array<{
|
|
27
|
-
provider: "xai" | "openai" | "google" | "anthropic" | "zai" | "cli";
|
|
27
|
+
provider: "xai" | "openai" | "google" | "anthropic" | "zai" | "nvidia" | "cli";
|
|
28
28
|
model: string;
|
|
29
29
|
usage: Awaited<ReturnType<typeof summarizeWithModelId>>["usage"] | null;
|
|
30
30
|
costUsd?: number | null;
|
|
@@ -48,6 +48,10 @@ export type SummaryEngineDeps = {
|
|
|
48
48
|
apiKey: string | null;
|
|
49
49
|
baseUrl: string;
|
|
50
50
|
};
|
|
51
|
+
nvidia: {
|
|
52
|
+
apiKey: string | null;
|
|
53
|
+
baseUrl: string;
|
|
54
|
+
};
|
|
51
55
|
providerBaseUrls: {
|
|
52
56
|
openai: string | null;
|
|
53
57
|
anthropic: string | null;
|
|
@@ -64,7 +68,7 @@ export type SummaryStreamHandler = {
|
|
|
64
68
|
onDone?: ((finalText: string) => void | Promise<void>) | null;
|
|
65
69
|
};
|
|
66
70
|
export declare function createSummaryEngine(deps: SummaryEngineDeps): {
|
|
67
|
-
|
|
71
|
+
applyOpenAiGatewayOverrides: (attempt: ModelAttempt) => ModelAttempt;
|
|
68
72
|
envHasKeyFor: (requiredEnv: ModelAttempt["requiredEnv"]) => boolean;
|
|
69
73
|
formatMissingModelError: (attempt: ModelAttempt) => string;
|
|
70
74
|
runSummaryAttempt: ({ attempt, prompt, allowStreaming, onModelChosen, cli, streamHandler, }: {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
+
import { generateTextWithModelId } from "../llm/generate-text.js";
|
|
1
2
|
import type { parseGatewayStyleModelId } from "../llm/model-id.js";
|
|
2
3
|
import type { Prompt } from "../llm/prompt.js";
|
|
3
|
-
import { generateTextWithModelId } from "../llm/generate-text.js";
|
|
4
4
|
export declare function resolveModelIdForLlmCall({ parsedModel, apiKeys, fetchImpl, timeoutMs, }: {
|
|
5
5
|
parsedModel: ReturnType<typeof parseGatewayStyleModelId>;
|
|
6
6
|
apiKeys: {
|
|
@@ -13,7 +13,7 @@ export declare function resolveModelIdForLlmCall({ parsedModel, apiKeys, fetchIm
|
|
|
13
13
|
note: string | null;
|
|
14
14
|
forceStreamOff: boolean;
|
|
15
15
|
}>;
|
|
16
|
-
export declare function summarizeWithModelId({ modelId, prompt, maxOutputTokens, timeoutMs, fetchImpl, apiKeys, forceOpenRouter, openaiBaseUrlOverride, anthropicBaseUrlOverride, googleBaseUrlOverride, xaiBaseUrlOverride, forceChatCompletions, retries, onRetry, }: {
|
|
16
|
+
export declare function summarizeWithModelId({ modelId, prompt, maxOutputTokens, timeoutMs, fetchImpl, apiKeys, forceOpenRouter, openaiBaseUrlOverride, anthropicBaseUrlOverride, googleBaseUrlOverride, xaiBaseUrlOverride, zaiBaseUrlOverride, forceChatCompletions, retries, onRetry, }: {
|
|
17
17
|
modelId: string;
|
|
18
18
|
prompt: Prompt;
|
|
19
19
|
maxOutputTokens?: number;
|
|
@@ -31,6 +31,7 @@ export declare function summarizeWithModelId({ modelId, prompt, maxOutputTokens,
|
|
|
31
31
|
anthropicBaseUrlOverride?: string | null;
|
|
32
32
|
googleBaseUrlOverride?: string | null;
|
|
33
33
|
xaiBaseUrlOverride?: string | null;
|
|
34
|
+
zaiBaseUrlOverride?: string | null;
|
|
34
35
|
forceChatCompletions?: boolean;
|
|
35
36
|
retries: number;
|
|
36
37
|
onRetry?: (notice: {
|
|
@@ -41,7 +42,7 @@ export declare function summarizeWithModelId({ modelId, prompt, maxOutputTokens,
|
|
|
41
42
|
}) => void;
|
|
42
43
|
}): Promise<{
|
|
43
44
|
text: string;
|
|
44
|
-
provider: "xai" | "openai" | "google" | "anthropic" | "zai";
|
|
45
|
+
provider: "xai" | "openai" | "google" | "anthropic" | "zai" | "nvidia";
|
|
45
46
|
canonicalModelId: string;
|
|
46
47
|
usage: Awaited<ReturnType<typeof generateTextWithModelId>>["usage"];
|
|
47
48
|
}>;
|
|
@@ -2,5 +2,7 @@ export declare function isRichTty(stream: NodeJS.WritableStream): boolean;
|
|
|
2
2
|
export declare function supportsColor(stream: NodeJS.WritableStream, env: Record<string, string | undefined>): boolean;
|
|
3
3
|
export declare function terminalWidth(stream: NodeJS.WritableStream, env: Record<string, string | undefined>): number;
|
|
4
4
|
export declare function terminalHeight(stream: NodeJS.WritableStream, env: Record<string, string | undefined>): number;
|
|
5
|
+
/** Default max width for markdown rendering to keep text readable on wide terminals. */
|
|
6
|
+
export declare const DEFAULT_MAX_RENDER_WIDTH = 120;
|
|
5
7
|
export declare function markdownRenderWidth(stream: NodeJS.WritableStream, env: Record<string, string | undefined>): number;
|
|
6
8
|
export declare function ansi(code: string, input: string, enabled: boolean): string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { CliProvider } from "../config.js";
|
|
2
|
-
export type ModelAttemptRequiredEnv = "XAI_API_KEY" | "OPENAI_API_KEY" | "GEMINI_API_KEY" | "ANTHROPIC_API_KEY" | "OPENROUTER_API_KEY" | "Z_AI_API_KEY" | "CLI_CLAUDE" | "CLI_CODEX" | "CLI_GEMINI" | "CLI_AGENT";
|
|
2
|
+
export type ModelAttemptRequiredEnv = "XAI_API_KEY" | "OPENAI_API_KEY" | "NVIDIA_API_KEY" | "GEMINI_API_KEY" | "ANTHROPIC_API_KEY" | "OPENROUTER_API_KEY" | "Z_AI_API_KEY" | "CLI_CLAUDE" | "CLI_CODEX" | "CLI_GEMINI" | "CLI_AGENT";
|
|
3
3
|
export type ModelAttempt = {
|
|
4
4
|
transport: "native" | "openrouter" | "cli";
|
|
5
5
|
userModelId: string;
|
|
@@ -14,7 +14,7 @@ export type ModelAttempt = {
|
|
|
14
14
|
cliModel?: string | null;
|
|
15
15
|
};
|
|
16
16
|
export type ModelMeta = {
|
|
17
|
-
provider: "xai" | "openai" | "google" | "anthropic" | "zai" | "cli";
|
|
17
|
+
provider: "xai" | "openai" | "google" | "anthropic" | "zai" | "nvidia" | "cli";
|
|
18
18
|
canonical: string;
|
|
19
19
|
};
|
|
20
20
|
export type MarkdownModel = {
|