@steipete/summarize 0.10.0 → 0.11.1
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 +80 -28
- package/README.md +115 -30
- package/dist/cli.js +1 -1
- package/dist/esm/cache.js +67 -65
- package/dist/esm/cache.js.map +1 -1
- package/dist/esm/cli-main.js +27 -27
- package/dist/esm/cli-main.js.map +1 -1
- package/dist/esm/cli.js +2 -2
- package/dist/esm/cli.js.map +1 -1
- package/dist/esm/config.js +310 -166
- package/dist/esm/config.js.map +1 -1
- package/dist/esm/content/asset.js +53 -50
- package/dist/esm/content/asset.js.map +1 -1
- package/dist/esm/content/index.js +1 -1
- package/dist/esm/content/index.js.map +1 -1
- package/dist/esm/costs.js +1 -1
- package/dist/esm/costs.js.map +1 -1
- package/dist/esm/daemon/agent.js +165 -164
- package/dist/esm/daemon/agent.js.map +1 -1
- package/dist/esm/daemon/auto-mode.js +3 -3
- package/dist/esm/daemon/auto-mode.js.map +1 -1
- package/dist/esm/daemon/chat.js +16 -14
- package/dist/esm/daemon/chat.js.map +1 -1
- package/dist/esm/daemon/cli-entrypoint.js +72 -0
- package/dist/esm/daemon/cli-entrypoint.js.map +1 -0
- package/dist/esm/daemon/cli.js +63 -87
- package/dist/esm/daemon/cli.js.map +1 -1
- package/dist/esm/daemon/config.js +15 -15
- package/dist/esm/daemon/config.js.map +1 -1
- package/dist/esm/daemon/constants.js +6 -6
- package/dist/esm/daemon/constants.js.map +1 -1
- package/dist/esm/daemon/env-merge.js.map +1 -1
- package/dist/esm/daemon/env-snapshot.js +36 -31
- package/dist/esm/daemon/env-snapshot.js.map +1 -1
- package/dist/esm/daemon/flow-context.js +59 -28
- package/dist/esm/daemon/flow-context.js.map +1 -1
- package/dist/esm/daemon/launchd.js +100 -55
- package/dist/esm/daemon/launchd.js.map +1 -1
- package/dist/esm/daemon/meta.js +5 -5
- package/dist/esm/daemon/meta.js.map +1 -1
- package/dist/esm/daemon/models.js +54 -31
- package/dist/esm/daemon/models.js.map +1 -1
- package/dist/esm/daemon/process-registry.js +15 -15
- package/dist/esm/daemon/process-registry.js.map +1 -1
- package/dist/esm/daemon/schtasks.js +42 -42
- package/dist/esm/daemon/schtasks.js.map +1 -1
- package/dist/esm/daemon/server.js +248 -244
- package/dist/esm/daemon/server.js.map +1 -1
- package/dist/esm/daemon/summarize-progress.js +11 -11
- package/dist/esm/daemon/summarize-progress.js.map +1 -1
- package/dist/esm/daemon/summarize.js +29 -29
- package/dist/esm/daemon/summarize.js.map +1 -1
- package/dist/esm/daemon/systemd.js +47 -47
- package/dist/esm/daemon/systemd.js.map +1 -1
- package/dist/esm/firecrawl.js +12 -12
- package/dist/esm/firecrawl.js.map +1 -1
- package/dist/esm/flags.js +32 -32
- package/dist/esm/flags.js.map +1 -1
- package/dist/esm/index.js +3 -3
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/language.js +1 -1
- package/dist/esm/language.js.map +1 -1
- package/dist/esm/llm/cli.js +128 -64
- package/dist/esm/llm/cli.js.map +1 -1
- package/dist/esm/llm/errors.js +1 -1
- package/dist/esm/llm/errors.js.map +1 -1
- package/dist/esm/llm/generate-text.js +107 -98
- package/dist/esm/llm/generate-text.js.map +1 -1
- package/dist/esm/llm/google-models.js +17 -17
- package/dist/esm/llm/google-models.js.map +1 -1
- package/dist/esm/llm/html-to-markdown.js +3 -3
- package/dist/esm/llm/html-to-markdown.js.map +1 -1
- package/dist/esm/llm/model-id.js +38 -16
- package/dist/esm/llm/model-id.js.map +1 -1
- package/dist/esm/llm/prompt.js +5 -5
- package/dist/esm/llm/prompt.js.map +1 -1
- package/dist/esm/llm/providers/anthropic.js +33 -33
- package/dist/esm/llm/providers/anthropic.js.map +1 -1
- package/dist/esm/llm/providers/google.js +19 -19
- package/dist/esm/llm/providers/google.js.map +1 -1
- package/dist/esm/llm/providers/models.js +30 -30
- package/dist/esm/llm/providers/models.js.map +1 -1
- package/dist/esm/llm/providers/openai.js +35 -34
- package/dist/esm/llm/providers/openai.js.map +1 -1
- package/dist/esm/llm/providers/shared.js +8 -8
- package/dist/esm/llm/providers/shared.js.map +1 -1
- package/dist/esm/llm/transcript-to-markdown.js +9 -5
- package/dist/esm/llm/transcript-to-markdown.js.map +1 -1
- package/dist/esm/llm/usage.js +18 -18
- package/dist/esm/llm/usage.js.map +1 -1
- package/dist/esm/logging/daemon.js +21 -21
- package/dist/esm/logging/daemon.js.map +1 -1
- package/dist/esm/logging/ring-file.js +5 -5
- package/dist/esm/logging/ring-file.js.map +1 -1
- package/dist/esm/markitdown.js +21 -19
- package/dist/esm/markitdown.js.map +1 -1
- package/dist/esm/media-cache.js +39 -39
- package/dist/esm/media-cache.js.map +1 -1
- package/dist/esm/model-auto.js +175 -106
- package/dist/esm/model-auto.js.map +1 -1
- package/dist/esm/model-spec.js +52 -42
- package/dist/esm/model-spec.js.map +1 -1
- package/dist/esm/pricing/litellm.js +4 -4
- package/dist/esm/pricing/litellm.js.map +1 -1
- package/dist/esm/processes.js +1 -1
- package/dist/esm/processes.js.map +1 -1
- package/dist/esm/prompts/index.js +1 -1
- package/dist/esm/prompts/index.js.map +1 -1
- package/dist/esm/refresh-free.js +81 -81
- package/dist/esm/refresh-free.js.map +1 -1
- package/dist/esm/run/attachments.js +47 -44
- package/dist/esm/run/attachments.js.map +1 -1
- package/dist/esm/run/bird.js +26 -26
- package/dist/esm/run/bird.js.map +1 -1
- package/dist/esm/run/cache-state.js +7 -7
- package/dist/esm/run/cache-state.js.map +1 -1
- package/dist/esm/run/cli-fallback-state.js +45 -0
- package/dist/esm/run/cli-fallback-state.js.map +1 -0
- package/dist/esm/run/cli-preflight.js +24 -24
- package/dist/esm/run/cli-preflight.js.map +1 -1
- package/dist/esm/run/constants.js +12 -12
- package/dist/esm/run/constants.js.map +1 -1
- package/dist/esm/run/cookies/twitter.js +47 -47
- package/dist/esm/run/cookies/twitter.js.map +1 -1
- package/dist/esm/run/env.js +21 -15
- package/dist/esm/run/env.js.map +1 -1
- package/dist/esm/run/fetch-with-timeout.js +4 -4
- package/dist/esm/run/fetch-with-timeout.js.map +1 -1
- package/dist/esm/run/finish-line.js +68 -68
- package/dist/esm/run/finish-line.js.map +1 -1
- package/dist/esm/run/flows/asset/extract.js +15 -15
- package/dist/esm/run/flows/asset/extract.js.map +1 -1
- package/dist/esm/run/flows/asset/input.js +47 -66
- package/dist/esm/run/flows/asset/input.js.map +1 -1
- package/dist/esm/run/flows/asset/media-policy.js +1 -1
- package/dist/esm/run/flows/asset/media-policy.js.map +1 -1
- package/dist/esm/run/flows/asset/media.js +49 -40
- package/dist/esm/run/flows/asset/media.js.map +1 -1
- package/dist/esm/run/flows/asset/output.js +12 -12
- package/dist/esm/run/flows/asset/output.js.map +1 -1
- package/dist/esm/run/flows/asset/preprocess.js +79 -44
- package/dist/esm/run/flows/asset/preprocess.js.map +1 -1
- package/dist/esm/run/flows/asset/summary.js +173 -106
- package/dist/esm/run/flows/asset/summary.js.map +1 -1
- package/dist/esm/run/flows/url/extract.js +26 -26
- package/dist/esm/run/flows/url/extract.js.map +1 -1
- package/dist/esm/run/flows/url/flow.js +104 -98
- package/dist/esm/run/flows/url/flow.js.map +1 -1
- package/dist/esm/run/flows/url/markdown.js +57 -57
- package/dist/esm/run/flows/url/markdown.js.map +1 -1
- package/dist/esm/run/flows/url/slides-output.js +61 -59
- package/dist/esm/run/flows/url/slides-output.js.map +1 -1
- package/dist/esm/run/flows/url/slides-text.js +85 -85
- package/dist/esm/run/flows/url/slides-text.js.map +1 -1
- package/dist/esm/run/flows/url/summary.js +174 -107
- package/dist/esm/run/flows/url/summary.js.map +1 -1
- package/dist/esm/run/format.js +10 -10
- package/dist/esm/run/format.js.map +1 -1
- package/dist/esm/run/help.js +141 -135
- package/dist/esm/run/help.js.map +1 -1
- package/dist/esm/run/logging.js +10 -10
- package/dist/esm/run/logging.js.map +1 -1
- package/dist/esm/run/markdown.js +12 -12
- package/dist/esm/run/markdown.js.map +1 -1
- package/dist/esm/run/media-cache-state.js +5 -5
- package/dist/esm/run/media-cache-state.js.map +1 -1
- package/dist/esm/run/model-attempts.js.map +1 -1
- package/dist/esm/run/openrouter.js +11 -11
- package/dist/esm/run/openrouter.js.map +1 -1
- package/dist/esm/run/progress.js +1 -1
- package/dist/esm/run/progress.js.map +1 -1
- package/dist/esm/run/run-config.js +16 -16
- package/dist/esm/run/run-config.js.map +1 -1
- package/dist/esm/run/run-context.js +2 -2
- package/dist/esm/run/run-context.js.map +1 -1
- package/dist/esm/run/run-env.js +55 -54
- package/dist/esm/run/run-env.js.map +1 -1
- package/dist/esm/run/run-input.js +3 -3
- package/dist/esm/run/run-input.js.map +1 -1
- package/dist/esm/run/run-metrics.js +16 -16
- package/dist/esm/run/run-metrics.js.map +1 -1
- package/dist/esm/run/run-models.js +28 -23
- package/dist/esm/run/run-models.js.map +1 -1
- package/dist/esm/run/run-output.js +3 -3
- package/dist/esm/run/run-output.js.map +1 -1
- package/dist/esm/run/run-settings.js +83 -34
- package/dist/esm/run/run-settings.js.map +1 -1
- package/dist/esm/run/run-stream.js +4 -4
- package/dist/esm/run/run-stream.js.map +1 -1
- package/dist/esm/run/runner.js +166 -127
- package/dist/esm/run/runner.js.map +1 -1
- package/dist/esm/run/slides-cli.js +43 -42
- package/dist/esm/run/slides-cli.js.map +1 -1
- package/dist/esm/run/slides-render.js +36 -36
- package/dist/esm/run/slides-render.js.map +1 -1
- package/dist/esm/run/stdin-temp-file.js +77 -0
- package/dist/esm/run/stdin-temp-file.js.map +1 -0
- package/dist/esm/run/stream-output.js +7 -7
- package/dist/esm/run/stream-output.js.map +1 -1
- package/dist/esm/run/streaming.js +16 -16
- package/dist/esm/run/streaming.js.map +1 -1
- package/dist/esm/run/summary-engine.js +57 -51
- package/dist/esm/run/summary-engine.js.map +1 -1
- package/dist/esm/run/summary-llm.js +3 -3
- package/dist/esm/run/summary-llm.js.map +1 -1
- package/dist/esm/run/terminal.js +4 -4
- package/dist/esm/run/terminal.js.map +1 -1
- package/dist/esm/run/tips.js +2 -2
- package/dist/esm/run/tips.js.map +1 -1
- package/dist/esm/run/transcriber-cli.js +49 -49
- package/dist/esm/run/transcriber-cli.js.map +1 -1
- package/dist/esm/run.js +1 -1
- package/dist/esm/run.js.map +1 -1
- package/dist/esm/shared/contracts.js +1 -1
- package/dist/esm/shared/contracts.js.map +1 -1
- package/dist/esm/shared/sse-events.js +16 -16
- package/dist/esm/shared/sse-events.js.map +1 -1
- package/dist/esm/shared/streaming-merge.js +3 -3
- package/dist/esm/shared/streaming-merge.js.map +1 -1
- package/dist/esm/slides/extract.js +258 -249
- package/dist/esm/slides/extract.js.map +1 -1
- package/dist/esm/slides/index.js +3 -3
- package/dist/esm/slides/index.js.map +1 -1
- package/dist/esm/slides/settings.js +14 -14
- package/dist/esm/slides/settings.js.map +1 -1
- package/dist/esm/slides/store.js +9 -9
- package/dist/esm/slides/store.js.map +1 -1
- package/dist/esm/tty/format.js +13 -13
- package/dist/esm/tty/format.js.map +1 -1
- package/dist/esm/tty/osc-progress.js +1 -1
- package/dist/esm/tty/osc-progress.js.map +1 -1
- package/dist/esm/tty/progress/fetch-html.js +14 -14
- package/dist/esm/tty/progress/fetch-html.js.map +1 -1
- package/dist/esm/tty/progress/transcript.js +70 -62
- package/dist/esm/tty/progress/transcript.js.map +1 -1
- package/dist/esm/tty/spinner.js +20 -9
- package/dist/esm/tty/spinner.js.map +1 -1
- package/dist/esm/tty/theme.js +92 -92
- package/dist/esm/tty/theme.js.map +1 -1
- package/dist/esm/tty/website-progress.js +32 -32
- package/dist/esm/tty/website-progress.js.map +1 -1
- package/dist/esm/version.js +29 -29
- package/dist/esm/version.js.map +1 -1
- package/dist/types/cache.d.ts +6 -6
- package/dist/types/config.d.ts +49 -7
- package/dist/types/content/asset.d.ts +8 -6
- package/dist/types/content/index.d.ts +1 -1
- package/dist/types/costs.d.ts +3 -3
- package/dist/types/daemon/agent.d.ts +1 -1
- package/dist/types/daemon/auto-mode.d.ts +3 -3
- package/dist/types/daemon/chat.d.ts +2 -2
- package/dist/types/daemon/cli-entrypoint.d.ts +2 -0
- package/dist/types/daemon/config.d.ts +2 -2
- package/dist/types/daemon/env-merge.d.ts +1 -1
- package/dist/types/daemon/env-snapshot.d.ts +1 -1
- package/dist/types/daemon/flow-context.d.ts +7 -7
- package/dist/types/daemon/launchd.d.ts +8 -0
- package/dist/types/daemon/models.d.ts +6 -2
- package/dist/types/daemon/process-registry.d.ts +5 -5
- package/dist/types/daemon/server.d.ts +2 -2
- package/dist/types/daemon/summarize-progress.d.ts +1 -1
- package/dist/types/daemon/summarize.d.ts +7 -7
- package/dist/types/firecrawl.d.ts +1 -1
- package/dist/types/flags.d.ts +11 -11
- package/dist/types/index.d.ts +4 -4
- package/dist/types/language.d.ts +1 -1
- package/dist/types/llm/attachments.d.ts +1 -1
- package/dist/types/llm/cli.d.ts +3 -3
- package/dist/types/llm/generate-text.d.ts +7 -7
- package/dist/types/llm/html-to-markdown.d.ts +3 -3
- package/dist/types/llm/model-id.d.ts +1 -1
- package/dist/types/llm/prompt.d.ts +2 -2
- package/dist/types/llm/providers/anthropic.d.ts +3 -3
- package/dist/types/llm/providers/google.d.ts +3 -3
- package/dist/types/llm/providers/models.d.ts +2 -2
- package/dist/types/llm/providers/openai.d.ts +4 -4
- package/dist/types/llm/providers/shared.d.ts +2 -2
- package/dist/types/llm/transcript-to-markdown.d.ts +4 -2
- package/dist/types/llm/usage.d.ts +1 -1
- package/dist/types/logging/daemon.d.ts +4 -4
- package/dist/types/markitdown.d.ts +1 -1
- package/dist/types/media-cache.d.ts +2 -2
- package/dist/types/model-auto.d.ts +14 -4
- package/dist/types/model-spec.d.ts +10 -10
- package/dist/types/pricing/litellm.d.ts +1 -1
- package/dist/types/processes.d.ts +1 -1
- package/dist/types/prompts/index.d.ts +1 -1
- package/dist/types/run/attachments.d.ts +7 -7
- package/dist/types/run/bird.d.ts +2 -2
- package/dist/types/run/cache-state.d.ts +2 -2
- package/dist/types/run/cli-fallback-state.d.ts +6 -0
- package/dist/types/run/constants.d.ts +1 -1
- package/dist/types/run/cookies/twitter.d.ts +1 -1
- package/dist/types/run/env.d.ts +1 -1
- package/dist/types/run/finish-line.d.ts +5 -5
- package/dist/types/run/flows/asset/extract.d.ts +4 -4
- package/dist/types/run/flows/asset/input.d.ts +9 -3
- package/dist/types/run/flows/asset/media.d.ts +1 -1
- package/dist/types/run/flows/asset/output.d.ts +5 -5
- package/dist/types/run/flows/asset/preprocess.d.ts +23 -17
- package/dist/types/run/flows/asset/summary.d.ts +19 -17
- package/dist/types/run/flows/url/extract.d.ts +1 -1
- package/dist/types/run/flows/url/flow.d.ts +1 -1
- package/dist/types/run/flows/url/markdown.d.ts +6 -6
- package/dist/types/run/flows/url/slides-output.d.ts +7 -7
- package/dist/types/run/flows/url/slides-text.d.ts +9 -9
- package/dist/types/run/flows/url/summary.d.ts +11 -11
- package/dist/types/run/flows/url/types.d.ts +26 -22
- package/dist/types/run/format.d.ts +3 -3
- package/dist/types/run/help.d.ts +1 -1
- package/dist/types/run/media-cache-state.d.ts +2 -2
- package/dist/types/run/model-attempts.d.ts +1 -1
- package/dist/types/run/run-config.d.ts +4 -4
- package/dist/types/run/run-context.d.ts +3 -1
- package/dist/types/run/run-env.d.ts +3 -1
- package/dist/types/run/run-input.d.ts +2 -2
- package/dist/types/run/run-metrics.d.ts +3 -3
- package/dist/types/run/run-models.d.ts +3 -2
- package/dist/types/run/run-output.d.ts +1 -1
- package/dist/types/run/run-settings.d.ts +15 -6
- package/dist/types/run/run-stream.d.ts +2 -2
- package/dist/types/run/runner.d.ts +3 -2
- package/dist/types/run/slides-render.d.ts +4 -4
- package/dist/types/run/stdin-temp-file.d.ts +9 -0
- package/dist/types/run/stream-output.d.ts +1 -1
- package/dist/types/run/streaming.d.ts +4 -4
- package/dist/types/run/summary-engine.d.ts +11 -11
- package/dist/types/run/summary-llm.d.ts +5 -5
- package/dist/types/run/types.d.ts +4 -4
- package/dist/types/run.d.ts +1 -1
- package/dist/types/shared/contracts.d.ts +2 -2
- package/dist/types/shared/sse-events.d.ts +9 -9
- package/dist/types/slides/extract.d.ts +5 -4
- package/dist/types/slides/index.d.ts +5 -5
- package/dist/types/slides/store.d.ts +2 -2
- package/dist/types/slides/types.d.ts +2 -2
- package/dist/types/tty/osc-progress.d.ts +5 -5
- package/dist/types/tty/progress/fetch-html.d.ts +3 -3
- package/dist/types/tty/progress/transcript.d.ts +3 -3
- package/dist/types/tty/spinner.d.ts +2 -2
- package/dist/types/tty/theme.d.ts +2 -2
- package/dist/types/tty/website-progress.d.ts +3 -3
- package/dist/types/version.d.ts +1 -1
- package/docs/agent.md +38 -4
- package/docs/assets/site.js +46 -46
- package/docs/chrome-extension.md +11 -5
- package/docs/cli.md +59 -13
- package/docs/config.md +59 -10
- package/docs/extract-only.md +2 -0
- package/docs/index.html +33 -14
- package/docs/llm.md +7 -4
- package/docs/media.md +5 -4
- package/docs/model-auto.md +3 -2
- package/docs/nvidia-onnx-transcription.md +3 -3
- package/docs/openai.md +1 -1
- package/docs/releasing.md +3 -0
- package/docs/site/404.html +4 -1
- package/docs/site/assets/site.js +46 -46
- package/docs/site/docs/chrome-extension.html +18 -6
- package/docs/site/docs/config.html +29 -8
- package/docs/site/docs/extract-only.html +16 -4
- package/docs/site/docs/firecrawl.html +12 -3
- package/docs/site/docs/index.html +35 -6
- package/docs/site/docs/llm.html +19 -5
- package/docs/site/docs/openai.html +18 -5
- package/docs/site/docs/website.html +29 -9
- package/docs/site/docs/youtube.html +12 -3
- package/docs/site/index.html +33 -14
- package/docs/slides.md +13 -5
- package/docs/smoketest.md +29 -20
- package/docs/timestamps.md +21 -0
- package/docs/website.md +2 -1
- package/docs/youtube.md +4 -0
- package/package.json +36 -35
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { ExtractedLinkContent, MediaCache } from
|
|
2
|
-
import type { SlideSettings } from
|
|
3
|
-
import type { SlideExtractionResult, SlideImage, SlideSource, SlideSourceKind } from
|
|
1
|
+
import type { ExtractedLinkContent, MediaCache } from "../content/index.js";
|
|
2
|
+
import type { SlideSettings } from "./settings.js";
|
|
3
|
+
import type { SlideExtractionResult, SlideImage, SlideSource, SlideSourceKind } from "./types.js";
|
|
4
4
|
type ExtractSlidesArgs = {
|
|
5
5
|
source: SlideSource;
|
|
6
6
|
settings: SlideSettings;
|
|
@@ -9,6 +9,7 @@ type ExtractSlidesArgs = {
|
|
|
9
9
|
env: Record<string, string | undefined>;
|
|
10
10
|
timeoutMs: number;
|
|
11
11
|
ytDlpPath: string | null;
|
|
12
|
+
ytDlpCookiesFromBrowser?: string | null;
|
|
12
13
|
ffmpegPath: string | null;
|
|
13
14
|
tesseractPath: string | null;
|
|
14
15
|
hooks?: {
|
|
@@ -32,7 +33,7 @@ export declare function resolveSlideSource({ url, extracted, }: {
|
|
|
32
33
|
extracted: ExtractedLinkContent;
|
|
33
34
|
}): SlideSource | null;
|
|
34
35
|
export declare function resolveSlideSourceFromUrl(url: string): SlideSource | null;
|
|
35
|
-
export declare function extractSlidesForSource({ source, settings, noCache, mediaCache, env, timeoutMs, ytDlpPath, ffmpegPath, tesseractPath, hooks, }: ExtractSlidesArgs): Promise<SlideExtractionResult>;
|
|
36
|
+
export declare function extractSlidesForSource({ source, settings, noCache, mediaCache, env, timeoutMs, ytDlpPath, ytDlpCookiesFromBrowser, ffmpegPath, tesseractPath, hooks, }: ExtractSlidesArgs): Promise<SlideExtractionResult>;
|
|
36
37
|
export declare function parseShowinfoTimestamp(line: string): number | null;
|
|
37
38
|
export declare function resolveExtractedTimestamp({ requested, actual, seekBase, }: {
|
|
38
39
|
requested: number;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { extractSlidesForSource, parseShowinfoTimestamp, resolveExtractedTimestamp, resolveSlideSource, resolveSlideSourceFromUrl, } from
|
|
2
|
-
export type { SlideSettings, SlideSettingsInput } from
|
|
3
|
-
export { resolveSlideSettings } from
|
|
4
|
-
export { buildSlidesDirId, readSlidesCacheIfValid, resolveSlideImagePath, resolveSlidesDir, serializeSlideImagePath, validateSlidesCache, } from
|
|
5
|
-
export type { SlideAutoTune, SlideExtractionResult, SlideImage, SlideSource, SlideSourceKind, } from
|
|
1
|
+
export { extractSlidesForSource, parseShowinfoTimestamp, resolveExtractedTimestamp, resolveSlideSource, resolveSlideSourceFromUrl, } from "./extract.js";
|
|
2
|
+
export type { SlideSettings, SlideSettingsInput } from "./settings.js";
|
|
3
|
+
export { resolveSlideSettings } from "./settings.js";
|
|
4
|
+
export { buildSlidesDirId, readSlidesCacheIfValid, resolveSlideImagePath, resolveSlidesDir, serializeSlideImagePath, validateSlidesCache, } from "./store.js";
|
|
5
|
+
export type { SlideAutoTune, SlideExtractionResult, SlideImage, SlideSource, SlideSourceKind, } from "./types.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { SlideSettings } from
|
|
2
|
-
import type { SlideExtractionResult, SlideSource } from
|
|
1
|
+
import type { SlideSettings } from "./settings.js";
|
|
2
|
+
import type { SlideExtractionResult, SlideSource } from "./types.js";
|
|
3
3
|
export declare function resolveSlidesDir(outputDir: string, sourceId: string): string;
|
|
4
4
|
export declare function buildSlidesDirId(slidesDir: string): string;
|
|
5
5
|
export declare function resolveSlideImagePath(slidesDir: string, imagePath: string): string | null;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export type SlideSourceKind =
|
|
1
|
+
export type SlideSourceKind = "youtube" | "direct";
|
|
2
2
|
export type SlideSource = {
|
|
3
3
|
url: string;
|
|
4
4
|
kind: SlideSourceKind;
|
|
@@ -20,7 +20,7 @@ export type SlideAutoTune = {
|
|
|
20
20
|
enabled: boolean;
|
|
21
21
|
chosenThreshold: number;
|
|
22
22
|
confidence: number;
|
|
23
|
-
strategy:
|
|
23
|
+
strategy: "hash" | "none";
|
|
24
24
|
};
|
|
25
25
|
export type SlideExtractionResult = {
|
|
26
26
|
sourceUrl: string;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import type { OscProgressController } from
|
|
2
|
-
export type { OscProgressController, OscProgressOptions, OscProgressSupportOptions, OscProgressTerminator, } from
|
|
3
|
-
export declare function createOscProgressController(options: import(
|
|
4
|
-
export declare function startOscProgress(options: import(
|
|
5
|
-
export declare function supportsOscProgress(env: Record<string, string | undefined>, isTty: boolean, options?: import(
|
|
1
|
+
import type { OscProgressController } from "osc-progress";
|
|
2
|
+
export type { OscProgressController, OscProgressOptions, OscProgressSupportOptions, OscProgressTerminator, } from "osc-progress";
|
|
3
|
+
export declare function createOscProgressController(options: import("osc-progress").OscProgressOptions): OscProgressController;
|
|
4
|
+
export declare function startOscProgress(options: import("osc-progress").OscProgressOptions): () => void;
|
|
5
|
+
export declare function supportsOscProgress(env: Record<string, string | undefined>, isTty: boolean, options?: import("osc-progress").OscProgressSupportOptions): boolean;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { LinkPreviewProgressEvent } from
|
|
2
|
-
import type { OscProgressController } from
|
|
3
|
-
import type { ThemeRenderer } from
|
|
1
|
+
import type { LinkPreviewProgressEvent } from "@steipete/summarize-core/content";
|
|
2
|
+
import type { OscProgressController } from "../osc-progress.js";
|
|
3
|
+
import type { ThemeRenderer } from "../theme.js";
|
|
4
4
|
export declare function createFetchHtmlProgressRenderer({ spinner, oscProgress, theme, }: {
|
|
5
5
|
spinner: {
|
|
6
6
|
setText: (text: string) => void;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { LinkPreviewProgressEvent } from
|
|
2
|
-
import type { OscProgressController } from
|
|
3
|
-
import type { ThemeRenderer } from
|
|
1
|
+
import type { LinkPreviewProgressEvent } from "@steipete/summarize-core/content";
|
|
2
|
+
import type { OscProgressController } from "../osc-progress.js";
|
|
3
|
+
import type { ThemeRenderer } from "../theme.js";
|
|
4
4
|
export declare function createTranscriptProgressRenderer({ spinner, oscProgress, theme, }: {
|
|
5
5
|
spinner: {
|
|
6
6
|
setText: (text: string) => void;
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { type Options as OraOptions } from
|
|
1
|
+
import { type Options as OraOptions } from "ora";
|
|
2
2
|
export declare function startSpinner({ text, enabled, stream, color, }: {
|
|
3
3
|
text: string;
|
|
4
4
|
enabled: boolean;
|
|
5
5
|
stream: NodeJS.WritableStream;
|
|
6
|
-
color?: OraOptions[
|
|
6
|
+
color?: OraOptions["color"];
|
|
7
7
|
}): {
|
|
8
8
|
stop: () => void;
|
|
9
9
|
clear: () => void;
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export declare const CLI_THEME_NAMES: readonly ["aurora", "ember", "moss", "mono"];
|
|
2
2
|
export type CliThemeName = (typeof CLI_THEME_NAMES)[number];
|
|
3
|
-
export type ThemeRole =
|
|
3
|
+
export type ThemeRole = "heading" | "accent" | "accentStrong" | "muted" | "dim" | "success" | "warning" | "error" | "label" | "value" | "code";
|
|
4
4
|
type ThemePalette = {
|
|
5
5
|
name: CliThemeName;
|
|
6
6
|
roles: Record<ThemeRole, string>;
|
|
7
|
-
spinner:
|
|
7
|
+
spinner: "cyan" | "magenta" | "yellow" | "green" | "gray" | "blue";
|
|
8
8
|
};
|
|
9
9
|
export declare const DEFAULT_CLI_THEME: CliThemeName;
|
|
10
10
|
export declare function listCliThemes(): CliThemeName[];
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import type { LinkPreviewProgressEvent } from
|
|
2
|
-
import type { OscProgressController } from
|
|
3
|
-
import type { ThemeRenderer } from
|
|
1
|
+
import type { LinkPreviewProgressEvent } from "@steipete/summarize-core/content";
|
|
2
|
+
import type { OscProgressController } from "./osc-progress.js";
|
|
3
|
+
import type { ThemeRenderer } from "./theme.js";
|
|
4
4
|
export declare function createWebsiteProgress({ enabled, spinner, oscProgress, theme, }: {
|
|
5
5
|
enabled: boolean;
|
|
6
6
|
spinner: {
|
package/dist/types/version.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export declare const FALLBACK_VERSION = "0.
|
|
1
|
+
export declare const FALLBACK_VERSION = "0.11.1";
|
|
2
2
|
export declare function resolvePackageVersion(importMetaUrl?: string): string;
|
|
3
3
|
export declare function resolveGitSha(importMetaUrl?: string): string | null;
|
|
4
4
|
export declare function formatVersionLine(importMetaUrl?: string): string;
|
package/docs/agent.md
CHANGED
|
@@ -9,6 +9,7 @@ read_when:
|
|
|
9
9
|
Summarize can run as a **website automation agent** inside the Chrome side panel. This is **optional** and **gated by a checkbox** in Options.
|
|
10
10
|
|
|
11
11
|
Scope:
|
|
12
|
+
|
|
12
13
|
- **Off (default):** chat is Q&A only (no tools).
|
|
13
14
|
- **On:** chat runs a tool-capable agent for web automation.
|
|
14
15
|
|
|
@@ -16,10 +17,10 @@ Explicit exclusions (per product direction): **no update checker**, **no tutoria
|
|
|
16
17
|
|
|
17
18
|
## Architecture (High Level)
|
|
18
19
|
|
|
19
|
-
1
|
|
20
|
-
2
|
|
21
|
-
3
|
|
22
|
-
4
|
|
20
|
+
1. **Side panel** maintains the agent loop + chat UI.
|
|
21
|
+
2. **Background** handles tab data, extraction, and tool execution.
|
|
22
|
+
3. **Content scripts** handle element picking and native-input bridge.
|
|
23
|
+
4. **Daemon** provides `/v1/agent` (SSE stream of chunks + final assistant message).
|
|
23
24
|
|
|
24
25
|
### Data Flow (Agent Loop)
|
|
25
26
|
|
|
@@ -63,10 +64,12 @@ Defined in `apps/chrome-extension/wxt.config.ts` and requested via Options:
|
|
|
63
64
|
### `POST /v1/agent` (SSE)
|
|
64
65
|
|
|
65
66
|
**Headers**
|
|
67
|
+
|
|
66
68
|
- `Authorization: Bearer <token>`
|
|
67
69
|
- `Content-Type: application/json`
|
|
68
70
|
|
|
69
71
|
**Body**
|
|
72
|
+
|
|
70
73
|
```
|
|
71
74
|
{
|
|
72
75
|
"url": "https://...",
|
|
@@ -83,6 +86,7 @@ Defined in `apps/chrome-extension/wxt.config.ts` and requested via Options:
|
|
|
83
86
|
```
|
|
84
87
|
|
|
85
88
|
**Response (SSE, default)**
|
|
89
|
+
|
|
86
90
|
```
|
|
87
91
|
event: chunk
|
|
88
92
|
data: { "text": "..." }
|
|
@@ -99,6 +103,7 @@ data: { "message": "..." }
|
|
|
99
103
|
|
|
100
104
|
**Response (JSON)**
|
|
101
105
|
Use `Accept: application/json` or `?format=json`.
|
|
106
|
+
|
|
102
107
|
```
|
|
103
108
|
{ "ok": true, "assistant": { /* AssistantMessage */ } }
|
|
104
109
|
```
|
|
@@ -108,6 +113,7 @@ Use `Accept: application/json` or `?format=json`.
|
|
|
108
113
|
Returns cached chat history for the same cache key as `/v1/agent`.
|
|
109
114
|
|
|
110
115
|
**Body**
|
|
116
|
+
|
|
111
117
|
```
|
|
112
118
|
{
|
|
113
119
|
"url": "https://...",
|
|
@@ -121,6 +127,7 @@ Returns cached chat history for the same cache key as `/v1/agent`.
|
|
|
121
127
|
```
|
|
122
128
|
|
|
123
129
|
**Response**
|
|
130
|
+
|
|
124
131
|
```
|
|
125
132
|
{ "ok": true, "messages": [/* Message[] */] }
|
|
126
133
|
```
|
|
@@ -146,36 +153,44 @@ See `buildChatPageContent()` usage in `apps/chrome-extension/src/entrypoints/bac
|
|
|
146
153
|
## Tools
|
|
147
154
|
|
|
148
155
|
### 1) `navigate`
|
|
156
|
+
|
|
149
157
|
Navigate the active tab.
|
|
150
158
|
|
|
151
159
|
Params:
|
|
160
|
+
|
|
152
161
|
```
|
|
153
162
|
{ "url": "https://...", "newTab": false }
|
|
154
163
|
```
|
|
155
164
|
|
|
156
165
|
Result:
|
|
166
|
+
|
|
157
167
|
```
|
|
158
168
|
{ "finalUrl": "https://...", "title": "...", "tabId": 123 }
|
|
159
169
|
```
|
|
160
170
|
|
|
161
171
|
Notes:
|
|
172
|
+
|
|
162
173
|
- Uses `chrome.tabs.update` or `chrome.tabs.create`.
|
|
163
174
|
- Waits for tab status `complete` (15s timeout).
|
|
164
175
|
|
|
165
176
|
### 2) `repl`
|
|
177
|
+
|
|
166
178
|
Execute JavaScript in a sandbox, with `browserjs()` to run in the page context.
|
|
167
179
|
|
|
168
180
|
Params:
|
|
181
|
+
|
|
169
182
|
```
|
|
170
183
|
{ "title": "...", "code": "..." }
|
|
171
184
|
```
|
|
172
185
|
|
|
173
186
|
Result:
|
|
187
|
+
|
|
174
188
|
```
|
|
175
189
|
{ "output": "console/return output", "files": [{ "fileName": "...", "mimeType": "...", "contentBase64": "..." }] }
|
|
176
190
|
```
|
|
177
191
|
|
|
178
192
|
REPL environment:
|
|
193
|
+
|
|
179
194
|
- Runs in a **sandboxed iframe** (no DOM access to the panel).
|
|
180
195
|
- `browserjs(fn, ...args)` runs the function **in the page context**.
|
|
181
196
|
- Uses `chrome.userScripts.execute` (main world) when available.
|
|
@@ -186,9 +201,11 @@ REPL environment:
|
|
|
186
201
|
- `returnFile(name, content, mimeType)` or `returnFile({ fileName, content, mimeType })` attaches files to the tool result.
|
|
187
202
|
|
|
188
203
|
Safety:
|
|
204
|
+
|
|
189
205
|
- Navigation inside REPL code (`window.location`, `history`, etc.) is rejected. Use `navigate()` instead.
|
|
190
206
|
|
|
191
207
|
Page-context helpers (via `browserjs()`):
|
|
208
|
+
|
|
192
209
|
- Skills libraries are auto-injected when domain patterns match the active URL.
|
|
193
210
|
- If `debugger` permission is granted, native helpers are exposed:
|
|
194
211
|
- `nativeClick(selector)`
|
|
@@ -197,14 +214,17 @@ Page-context helpers (via `browserjs()`):
|
|
|
197
214
|
- `nativeKeyDown(key)` / `nativeKeyUp(key)`
|
|
198
215
|
|
|
199
216
|
### 3) `ask_user_which_element`
|
|
217
|
+
|
|
200
218
|
Shows a click-to-select overlay and returns element metadata.
|
|
201
219
|
|
|
202
220
|
Params:
|
|
221
|
+
|
|
203
222
|
```
|
|
204
223
|
{ "message": "Optional guidance" }
|
|
205
224
|
```
|
|
206
225
|
|
|
207
226
|
Result (example):
|
|
227
|
+
|
|
208
228
|
```
|
|
209
229
|
{
|
|
210
230
|
"selector": "#submit",
|
|
@@ -218,19 +238,23 @@ Result (example):
|
|
|
218
238
|
```
|
|
219
239
|
|
|
220
240
|
Overlay UX:
|
|
241
|
+
|
|
221
242
|
- Hover highlights element under cursor.
|
|
222
243
|
- Click selects.
|
|
223
244
|
- ↑ / ↓ moves up or down the DOM tree.
|
|
224
245
|
- Esc cancels.
|
|
225
246
|
|
|
226
247
|
### 4) `skill`
|
|
248
|
+
|
|
227
249
|
CRUD for domain-specific libraries (stored in `chrome.storage.local`).
|
|
228
250
|
|
|
229
251
|
Storage keys:
|
|
252
|
+
|
|
230
253
|
- `automation.skills` (map of name → skill)
|
|
231
254
|
- `automation.skillsSeeded` (one-time default seed)
|
|
232
255
|
|
|
233
256
|
Actions:
|
|
257
|
+
|
|
234
258
|
- `list` (optionally filtered by URL)
|
|
235
259
|
- `get` (optionally includes library code)
|
|
236
260
|
- `create` / `rewrite`
|
|
@@ -240,30 +264,37 @@ Actions:
|
|
|
240
264
|
Default skills seed from `apps/chrome-extension/src/automation/default-skills.json`.
|
|
241
265
|
|
|
242
266
|
Matching:
|
|
267
|
+
|
|
243
268
|
- Glob-like domain patterns (supports `*` and `**`).
|
|
244
269
|
- Match is done against hostname + path (e.g. `github.com/*/issues`).
|
|
245
270
|
|
|
246
271
|
Notes:
|
|
272
|
+
|
|
247
273
|
- `update` is intended for in-place string replacements; use `rewrite` to rename.
|
|
248
274
|
- Skills libraries run inside `browserjs()` and must avoid navigation.
|
|
249
275
|
|
|
250
276
|
### 5) `debugger` (optional)
|
|
277
|
+
|
|
251
278
|
Runs JavaScript in the **main world** via the Chrome debugger. **Last resort** (shows Chrome debug banner).
|
|
252
279
|
|
|
253
280
|
Params:
|
|
281
|
+
|
|
254
282
|
```
|
|
255
283
|
{ "action": "eval", "code": "..." }
|
|
256
284
|
```
|
|
257
285
|
|
|
258
286
|
Result:
|
|
287
|
+
|
|
259
288
|
```
|
|
260
289
|
{ "text": "...", "details": { ... } }
|
|
261
290
|
```
|
|
262
291
|
|
|
263
292
|
### 6) `summarize`
|
|
293
|
+
|
|
264
294
|
Run the Summarize pipeline against a URL (summary or extract-only).
|
|
265
295
|
|
|
266
296
|
Params:
|
|
297
|
+
|
|
267
298
|
```
|
|
268
299
|
{
|
|
269
300
|
"url": "https://...",
|
|
@@ -287,16 +318,19 @@ Params:
|
|
|
287
318
|
```
|
|
288
319
|
|
|
289
320
|
Result (summary):
|
|
321
|
+
|
|
290
322
|
```
|
|
291
323
|
{ "output": "..." }
|
|
292
324
|
```
|
|
293
325
|
|
|
294
326
|
Result (extract-only):
|
|
327
|
+
|
|
295
328
|
```
|
|
296
329
|
{ "output": "...", "details": { "content": "...", "title": "...", "wordCount": 123, ... } }
|
|
297
330
|
```
|
|
298
331
|
|
|
299
332
|
Notes:
|
|
333
|
+
|
|
300
334
|
- URL-only (uses daemon URL pipeline).
|
|
301
335
|
- Use `extractOnly: true` + `format: "markdown"` to return extracted Markdown.
|
|
302
336
|
- When `format: "markdown"`, `markdownMode` defaults to `readability`.
|
package/docs/assets/site.js
CHANGED
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
const canonicalHost =
|
|
2
|
-
const redirectHostnames = new Set([
|
|
1
|
+
const canonicalHost = "summarize.sh";
|
|
2
|
+
const redirectHostnames = new Set(["summarize.is", "www.summarize.is"]);
|
|
3
3
|
|
|
4
4
|
const maybeRedirect = () => {
|
|
5
5
|
try {
|
|
6
|
-
const { hostname, pathname, search, hash } = window.location
|
|
7
|
-
if (!redirectHostnames.has(hostname)) return
|
|
8
|
-
const target = `https://${canonicalHost}${pathname}${search}${hash}
|
|
9
|
-
window.location.replace(target)
|
|
6
|
+
const { hostname, pathname, search, hash } = window.location;
|
|
7
|
+
if (!redirectHostnames.has(hostname)) return;
|
|
8
|
+
const target = `https://${canonicalHost}${pathname}${search}${hash}`;
|
|
9
|
+
window.location.replace(target);
|
|
10
10
|
} catch {
|
|
11
11
|
// ignore
|
|
12
12
|
}
|
|
13
|
-
}
|
|
13
|
+
};
|
|
14
14
|
|
|
15
15
|
const highlightNav = () => {
|
|
16
|
-
const path = window.location.pathname
|
|
17
|
-
const isDocs = path.includes(
|
|
18
|
-
const navDocs = document.querySelector('a[data-nav="docs"]')
|
|
19
|
-
const navHome = document.querySelector('a[data-nav="home"]')
|
|
20
|
-
if (navDocs && isDocs) navDocs.setAttribute(
|
|
21
|
-
if (navHome && !isDocs) navHome.setAttribute(
|
|
16
|
+
const path = window.location.pathname;
|
|
17
|
+
const isDocs = path.includes("/docs/");
|
|
18
|
+
const navDocs = document.querySelector('a[data-nav="docs"]');
|
|
19
|
+
const navHome = document.querySelector('a[data-nav="home"]');
|
|
20
|
+
if (navDocs && isDocs) navDocs.setAttribute("aria-current", "page");
|
|
21
|
+
if (navHome && !isDocs) navHome.setAttribute("aria-current", "page");
|
|
22
22
|
|
|
23
|
-
const sideLinks = document.querySelectorAll(
|
|
23
|
+
const sideLinks = document.querySelectorAll(".side a[href]");
|
|
24
24
|
for (const a of sideLinks) {
|
|
25
|
-
const href = a.getAttribute(
|
|
26
|
-
if (!href) continue
|
|
27
|
-
const normalized = href.replace(/^\.\//,
|
|
28
|
-
if (path.endsWith(normalized)) a.setAttribute(
|
|
25
|
+
const href = a.getAttribute("href") ?? "";
|
|
26
|
+
if (!href) continue;
|
|
27
|
+
const normalized = href.replace(/^\.\//, "");
|
|
28
|
+
if (path.endsWith(normalized)) a.setAttribute("aria-current", "page");
|
|
29
29
|
}
|
|
30
|
-
}
|
|
30
|
+
};
|
|
31
31
|
|
|
32
32
|
const wireCopyButtons = () => {
|
|
33
|
-
const buttons = document.querySelectorAll(
|
|
33
|
+
const buttons = document.querySelectorAll("[data-copy]");
|
|
34
34
|
const handleCopyClick = async (button) => {
|
|
35
|
-
const selector = button.getAttribute(
|
|
36
|
-
const target = selector ? document.querySelector(selector) : null
|
|
37
|
-
const text = target?.textContent?.trim() ??
|
|
38
|
-
if (!text) return
|
|
35
|
+
const selector = button.getAttribute("data-copy");
|
|
36
|
+
const target = selector ? document.querySelector(selector) : null;
|
|
37
|
+
const text = target?.textContent?.trim() ?? "";
|
|
38
|
+
if (!text) return;
|
|
39
39
|
try {
|
|
40
|
-
await navigator.clipboard.writeText(text)
|
|
41
|
-
const prev = button.textContent ??
|
|
42
|
-
button.textContent =
|
|
43
|
-
button.setAttribute(
|
|
40
|
+
await navigator.clipboard.writeText(text);
|
|
41
|
+
const prev = button.textContent ?? "";
|
|
42
|
+
button.textContent = "Copied";
|
|
43
|
+
button.setAttribute("data-copied", "1");
|
|
44
44
|
window.setTimeout(() => {
|
|
45
|
-
button.textContent = prev
|
|
46
|
-
button.removeAttribute(
|
|
47
|
-
}, 900)
|
|
45
|
+
button.textContent = prev;
|
|
46
|
+
button.removeAttribute("data-copied");
|
|
47
|
+
}, 900);
|
|
48
48
|
} catch {
|
|
49
49
|
// ignore
|
|
50
50
|
}
|
|
51
|
-
}
|
|
51
|
+
};
|
|
52
52
|
for (const button of buttons) {
|
|
53
|
-
button.addEventListener(
|
|
54
|
-
void handleCopyClick(button)
|
|
55
|
-
})
|
|
53
|
+
button.addEventListener("click", () => {
|
|
54
|
+
void handleCopyClick(button);
|
|
55
|
+
});
|
|
56
56
|
}
|
|
57
|
-
}
|
|
57
|
+
};
|
|
58
58
|
|
|
59
59
|
const reveal = () => {
|
|
60
|
-
const items = document.querySelectorAll(
|
|
61
|
-
let i = 0
|
|
60
|
+
const items = document.querySelectorAll(".reveal");
|
|
61
|
+
let i = 0;
|
|
62
62
|
for (const el of items) {
|
|
63
|
-
const delay = Math.min(380, i * 70)
|
|
64
|
-
window.setTimeout(() => el.classList.add(
|
|
65
|
-
i
|
|
63
|
+
const delay = Math.min(380, i * 70);
|
|
64
|
+
window.setTimeout(() => el.classList.add("is-on"), delay);
|
|
65
|
+
i++;
|
|
66
66
|
}
|
|
67
|
-
}
|
|
67
|
+
};
|
|
68
68
|
|
|
69
|
-
maybeRedirect()
|
|
70
|
-
highlightNav()
|
|
71
|
-
wireCopyButtons()
|
|
72
|
-
reveal()
|
|
69
|
+
maybeRedirect();
|
|
70
|
+
highlightNav();
|
|
71
|
+
wireCopyButtons();
|
|
72
|
+
reveal();
|
package/docs/chrome-extension.md
CHANGED
|
@@ -22,6 +22,7 @@ Quickstart:
|
|
|
22
22
|
- Restart (if needed): `summarize daemon restart`
|
|
23
23
|
|
|
24
24
|
Firefox notes:
|
|
25
|
+
|
|
25
26
|
- Sidebar UX differs from Chrome’s side panel (persistent sidebar instead of slide-in panel).
|
|
26
27
|
- Firefox testing is limited in Playwright; see `apps/chrome-extension/tests/README-firefox.md`.
|
|
27
28
|
- Compatibility details: `apps/chrome-extension/docs/firefox.md`.
|
|
@@ -38,6 +39,10 @@ Dev (repo checkout):
|
|
|
38
39
|
- “Daemon not reachable”:
|
|
39
40
|
- `summarize daemon status`
|
|
40
41
|
- Logs: `~/.summarize/logs/daemon.err.log`
|
|
42
|
+
- macOS `launchctl bootstrap` errors (`Input/output error`, `Domain does not support specified action`):
|
|
43
|
+
- `summarize daemon install` now tries both launchd domains (`gui/<uid>` then `user/<uid>`).
|
|
44
|
+
- Install as your normal user (not root) so HOME + launchd domain match.
|
|
45
|
+
- Re-run: `summarize daemon install --token <TOKEN>`.
|
|
41
46
|
- “Need extension-side traces”:
|
|
42
47
|
- Options → Logs → `extension.log` (panel/background events).
|
|
43
48
|
- Enable “Extended logging” in Advanced settings for full pipeline traces.
|
|
@@ -70,11 +75,11 @@ Dev (repo checkout):
|
|
|
70
75
|
|
|
71
76
|
## Data Flow
|
|
72
77
|
|
|
73
|
-
1
|
|
74
|
-
2
|
|
75
|
-
3
|
|
76
|
-
4
|
|
77
|
-
5
|
|
78
|
+
1. User opens side panel (click extension icon).
|
|
79
|
+
2. Panel sends a “ready” message to the background (plus periodic “ping” heartbeats while open).
|
|
80
|
+
3. On nav/tab change (and auto enabled): background asks the content script to extract `{ url, title, text }` (best-effort).
|
|
81
|
+
4. Background `POST`s payload to daemon `/v1/summarize` with `Authorization: Bearer <token>`.
|
|
82
|
+
5. Panel opens `/v1/summarize/<id>/events` (SSE) and renders streamed Markdown.
|
|
78
83
|
|
|
79
84
|
## Auto Mode (URL + Page Text)
|
|
80
85
|
|
|
@@ -225,6 +230,7 @@ Problem: daemon must be secured; extension must discover and pair with it.
|
|
|
225
230
|
- `event: error` `data: { message }`
|
|
226
231
|
|
|
227
232
|
Notes:
|
|
233
|
+
|
|
228
234
|
- SSE keeps the extension simple + streaming-friendly.
|
|
229
235
|
- Requests keyed by `id`; daemon keeps a small in-memory map while streaming.
|
|
230
236
|
|