@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,14 @@
|
|
|
1
|
+
import type { Message, Tool } from "@mariozechner/pi-ai";
|
|
2
|
+
export declare function getAgentPrompt(automationEnabled: boolean): string;
|
|
3
|
+
export declare function buildSystemPrompt({ pageUrl, pageTitle, pageContent, automationEnabled, }: {
|
|
4
|
+
pageUrl: string;
|
|
5
|
+
pageTitle: string | null;
|
|
6
|
+
pageContent: string;
|
|
7
|
+
automationEnabled: boolean;
|
|
8
|
+
}): string;
|
|
9
|
+
export declare function flattenAgentForCli({ systemPrompt, messages, }: {
|
|
10
|
+
systemPrompt: string;
|
|
11
|
+
messages: Message[];
|
|
12
|
+
}): string;
|
|
13
|
+
export declare function normalizeMessages(raw: unknown): Message[];
|
|
14
|
+
export declare function resolveToolList(automationEnabled: boolean, tools: string[], definitions: Record<string, Tool>): Tool[];
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { Message } from "@mariozechner/pi-ai";
|
|
2
|
+
import type { SummarizeConfig } from "../config.js";
|
|
2
3
|
type ChatSession = {
|
|
3
4
|
id: string;
|
|
4
5
|
lastMeta: {
|
|
@@ -12,9 +13,10 @@ type ChatEvent = {
|
|
|
12
13
|
event: string;
|
|
13
14
|
data?: unknown;
|
|
14
15
|
};
|
|
15
|
-
export declare function streamChatResponse({ env, fetchImpl, session: _session, pageUrl, pageTitle, pageContent, messages, modelOverride, pushToSession, emitMeta, }: {
|
|
16
|
+
export declare function streamChatResponse({ env, fetchImpl, configForCli, session: _session, pageUrl, pageTitle, pageContent, messages, modelOverride, pushToSession, emitMeta, }: {
|
|
16
17
|
env: Record<string, string | undefined>;
|
|
17
18
|
fetchImpl: typeof fetch;
|
|
19
|
+
configForCli?: SummarizeConfig | null;
|
|
18
20
|
session: ChatSession;
|
|
19
21
|
pageUrl: string;
|
|
20
22
|
pageTitle: string | null;
|
|
@@ -6,14 +6,25 @@ export type DaemonConfigV1 = {
|
|
|
6
6
|
env: EnvSnapshot;
|
|
7
7
|
installedAt: string;
|
|
8
8
|
};
|
|
9
|
-
export type
|
|
9
|
+
export type DaemonConfigV2 = {
|
|
10
|
+
version: 2;
|
|
11
|
+
token: string;
|
|
12
|
+
tokens: string[];
|
|
13
|
+
port: number;
|
|
14
|
+
env: EnvSnapshot;
|
|
15
|
+
installedAt: string;
|
|
16
|
+
};
|
|
17
|
+
export type DaemonConfig = DaemonConfigV1 | DaemonConfigV2;
|
|
10
18
|
export declare function resolveDaemonConfigPath(env: Record<string, string | undefined>): string;
|
|
11
19
|
export declare function normalizeDaemonToken(raw: string): string;
|
|
20
|
+
export declare function normalizeDaemonTokens(raw: unknown): string[];
|
|
21
|
+
export declare function daemonConfigPrimaryToken(config: DaemonConfig): string;
|
|
22
|
+
export declare function daemonConfigTokens(config: DaemonConfig): string[];
|
|
12
23
|
export declare function normalizeDaemonPort(raw: unknown): number;
|
|
13
24
|
export declare function readDaemonConfig({ env, }: {
|
|
14
25
|
env: Record<string, string | undefined>;
|
|
15
26
|
}): Promise<DaemonConfig | null>;
|
|
16
27
|
export declare function writeDaemonConfig({ env, config, }: {
|
|
17
28
|
env: Record<string, string | undefined>;
|
|
18
|
-
config: Omit<
|
|
29
|
+
config: Omit<DaemonConfigV2, "version" | "installedAt"> & Partial<Pick<DaemonConfigV2, "installedAt">>;
|
|
19
30
|
}): Promise<string>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
declare const ENV_KEYS: readonly ["PATH", "XAI_API_KEY", "XAI_BASE_URL", "OPENAI_API_KEY", "OPENAI_WHISPER_BASE_URL", "OPENAI_BASE_URL", "OPENROUTER_API_KEY", "OPENAI_USE_CHAT_COMPLETIONS", "Z_AI_API_KEY", "ZAI_API_KEY", "Z_AI_BASE_URL", "ZAI_BASE_URL", "GEMINI_API_KEY", "GOOGLE_BASE_URL", "GEMINI_BASE_URL", "GOOGLE_GENERATIVE_AI_API_KEY", "GOOGLE_API_KEY", "ANTHROPIC_API_KEY", "ANTHROPIC_BASE_URL", "FIRECRAWL_API_KEY", "APIFY_API_TOKEN", "YT_DLP_PATH", "SUMMARIZE_YT_DLP_COOKIES_FROM_BROWSER", "YT_DLP_COOKIES_FROM_BROWSER", "FAL_KEY", "GROQ_API_KEY", "SUMMARIZE_MODEL", "SUMMARIZE_TRANSCRIBER", "SUMMARIZE_ONNX_PARAKEET_CMD", "SUMMARIZE_ONNX_CANARY_CMD", "CLAUDE_PATH", "CODEX_PATH", "GEMINI_PATH", "AGENT_PATH", "UVX_PATH"];
|
|
1
|
+
declare const ENV_KEYS: readonly ["PATH", "XAI_API_KEY", "XAI_BASE_URL", "OPENAI_API_KEY", "OPENAI_WHISPER_BASE_URL", "OPENAI_BASE_URL", "OPENROUTER_API_KEY", "OPENAI_USE_CHAT_COMPLETIONS", "NVIDIA_API_KEY", "NGC_API_KEY", "NVIDIA_BASE_URL", "Z_AI_API_KEY", "ZAI_API_KEY", "Z_AI_BASE_URL", "ZAI_BASE_URL", "GEMINI_API_KEY", "GOOGLE_BASE_URL", "GEMINI_BASE_URL", "GOOGLE_GENERATIVE_AI_API_KEY", "GOOGLE_API_KEY", "ANTHROPIC_API_KEY", "ANTHROPIC_BASE_URL", "FIRECRAWL_API_KEY", "APIFY_API_TOKEN", "YT_DLP_PATH", "SUMMARIZE_YT_DLP_COOKIES_FROM_BROWSER", "YT_DLP_COOKIES_FROM_BROWSER", "FAL_KEY", "GROQ_API_KEY", "ASSEMBLYAI_API_KEY", "SUMMARIZE_MODEL", "SUMMARIZE_TRANSCRIBER", "SUMMARIZE_ONNX_PARAKEET_CMD", "SUMMARIZE_ONNX_CANARY_CMD", "CLAUDE_PATH", "CODEX_PATH", "GEMINI_PATH", "AGENT_PATH", "OPENCLAW_PATH", "OPENCODE_PATH", "UVX_PATH"];
|
|
2
2
|
export type EnvSnapshot = Partial<Record<(typeof ENV_KEYS)[number], string>>;
|
|
3
3
|
export declare function buildEnvSnapshotFromEnv(env: Record<string, string | undefined>): EnvSnapshot;
|
|
4
4
|
export {};
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import type { CacheState } from "../cache.js";
|
|
2
2
|
import type { ExtractedLinkContent, LinkPreviewProgressEvent, MediaCache } from "../content/index.js";
|
|
3
|
-
import type
|
|
4
|
-
import type { SlideImage, SlideSettings, SlideSourceKind } from "../slides/index.js";
|
|
3
|
+
import { type UrlFlowContext } from "../run/flows/url/types.js";
|
|
5
4
|
import { type RunOverrides } from "../run/run-settings.js";
|
|
5
|
+
import type { SlideImage, SlideSettings, SlideSourceKind } from "../slides/index.js";
|
|
6
6
|
type TextSink = {
|
|
7
7
|
writeChunk: (text: string) => void;
|
|
8
8
|
};
|
|
@@ -14,6 +14,7 @@ export declare function buildModelPickerOptions({ env, envForRun, configForCli,
|
|
|
14
14
|
providers: {
|
|
15
15
|
xai: boolean;
|
|
16
16
|
openai: boolean;
|
|
17
|
+
nvidia: boolean;
|
|
17
18
|
google: boolean;
|
|
18
19
|
anthropic: boolean;
|
|
19
20
|
openrouter: boolean;
|
|
@@ -22,6 +23,8 @@ export declare function buildModelPickerOptions({ env, envForRun, configForCli,
|
|
|
22
23
|
cliGemini: boolean;
|
|
23
24
|
cliCodex: boolean;
|
|
24
25
|
cliAgent: boolean;
|
|
26
|
+
cliOpenclaw: boolean;
|
|
27
|
+
cliOpencode: boolean;
|
|
25
28
|
};
|
|
26
29
|
openaiBaseUrl: string | null;
|
|
27
30
|
localModelsSource: {
|
|
@@ -14,7 +14,8 @@ export declare function uninstallScheduledTask({ env, stdout, }: {
|
|
|
14
14
|
env: Record<string, string | undefined>;
|
|
15
15
|
stdout: NodeJS.WritableStream;
|
|
16
16
|
}): Promise<void>;
|
|
17
|
-
export declare function restartScheduledTask({ stdout, }: {
|
|
17
|
+
export declare function restartScheduledTask({ env, stdout, }: {
|
|
18
|
+
env: Record<string, string | undefined>;
|
|
18
19
|
stdout: NodeJS.WritableStream;
|
|
19
20
|
}): Promise<void>;
|
|
20
21
|
export declare function isScheduledTaskInstalled(): Promise<boolean>;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import http from "node:http";
|
|
2
|
+
import type { SummarizeConfig } from "../config.js";
|
|
3
|
+
import type { DaemonLogger } from "../logging/daemon.js";
|
|
4
|
+
import { type ProcessRegistry } from "./process-registry.js";
|
|
5
|
+
export declare function handleAdminRoutes({ req, res, url, pathname, cors, env, fetchImpl, summarizeConfig, daemonLogger, daemonLogFile, daemonLogPaths, processRegistry, resolveToolPath, }: {
|
|
6
|
+
req: http.IncomingMessage;
|
|
7
|
+
res: http.ServerResponse;
|
|
8
|
+
url: URL;
|
|
9
|
+
pathname: string;
|
|
10
|
+
cors: Record<string, string>;
|
|
11
|
+
env: Record<string, string | undefined>;
|
|
12
|
+
fetchImpl: typeof fetch;
|
|
13
|
+
summarizeConfig: SummarizeConfig | null;
|
|
14
|
+
daemonLogger: DaemonLogger;
|
|
15
|
+
daemonLogFile: string;
|
|
16
|
+
daemonLogPaths: {
|
|
17
|
+
stdoutPath: string;
|
|
18
|
+
stderrPath: string;
|
|
19
|
+
};
|
|
20
|
+
processRegistry: ProcessRegistry;
|
|
21
|
+
resolveToolPath: (binary: string, env: Record<string, string | undefined>, explicitEnvKey?: string) => string | null;
|
|
22
|
+
}): Promise<boolean>;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type http from "node:http";
|
|
2
|
+
export declare function handleAgentRoute({ req, res, url, cors, env, createRunId, }: {
|
|
3
|
+
req: http.IncomingMessage;
|
|
4
|
+
res: http.ServerResponse;
|
|
5
|
+
url: URL;
|
|
6
|
+
cors: Record<string, string>;
|
|
7
|
+
env: Record<string, string | undefined>;
|
|
8
|
+
createRunId: () => string;
|
|
9
|
+
}): Promise<boolean>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import http from "node:http";
|
|
2
|
+
export declare function json(res: http.ServerResponse, status: number, payload: unknown, headers?: Record<string, string>): void;
|
|
3
|
+
export declare function text(res: http.ServerResponse, status: number, body: string, headers?: Record<string, string>): void;
|
|
4
|
+
export declare function clampNumber(value: number, min: number, max: number): number;
|
|
5
|
+
export declare function isTrustedOrigin(origin: string): boolean;
|
|
6
|
+
export declare function corsHeaders(origin: string | null): Record<string, string>;
|
|
7
|
+
export declare function readCorsHeaders(req: http.IncomingMessage): Record<string, string>;
|
|
8
|
+
export declare function readBearerToken(req: http.IncomingMessage): string | null;
|
|
9
|
+
export declare function readJsonBody(req: http.IncomingMessage, maxBytes: number): Promise<unknown>;
|
|
10
|
+
export declare function wantsJsonResponse(req: http.IncomingMessage, url: URL): boolean;
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Session } from "./server-session.js";
|
|
2
|
+
export declare function handleSessionRoutes(options: {
|
|
3
|
+
req: import("node:http").IncomingMessage;
|
|
4
|
+
res: import("node:http").ServerResponse<import("node:http").IncomingMessage>;
|
|
5
|
+
pathname: string;
|
|
6
|
+
cors: Record<string, string>;
|
|
7
|
+
env: Record<string, string | undefined>;
|
|
8
|
+
port: number;
|
|
9
|
+
sessions: Map<string, Session>;
|
|
10
|
+
refreshSessions: Map<string, Session>;
|
|
11
|
+
}): Promise<boolean>;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import http from "node:http";
|
|
2
|
+
import { type SseEvent, type SseSlidesData } from "../shared/sse-events.js";
|
|
3
|
+
import type { SlideExtractionResult } from "../slides/index.js";
|
|
4
|
+
export type SessionEvent = SseEvent;
|
|
5
|
+
export type Session = {
|
|
6
|
+
id: string;
|
|
7
|
+
createdAtMs: number;
|
|
8
|
+
buffer: Array<{
|
|
9
|
+
event: SessionEvent;
|
|
10
|
+
bytes: number;
|
|
11
|
+
}>;
|
|
12
|
+
bufferBytes: number;
|
|
13
|
+
done: boolean;
|
|
14
|
+
clients: Set<http.ServerResponse>;
|
|
15
|
+
slidesBuffer: Array<{
|
|
16
|
+
event: SessionEvent;
|
|
17
|
+
bytes: number;
|
|
18
|
+
}>;
|
|
19
|
+
slidesBufferBytes: number;
|
|
20
|
+
slidesClients: Set<http.ServerResponse>;
|
|
21
|
+
slidesDone: boolean;
|
|
22
|
+
slidesRequested: boolean;
|
|
23
|
+
slidesLastStatus: string | null;
|
|
24
|
+
lastMeta: {
|
|
25
|
+
model: string | null;
|
|
26
|
+
modelLabel: string | null;
|
|
27
|
+
inputSummary: string | null;
|
|
28
|
+
summaryFromCache: boolean | null;
|
|
29
|
+
};
|
|
30
|
+
slides: SlideExtractionResult | null;
|
|
31
|
+
};
|
|
32
|
+
export declare function createSession(idFactory: () => string): Session;
|
|
33
|
+
export declare function pushToSession(session: Session, event: SessionEvent, onSessionEvent?: ((event: SessionEvent, sessionId: string) => void) | null): void;
|
|
34
|
+
export declare function pushSlidesToSession(session: Session, event: SessionEvent, onSessionEvent?: ((event: SessionEvent, sessionId: string) => void) | null): void;
|
|
35
|
+
export declare function emitMeta(session: Session, data: {
|
|
36
|
+
model?: string | null;
|
|
37
|
+
modelLabel?: string | null;
|
|
38
|
+
inputSummary?: string | null;
|
|
39
|
+
summaryFromCache?: boolean | null;
|
|
40
|
+
}, onSessionEvent?: ((event: SessionEvent, sessionId: string) => void) | null): void;
|
|
41
|
+
export declare function emitSlides(session: Session, data: SseSlidesData, onSessionEvent?: ((event: SessionEvent, sessionId: string) => void) | null): void;
|
|
42
|
+
export declare function emitSlidesStatus(session: Session, text: string, onSessionEvent?: ((event: SessionEvent, sessionId: string) => void) | null): void;
|
|
43
|
+
export declare function emitSlidesDone(session: Session, result: {
|
|
44
|
+
ok: boolean;
|
|
45
|
+
error?: string | null;
|
|
46
|
+
}, onSessionEvent?: ((event: SessionEvent, sessionId: string) => void) | null): void;
|
|
47
|
+
export declare function endSession(session: Session): void;
|
|
48
|
+
export declare function scheduleSessionCleanup({ sessions, refreshSessions, session, }: {
|
|
49
|
+
sessions: Map<string, Session>;
|
|
50
|
+
refreshSessions: Map<string, Session>;
|
|
51
|
+
session: Session;
|
|
52
|
+
}): void;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import http from "node:http";
|
|
2
|
+
import { type SseEvent } from "../shared/sse-events.js";
|
|
3
|
+
export declare function attachBufferedSseSession({ res, cors, buffer, clients, done, afterReplay, }: {
|
|
4
|
+
res: http.ServerResponse;
|
|
5
|
+
cors: Record<string, string>;
|
|
6
|
+
buffer: Array<{
|
|
7
|
+
event: SseEvent;
|
|
8
|
+
}>;
|
|
9
|
+
clients: Set<http.ServerResponse>;
|
|
10
|
+
done: boolean;
|
|
11
|
+
afterReplay?: (() => void) | null;
|
|
12
|
+
}): void;
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import type { CacheState } from "../cache.js";
|
|
2
|
+
import type { MediaCache } from "../content/index.js";
|
|
3
|
+
import { type SseSlidesData } from "../shared/sse-events.js";
|
|
4
|
+
import type { SlideExtractionResult } from "../slides/index.js";
|
|
5
|
+
import { type Session, type SessionEvent } from "./server-session.js";
|
|
6
|
+
import type { ParsedSummarizeRequest } from "./server-summarize-request.js";
|
|
7
|
+
import { extractContentForUrl } from "./summarize.js";
|
|
8
|
+
type LoggerLike = {
|
|
9
|
+
info?: (payload: Record<string, unknown>) => void;
|
|
10
|
+
error?: (payload: Record<string, unknown>) => void;
|
|
11
|
+
};
|
|
12
|
+
type SlidesLogShape = {
|
|
13
|
+
enabled: boolean;
|
|
14
|
+
ocr: boolean;
|
|
15
|
+
outputDir: string;
|
|
16
|
+
sceneThreshold: number | null;
|
|
17
|
+
autoTuneThreshold: boolean;
|
|
18
|
+
maxSlides: number | null;
|
|
19
|
+
minDurationSeconds: number | null;
|
|
20
|
+
};
|
|
21
|
+
type ExecuteSummarizeSessionArgs = {
|
|
22
|
+
session: Session;
|
|
23
|
+
request: ParsedSummarizeRequest;
|
|
24
|
+
env: Record<string, string | undefined>;
|
|
25
|
+
fetchImpl: typeof fetch;
|
|
26
|
+
cacheState: CacheState;
|
|
27
|
+
mediaCache: MediaCache | null;
|
|
28
|
+
port: number;
|
|
29
|
+
onSessionEvent?: ((event: SessionEvent, sessionId: string) => void) | null;
|
|
30
|
+
requestLogger?: LoggerLike | null;
|
|
31
|
+
includeContentLog: boolean;
|
|
32
|
+
logStartedAt: number;
|
|
33
|
+
logInput: {
|
|
34
|
+
url: string;
|
|
35
|
+
title: string | null;
|
|
36
|
+
text: string | null;
|
|
37
|
+
truncated: boolean | null;
|
|
38
|
+
} | null;
|
|
39
|
+
logSlidesSettings: SlidesLogShape | null;
|
|
40
|
+
sessions: Map<string, Session>;
|
|
41
|
+
refreshSessions: Map<string, Session>;
|
|
42
|
+
};
|
|
43
|
+
export declare function buildSlidesPayload({ slides, port, }: {
|
|
44
|
+
slides: SlideExtractionResult;
|
|
45
|
+
port: number;
|
|
46
|
+
}): SseSlidesData;
|
|
47
|
+
export declare function handleExtractOnlySummarizeRequest({ request, env, fetchImpl, cacheState, mediaCache, }: {
|
|
48
|
+
request: ParsedSummarizeRequest;
|
|
49
|
+
env: Record<string, string | undefined>;
|
|
50
|
+
fetchImpl: typeof fetch;
|
|
51
|
+
cacheState: CacheState;
|
|
52
|
+
mediaCache: MediaCache | null;
|
|
53
|
+
}): Promise<{
|
|
54
|
+
extracted: Awaited<ReturnType<typeof extractContentForUrl>>["extracted"];
|
|
55
|
+
slides: Awaited<ReturnType<typeof extractContentForUrl>>["slides"];
|
|
56
|
+
}>;
|
|
57
|
+
export declare function toExtractOnlySlidesPayload(slides: SlideExtractionResult | null): {
|
|
58
|
+
sourceUrl: string;
|
|
59
|
+
sourceId: string;
|
|
60
|
+
sourceKind: string;
|
|
61
|
+
ocrAvailable: boolean;
|
|
62
|
+
slides: Array<{
|
|
63
|
+
index: number;
|
|
64
|
+
timestamp: number;
|
|
65
|
+
ocrText?: string | null;
|
|
66
|
+
ocrConfidence?: number | null;
|
|
67
|
+
}>;
|
|
68
|
+
} | null;
|
|
69
|
+
export declare function executeSummarizeSession({ session, request, env, fetchImpl, cacheState, mediaCache, port, onSessionEvent, requestLogger, includeContentLog, logStartedAt, logInput, logSlidesSettings, sessions, refreshSessions, }: ExecuteSummarizeSessionArgs): Promise<void>;
|
|
70
|
+
export {};
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type http from "node:http";
|
|
2
|
+
import { resolveRunOverrides } from "../run/run-settings.js";
|
|
3
|
+
import type { SlideSettings } from "../slides/index.js";
|
|
4
|
+
import type { DaemonRequestedMode } from "./auto-mode.js";
|
|
5
|
+
export declare function parseDiagnostics(raw: unknown): {
|
|
6
|
+
includeContent: boolean;
|
|
7
|
+
};
|
|
8
|
+
export declare function resolveHomeDir(env: Record<string, string | undefined>): string;
|
|
9
|
+
export type ParsedSummarizeRequest = {
|
|
10
|
+
pageUrl: string;
|
|
11
|
+
title: string | null;
|
|
12
|
+
textContent: string;
|
|
13
|
+
truncated: boolean;
|
|
14
|
+
modelOverride: string | null;
|
|
15
|
+
lengthRaw: string;
|
|
16
|
+
languageRaw: string;
|
|
17
|
+
promptOverride: string | null;
|
|
18
|
+
noCache: boolean;
|
|
19
|
+
extractOnly: boolean;
|
|
20
|
+
mode: DaemonRequestedMode;
|
|
21
|
+
maxCharacters: number | null;
|
|
22
|
+
format: "text" | "markdown";
|
|
23
|
+
overrides: ReturnType<typeof resolveRunOverrides>;
|
|
24
|
+
slidesSettings: SlideSettings | null;
|
|
25
|
+
diagnostics: {
|
|
26
|
+
includeContent: boolean;
|
|
27
|
+
};
|
|
28
|
+
hasText: boolean;
|
|
29
|
+
};
|
|
30
|
+
export declare function parseSummarizeRequest({ req, res, cors, env, resolveToolPath, }: {
|
|
31
|
+
req: http.IncomingMessage;
|
|
32
|
+
res: http.ServerResponse;
|
|
33
|
+
cors: Record<string, string>;
|
|
34
|
+
env: Record<string, string | undefined>;
|
|
35
|
+
resolveToolPath: (binary: string, env: Record<string, string | undefined>, explicitEnvKey?: string) => string | null;
|
|
36
|
+
}): Promise<ParsedSummarizeRequest | null>;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import type
|
|
2
|
-
import { type
|
|
3
|
-
|
|
1
|
+
import { type DaemonConfig } from "./config.js";
|
|
2
|
+
import { type SessionEvent } from "./server-session.js";
|
|
3
|
+
export { corsHeaders, isTrustedOrigin } from "./server-http.js";
|
|
4
|
+
export declare function resolveDaemonListenHost(env: Record<string, string | undefined>): string;
|
|
4
5
|
export declare function buildHealthPayload(importMetaUrl?: string): {
|
|
5
6
|
ok: boolean;
|
|
6
7
|
pid: number;
|
|
@@ -15,4 +16,3 @@ export declare function runDaemonServer({ env, fetchImpl, config, port, signal,
|
|
|
15
16
|
onListening?: ((port: number) => void) | null;
|
|
16
17
|
onSessionEvent?: ((event: SessionEvent, sessionId: string) => void) | null;
|
|
17
18
|
}): Promise<void>;
|
|
18
|
-
export {};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { CacheState } from "../cache.js";
|
|
2
|
+
import { type ExtractedLinkContent, type MediaCache } from "../content/index.js";
|
|
2
3
|
import type { RunOverrides } from "../run/run-settings.js";
|
|
3
4
|
import type { SlideExtractionResult, SlideImage, SlideSettings, SlideSourceKind } from "../slides/index.js";
|
|
4
|
-
import { type ExtractedLinkContent, type MediaCache } from "../content/index.js";
|
|
5
5
|
export type VisiblePageInput = {
|
|
6
6
|
url: string;
|
|
7
7
|
title: string | null;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function isWindowsContainerEnvironment(env: Record<string, string | undefined>): boolean;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { ExecFileFn } from "../markitdown.js";
|
|
2
|
+
export declare function execCliWithInput({ execFileImpl, cmd, args, input, timeoutMs, env, cwd, }: {
|
|
3
|
+
execFileImpl: ExecFileFn;
|
|
4
|
+
cmd: string;
|
|
5
|
+
args: string[];
|
|
6
|
+
input: string;
|
|
7
|
+
timeoutMs: number;
|
|
8
|
+
env: Record<string, string | undefined>;
|
|
9
|
+
cwd?: string;
|
|
10
|
+
}): Promise<{
|
|
11
|
+
stdout: string;
|
|
12
|
+
stderr: string;
|
|
13
|
+
}>;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { CliProvider } from "../config.js";
|
|
2
|
+
import type { LlmTokenUsage } from "./generate-text.js";
|
|
3
|
+
export type JsonCliProvider = Exclude<CliProvider, "codex" | "openclaw" | "opencode">;
|
|
4
|
+
export declare function isJsonCliProvider(provider: CliProvider): provider is JsonCliProvider;
|
|
5
|
+
export declare const parseCodexUsageFromJsonl: (output: string) => {
|
|
6
|
+
usage: LlmTokenUsage | null;
|
|
7
|
+
costUsd: number | null;
|
|
8
|
+
};
|
|
9
|
+
export declare function parseCodexOutputFromJsonl(output: string): {
|
|
10
|
+
text: string | null;
|
|
11
|
+
sawStructuredEvent: boolean;
|
|
12
|
+
};
|
|
13
|
+
export declare function parseOpenCodeOutputFromJsonl(output: string): {
|
|
14
|
+
text: string;
|
|
15
|
+
usage: LlmTokenUsage | null;
|
|
16
|
+
costUsd: number | null;
|
|
17
|
+
};
|
|
18
|
+
export declare function parseJsonProviderOutput(args: {
|
|
19
|
+
provider: JsonCliProvider;
|
|
20
|
+
stdout: string;
|
|
21
|
+
}): {
|
|
22
|
+
text: string;
|
|
23
|
+
usage: LlmTokenUsage | null;
|
|
24
|
+
costUsd: number | null;
|
|
25
|
+
};
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { LlmProvider } from "./model-id.js";
|
|
2
|
+
import type { Prompt } from "./prompt.js";
|
|
3
|
+
import type { LlmTokenUsage } from "./types.js";
|
|
4
|
+
type ParsedModel = {
|
|
5
|
+
provider: LlmProvider;
|
|
6
|
+
model: string;
|
|
7
|
+
canonical: string;
|
|
8
|
+
};
|
|
9
|
+
type DocumentResult = {
|
|
10
|
+
text: string;
|
|
11
|
+
canonicalModelId: string;
|
|
12
|
+
provider: ParsedModel["provider"];
|
|
13
|
+
usage: LlmTokenUsage | null;
|
|
14
|
+
};
|
|
15
|
+
export declare function maybeGenerateDocumentText(options: {
|
|
16
|
+
parsed: ParsedModel;
|
|
17
|
+
apiKeys: {
|
|
18
|
+
openaiApiKey: string | null;
|
|
19
|
+
googleApiKey: string | null;
|
|
20
|
+
anthropicApiKey: string | null;
|
|
21
|
+
openrouterApiKey: string | null;
|
|
22
|
+
};
|
|
23
|
+
prompt: Prompt;
|
|
24
|
+
maxOutputTokens?: number;
|
|
25
|
+
temperature?: number;
|
|
26
|
+
timeoutMs: number;
|
|
27
|
+
fetchImpl: typeof fetch;
|
|
28
|
+
forceOpenRouter?: boolean;
|
|
29
|
+
openaiBaseUrlOverride?: string | null;
|
|
30
|
+
anthropicBaseUrlOverride?: string | null;
|
|
31
|
+
googleBaseUrlOverride?: string | null;
|
|
32
|
+
forceChatCompletions?: boolean;
|
|
33
|
+
retryWithModelId: (modelId: string) => Promise<DocumentResult>;
|
|
34
|
+
}): Promise<DocumentResult | null>;
|
|
35
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { Context } from "@mariozechner/pi-ai";
|
|
2
|
+
import type { Prompt } from "./prompt.js";
|
|
3
|
+
import type { LlmTokenUsage } from "./types.js";
|
|
4
|
+
export declare function promptToContext(prompt: Prompt): Context;
|
|
5
|
+
export declare function isRetryableTimeoutError(error: unknown): boolean;
|
|
6
|
+
export declare function computeRetryDelayMs(attempt: number): number;
|
|
7
|
+
export declare function sleep(ms: number): Promise<void>;
|
|
8
|
+
export declare function withTimeoutFallback<T>({ promise, timeoutMs, fallback, }: {
|
|
9
|
+
promise: Promise<T>;
|
|
10
|
+
timeoutMs: number;
|
|
11
|
+
fallback: T;
|
|
12
|
+
}): Promise<T>;
|
|
13
|
+
export declare function streamUsageWithTimeout({ result, timeoutMs, }: {
|
|
14
|
+
result: Promise<{
|
|
15
|
+
usage?: unknown;
|
|
16
|
+
}>;
|
|
17
|
+
timeoutMs: number;
|
|
18
|
+
}): Promise<LlmTokenUsage | null>;
|
|
19
|
+
export declare function isOpenAiGpt5Model(provider: string, model: string): boolean;
|
|
20
|
+
export declare function resolveEffectiveTemperature({ provider, model, temperature, }: {
|
|
21
|
+
provider: string;
|
|
22
|
+
model: string;
|
|
23
|
+
temperature?: number;
|
|
24
|
+
}): number | undefined;
|
|
25
|
+
export declare function shouldRetryGpt5WithoutTokenCap({ provider, model, maxOutputTokens, error, }: {
|
|
26
|
+
provider: string;
|
|
27
|
+
model: string;
|
|
28
|
+
maxOutputTokens?: number;
|
|
29
|
+
error: unknown;
|
|
30
|
+
}): boolean;
|
|
31
|
+
export declare function resolveGoogleEmptyResponseFallbackModelId(modelId: string): string | null;
|
|
32
|
+
export declare function isGoogleEmptySummaryError(error: unknown): boolean;
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { Context } from "@mariozechner/pi-ai";
|
|
2
|
+
import type { LlmApiKeys } from "./generate-text.js";
|
|
3
|
+
import type { LlmProvider } from "./model-id.js";
|
|
4
|
+
import type { LlmTokenUsage } from "./types.js";
|
|
5
|
+
export type StreamTextWithContextArgs = {
|
|
6
|
+
modelId: string;
|
|
7
|
+
apiKeys: LlmApiKeys;
|
|
8
|
+
context: Context;
|
|
9
|
+
temperature?: number;
|
|
10
|
+
maxOutputTokens?: number;
|
|
11
|
+
timeoutMs: number;
|
|
12
|
+
fetchImpl: typeof fetch;
|
|
13
|
+
forceOpenRouter?: boolean;
|
|
14
|
+
openaiBaseUrlOverride?: string | null;
|
|
15
|
+
anthropicBaseUrlOverride?: string | null;
|
|
16
|
+
googleBaseUrlOverride?: string | null;
|
|
17
|
+
xaiBaseUrlOverride?: string | null;
|
|
18
|
+
forceChatCompletions?: boolean;
|
|
19
|
+
};
|
|
20
|
+
export type StreamTextResult = {
|
|
21
|
+
textStream: AsyncIterable<string>;
|
|
22
|
+
canonicalModelId: string;
|
|
23
|
+
provider: LlmProvider;
|
|
24
|
+
usage: Promise<LlmTokenUsage | null>;
|
|
25
|
+
lastError: () => unknown;
|
|
26
|
+
};
|
|
27
|
+
export declare function streamTextWithContext({ modelId, apiKeys, context, temperature, maxOutputTokens, timeoutMs, fetchImpl, forceOpenRouter, openaiBaseUrlOverride, anthropicBaseUrlOverride, googleBaseUrlOverride, xaiBaseUrlOverride, forceChatCompletions, }: StreamTextWithContextArgs): Promise<StreamTextResult>;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { LlmProvider } from "./model-id.js";
|
|
2
|
+
import type { Prompt } from "./prompt.js";
|
|
2
3
|
import type { LlmTokenUsage } from "./types.js";
|
|
3
|
-
|
|
4
|
+
export { streamTextWithContext } from "./generate-text-stream.js";
|
|
4
5
|
export type LlmApiKeys = {
|
|
5
6
|
xaiApiKey: string | null;
|
|
6
7
|
openaiApiKey: string | null;
|
|
@@ -18,7 +19,7 @@ type RetryNotice = {
|
|
|
18
19
|
delayMs: number;
|
|
19
20
|
error: unknown;
|
|
20
21
|
};
|
|
21
|
-
export declare function generateTextWithModelId({ modelId, apiKeys, prompt, temperature, maxOutputTokens, timeoutMs, fetchImpl, forceOpenRouter, openaiBaseUrlOverride, anthropicBaseUrlOverride, googleBaseUrlOverride, xaiBaseUrlOverride, forceChatCompletions, retries, onRetry, }: {
|
|
22
|
+
export declare function generateTextWithModelId({ modelId, apiKeys, prompt, temperature, maxOutputTokens, timeoutMs, fetchImpl, forceOpenRouter, openaiBaseUrlOverride, anthropicBaseUrlOverride, googleBaseUrlOverride, xaiBaseUrlOverride, zaiBaseUrlOverride, forceChatCompletions, retries, onRetry, }: {
|
|
22
23
|
modelId: string;
|
|
23
24
|
apiKeys: LlmApiKeys;
|
|
24
25
|
prompt: Prompt;
|
|
@@ -31,13 +32,14 @@ export declare function generateTextWithModelId({ modelId, apiKeys, prompt, temp
|
|
|
31
32
|
anthropicBaseUrlOverride?: string | null;
|
|
32
33
|
googleBaseUrlOverride?: string | null;
|
|
33
34
|
xaiBaseUrlOverride?: string | null;
|
|
35
|
+
zaiBaseUrlOverride?: string | null;
|
|
34
36
|
forceChatCompletions?: boolean;
|
|
35
37
|
retries?: number;
|
|
36
38
|
onRetry?: (notice: RetryNotice) => void;
|
|
37
39
|
}): Promise<{
|
|
38
40
|
text: string;
|
|
39
41
|
canonicalModelId: string;
|
|
40
|
-
provider:
|
|
42
|
+
provider: LlmProvider;
|
|
41
43
|
usage: LlmTokenUsage | null;
|
|
42
44
|
}>;
|
|
43
45
|
export declare function streamTextWithModelId({ modelId, apiKeys, prompt, temperature, maxOutputTokens, timeoutMs, fetchImpl, forceOpenRouter, openaiBaseUrlOverride, anthropicBaseUrlOverride, googleBaseUrlOverride, xaiBaseUrlOverride, forceChatCompletions, }: {
|
|
@@ -57,28 +59,7 @@ export declare function streamTextWithModelId({ modelId, apiKeys, prompt, temper
|
|
|
57
59
|
}): Promise<{
|
|
58
60
|
textStream: AsyncIterable<string>;
|
|
59
61
|
canonicalModelId: string;
|
|
60
|
-
provider:
|
|
61
|
-
usage: Promise<LlmTokenUsage | null>;
|
|
62
|
-
lastError: () => unknown;
|
|
63
|
-
}>;
|
|
64
|
-
export declare function streamTextWithContext({ modelId, apiKeys, context, temperature, maxOutputTokens, timeoutMs, fetchImpl, forceOpenRouter, openaiBaseUrlOverride, anthropicBaseUrlOverride, googleBaseUrlOverride, xaiBaseUrlOverride, forceChatCompletions, }: {
|
|
65
|
-
modelId: string;
|
|
66
|
-
apiKeys: LlmApiKeys;
|
|
67
|
-
context: Context;
|
|
68
|
-
temperature?: number;
|
|
69
|
-
maxOutputTokens?: number;
|
|
70
|
-
timeoutMs: number;
|
|
71
|
-
fetchImpl: typeof fetch;
|
|
72
|
-
forceOpenRouter?: boolean;
|
|
73
|
-
openaiBaseUrlOverride?: string | null;
|
|
74
|
-
anthropicBaseUrlOverride?: string | null;
|
|
75
|
-
googleBaseUrlOverride?: string | null;
|
|
76
|
-
xaiBaseUrlOverride?: string | null;
|
|
77
|
-
forceChatCompletions?: boolean;
|
|
78
|
-
}): Promise<{
|
|
79
|
-
textStream: AsyncIterable<string>;
|
|
80
|
-
canonicalModelId: string;
|
|
81
|
-
provider: "xai" | "openai" | "google" | "anthropic" | "zai";
|
|
62
|
+
provider: LlmProvider;
|
|
82
63
|
usage: Promise<LlmTokenUsage | null>;
|
|
83
64
|
lastError: () => unknown;
|
|
84
65
|
}>;
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare const GITHUB_MODELS_BASE_URL = "https://models.github.ai/inference";
|
|
2
|
+
export declare const GITHUB_MODELS_API_VERSION = "2026-03-10";
|
|
3
|
+
export declare function resolveGitHubModelsApiKey(env: Record<string, string | undefined>): string | null;
|
|
4
|
+
export declare function resolveGitHubCopilotBackendModelId(model: string): string;
|
|
5
|
+
export declare function buildGitHubModelsHeaders(existing?: Record<string, string>): Record<string, string>;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { ConvertHtmlToMarkdown } from "@steipete/summarize-core/content";
|
|
2
2
|
import type { LlmTokenUsage } from "./generate-text.js";
|
|
3
|
+
import type { LlmProvider } from "./model-id.js";
|
|
3
4
|
export declare function createHtmlToMarkdownConverter({ modelId, forceOpenRouter, xaiApiKey, googleApiKey, openaiApiKey, openaiBaseUrlOverride, anthropicBaseUrlOverride, googleBaseUrlOverride, xaiBaseUrlOverride, anthropicApiKey, openrouterApiKey, fetchImpl, forceChatCompletions, retries, onRetry, onUsage, }: {
|
|
4
5
|
modelId: string;
|
|
5
6
|
forceOpenRouter?: boolean;
|
|
@@ -23,7 +24,7 @@ export declare function createHtmlToMarkdownConverter({ modelId, forceOpenRouter
|
|
|
23
24
|
}) => void;
|
|
24
25
|
onUsage?: (usage: {
|
|
25
26
|
model: string;
|
|
26
|
-
provider:
|
|
27
|
+
provider: LlmProvider;
|
|
27
28
|
usage: LlmTokenUsage | null;
|
|
28
29
|
}) => void;
|
|
29
30
|
}): ConvertHtmlToMarkdown;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
export { DEFAULT_AUTO_CLI_ORDER, DEFAULT_CLI_MODELS, envHasRequiredKey, getGatewayProviderProfile, isVideoUnderstandingCapableModelId, isVideoUnderstandingCapableProvider, parseCliProviderName, requiredEnvForCliProvider, requiredEnvForGatewayProvider, resolveOpenAiCompatibleClientConfigForProvider, resolveRequiredEnvForModelId, supportsDocumentAttachments, supportsStreaming, } from "./provider-profile.js";
|
|
2
|
+
export type { GatewayProvider, RequiredModelEnv } from "./provider-profile.js";
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { CliProvider } from "../config.js";
|
|
2
|
+
import type { OpenAiClientConfig } from "./providers/types.js";
|
|
3
|
+
export type GatewayProvider = "xai" | "openai" | "google" | "anthropic" | "zai" | "nvidia" | "github-copilot";
|
|
4
|
+
export type RequiredModelEnv = "XAI_API_KEY" | "OPENAI_API_KEY" | "NVIDIA_API_KEY" | "GEMINI_API_KEY" | "ANTHROPIC_API_KEY" | "OPENROUTER_API_KEY" | "Z_AI_API_KEY" | "GITHUB_TOKEN" | "CLI_CLAUDE" | "CLI_CODEX" | "CLI_GEMINI" | "CLI_AGENT" | "CLI_OPENCLAW" | "CLI_OPENCODE";
|
|
5
|
+
type GatewayProviderProfile = {
|
|
6
|
+
requiredEnv: RequiredModelEnv;
|
|
7
|
+
supportsDocuments: boolean;
|
|
8
|
+
supportsStreaming: boolean;
|
|
9
|
+
supportsVideoUnderstanding: boolean;
|
|
10
|
+
};
|
|
11
|
+
export declare const DEFAULT_CLI_MODELS: Record<CliProvider, string | null>;
|
|
12
|
+
export declare const DEFAULT_AUTO_CLI_ORDER: CliProvider[];
|
|
13
|
+
export declare function parseCliProviderName(raw: string): CliProvider | null;
|
|
14
|
+
export declare function requiredEnvForCliProvider(provider: CliProvider): RequiredModelEnv;
|
|
15
|
+
export declare function getGatewayProviderProfile(provider: GatewayProvider): GatewayProviderProfile;
|
|
16
|
+
export declare function requiredEnvForGatewayProvider(provider: GatewayProvider): RequiredModelEnv;
|
|
17
|
+
export declare function supportsDocumentAttachments(provider: GatewayProvider): boolean;
|
|
18
|
+
export declare function supportsStreaming(provider: GatewayProvider): boolean;
|
|
19
|
+
export declare function isVideoUnderstandingCapableProvider(provider: GatewayProvider): boolean;
|
|
20
|
+
export declare function envHasRequiredKey(env: Record<string, string | undefined>, requiredEnv: RequiredModelEnv): boolean;
|
|
21
|
+
export declare function resolveRequiredEnvForModelId(modelId: string): RequiredModelEnv;
|
|
22
|
+
export declare function isVideoUnderstandingCapableModelId(modelId: string): boolean;
|
|
23
|
+
export declare function resolveOpenAiCompatibleClientConfigForProvider({ provider, openaiApiKey, openrouterApiKey, forceOpenRouter, openaiBaseUrlOverride, forceChatCompletions, }: {
|
|
24
|
+
provider: "openai" | "zai" | "nvidia" | "github-copilot";
|
|
25
|
+
openaiApiKey: string | null;
|
|
26
|
+
openrouterApiKey: string | null;
|
|
27
|
+
forceOpenRouter?: boolean;
|
|
28
|
+
openaiBaseUrlOverride?: string | null;
|
|
29
|
+
forceChatCompletions?: boolean;
|
|
30
|
+
}): OpenAiClientConfig;
|
|
31
|
+
export {};
|