@steipete/summarize 0.11.1 → 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 +38 -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 +11 -11
|
@@ -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", "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
3
|
import type { UrlFlowContext } from "../run/flows/url/types.js";
|
|
4
|
-
import type { SlideImage, SlideSettings, SlideSourceKind } from "../slides/index.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
|
};
|
|
@@ -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,6 @@
|
|
|
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
4
|
export declare function buildHealthPayload(importMetaUrl?: string): {
|
|
5
5
|
ok: boolean;
|
|
6
6
|
pid: number;
|
|
@@ -15,4 +15,3 @@ export declare function runDaemonServer({ env, fetchImpl, config, port, signal,
|
|
|
15
15
|
onListening?: ((port: number) => void) | null;
|
|
16
16
|
onSessionEvent?: ((event: SessionEvent, sessionId: string) => void) | null;
|
|
17
17
|
}): 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,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,16 @@
|
|
|
1
|
+
import type { CliProvider } from "../config.js";
|
|
2
|
+
import type { LlmTokenUsage } from "./generate-text.js";
|
|
3
|
+
export type JsonCliProvider = Exclude<CliProvider, "codex">;
|
|
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 parseJsonProviderOutput(args: {
|
|
10
|
+
provider: JsonCliProvider;
|
|
11
|
+
stdout: string;
|
|
12
|
+
}): {
|
|
13
|
+
text: string;
|
|
14
|
+
usage: LlmTokenUsage | null;
|
|
15
|
+
costUsd: number | null;
|
|
16
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Prompt } from "./prompt.js";
|
|
2
|
+
import type { LlmTokenUsage } from "./types.js";
|
|
3
|
+
type ParsedModel = {
|
|
4
|
+
provider: "xai" | "openai" | "google" | "anthropic" | "zai" | "nvidia";
|
|
5
|
+
model: string;
|
|
6
|
+
canonical: string;
|
|
7
|
+
};
|
|
8
|
+
type DocumentResult = {
|
|
9
|
+
text: string;
|
|
10
|
+
canonicalModelId: string;
|
|
11
|
+
provider: ParsedModel["provider"];
|
|
12
|
+
usage: LlmTokenUsage | null;
|
|
13
|
+
};
|
|
14
|
+
export declare function maybeGenerateDocumentText(options: {
|
|
15
|
+
parsed: ParsedModel;
|
|
16
|
+
apiKeys: {
|
|
17
|
+
openaiApiKey: string | null;
|
|
18
|
+
googleApiKey: string | null;
|
|
19
|
+
anthropicApiKey: string | null;
|
|
20
|
+
openrouterApiKey: string | null;
|
|
21
|
+
};
|
|
22
|
+
prompt: Prompt;
|
|
23
|
+
maxOutputTokens?: number;
|
|
24
|
+
temperature?: number;
|
|
25
|
+
timeoutMs: number;
|
|
26
|
+
fetchImpl: typeof fetch;
|
|
27
|
+
forceOpenRouter?: boolean;
|
|
28
|
+
openaiBaseUrlOverride?: string | null;
|
|
29
|
+
anthropicBaseUrlOverride?: string | null;
|
|
30
|
+
googleBaseUrlOverride?: string | null;
|
|
31
|
+
forceChatCompletions?: boolean;
|
|
32
|
+
retryWithModelId: (modelId: string) => Promise<DocumentResult>;
|
|
33
|
+
}): Promise<DocumentResult | null>;
|
|
34
|
+
export {};
|
|
@@ -0,0 +1,25 @@
|
|
|
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 resolveEffectiveTemperature({ provider, model, temperature, }: {
|
|
20
|
+
provider: string;
|
|
21
|
+
model: string;
|
|
22
|
+
temperature?: number;
|
|
23
|
+
}): number | undefined;
|
|
24
|
+
export declare function resolveGoogleEmptyResponseFallbackModelId(modelId: string): string | null;
|
|
25
|
+
export declare function isGoogleEmptySummaryError(error: unknown): boolean;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Context } from "@mariozechner/pi-ai";
|
|
2
|
+
import type { LlmApiKeys } from "./generate-text.js";
|
|
3
|
+
import type { LlmTokenUsage } from "./types.js";
|
|
4
|
+
export type StreamTextWithContextArgs = {
|
|
5
|
+
modelId: string;
|
|
6
|
+
apiKeys: LlmApiKeys;
|
|
7
|
+
context: Context;
|
|
8
|
+
temperature?: number;
|
|
9
|
+
maxOutputTokens?: number;
|
|
10
|
+
timeoutMs: number;
|
|
11
|
+
fetchImpl: typeof fetch;
|
|
12
|
+
forceOpenRouter?: boolean;
|
|
13
|
+
openaiBaseUrlOverride?: string | null;
|
|
14
|
+
anthropicBaseUrlOverride?: string | null;
|
|
15
|
+
googleBaseUrlOverride?: string | null;
|
|
16
|
+
xaiBaseUrlOverride?: string | null;
|
|
17
|
+
forceChatCompletions?: boolean;
|
|
18
|
+
};
|
|
19
|
+
export type StreamTextResult = {
|
|
20
|
+
textStream: AsyncIterable<string>;
|
|
21
|
+
canonicalModelId: string;
|
|
22
|
+
provider: "xai" | "openai" | "google" | "anthropic" | "zai" | "nvidia";
|
|
23
|
+
usage: Promise<LlmTokenUsage | null>;
|
|
24
|
+
lastError: () => unknown;
|
|
25
|
+
};
|
|
26
|
+
export declare function streamTextWithContext({ modelId, apiKeys, context, temperature, maxOutputTokens, timeoutMs, fetchImpl, forceOpenRouter, openaiBaseUrlOverride, anthropicBaseUrlOverride, googleBaseUrlOverride, xaiBaseUrlOverride, forceChatCompletions, }: StreamTextWithContextArgs): Promise<StreamTextResult>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { Prompt } from "./prompt.js";
|
|
2
2
|
import type { LlmTokenUsage } from "./types.js";
|
|
3
|
-
|
|
3
|
+
export { streamTextWithContext } from "./generate-text-stream.js";
|
|
4
4
|
export type LlmApiKeys = {
|
|
5
5
|
xaiApiKey: string | null;
|
|
6
6
|
openaiApiKey: string | null;
|
|
@@ -18,7 +18,7 @@ type RetryNotice = {
|
|
|
18
18
|
delayMs: number;
|
|
19
19
|
error: unknown;
|
|
20
20
|
};
|
|
21
|
-
export declare function generateTextWithModelId({ modelId, apiKeys, prompt, temperature, maxOutputTokens, timeoutMs, fetchImpl, forceOpenRouter, openaiBaseUrlOverride, anthropicBaseUrlOverride, googleBaseUrlOverride, xaiBaseUrlOverride, forceChatCompletions, retries, onRetry, }: {
|
|
21
|
+
export declare function generateTextWithModelId({ modelId, apiKeys, prompt, temperature, maxOutputTokens, timeoutMs, fetchImpl, forceOpenRouter, openaiBaseUrlOverride, anthropicBaseUrlOverride, googleBaseUrlOverride, xaiBaseUrlOverride, zaiBaseUrlOverride, forceChatCompletions, retries, onRetry, }: {
|
|
22
22
|
modelId: string;
|
|
23
23
|
apiKeys: LlmApiKeys;
|
|
24
24
|
prompt: Prompt;
|
|
@@ -31,13 +31,14 @@ export declare function generateTextWithModelId({ modelId, apiKeys, prompt, temp
|
|
|
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: RetryNotice) => void;
|
|
37
38
|
}): Promise<{
|
|
38
39
|
text: string;
|
|
39
40
|
canonicalModelId: string;
|
|
40
|
-
provider: "xai" | "openai" | "google" | "anthropic" | "zai";
|
|
41
|
+
provider: "xai" | "openai" | "google" | "anthropic" | "zai" | "nvidia";
|
|
41
42
|
usage: LlmTokenUsage | null;
|
|
42
43
|
}>;
|
|
43
44
|
export declare function streamTextWithModelId({ modelId, apiKeys, prompt, temperature, maxOutputTokens, timeoutMs, fetchImpl, forceOpenRouter, openaiBaseUrlOverride, anthropicBaseUrlOverride, googleBaseUrlOverride, xaiBaseUrlOverride, forceChatCompletions, }: {
|
|
@@ -57,28 +58,7 @@ export declare function streamTextWithModelId({ modelId, apiKeys, prompt, temper
|
|
|
57
58
|
}): Promise<{
|
|
58
59
|
textStream: AsyncIterable<string>;
|
|
59
60
|
canonicalModelId: string;
|
|
60
|
-
provider: "xai" | "openai" | "google" | "anthropic" | "zai";
|
|
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";
|
|
61
|
+
provider: "xai" | "openai" | "google" | "anthropic" | "zai" | "nvidia";
|
|
82
62
|
usage: Promise<LlmTokenUsage | null>;
|
|
83
63
|
lastError: () => unknown;
|
|
84
64
|
}>;
|
|
@@ -23,7 +23,7 @@ export declare function createHtmlToMarkdownConverter({ modelId, forceOpenRouter
|
|
|
23
23
|
}) => void;
|
|
24
24
|
onUsage?: (usage: {
|
|
25
25
|
model: string;
|
|
26
|
-
provider: "xai" | "openai" | "google" | "anthropic" | "zai";
|
|
26
|
+
provider: "xai" | "openai" | "google" | "anthropic" | "zai" | "nvidia";
|
|
27
27
|
usage: LlmTokenUsage | null;
|
|
28
28
|
}) => void;
|
|
29
29
|
}): 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";
|
|
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" | "CLI_CLAUDE" | "CLI_CODEX" | "CLI_GEMINI" | "CLI_AGENT";
|
|
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>;
|
|
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";
|
|
25
|
+
openaiApiKey: string | null;
|
|
26
|
+
openrouterApiKey: string | null;
|
|
27
|
+
forceOpenRouter?: boolean;
|
|
28
|
+
openaiBaseUrlOverride?: string | null;
|
|
29
|
+
forceChatCompletions?: boolean;
|
|
30
|
+
}): OpenAiClientConfig;
|
|
31
|
+
export {};
|
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import type { Context } from "@mariozechner/pi-ai";
|
|
2
2
|
import type { Attachment } from "../attachments.js";
|
|
3
3
|
import type { LlmTokenUsage } from "../types.js";
|
|
4
|
+
type GoogleAssistantLike = {
|
|
5
|
+
stopReason?: string;
|
|
6
|
+
errorMessage?: string;
|
|
7
|
+
};
|
|
8
|
+
export declare function normalizeGoogleAssistantError(response: GoogleAssistantLike | null | undefined, modelId: string): Error | null;
|
|
4
9
|
export declare function completeGoogleText({ modelId, apiKey, context, temperature, maxOutputTokens, signal, googleBaseUrlOverride, }: {
|
|
5
10
|
modelId: string;
|
|
6
11
|
apiKey: string;
|
|
@@ -27,3 +32,4 @@ export declare function completeGoogleDocument({ modelId, apiKey, promptText, do
|
|
|
27
32
|
text: string;
|
|
28
33
|
usage: LlmTokenUsage | null;
|
|
29
34
|
}>;
|
|
35
|
+
export {};
|
|
@@ -10,6 +10,11 @@ export declare function resolveZaiModel({ modelId, context, openaiBaseUrlOverrid
|
|
|
10
10
|
context: Context;
|
|
11
11
|
openaiBaseUrlOverride?: string | null;
|
|
12
12
|
}): Model<Api>;
|
|
13
|
+
export declare function resolveNvidiaModel({ modelId, context, openaiBaseUrlOverride, }: {
|
|
14
|
+
modelId: string;
|
|
15
|
+
context: Context;
|
|
16
|
+
openaiBaseUrlOverride?: string | null;
|
|
17
|
+
}): Model<Api>;
|
|
13
18
|
export declare function resolveXaiModel({ modelId, context, xaiBaseUrlOverride, }: {
|
|
14
19
|
modelId: string;
|
|
15
20
|
context: Context;
|
|
@@ -30,7 +30,7 @@ export declare function createTranscriptToMarkdownConverter({ modelId, forceOpen
|
|
|
30
30
|
}) => void;
|
|
31
31
|
onUsage?: (usage: {
|
|
32
32
|
model: string;
|
|
33
|
-
provider: "xai" | "openai" | "google" | "anthropic" | "zai";
|
|
33
|
+
provider: "xai" | "openai" | "google" | "anthropic" | "zai" | "nvidia";
|
|
34
34
|
usage: LlmTokenUsage | null;
|
|
35
35
|
}) => void;
|
|
36
36
|
}): ConvertTranscriptToMarkdown;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import type { CliProvider, SummarizeConfig } from "./config.js";
|
|
2
|
+
export type ResolvedCliAutoFallbackConfig = {
|
|
3
|
+
enabled: boolean;
|
|
4
|
+
onlyWhenNoApiKeys: boolean;
|
|
5
|
+
order: CliProvider[];
|
|
6
|
+
};
|
|
7
|
+
export declare function resolveCliAutoFallbackConfig(config: SummarizeConfig | null): ResolvedCliAutoFallbackConfig;
|
|
8
|
+
export declare function prependCliCandidates({ candidates, config, env, isImplicitAutoSelection, allowAutoCliFallback, lastSuccessfulCliProvider, }: {
|
|
9
|
+
candidates: string[];
|
|
10
|
+
config: SummarizeConfig | null;
|
|
11
|
+
env: Record<string, string | undefined>;
|
|
12
|
+
isImplicitAutoSelection: boolean;
|
|
13
|
+
allowAutoCliFallback: boolean;
|
|
14
|
+
lastSuccessfulCliProvider: CliProvider | null;
|
|
15
|
+
}): string[];
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { AutoRule, AutoRuleKind, SummarizeConfig } from "./config.js";
|
|
2
|
+
export declare const DEFAULT_RULES: AutoRule[];
|
|
3
|
+
export declare function resolveRuleCandidates({ kind, promptTokens, config, }: {
|
|
4
|
+
kind: AutoRuleKind;
|
|
5
|
+
promptTokens: number | null;
|
|
6
|
+
config: SummarizeConfig | null;
|
|
7
|
+
}): string[];
|