scoutline 0.22.0 → 0.24.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/README.md +108 -26
- package/dist/capabilities/investigation.d.ts +134 -0
- package/dist/capabilities/investigation.d.ts.map +1 -0
- package/dist/capabilities/investigation.js +278 -0
- package/dist/capabilities/investigation.js.map +1 -0
- package/dist/capabilities/search.d.ts +18 -4
- package/dist/capabilities/search.d.ts.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +14 -5
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/crawl.d.ts.map +1 -1
- package/dist/commands/crawl.js +2 -1
- package/dist/commands/crawl.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +2 -1
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/init.d.ts +42 -1
- package/dist/commands/init.d.ts.map +1 -1
- package/dist/commands/init.js +42 -5
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/investigate.d.ts +232 -0
- package/dist/commands/investigate.d.ts.map +1 -0
- package/dist/commands/investigate.js +838 -0
- package/dist/commands/investigate.js.map +1 -0
- package/dist/commands/map.d.ts.map +1 -1
- package/dist/commands/map.js +2 -1
- package/dist/commands/map.js.map +1 -1
- package/dist/commands/quota.d.ts.map +1 -1
- package/dist/commands/quota.js +2 -2
- package/dist/commands/quota.js.map +1 -1
- package/dist/commands/read.d.ts.map +1 -1
- package/dist/commands/read.js +2 -1
- package/dist/commands/read.js.map +1 -1
- package/dist/commands/repo.js +1 -1
- package/dist/commands/research.d.ts.map +1 -1
- package/dist/commands/research.js +2 -1
- package/dist/commands/research.js.map +1 -1
- package/dist/commands/search.d.ts +54 -6
- package/dist/commands/search.d.ts.map +1 -1
- package/dist/commands/search.js +273 -25
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/vision.d.ts.map +1 -1
- package/dist/commands/vision.js +15 -2
- package/dist/commands/vision.js.map +1 -1
- package/dist/index.d.ts +93 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +737 -14
- package/dist/index.js.map +1 -1
- package/dist/lib/code-mode.d.ts +12 -0
- package/dist/lib/code-mode.d.ts.map +1 -1
- package/dist/lib/code-mode.js +18 -10
- package/dist/lib/code-mode.js.map +1 -1
- package/dist/lib/config-store.d.ts +45 -1
- package/dist/lib/config-store.d.ts.map +1 -1
- package/dist/lib/config-store.js +70 -1
- package/dist/lib/config-store.js.map +1 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +5 -1
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/errors.d.ts +7 -1
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +8 -2
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/execution.d.ts +14 -5
- package/dist/lib/execution.d.ts.map +1 -1
- package/dist/lib/execution.js +25 -6
- package/dist/lib/execution.js.map +1 -1
- package/dist/lib/investigate-claims.d.ts +90 -0
- package/dist/lib/investigate-claims.d.ts.map +1 -0
- package/dist/lib/investigate-claims.js +188 -0
- package/dist/lib/investigate-claims.js.map +1 -0
- package/dist/lib/investigate-extract.d.ts +35 -0
- package/dist/lib/investigate-extract.d.ts.map +1 -0
- package/dist/lib/investigate-extract.js +101 -0
- package/dist/lib/investigate-extract.js.map +1 -0
- package/dist/lib/investigate-planner.d.ts +58 -0
- package/dist/lib/investigate-planner.d.ts.map +1 -0
- package/dist/lib/investigate-planner.js +141 -0
- package/dist/lib/investigate-planner.js.map +1 -0
- package/dist/lib/mcp-client.d.ts +7 -0
- package/dist/lib/mcp-client.d.ts.map +1 -1
- package/dist/lib/mcp-client.js +11 -1
- package/dist/lib/mcp-client.js.map +1 -1
- package/dist/lib/parse-zoned-instant.d.ts +13 -0
- package/dist/lib/parse-zoned-instant.d.ts.map +1 -0
- package/dist/lib/parse-zoned-instant.js +17 -0
- package/dist/lib/parse-zoned-instant.js.map +1 -0
- package/dist/lib/quota-mapping.d.ts +4 -2
- package/dist/lib/quota-mapping.d.ts.map +1 -1
- package/dist/lib/quota-mapping.js +25 -2
- package/dist/lib/quota-mapping.js.map +1 -1
- package/dist/lib/redact.d.ts +3 -2
- package/dist/lib/redact.d.ts.map +1 -1
- package/dist/lib/redact.js +90 -24
- package/dist/lib/redact.js.map +1 -1
- package/dist/lib/timeout.d.ts +28 -0
- package/dist/lib/timeout.d.ts.map +1 -0
- package/dist/lib/timeout.js +30 -0
- package/dist/lib/timeout.js.map +1 -0
- package/dist/lib/url.d.ts +10 -4
- package/dist/lib/url.d.ts.map +1 -1
- package/dist/lib/url.js +21 -6
- package/dist/lib/url.js.map +1 -1
- package/dist/providers/arxiv/client.d.ts +4 -1
- package/dist/providers/arxiv/client.d.ts.map +1 -1
- package/dist/providers/arxiv/client.js +11 -3
- package/dist/providers/arxiv/client.js.map +1 -1
- package/dist/providers/bocha/adapter.d.ts +43 -0
- package/dist/providers/bocha/adapter.d.ts.map +1 -0
- package/dist/providers/bocha/adapter.js +197 -0
- package/dist/providers/bocha/adapter.js.map +1 -0
- package/dist/providers/bocha/client.d.ts +51 -0
- package/dist/providers/bocha/client.d.ts.map +1 -0
- package/dist/providers/bocha/client.js +104 -0
- package/dist/providers/bocha/client.js.map +1 -0
- package/dist/providers/bocha/credentials.d.ts +12 -0
- package/dist/providers/bocha/credentials.d.ts.map +1 -0
- package/dist/providers/bocha/credentials.js +29 -0
- package/dist/providers/bocha/credentials.js.map +1 -0
- package/dist/providers/bocha/diagnostics.d.ts +17 -0
- package/dist/providers/bocha/diagnostics.d.ts.map +1 -0
- package/dist/providers/bocha/diagnostics.js +33 -0
- package/dist/providers/bocha/diagnostics.js.map +1 -0
- package/dist/providers/brave/adapter.d.ts.map +1 -1
- package/dist/providers/brave/adapter.js +4 -3
- package/dist/providers/brave/adapter.js.map +1 -1
- package/dist/providers/brave/client.d.ts +1 -0
- package/dist/providers/brave/client.d.ts.map +1 -1
- package/dist/providers/brave/client.js +4 -6
- package/dist/providers/brave/client.js.map +1 -1
- package/dist/providers/brave/credentials.d.ts +2 -0
- package/dist/providers/brave/credentials.d.ts.map +1 -1
- package/dist/providers/brave/credentials.js +2 -0
- package/dist/providers/brave/credentials.js.map +1 -1
- package/dist/providers/catalog.d.ts +34 -0
- package/dist/providers/catalog.d.ts.map +1 -0
- package/dist/providers/catalog.js +57 -0
- package/dist/providers/catalog.js.map +1 -0
- package/dist/providers/crossref/adapter.js +2 -2
- package/dist/providers/crossref/adapter.js.map +1 -1
- package/dist/providers/crossref/client.d.ts +4 -1
- package/dist/providers/crossref/client.d.ts.map +1 -1
- package/dist/providers/crossref/client.js +11 -3
- package/dist/providers/crossref/client.js.map +1 -1
- package/dist/providers/crossref/diagnostics.d.ts +1 -1
- package/dist/providers/crossref/diagnostics.js +1 -1
- package/dist/providers/crossref/diagnostics.js.map +1 -1
- package/dist/providers/europepmc/adapter.js +2 -2
- package/dist/providers/europepmc/adapter.js.map +1 -1
- package/dist/providers/europepmc/client.d.ts +4 -1
- package/dist/providers/europepmc/client.d.ts.map +1 -1
- package/dist/providers/europepmc/client.js +11 -3
- package/dist/providers/europepmc/client.js.map +1 -1
- package/dist/providers/exa/client.d.ts +1 -0
- package/dist/providers/exa/client.d.ts.map +1 -1
- package/dist/providers/exa/client.js +3 -2
- package/dist/providers/exa/client.js.map +1 -1
- package/dist/providers/exa/credentials.d.ts +2 -0
- package/dist/providers/exa/credentials.d.ts.map +1 -1
- package/dist/providers/exa/credentials.js +2 -0
- package/dist/providers/exa/credentials.js.map +1 -1
- package/dist/providers/firecrawl/adapter.d.ts.map +1 -1
- package/dist/providers/firecrawl/adapter.js +2 -1
- package/dist/providers/firecrawl/adapter.js.map +1 -1
- package/dist/providers/firecrawl/client.d.ts +1 -0
- package/dist/providers/firecrawl/client.d.ts.map +1 -1
- package/dist/providers/firecrawl/client.js +3 -2
- package/dist/providers/firecrawl/client.js.map +1 -1
- package/dist/providers/firecrawl/credentials.d.ts +2 -0
- package/dist/providers/firecrawl/credentials.d.ts.map +1 -1
- package/dist/providers/firecrawl/credentials.js +2 -0
- package/dist/providers/firecrawl/credentials.js.map +1 -1
- package/dist/providers/firecrawl/quota.d.ts.map +1 -1
- package/dist/providers/firecrawl/quota.js +5 -2
- package/dist/providers/firecrawl/quota.js.map +1 -1
- package/dist/providers/jina/adapter.d.ts.map +1 -1
- package/dist/providers/jina/adapter.js +6 -4
- package/dist/providers/jina/adapter.js.map +1 -1
- package/dist/providers/jina/client.d.ts +2 -0
- package/dist/providers/jina/client.d.ts.map +1 -1
- package/dist/providers/jina/client.js +6 -5
- package/dist/providers/jina/client.js.map +1 -1
- package/dist/providers/jina/credentials.d.ts +2 -0
- package/dist/providers/jina/credentials.d.ts.map +1 -1
- package/dist/providers/jina/credentials.js +2 -0
- package/dist/providers/jina/credentials.js.map +1 -1
- package/dist/providers/kagi/adapter.d.ts +44 -0
- package/dist/providers/kagi/adapter.d.ts.map +1 -0
- package/dist/providers/kagi/adapter.js +188 -0
- package/dist/providers/kagi/adapter.js.map +1 -0
- package/dist/providers/kagi/client.d.ts +41 -0
- package/dist/providers/kagi/client.d.ts.map +1 -0
- package/dist/providers/kagi/client.js +100 -0
- package/dist/providers/kagi/client.js.map +1 -0
- package/dist/providers/kagi/credentials.d.ts +15 -0
- package/dist/providers/kagi/credentials.d.ts.map +1 -0
- package/dist/providers/kagi/credentials.js +35 -0
- package/dist/providers/kagi/credentials.js.map +1 -0
- package/dist/providers/kagi/diagnostics.d.ts +17 -0
- package/dist/providers/kagi/diagnostics.d.ts.map +1 -0
- package/dist/providers/kagi/diagnostics.js +33 -0
- package/dist/providers/kagi/diagnostics.js.map +1 -0
- package/dist/providers/linkup/client.d.ts +1 -0
- package/dist/providers/linkup/client.d.ts.map +1 -1
- package/dist/providers/linkup/client.js +3 -2
- package/dist/providers/linkup/client.js.map +1 -1
- package/dist/providers/linkup/credentials.d.ts +2 -0
- package/dist/providers/linkup/credentials.d.ts.map +1 -1
- package/dist/providers/linkup/credentials.js +2 -0
- package/dist/providers/linkup/credentials.js.map +1 -1
- package/dist/providers/minimax/adapter.d.ts.map +1 -1
- package/dist/providers/minimax/adapter.js +2 -2
- package/dist/providers/minimax/adapter.js.map +1 -1
- package/dist/providers/minimax/coding-plan-client.d.ts +1 -0
- package/dist/providers/minimax/coding-plan-client.d.ts.map +1 -1
- package/dist/providers/minimax/coding-plan-client.js +3 -2
- package/dist/providers/minimax/coding-plan-client.js.map +1 -1
- package/dist/providers/minimax/quota-client.d.ts +1 -0
- package/dist/providers/minimax/quota-client.d.ts.map +1 -1
- package/dist/providers/minimax/quota-client.js +3 -2
- package/dist/providers/minimax/quota-client.js.map +1 -1
- package/dist/providers/openalex/client.d.ts +2 -0
- package/dist/providers/openalex/client.d.ts.map +1 -1
- package/dist/providers/openalex/client.js +10 -3
- package/dist/providers/openalex/client.js.map +1 -1
- package/dist/providers/openalex/diagnostics.d.ts +1 -1
- package/dist/providers/openalex/diagnostics.js +1 -1
- package/dist/providers/openalex/diagnostics.js.map +1 -1
- package/dist/providers/parallel/client.d.ts +1 -0
- package/dist/providers/parallel/client.d.ts.map +1 -1
- package/dist/providers/parallel/client.js +3 -2
- package/dist/providers/parallel/client.js.map +1 -1
- package/dist/providers/parallel/credentials.d.ts +2 -0
- package/dist/providers/parallel/credentials.d.ts.map +1 -1
- package/dist/providers/parallel/credentials.js +2 -0
- package/dist/providers/parallel/credentials.js.map +1 -1
- package/dist/providers/perplexity/client.d.ts +2 -0
- package/dist/providers/perplexity/client.d.ts.map +1 -1
- package/dist/providers/perplexity/client.js +5 -4
- package/dist/providers/perplexity/client.js.map +1 -1
- package/dist/providers/perplexity/credentials.d.ts +2 -0
- package/dist/providers/perplexity/credentials.d.ts.map +1 -1
- package/dist/providers/perplexity/credentials.js +2 -0
- package/dist/providers/perplexity/credentials.js.map +1 -1
- package/dist/providers/pubmed/client.d.ts +2 -0
- package/dist/providers/pubmed/client.d.ts.map +1 -1
- package/dist/providers/pubmed/client.js +10 -3
- package/dist/providers/pubmed/client.js.map +1 -1
- package/dist/providers/registry.d.ts.map +1 -1
- package/dist/providers/registry.js +10 -1
- package/dist/providers/registry.js.map +1 -1
- package/dist/providers/searchapi/adapter.d.ts +54 -0
- package/dist/providers/searchapi/adapter.d.ts.map +1 -0
- package/dist/providers/searchapi/adapter.js +310 -0
- package/dist/providers/searchapi/adapter.js.map +1 -0
- package/dist/providers/searchapi/client.d.ts +73 -0
- package/dist/providers/searchapi/client.d.ts.map +1 -0
- package/dist/providers/searchapi/client.js +196 -0
- package/dist/providers/searchapi/client.js.map +1 -0
- package/dist/providers/searchapi/credentials.d.ts +46 -0
- package/dist/providers/searchapi/credentials.d.ts.map +1 -0
- package/dist/providers/searchapi/credentials.js +71 -0
- package/dist/providers/searchapi/credentials.js.map +1 -0
- package/dist/providers/searchapi/diagnostics.d.ts +48 -0
- package/dist/providers/searchapi/diagnostics.d.ts.map +1 -0
- package/dist/providers/searchapi/diagnostics.js +70 -0
- package/dist/providers/searchapi/diagnostics.js.map +1 -0
- package/dist/providers/searchapi/quota.d.ts +60 -0
- package/dist/providers/searchapi/quota.d.ts.map +1 -0
- package/dist/providers/searchapi/quota.js +125 -0
- package/dist/providers/searchapi/quota.js.map +1 -0
- package/dist/providers/spider/client.d.ts +2 -0
- package/dist/providers/spider/client.d.ts.map +1 -1
- package/dist/providers/spider/client.js +16 -6
- package/dist/providers/spider/client.js.map +1 -1
- package/dist/providers/spider/credentials.d.ts +2 -0
- package/dist/providers/spider/credentials.d.ts.map +1 -1
- package/dist/providers/spider/credentials.js +2 -0
- package/dist/providers/spider/credentials.js.map +1 -1
- package/dist/providers/tavily/client.d.ts +1 -0
- package/dist/providers/tavily/client.d.ts.map +1 -1
- package/dist/providers/tavily/client.js +3 -2
- package/dist/providers/tavily/client.js.map +1 -1
- package/dist/providers/tavily/credentials.d.ts +2 -0
- package/dist/providers/tavily/credentials.d.ts.map +1 -1
- package/dist/providers/tavily/credentials.js +2 -0
- package/dist/providers/tavily/credentials.js.map +1 -1
- package/dist/providers/types.d.ts +31 -2
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/providers/types.js +3 -0
- package/dist/providers/types.js.map +1 -1
- package/dist/providers/you/client.d.ts +4 -0
- package/dist/providers/you/client.d.ts.map +1 -1
- package/dist/providers/you/client.js +4 -5
- package/dist/providers/you/client.js.map +1 -1
- package/dist/providers/you/credentials.d.ts +2 -0
- package/dist/providers/you/credentials.d.ts.map +1 -1
- package/dist/providers/you/credentials.js +3 -3
- package/dist/providers/you/credentials.js.map +1 -1
- package/dist/providers/zai/adapter.d.ts.map +1 -1
- package/dist/providers/zai/adapter.js +219 -4
- package/dist/providers/zai/adapter.js.map +1 -1
- package/dist/providers/zai/credentials.d.ts +2 -0
- package/dist/providers/zai/credentials.d.ts.map +1 -1
- package/dist/providers/zai/credentials.js +2 -0
- package/dist/providers/zai/credentials.js.map +1 -1
- package/dist/providers/zai/layout-parsing.d.ts +76 -0
- package/dist/providers/zai/layout-parsing.d.ts.map +1 -0
- package/dist/providers/zai/layout-parsing.js +151 -0
- package/dist/providers/zai/layout-parsing.js.map +1 -0
- package/dist/providers/zai/media.d.ts +19 -0
- package/dist/providers/zai/media.d.ts.map +1 -1
- package/dist/providers/zai/media.js +61 -0
- package/dist/providers/zai/media.js.map +1 -1
- package/dist/providers/zai/monitor-client.d.ts +1 -0
- package/dist/providers/zai/monitor-client.d.ts.map +1 -1
- package/dist/providers/zai/monitor-client.js +3 -2
- package/dist/providers/zai/monitor-client.js.map +1 -1
- package/dist/providers/zai/quota.d.ts +4 -0
- package/dist/providers/zai/quota.d.ts.map +1 -1
- package/dist/providers/zai/quota.js +16 -1
- package/dist/providers/zai/quota.js.map +1 -1
- package/package.json +1 -1
- package/skills/scoutline/SKILL.md +163 -45
- package/skills/scoutline/references/advanced.md +12 -10
|
@@ -2,20 +2,20 @@
|
|
|
2
2
|
name: scoutline
|
|
3
3
|
description: |
|
|
4
4
|
Z.AI, MiniMax, Tavily, Exa, Brave, Firecrawl, Parallel AI, Perplexity, Jina AI, You.com,
|
|
5
|
-
Linkup,
|
|
6
|
-
filters), reading pages to markdown, evidentiary HTTP fetch with
|
|
7
|
-
Wayback archive lookups and snapshot-vs-live diffing, keyless page
|
|
8
|
-
image/video vision analysis, multi-page site crawls, URL-set mapping, deep
|
|
9
|
-
with citations, GitHub repo exploration, and raw MCP tool calls. Select per
|
|
10
|
-
with --provider <zai|minimax|tavily|exa|brave|firecrawl|parallel|perplexity|
|
|
11
|
-
you|linkup|spider>; always-on provider fallback reroutes to
|
|
12
|
-
supplier when one is unavailable.
|
|
5
|
+
Linkup, Spider.cloud, Bocha AI, SearchApi, and Kagi CLI for: web search (multi-provider,
|
|
6
|
+
domain/recency/topic filters), reading pages to markdown, evidentiary HTTP fetch with
|
|
7
|
+
MD5/SHA-256 digests, Wayback archive lookups and snapshot-vs-live diffing, keyless page
|
|
8
|
+
monitoring, image/video vision analysis, multi-page site crawls, URL-set mapping, deep
|
|
9
|
+
research with citations, GitHub repo exploration, and raw MCP tool calls. Select per
|
|
10
|
+
command with --provider <zai|minimax|tavily|exa|brave|firecrawl|parallel|perplexity|
|
|
11
|
+
jina|you|linkup|spider|bocha|searchapi|kagi>; always-on provider fallback reroutes to
|
|
12
|
+
the next configured supplier when one is unavailable.
|
|
13
13
|
---
|
|
14
14
|
|
|
15
15
|
# Scoutline
|
|
16
16
|
|
|
17
17
|
Access Z.AI, MiniMax, Tavily, Exa, Brave, Firecrawl, Parallel AI, Perplexity, Jina AI, You.com,
|
|
18
|
-
Linkup,
|
|
18
|
+
Linkup, Spider.cloud, Bocha AI, SearchApi, and Kagi capabilities via `scoutline`. The
|
|
19
19
|
CLI is self-documenting — use `--help` at any level.
|
|
20
20
|
|
|
21
21
|
## Setup
|
|
@@ -56,6 +56,15 @@ export LINKUP_API_KEY="your-linkup-key"
|
|
|
56
56
|
|
|
57
57
|
# OR Spider.cloud (Search, Reader, Crawl, Map)
|
|
58
58
|
export SPIDER_API_KEY="your-spider-key"
|
|
59
|
+
|
|
60
|
+
# OR Bocha AI (Search)
|
|
61
|
+
export BOCHA_API_KEY="your-bocha-key"
|
|
62
|
+
|
|
63
|
+
# OR SearchApi (Search, Quota)
|
|
64
|
+
export SEARCHAPI_API_KEY="your-searchapi-key"
|
|
65
|
+
|
|
66
|
+
# OR Kagi (Search)
|
|
67
|
+
export KAGI_API_KEY="your-kagi-key"
|
|
59
68
|
```
|
|
60
69
|
|
|
61
70
|
Get a Z.AI key at: https://z.ai/manage-apikey/apikey-list
|
|
@@ -70,6 +79,9 @@ Get a Jina AI key at: https://jina.ai
|
|
|
70
79
|
Get a You.com key at: https://you.com/api
|
|
71
80
|
Get a Linkup key at: https://app.linkup.so
|
|
72
81
|
Get a Spider.cloud key at: https://spider.cloud
|
|
82
|
+
Get a Bocha AI key at: https://open.bochaai.com
|
|
83
|
+
Get a SearchApi key at: https://www.searchapi.io
|
|
84
|
+
Get a Kagi key at: https://kagi.com/settings/api
|
|
73
85
|
|
|
74
86
|
### Interactive onboarding (`scoutline init`)
|
|
75
87
|
|
|
@@ -101,7 +113,7 @@ or env vars; API keys never belong in command arguments.
|
|
|
101
113
|
|
|
102
114
|
Shared commands (`search`, `vision analyze`, `quota`, `doctor`),
|
|
103
115
|
**`repo`**, **`read`**, **`crawl`**, **`map`**, and **`research`**
|
|
104
|
-
accept the global `--provider <zai|minimax|tavily|exa|brave|firecrawl|parallel|perplexity|jina|you|linkup|spider>` flag. Precedence
|
|
116
|
+
accept the global `--provider <zai|minimax|tavily|exa|brave|firecrawl|parallel|perplexity|jina|you|linkup|spider|bocha|searchapi|kagi>` flag. Precedence
|
|
105
117
|
is the flag, then the `SCOUTLINE_PROVIDER` environment variable, then
|
|
106
118
|
the default `zai`. Provider selection is never inferred from
|
|
107
119
|
credentials. Unknown values fail fast with `VALIDATION_ERROR`.
|
|
@@ -110,12 +122,13 @@ credentials. Unknown values fail fast with `VALIDATION_ERROR`.
|
|
|
110
122
|
remain Z.AI-only.
|
|
111
123
|
|
|
112
124
|
Capability coverage at launch (generated from the production registry
|
|
113
|
-
in registry order `[zai, minimax, tavily, exa, brave, firecrawl, parallel, perplexity, jina, you, linkup, spider]`):
|
|
125
|
+
in registry order `[zai, minimax, tavily, exa, brave, firecrawl, parallel, perplexity, jina, you, linkup, spider, bocha, searchapi, kagi]`):
|
|
114
126
|
|
|
115
127
|
- `search` — Z.AI, MiniMax, Tavily, Exa, Brave, Firecrawl, Parallel AI,
|
|
116
|
-
Perplexity, Jina AI, You.com, Linkup,
|
|
117
|
-
control honored by every Provider
|
|
118
|
-
is `--topic <general|news|finance
|
|
128
|
+
Perplexity, Jina AI, You.com, Linkup, Spider.cloud, Bocha AI, SearchApi,
|
|
129
|
+
and Kagi. The only search control honored by every Provider
|
|
130
|
+
is `--topic <general|news|finance>` (Firecrawl rejects the `finance`
|
|
131
|
+
value, so option-level fallback retries it on the next candidate).
|
|
119
132
|
Brave is the only Provider that accepts `--type video`; every other
|
|
120
133
|
Provider rejects `controls.type` as `UnsupportedOptionError` so
|
|
121
134
|
option-level fallback continues to Brave.
|
|
@@ -123,15 +136,25 @@ in registry order `[zai, minimax, tavily, exa, brave, firecrawl, parallel, perpl
|
|
|
123
136
|
(`ui-artifact`, `extract-text`, `diagnose-error`, `diagram`, `chart`)
|
|
124
137
|
follow the same registry and are mediated by MiniMax's compiled
|
|
125
138
|
conformance registry.
|
|
139
|
+
- `vision.extract-text` on Z.AI routes to the GLM-OCR specialist
|
|
140
|
+
(`layout_parsing`, PAYG balance-gated): verbatim markdown extraction,
|
|
141
|
+
PDF input accepted (≤50 MB; images ≤10 MB), content-hash cached for
|
|
142
|
+
24 h (disable for a run with `SCOUTLINE_CACHE=0`). On exhaustion (error 1113) it prints one
|
|
143
|
+
stderr notice and falls back to the plan-covered vision model with
|
|
144
|
+
identical invocation semantics. `--language` and a custom `[prompt]`
|
|
145
|
+
are warn-and-strip on the OCR arm (stderr notice) and honored
|
|
146
|
+
verbatim on the fallback arm and on MiniMax.
|
|
126
147
|
- `quota` — Z.AI, MiniMax, Tavily, Firecrawl (credits), Brave
|
|
127
148
|
(rate-limit window), Jina AI (rate-limit telemetry), Linkup and
|
|
128
|
-
Spider.cloud (credit balance, limit unknown)
|
|
129
|
-
Perplexity,
|
|
149
|
+
Spider.cloud (credit balance, limit unknown), and SearchApi (credits).
|
|
150
|
+
Exa, Parallel AI, Perplexity, You.com, Bocha AI, and Kagi do not
|
|
151
|
+
advertise quota.
|
|
130
152
|
- `diagnostics` — every built-in Provider (Z.AI, MiniMax, Tavily, Exa,
|
|
131
153
|
Brave, Firecrawl, Parallel AI, Perplexity, Jina AI, You.com, Linkup,
|
|
132
|
-
Spider.cloud).
|
|
154
|
+
Spider.cloud, Bocha AI, SearchApi, and Kagi).
|
|
133
155
|
- `read` — Z.AI, Tavily, Exa, Firecrawl, Parallel AI, Jina AI, You.com,
|
|
134
|
-
Linkup, and Spider.cloud (MiniMax, Brave,
|
|
156
|
+
Linkup, and Spider.cloud (MiniMax, Brave, Perplexity, Bocha AI,
|
|
157
|
+
SearchApi, and Kagi do not
|
|
135
158
|
advertise it; Tavily/Exa/Firecrawl/Parallel reject Z.AI-only reader
|
|
136
159
|
options: `--with-links`, `--no-gfm`, `--keep-img-data-url`,
|
|
137
160
|
`--with-images-summary`; Jina maps them natively; You.com mirrors the
|
|
@@ -156,17 +179,19 @@ Vision by Z.AI and MiniMax only. **Provider
|
|
|
156
179
|
fallback is always-on by default**
|
|
157
180
|
(0.11.0+): selecting a non-supplier emits a stderr notice and silently
|
|
158
181
|
reroutes to the next eligible configured Provider in registry order
|
|
159
|
-
`[zai, minimax, tavily, exa, brave, firecrawl, parallel, perplexity, jina, you, linkup, spider]`. Pass
|
|
182
|
+
`[zai, minimax, tavily, exa, brave, firecrawl, parallel, perplexity, jina, you, linkup, spider, bocha, searchapi, kagi]`. Pass
|
|
160
183
|
`--no-fallback` (or set `SCOUTLINE_NO_FALLBACK=1`) to restore the
|
|
161
184
|
previous strict `UNSUPPORTED_CAPABILITY` behavior — the preflight
|
|
162
185
|
still runs capability metadata → configuration → adapter handle in
|
|
163
186
|
order on the effective Provider only.
|
|
164
187
|
|
|
165
|
-
### Search fan-out (multi-provider search, ADR-
|
|
188
|
+
### Search fan-out (multi-provider search, ADR-0012)
|
|
166
189
|
|
|
167
190
|
`search` alone can run one query across several providers in parallel
|
|
168
|
-
and merge the results (dedupe by canonical URL identity
|
|
169
|
-
|
|
191
|
+
and merge the results (dedupe by canonical URL identity with
|
|
192
|
+
near-duplicate title clustering, fusion ranking — `rrf` by default,
|
|
193
|
+
`config set fusion occurrence` restores the legacy ordering — and
|
|
194
|
+
additive `mergedFrom` provenance per result; arms are pinned —
|
|
170
195
|
no per-arm fallback, and an arm that rejects a control drops with a
|
|
171
196
|
stderr notice instead of failing the invocation). Activation tiers:
|
|
172
197
|
|
|
@@ -184,6 +209,17 @@ stderr notice instead of failing the invocation). Activation tiers:
|
|
|
184
209
|
billable calls.** Use it when recall across providers matters more than
|
|
185
210
|
spend; use a single `--provider` pin when it does not.
|
|
186
211
|
|
|
212
|
+
### Fusion ranking (merged search)
|
|
213
|
+
|
|
214
|
+
Merged lists (fan-out and `--merge`) rank by `fusion` (config key;
|
|
215
|
+
`SCOUTLINE_FUSION` env wins; no `--fusion` flag): `rrf` (default) scores
|
|
216
|
+
Σ 1/(60 + rank) over every arm × sub-query occurrence and emits a fixed
|
|
217
|
+
3-decimal `fusionScore` on every row; `occurrence` restores the legacy
|
|
218
|
+
ordering byte-for-byte. Near-dup clustering (3-word title shingles,
|
|
219
|
+
Jaccard ≥ 0.8, ≥ 4 shingles) runs in both modes — absorbed urls travel
|
|
220
|
+
verbatim on the representative's `clusterUrls`; `www`/apex hosts
|
|
221
|
+
collapse to one identity.
|
|
222
|
+
|
|
187
223
|
### Local context (`--context` / `--context-stdin`)
|
|
188
224
|
|
|
189
225
|
`research` and `search` accept a local notes file (markdown headings +
|
|
@@ -246,27 +282,29 @@ scoutline search "x" --no-journal # skip this one call
|
|
|
246
282
|
|
|
247
283
|
## Capability Matrix
|
|
248
284
|
|
|
249
|
-
| Capability | Z.AI | MiniMax | Tavily | Exa | Brave | Firecrawl | Parallel | Perplexity | Jina AI | You.com | Linkup | Spider.cloud | arXiv | OpenAlex | Crossref | PubMed | Europe PMC | Command |
|
|
250
|
-
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
|
251
|
-
| Search | Yes | Yes (no domain/recency/content-size/location) | Yes (no location) | Yes (no location) | Yes (web/news/video; `--content-size high` → LLM Context) | Yes (no location; `--content-size high` = markdown, +1 credit/result) | Yes (domain, recency, location, content-size via `advanced_settings`; topic via keyword) | Yes (domain, recency, content-size; topic via keyword) | Yes (domain, location; rejects recency/content-size; topic via keyword) | Yes | Yes | Yes | No | No | No | No | No | `scoutline search` |
|
|
252
|
-
| General single-image interpretation | Yes | Yes (JPG/JPEG/PNG/WebP ≤50 MiB) | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | `scoutline vision analyze` |
|
|
253
|
-
| Specialized Vision (UI-to-code, OCR, error diagnosis, diagram) | Yes | Available (live-attested; conformance-gated) | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | `scoutline vision ui-to-code`, `vision extract-text`, `vision diagnose-error`, `vision diagram` |
|
|
254
|
-
| Specialized Vision (chart) | Yes | Pending (implemented; fixture image defect blocks live conformance) | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | `scoutline vision chart` |
|
|
255
|
-
| Two-image diff, video | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | `scoutline vision diff`, `vision video` |
|
|
256
|
-
| Quota (normalized) | Yes | Yes | Yes | **No** (deferred) | Yes (rate-limit window, not spend) | Yes (credits) | **No** | **No** | Yes (rate-limit telemetry, not spend) | **No** | Yes (credit balance, not spend) | Yes (credit balance, not spend) | No | No | No | No | No | `scoutline quota [--all-providers]` |
|
|
257
|
-
| Diagnostics | Yes | Yes | Yes | Yes | Yes | Yes (single-scrape probe) | Yes | Yes | Yes | Yes | Yes | Yes | Yes (keyless probe) | Yes (keyless probe) | Yes (keyless probe) | Yes (keyless probe) | Yes (keyless probe) | `scoutline doctor [--no-tools] [--available]`; every row carries `availability` (`ok`/`exhausted`/`error`/`unconfigured`), rows sort healthy-first, and `availableProviders` lists the `ok` providers in registry order |
|
|
258
|
-
| Reader | Yes | **No** (UNSUPPORTED_CAPABILITY) | Yes (rejects Z.AI-only options) | Yes (rejects Z.AI-only options) | **No** (UNSUPPORTED_CAPABILITY) | Yes (returns page titles) | Yes | **No** (UNSUPPORTED_CAPABILITY) | Yes | Yes (rejects Z.AI-only options plus `--format text`) | Yes (renders JavaScript; rejects `--format text` and `--no-images`) | Yes (rejects Z.AI-only options) | No | No | No | No | No | `scoutline read` |
|
|
259
|
-
| Repository exploration (search/read/tree/brief) | Yes | **No** (UNSUPPORTED_CAPABILITY) | **No** (UNSUPPORTED_CAPABILITY) | **No** (UNSUPPORTED_CAPABILITY) | **No** (UNSUPPORTED_CAPABILITY) | **No** (UNSUPPORTED_CAPABILITY) | **No** (UNSUPPORTED_CAPABILITY) | **No** (UNSUPPORTED_CAPABILITY) | **No** (UNSUPPORTED_CAPABILITY) | **No** (UNSUPPORTED_CAPABILITY) | **No** (UNSUPPORTED_CAPABILITY) | **No** (UNSUPPORTED_CAPABILITY) | No | No | No | No | No | `scoutline repo ...` |
|
|
260
|
-
| Crawl | **No** | **No** | Yes | **No** | **No** | Yes (async; resumable after Ctrl-C) | **No** | **No** | **No** | **No** | **No** | Yes (sync) | No | No | No | No | No | `scoutline crawl` |
|
|
261
|
-
| Map | **No** | **No** | Yes | **No** | **No** | Yes | **No** | **No** | **No** | **No** | **No** | Yes | No | No | No | No | No | `scoutline map` |
|
|
262
|
-
| Research (4-250 credits) | **No** | **No** | Yes | Yes | **No** | **No** (`/deep-research` deprecated) | Yes | Yes | Yes | Yes | Yes | **No** | No | No | No | No | No | `scoutline research` |
|
|
263
|
-
| Science (scholarly search/get) | No | No | No | No | No | No | No | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | `scoutline science search <query>` / `scoutline science get <identifier>`; keyless — no API key required; controls `--author`/`--year`/`--venue`/`--type` consumed only where the supplier wire supports them |
|
|
264
|
-
| Raw tools | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | `scoutline tools`, `tool`, `call` |
|
|
265
|
-
| Code Mode | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | `scoutline code ...` |
|
|
285
|
+
| Capability | Z.AI | MiniMax | Tavily | Exa | Brave | Firecrawl | Parallel | Perplexity | Jina AI | You.com | Linkup | Spider.cloud | Bocha AI | SearchApi | Kagi | arXiv | OpenAlex | Crossref | PubMed | Europe PMC | Command |
|
|
286
|
+
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
|
|
287
|
+
| Search | Yes | Yes (no domain/recency/content-size/location) | Yes (no location) | Yes (no location) | Yes (web/news/video; `--content-size high` → LLM Context) | Yes (no location; `--content-size high` = markdown, +1 credit/result) | Yes (domain, recency, location, content-size via `advanced_settings`; topic via keyword) | Yes (domain, recency, content-size; topic via keyword) | Yes (domain, location; rejects recency/content-size; topic via keyword) | Yes | Yes | Yes | Yes (no location/type; domain via `site:` prefix) | Yes (no content-size/type; domain via `site:` prefix) | Yes (no location/recency/content-size/type; domain via `site:` prefix; `--topic news` → `/api/v0/enrich/news`) | No | No | No | No | No | `scoutline search` |
|
|
288
|
+
| General single-image interpretation | Yes | Yes (JPG/JPEG/PNG/WebP ≤50 MiB) | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | `scoutline vision analyze` |
|
|
289
|
+
| Specialized Vision (UI-to-code, OCR, error diagnosis, diagram) | Yes (extract-text = glm-ocr engine with exhaustion fallback; PDF ≤50 MB accepted) | Available (live-attested; conformance-gated) | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | `scoutline vision ui-to-code`, `vision extract-text`, `vision diagnose-error`, `vision diagram` |
|
|
290
|
+
| Specialized Vision (chart) | Yes | Pending (implemented; fixture image defect blocks live conformance) | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | `scoutline vision chart` |
|
|
291
|
+
| Two-image diff, video | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | `scoutline vision diff`, `vision video` |
|
|
292
|
+
| Quota (normalized) | Yes | Yes | Yes | **No** (deferred) | Yes (rate-limit window, not spend) | Yes (credits) | **No** | **No** | Yes (rate-limit telemetry, not spend) | **No** | Yes (credit balance, not spend) | Yes (credit balance, not spend) | No | Yes | No | No | No | No | No | No | `scoutline quota [--all-providers]` |
|
|
293
|
+
| Diagnostics | Yes | Yes | Yes | Yes | Yes | Yes (single-scrape probe) | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes | Yes (keyless probe) | Yes (keyless probe) | Yes (keyless probe) | Yes (keyless probe) | Yes (keyless probe) | `scoutline doctor [--no-tools] [--available]`; every row carries `availability` (`ok`/`exhausted`/`error`/`unconfigured`), rows sort healthy-first, and `availableProviders` lists the `ok` providers in registry order |
|
|
294
|
+
| Reader | Yes | **No** (UNSUPPORTED_CAPABILITY) | Yes (rejects Z.AI-only options) | Yes (rejects Z.AI-only options) | **No** (UNSUPPORTED_CAPABILITY) | Yes (returns page titles) | Yes | **No** (UNSUPPORTED_CAPABILITY) | Yes | Yes (rejects Z.AI-only options plus `--format text`) | Yes (renders JavaScript; rejects `--format text` and `--no-images`) | Yes (rejects Z.AI-only options) | **No** (UNSUPPORTED_CAPABILITY) | **No** (UNSUPPORTED_CAPABILITY) | **No** (UNSUPPORTED_CAPABILITY) | No | No | No | No | No | `scoutline read` |
|
|
295
|
+
| Repository exploration (search/read/tree/brief) | Yes | **No** (UNSUPPORTED_CAPABILITY) | **No** (UNSUPPORTED_CAPABILITY) | **No** (UNSUPPORTED_CAPABILITY) | **No** (UNSUPPORTED_CAPABILITY) | **No** (UNSUPPORTED_CAPABILITY) | **No** (UNSUPPORTED_CAPABILITY) | **No** (UNSUPPORTED_CAPABILITY) | **No** (UNSUPPORTED_CAPABILITY) | **No** (UNSUPPORTED_CAPABILITY) | **No** (UNSUPPORTED_CAPABILITY) | **No** (UNSUPPORTED_CAPABILITY) | **No** (UNSUPPORTED_CAPABILITY) | **No** (UNSUPPORTED_CAPABILITY) | **No** (UNSUPPORTED_CAPABILITY) | No | No | No | No | No | `scoutline repo ...` |
|
|
296
|
+
| Crawl | **No** | **No** | Yes | **No** | **No** | Yes (async; resumable after Ctrl-C) | **No** | **No** | **No** | **No** | **No** | Yes (sync) | **No** | **No** | **No** | No | No | No | No | No | `scoutline crawl` |
|
|
297
|
+
| Map | **No** | **No** | Yes | **No** | **No** | Yes | **No** | **No** | **No** | **No** | **No** | Yes | **No** | **No** | **No** | No | No | No | No | No | `scoutline map` |
|
|
298
|
+
| Research (4-250 credits) | **No** | **No** | Yes | Yes | **No** | **No** (`/deep-research` deprecated) | Yes | Yes | Yes | Yes | Yes | **No** | **No** | **No** | **No** | No | No | No | No | No | `scoutline research` |
|
|
299
|
+
| Science (scholarly search/get) | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | Yes | Yes | Yes | Yes | Yes | `scoutline science search <query>` / `scoutline science get <identifier>`; keyless — no API key required; controls `--author`/`--year`/`--venue`/`--type` consumed only where the supplier wire supports them |
|
|
300
|
+
| Raw tools | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | `scoutline tools`, `tool`, `call` |
|
|
301
|
+
| Code Mode | Yes | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | No | `scoutline code ...` |
|
|
266
302
|
|
|
267
303
|
Vision results are never cached. Z.AI image limits are JPG/JPEG/PNG ≤5 MiB.
|
|
268
|
-
Search result count is applied locally after normalization
|
|
269
|
-
to the active Provider.
|
|
304
|
+
Search result count is applied locally after normalization; for every
|
|
305
|
+
Provider except Bocha it is never sent to the active Provider. Bocha's
|
|
306
|
+
wire request carries a native count parameter, so its Adapter forwards
|
|
307
|
+
the requested count (default 10) and partitions its cache entries by it.
|
|
270
308
|
|
|
271
309
|
## Science
|
|
272
310
|
|
|
@@ -325,6 +363,67 @@ per-op `output` writes captured stdout (temp + rename); `vision batch` adds
|
|
|
325
363
|
per-input files plus `out/summary.json` (`--out` required for more than one
|
|
326
364
|
input).
|
|
327
365
|
|
|
366
|
+
## Investigation (`investigate`, ADR-0013)
|
|
367
|
+
|
|
368
|
+
A local, transparent, cache-resumable pipeline: plans sub-queries, fans
|
|
369
|
+
out search, merges by Fusion, reads the top sources, and extracts
|
|
370
|
+
deterministic passages into an EvidencePack. No provider-side job runs —
|
|
371
|
+
distinct from Research, an opaque billed provider job. Agent-synthesis is
|
|
372
|
+
the default: the pack is data, not prose (text output modes fall back to
|
|
373
|
+
JSON), and the calling agent writes the brief. `--synthesize` is the
|
|
374
|
+
additive-only escape hatch: an optional `brief` attaches to the pack
|
|
375
|
+
through Z.AI chat (Z.AI-only; it ignores `--provider`), never replaces
|
|
376
|
+
it — absent by default.
|
|
377
|
+
|
|
378
|
+
```bash
|
|
379
|
+
scoutline investigate "rust async runtime benchmarks"
|
|
380
|
+
scoutline investigate "rust async | rust tokio" # explicit pipes split sub-queries
|
|
381
|
+
scoutline investigate "topic" --provider tavily,exa --sources 8
|
|
382
|
+
scoutline investigate "topic" --synthesize # attach a Z.AI brief (additive)
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
Sub-query planning precedence: explicit pipes (the `--merge` grammar,
|
|
386
|
+
escape a literal pipe with `\|`) > `--context <path>` (local notes file,
|
|
387
|
+
never leaves the machine) > deterministic templates of the question
|
|
388
|
+
(original, key terms, overview/evidence/criticism; deduped, capped 5).
|
|
389
|
+
Cost is pinned before any billable work: N sub-queries × M arms
|
|
390
|
+
billable searches + up to K reads (default `--sources` 5).
|
|
391
|
+
|
|
392
|
+
Sources surfaced but unread land in `coverage.unread` with a reason code
|
|
393
|
+
(`no-reader-supplier`, `reader-failed:<code>`) — never silently dropped.
|
|
394
|
+
`--max-chars` is the output budget: passages trim first, late sources
|
|
395
|
+
drop; the full untrimmed pack is saved and recoverable via
|
|
396
|
+
`scoutline history show <ref>` (the `compaction {budget, ref}` stamp
|
|
397
|
+
names it). `--depth`, `--arms`, and `--budget-tokens` are rejected
|
|
398
|
+
with `VALIDATION_ERROR` by design (no depth axis; the arm set IS the
|
|
399
|
+
provider pin; `--max-chars` is the budget).
|
|
400
|
+
|
|
401
|
+
### Claim verification (`investigate --verify`, ADR-0013 follow-up)
|
|
402
|
+
|
|
403
|
+
`--verify` turns the positional into a STATEMENT: sentence-claims
|
|
404
|
+
(the extract grammar's terminators; `|` is literal text) capped at 8
|
|
405
|
+
— a 9th sentence fails loud with VALIDATION_ERROR naming the cap,
|
|
406
|
+
never silent truncation. Each claim is searched verbatim (no
|
|
407
|
+
per-claim controls; `--context` + `--verify` is a mode-conflict
|
|
408
|
+
VALIDATION_ERROR — verify owns planning), then deterministically
|
|
409
|
+
matched to the extracted passages. The pack gains an additive
|
|
410
|
+
`verify` block: per claim, a verdict, evidence pointers
|
|
411
|
+
`{sourceIndex, passageIndex}`, and a negation-cue count.
|
|
412
|
+
|
|
413
|
+
```bash
|
|
414
|
+
scoutline investigate "X is fast. Y lags." --verify
|
|
415
|
+
scoutline investigate "claim one. claim two." --verify --max-chars 4000
|
|
416
|
+
```
|
|
417
|
+
|
|
418
|
+
Verdicts: `corroborated` (matching passages, zero cues) /
|
|
419
|
+
`contradicted` (a term-matching passage carries a negation cue from
|
|
420
|
+
a fixed, versioned cue list) / `unresolved` (no matching passages).
|
|
421
|
+
**Hint-grade disclosure**: `contradicted` is a cue heuristic, NOT
|
|
422
|
+
semantic contradiction — semantic judgment stays with you; the
|
|
423
|
+
per-claim `negationCues` count exists for exactly that re-judgment.
|
|
424
|
+
`--max-chars` never cuts claim text or verdicts (evidence pointers
|
|
425
|
+
drop last, whole); cost notices state "N claims × M arms".
|
|
426
|
+
|
|
328
427
|
## Commands
|
|
329
428
|
|
|
330
429
|
| Command | Purpose | Help |
|
|
@@ -340,6 +439,7 @@ input).
|
|
|
340
439
|
| crawl | Multi-page website traversal (Tavily, Firecrawl, or Spider.cloud) | `--help` for depth/breadth/filters |
|
|
341
440
|
| map | URL-set discovery without fetching pages (Tavily, Firecrawl, or Spider.cloud) | `--help` for depth/breadth/filters |
|
|
342
441
|
| research | Deep research with citations (seven providers; 4-250 credits) | `--help` for model/citation/timeout and local context |
|
|
442
|
+
| investigate | Local investigation pipeline returning an EvidencePack (ADR-0013); `--verify` adds claim verdicts (cue-heuristic, hint-grade) | `--help` for planner tiers, controls, and cost |
|
|
343
443
|
| repo | GitHub code search and reading (Z.AI) | `--help` for tree/search/read/brief |
|
|
344
444
|
| quota | Provider-normalized plan usage dashboard | `--help` for `--all-providers` |
|
|
345
445
|
| tools | List available MCP tools (Z.AI) | |
|
|
@@ -445,6 +545,19 @@ scoutline --provider spider crawl https://docs.example.com --depth 2
|
|
|
445
545
|
scoutline --provider spider map https://docs.example.com
|
|
446
546
|
scoutline --provider spider quota # credit balance
|
|
447
547
|
|
|
548
|
+
# Bocha AI (Search)
|
|
549
|
+
scoutline --provider bocha search "AI policy news" --topic news
|
|
550
|
+
scoutline doctor --provider bocha
|
|
551
|
+
|
|
552
|
+
# SearchApi (Search, Quota)
|
|
553
|
+
scoutline --provider searchapi search "AI policy news" --topic news
|
|
554
|
+
scoutline --provider searchapi quota
|
|
555
|
+
scoutline doctor --provider searchapi
|
|
556
|
+
|
|
557
|
+
# Kagi (Search)
|
|
558
|
+
scoutline --provider kagi search "AI policy news" --topic news
|
|
559
|
+
scoutline doctor --provider kagi
|
|
560
|
+
|
|
448
561
|
# All-Provider quota
|
|
449
562
|
scoutline quota --all-providers
|
|
450
563
|
|
|
@@ -477,6 +590,9 @@ scoutline config get routing
|
|
|
477
590
|
| You.com | Search/reader/research; no quota endpoint. |
|
|
478
591
|
| Linkup | Research priced by reasoning depth ($0.25-$2.50/query); quota reports the prepaid USD balance. |
|
|
479
592
|
| Spider.cloud | Crawl/map (sync) plus search/reader; credit-based. |
|
|
593
|
+
| Bocha AI | Web search with `--domain` as a `site:` prefix, `--recency` freshness, and `--content-size high` summaries; search + diagnostics only. Key: `BOCHA_API_KEY` — https://open.bochaai.com. |
|
|
594
|
+
| SearchApi | Exact Google-SERP search (`--topic news` routes to the google_news engine) plus credit quota via `quota`; search + quota + diagnostics only. Key: `SEARCHAPI_API_KEY` — https://www.searchapi.io. |
|
|
595
|
+
| Kagi | Search (and `--topic news` via the enrich/news endpoint) with a diagnostics probe; no reader/research/crawl/map/vision/quota. Key: `KAGI_API_KEY` — https://kagi.com/settings/api. |
|
|
480
596
|
| arXiv, OpenAlex, Crossref, PubMed, Europe PMC | `scoutline science search` / `science get` only — keyless scholarly lookups (five suppliers, DOI-deduped merge; `--provider` pins one). |
|
|
481
597
|
|
|
482
598
|
## Repository Exploration
|
|
@@ -584,10 +700,12 @@ legacy-key construction — ambient `process.env` is never reread.
|
|
|
584
700
|
## Reader
|
|
585
701
|
|
|
586
702
|
`scoutline read` participates in Provider selection. Z.AI, Tavily, Exa,
|
|
587
|
-
|
|
703
|
+
Firecrawl, Parallel AI, Jina AI, You.com, Linkup, and Spider.cloud
|
|
704
|
+
advertise `reader`; Z.AI supplies it through the Z.AI
|
|
588
705
|
Reader Adapter, Tavily through the Tavily `/extract` endpoint, Exa
|
|
589
|
-
through `/contents`, and Firecrawl through `/v2/scrape`. MiniMax
|
|
590
|
-
Brave do not, so by default
|
|
706
|
+
through `/contents`, and Firecrawl through `/v2/scrape`. MiniMax,
|
|
707
|
+
Brave, Perplexity, Bocha AI, SearchApi, and Kagi do not, so by default
|
|
708
|
+
(0.11.0+) selecting any of them emits a stderr
|
|
591
709
|
notice and Provider fallback auto-reroutes to the next eligible
|
|
592
710
|
configured supplier; under `--no-fallback` (or
|
|
593
711
|
`SCOUTLINE_NO_FALLBACK=1`) the preflight surfaces
|
|
@@ -718,7 +836,7 @@ additive optional fields to both schemas
|
|
|
718
836
|
{ source: "snapshot" | "live", observedAt, authoritative }`, the
|
|
719
837
|
`providers` union may include a `{ status: "none", reason:
|
|
720
838
|
"no-capability" }` row for a configured provider without quota (Exa,
|
|
721
|
-
Parallel, Perplexity, You.com),
|
|
839
|
+
Parallel, Perplexity, You.com, Bocha AI, and Kagi),
|
|
722
840
|
and each `doctor` provider entry may carry `quota: { source:
|
|
723
841
|
"snapshot" | "none", observedAt?, authoritative }` plus `verification:
|
|
724
842
|
{ status, checkedAt, reason? }`. Each `quota` requests category may
|
|
@@ -8,9 +8,9 @@ gate.
|
|
|
8
8
|
|
|
9
9
|
Shared commands (`search`, `vision analyze`, `quota`, `doctor`),
|
|
10
10
|
**`repo`**, **`read`**, **`crawl`**, **`map`**, and **`research`** accept
|
|
11
|
-
the global `--provider <zai|minimax|tavily|exa|brave|firecrawl|parallel|perplexity|jina|you|linkup|spider>` flag. Precedence:
|
|
11
|
+
the global `--provider <zai|minimax|tavily|exa|brave|firecrawl|parallel|perplexity|jina|you|linkup|spider|bocha|searchapi|kagi>` flag. Precedence:
|
|
12
12
|
|
|
13
|
-
1. `--provider <zai|minimax|tavily|exa|brave|firecrawl|parallel|perplexity|jina|you|linkup|spider>` on the command line
|
|
13
|
+
1. `--provider <zai|minimax|tavily|exa|brave|firecrawl|parallel|perplexity|jina|you|linkup|spider|bocha|searchapi|kagi>` on the command line
|
|
14
14
|
2. `SCOUTLINE_PROVIDER` environment variable
|
|
15
15
|
3. Default `zai`
|
|
16
16
|
|
|
@@ -19,11 +19,12 @@ invocation. Provider selection is never inferred from credentials.
|
|
|
19
19
|
|
|
20
20
|
`tools`, `tool`, `call`, and `code` accept the flag but ignore it; they
|
|
21
21
|
remain Z.AI-only and do not validate the supplied value. `repo` and `read`
|
|
22
|
-
participate in selection: Z.AI, Tavily, Exa, Firecrawl, Parallel,
|
|
23
|
-
|
|
24
|
-
`crawl` and `map` participate in selection and
|
|
25
|
-
|
|
26
|
-
|
|
22
|
+
participate in selection: Z.AI, Tavily, Exa, Firecrawl, Parallel, Jina,
|
|
23
|
+
You.com, Linkup, and Spider.cloud supply `reader`; only Z.AI supplies
|
|
24
|
+
`repository-exploration`. `crawl` and `map` participate in selection and
|
|
25
|
+
are supplied by Tavily, Firecrawl, and Spider.cloud. `research` is
|
|
26
|
+
supplied by Tavily, Exa, Parallel, Perplexity, Jina, You.com, and
|
|
27
|
+
Linkup. By default (0.11.0+) Provider
|
|
27
28
|
fallback is always-on: selecting a non-supplier emits a stderr notice
|
|
28
29
|
and silently reroutes to the next eligible configured supplier in
|
|
29
30
|
registry order. Under `--no-fallback` (or `SCOUTLINE_NO_FALLBACK=1`)
|
|
@@ -342,9 +343,10 @@ each advertised capability, exactly which built-in Providers supply it.
|
|
|
342
343
|
`sharedCapabilities` and `zaiOnlyCapabilities` are gone; their two-array
|
|
343
344
|
derivation silently hid capabilities supplied by a subset of providers.
|
|
344
345
|
The matrix replaces them. `repository-exploration` is reported under
|
|
345
|
-
Z.AI alone; `reader` under Z.AI, Tavily, Exa, Firecrawl, Parallel,
|
|
346
|
-
|
|
347
|
-
|
|
346
|
+
Z.AI alone; `reader` under Z.AI, Tavily, Exa, Firecrawl, Parallel, Jina,
|
|
347
|
+
You.com, Linkup, and Spider.cloud; `crawl` and `map` under Tavily,
|
|
348
|
+
Firecrawl, and Spider.cloud; `research` under Tavily, Exa, Parallel,
|
|
349
|
+
Perplexity, Jina, You.com, and Linkup. Doctor help derives its
|
|
348
350
|
unsupported lists from the same descriptor metadata for every other
|
|
349
351
|
Provider.
|
|
350
352
|
|