scoutline 0.22.0 → 0.23.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 +60 -26
- 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/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/index.d.ts +72 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +364 -8
- 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/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 +6 -0
- 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 +1 -1
- 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 +2 -1
- 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/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 +93 -45
- package/skills/scoutline/references/advanced.md +12 -10
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
import type { CommandContext, CommandResult, DataCommandResult } from "../command-invocation.js";
|
|
13
13
|
import type { SearchCapability, SearchTopic, SearchType } from "../capabilities/search.js";
|
|
14
14
|
import type { ResponseCache } from "../lib/cache.js";
|
|
15
|
+
import type { FusionMode } from "../lib/config-store.js";
|
|
15
16
|
import type { RetryPolicy } from "../lib/execution.js";
|
|
16
17
|
import { type LadderRule } from "../lib/output-budget.js";
|
|
17
18
|
import type { ProviderDescriptor, ProviderId } from "../providers/types.js";
|
|
@@ -53,6 +54,15 @@ export interface SearchExecutionDependencies {
|
|
|
53
54
|
readonly consume?: ConsumptionSink;
|
|
54
55
|
/** Timestamp source for consumption events; defaults to `Date.now`. */
|
|
55
56
|
readonly now?: () => number;
|
|
57
|
+
/**
|
|
58
|
+
* Fusion ranking mode (seed-24 T3). Resolved ONCE at the handler seam
|
|
59
|
+
* via `resolveFusionMode` (env > config > default "rrf") and threaded
|
|
60
|
+
* here so the command never parses a flag or a config file itself.
|
|
61
|
+
* Omitted (tests and other direct callers) → "rrf", the standing
|
|
62
|
+
* default; the merge seam still requires an explicit value, so this
|
|
63
|
+
* default lives at the caller and never inside `mergeResults`.
|
|
64
|
+
*/
|
|
65
|
+
readonly fusionMode?: FusionMode;
|
|
56
66
|
}
|
|
57
67
|
export interface FormattedResult {
|
|
58
68
|
rank: number;
|
|
@@ -69,6 +79,13 @@ export interface FormattedResult {
|
|
|
69
79
|
* single-provider path — SCHEMA.md.
|
|
70
80
|
*/
|
|
71
81
|
mergedFrom?: ProviderId[];
|
|
82
|
+
/**
|
|
83
|
+
* Near-duplicate clustering (DESIGN D4, fan-out lane T5): on a cluster
|
|
84
|
+
* representative, every OTHER member's emitted url, verbatim, in
|
|
85
|
+
* first-encounter order. Absent on unclustered rows — the key is never
|
|
86
|
+
* emitted at all rather than emitted empty.
|
|
87
|
+
*/
|
|
88
|
+
clusterUrls?: string[];
|
|
72
89
|
}
|
|
73
90
|
/** The search Output Budget ladder (ordered; see ADR-0007 T3). */
|
|
74
91
|
export declare const SEARCH_LADDER: readonly [LadderRule<unknown>, LadderRule<unknown>, LadderRule<unknown>];
|
|
@@ -82,25 +99,49 @@ export interface MergeGridArm {
|
|
|
82
99
|
results: FormattedResult[][];
|
|
83
100
|
}
|
|
84
101
|
export interface MergeResultsOptions {
|
|
102
|
+
/**
|
|
103
|
+
* Ranking algorithm. REQUIRED — the caller resolves it (production:
|
|
104
|
+
* `deps.fusionMode`, defaulting to "rrf" at the handler seam), so the
|
|
105
|
+
* seam cannot silently drift to a default inside the merge. A value
|
|
106
|
+
* that is neither mode throws a plain Error (internal invariant, not
|
|
107
|
+
* a user-facing ValidationError).
|
|
108
|
+
*/
|
|
109
|
+
mode: FusionMode;
|
|
85
110
|
/** Emit mergedFrom provenance on every result (fan-out active). */
|
|
86
111
|
emitMergedFrom?: boolean;
|
|
87
112
|
/** Post-merge --count cap. Each arm was already asked for this count. */
|
|
88
113
|
count?: number;
|
|
89
114
|
}
|
|
115
|
+
/** Jaccard similarity over two shingle sets: |∩| / |∪|. */
|
|
116
|
+
export declare function jaccard(a: Set<string>, b: Set<string>): number;
|
|
90
117
|
/**
|
|
91
|
-
* Merge results from an (arm × sub-query) grid (DESIGN D3). Generalizes
|
|
92
|
-
* the pre-fan-out sub-query merge with
|
|
93
|
-
* `canonicalUrl(url)` (DESIGN D4) instead of the raw string
|
|
94
|
-
*
|
|
95
|
-
*
|
|
118
|
+
* Merge results from an (arm × sub-query) grid (DESIGN D3, D2). Generalizes
|
|
119
|
+
* the pre-fan-out sub-query merge with two new keys: dedupe by
|
|
120
|
+
* `canonicalUrl(url)` (DESIGN D4) instead of the raw string, and a
|
|
121
|
+
* caller-supplied ranking `mode`.
|
|
122
|
+
*
|
|
96
123
|
* First-writer-wins: the earlier arm's title/summary/url win a collision
|
|
97
124
|
* (arm order is the tiebreak priority). Every URL accumulates
|
|
98
125
|
* `mergedFrom` (distinct providers, first-encounter order) when
|
|
99
126
|
* `emitMergedFrom` is set, and the merged list is sliced to `count`
|
|
100
127
|
* post-merge. The single-provider `--merge` path and the fan-out path
|
|
101
128
|
* share this one implementation.
|
|
129
|
+
*
|
|
130
|
+
* Ranking:
|
|
131
|
+
* - `"occurrence"` (legacy): occurrence count desc → best position asc,
|
|
132
|
+
* over a stable sort. Byte-identical to the pre-fusion merge.
|
|
133
|
+
* - `"rrf"`: raw reciprocal-rank score desc (`Σ 1/(RRF_K + rank)` over
|
|
134
|
+
* every grid occurrence) → occurrences desc → bestPos asc →
|
|
135
|
+
* first-encounter (the stable sort's insertion order). The sort runs
|
|
136
|
+
* on the RAW double, never on the rounded display value: two rows
|
|
137
|
+
* that round to the same `fusionScore` still order by their true
|
|
138
|
+
* scores. Under this mode every row emits `fusionScore` (exactly
|
|
139
|
+
* three decimals, locale-independent); under "occurrence" the key is
|
|
140
|
+
* absent entirely.
|
|
141
|
+
*
|
|
142
|
+
* `bestPos` is internal bookkeeping in both modes and never emitted.
|
|
102
143
|
*/
|
|
103
|
-
export declare function mergeResults(grid: MergeGridArm[], options
|
|
144
|
+
export declare function mergeResults(grid: MergeGridArm[], options: MergeResultsOptions): FormattedResult[];
|
|
104
145
|
/**
|
|
105
146
|
* Output Budget T3: rebuild every text presentation from a budgeted
|
|
106
147
|
* projection so -O compact/markdown/refs/tty reflect the shrunken
|
|
@@ -202,6 +243,13 @@ export interface FanoutExecutionOptions {
|
|
|
202
243
|
readonly env: NodeJS.ProcessEnv;
|
|
203
244
|
readonly query: string;
|
|
204
245
|
readonly searchOptions: SearchOptions;
|
|
246
|
+
/**
|
|
247
|
+
* Fusion ranking mode for the (arm × sub-query) merge (seed-24 T3),
|
|
248
|
+
* threaded from the handler's `deps.fusionMode`. Required: the fan-out
|
|
249
|
+
* merge always names its ranking algorithm explicitly — there is no
|
|
250
|
+
* defaulting inside the executor.
|
|
251
|
+
*/
|
|
252
|
+
readonly fusionMode: FusionMode;
|
|
205
253
|
readonly dependencies: FanoutExecutionDependencies;
|
|
206
254
|
readonly secrets?: string[];
|
|
207
255
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACjG,OAAO,KAAK,EACV,gBAAgB,EAIhB,WAAW,EACX,UAAU,EACX,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAA0B,KAAK,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAElF,OAAO,KAAK,EAAE,kBAAkB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/search.js
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
import { executeSearch } from "../lib/execution.js";
|
|
13
13
|
import { rejectSmuggledMaxChars } from "../lib/output-budget.js";
|
|
14
14
|
import { canonicalUrl } from "../lib/url.js";
|
|
15
|
+
import { SHARED_PROVIDER_FLAG_IDS, SHARED_PROVIDER_IDS } from "../providers/catalog.js";
|
|
15
16
|
import { formatSearchResultsPretty } from "../lib/tty.js";
|
|
16
17
|
import { ValidationError, UnsupportedOptionError, UnsupportedCapabilityError, } from "../lib/errors.js";
|
|
17
18
|
import { redactCredentialString } from "../lib/redact.js";
|
|
@@ -105,20 +106,224 @@ function buildControls(options) {
|
|
|
105
106
|
return Object.keys(controls).length > 0 ? controls : undefined;
|
|
106
107
|
}
|
|
107
108
|
/**
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
|
|
109
|
+
* Reciprocal-rank-fusion constant (DESIGN D2). Fixed by the fusion
|
|
110
|
+
* contract — deliberately NOT a knob, a parameter, or a config value:
|
|
111
|
+
* the fusionScore for every row must stay comparable across runs,
|
|
112
|
+
* providers, and machines.
|
|
113
|
+
*/
|
|
114
|
+
const RRF_K = 60;
|
|
115
|
+
/**
|
|
116
|
+
* Near-duplicate title clustering constant (DESIGN D4). A fixed contract,
|
|
117
|
+
* not a knob: the same title pair must cluster on every machine and run.
|
|
118
|
+
*/
|
|
119
|
+
const CLUSTER_JACCARD_MIN = 0.8;
|
|
120
|
+
/** Shingle width (DESIGN D4): a 3-word sliding window over the title. */
|
|
121
|
+
const SHINGLE_SIZE = 3;
|
|
122
|
+
/**
|
|
123
|
+
* Titles yielding fewer shingles than this are never clustered: at 3
|
|
124
|
+
* shingles a one-word difference swings Jaccard too far for the signal to
|
|
125
|
+
* mean anything (two 5-word titles share 3 shingles → J = 1.0 on 3
|
|
126
|
+
* samples). 6 words → 4 shingles is the smallest title that can cluster.
|
|
127
|
+
*/
|
|
128
|
+
const CLUSTER_MIN_SHINGLES = 4;
|
|
129
|
+
/**
|
|
130
|
+
* Lowercased 3-word shingles of a title, whitespace-collapsed and deduped
|
|
131
|
+
* (DESIGN D4 #1). The set — not the multiset — is the Jaccard operand, so a
|
|
132
|
+
* repeated phrase counts once.
|
|
133
|
+
*/
|
|
134
|
+
function titleShingles(title) {
|
|
135
|
+
const words = title.toLowerCase().split(/\s+/).filter(Boolean);
|
|
136
|
+
const shingles = new Set();
|
|
137
|
+
for (let i = 0; i + SHINGLE_SIZE <= words.length; i++) {
|
|
138
|
+
shingles.add(words.slice(i, i + SHINGLE_SIZE).join(" "));
|
|
139
|
+
}
|
|
140
|
+
return shingles;
|
|
141
|
+
}
|
|
142
|
+
/** Jaccard similarity over two shingle sets: |∩| / |∪|. */
|
|
143
|
+
export function jaccard(a, b) {
|
|
144
|
+
// Intersect the smaller set — same result, fewer probes.
|
|
145
|
+
const [small, large] = a.size <= b.size ? [a, b] : [b, a];
|
|
146
|
+
let intersection = 0;
|
|
147
|
+
for (const shingle of small)
|
|
148
|
+
if (large.has(shingle))
|
|
149
|
+
intersection += 1;
|
|
150
|
+
// Issue #243 total guard: the CLUSTER_MIN_SHINGLES eligibility gate in
|
|
151
|
+
// clusterNearDuplicates keeps both operands at >= 4 shingles, so the
|
|
152
|
+
// union can never be 0 on that path — but jaccard is exported and
|
|
153
|
+
// callable directly. An empty-set pair scores 0 (no overlap) by
|
|
154
|
+
// definition, never 0/0 = NaN (NaN compares >= 0.8 false only by
|
|
155
|
+
// accident of IEEE semantics).
|
|
156
|
+
const union = a.size + b.size - intersection;
|
|
157
|
+
if (union === 0)
|
|
158
|
+
return 0;
|
|
159
|
+
return intersection / union;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Union the near-duplicate rows of `rows` in place (DESIGN D4, fan-out lane
|
|
163
|
+
* T5): pairwise Jaccard ≥ 0.80 over title shingles, merged via union-find,
|
|
164
|
+
* to a fixed point — transitive chains collapse into one cluster.
|
|
165
|
+
*
|
|
166
|
+
* `rows` must be insertion-ordered (the map's value order); that order is
|
|
167
|
+
* authoritative for pair enumeration, first-encounter tiebreaks, the
|
|
168
|
+
* `mergedFrom` union, and `clusterUrls`. This step never re-sorts — ranking
|
|
169
|
+
* happens after it, so accumulated `occurrences` participate in tiebreaks.
|
|
170
|
+
*
|
|
171
|
+
* Cost is O(n² · shingles) over n ≤ ~count × arms rows after dedupe — a few
|
|
172
|
+
* hundred at most, so the pairwise scan is bounded and needs no index.
|
|
173
|
+
* Correctness of the order-sensitive merges piggybacks on that: only an
|
|
174
|
+
* already-merged row can be merged again, so `mergedFrom` is already a
|
|
175
|
+
* first-encounter union by the time it is extended.
|
|
176
|
+
*/
|
|
177
|
+
function clusterNearDuplicates(rows) {
|
|
178
|
+
// Shingle once per row; rows below the floor can never merge, so they
|
|
179
|
+
// take no part in the pairwise scan at all.
|
|
180
|
+
const shingles = rows.map((row) => titleShingles(row.title ?? ""));
|
|
181
|
+
const eligible = shingles.map((set) => set.size >= CLUSTER_MIN_SHINGLES);
|
|
182
|
+
const parent = rows.map((_, i) => i);
|
|
183
|
+
const find = (i) => {
|
|
184
|
+
let root = i;
|
|
185
|
+
while (parent[root] !== root)
|
|
186
|
+
root = parent[root];
|
|
187
|
+
while (parent[i] !== root)
|
|
188
|
+
[parent[i], i] = [root, parent[i]];
|
|
189
|
+
return root;
|
|
190
|
+
};
|
|
191
|
+
for (let i = 0; i < rows.length; i++) {
|
|
192
|
+
if (!eligible[i])
|
|
193
|
+
continue;
|
|
194
|
+
for (let j = i + 1; j < rows.length; j++) {
|
|
195
|
+
if (!eligible[j])
|
|
196
|
+
continue;
|
|
197
|
+
// Size short-circuit (DESIGN D4 #5): J ≤ min/|max|, so a pair whose
|
|
198
|
+
// smaller shingle set is under 80% of the larger one cannot reach the
|
|
199
|
+
// threshold at all — skip it without intersecting anything.
|
|
200
|
+
// Compared as 5·min < 4·max rather than min < 0.8·max: the integer
|
|
201
|
+
// form is exact (0.8·5 is not 4 in binary floating point, which would
|
|
202
|
+
// misjudge the boundary pair the suite pins).
|
|
203
|
+
const small = Math.min(shingles[i].size, shingles[j].size);
|
|
204
|
+
const large = Math.max(shingles[i].size, shingles[j].size);
|
|
205
|
+
if (small * 5 < large * 4)
|
|
206
|
+
continue;
|
|
207
|
+
if (jaccard(shingles[i], shingles[j]) < CLUSTER_JACCARD_MIN)
|
|
208
|
+
continue;
|
|
209
|
+
const rootI = find(i);
|
|
210
|
+
const rootJ = find(j);
|
|
211
|
+
if (rootI !== rootJ)
|
|
212
|
+
parent[Math.max(rootI, rootJ)] = Math.min(rootI, rootJ);
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
// Members per cluster, first-encounter order — one pass suffices because
|
|
216
|
+
// the loop is ordered and this array is saved before anything mutates.
|
|
217
|
+
const members = new Map();
|
|
218
|
+
for (let i = 0; i < rows.length; i++) {
|
|
219
|
+
// A row that can never merge is its own cluster: skip the find() walk.
|
|
220
|
+
const root = eligible[i] ? find(i) : i;
|
|
221
|
+
const bucket = members.get(root);
|
|
222
|
+
if (bucket)
|
|
223
|
+
bucket.push(i);
|
|
224
|
+
else
|
|
225
|
+
members.set(root, [i]);
|
|
226
|
+
}
|
|
227
|
+
const survivors = [];
|
|
228
|
+
for (let i = 0; i < rows.length; i++) {
|
|
229
|
+
// A merged-away row is simply absent from the output; this walk stays
|
|
230
|
+
// independent of the mutation happening around it.
|
|
231
|
+
if (find(i) !== i)
|
|
232
|
+
continue;
|
|
233
|
+
const clusterRows = [];
|
|
234
|
+
for (const index of members.get(i) ?? [i])
|
|
235
|
+
clusterRows.push(rows[index]);
|
|
236
|
+
if (clusterRows.length === 1) {
|
|
237
|
+
// SINGLETON — the overwhelmingly common path. Leave the row's key
|
|
238
|
+
// order and identity untouched: it is the object already in the map,
|
|
239
|
+
// returned as-is.
|
|
240
|
+
survivors.push(clusterRows[0]);
|
|
241
|
+
continue;
|
|
242
|
+
}
|
|
243
|
+
survivors.push(mergeCluster(clusterRows));
|
|
244
|
+
}
|
|
245
|
+
return survivors;
|
|
246
|
+
}
|
|
247
|
+
/**
|
|
248
|
+
* Collapse one cluster's members into a single representative row (DESIGN
|
|
249
|
+
* D4 #4). `members` must be in first-encounter order — that order is the
|
|
250
|
+
* fallback for both the representative pick and `clusterUrls`.
|
|
251
|
+
*
|
|
252
|
+
* The representative is the member the D2 chain selects: highest raw score →
|
|
253
|
+
* occurrences desc → bestPos asc → first-encounter. Under "occurrence" every
|
|
254
|
+
* score is 0, so the chain falls straight through to occurrences → bestPos →
|
|
255
|
+
* first-encounter, which keeps the identity layer rank-independent as
|
|
256
|
+
* required. It KEEPS its own title/summary/url and key order.
|
|
257
|
+
*
|
|
258
|
+
* Accumulation is deliberately partial: `occurrences` sums over the members
|
|
259
|
+
* and `mergedFrom` unions in first-encounter order, but the representative's
|
|
260
|
+
* raw `score` is left alone — its `fusionScore` is the REPRESENTATIVE's own
|
|
261
|
+
* rank score, not the cluster's total. Sorting runs after this, so the
|
|
262
|
+
* accumulated occurrences participate in tiebreaks.
|
|
263
|
+
*/
|
|
264
|
+
function mergeCluster(members) {
|
|
265
|
+
let representative = members[0];
|
|
266
|
+
for (const member of members) {
|
|
267
|
+
if (member.score > representative.score ||
|
|
268
|
+
(member.score === representative.score &&
|
|
269
|
+
(member.occurrences > representative.occurrences ||
|
|
270
|
+
(member.occurrences === representative.occurrences &&
|
|
271
|
+
member.bestPos < representative.bestPos)))) {
|
|
272
|
+
representative = member;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
const clusterUrls = [];
|
|
276
|
+
const mergedFrom = [];
|
|
277
|
+
let occurrences = 0;
|
|
278
|
+
for (const member of members) {
|
|
279
|
+
if (member !== representative)
|
|
280
|
+
clusterUrls.push(member.url);
|
|
281
|
+
occurrences += member.occurrences;
|
|
282
|
+
for (const provider of member.mergedFrom) {
|
|
283
|
+
if (!mergedFrom.includes(provider))
|
|
284
|
+
mergedFrom.push(provider);
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
return {
|
|
288
|
+
...representative,
|
|
289
|
+
occurrences,
|
|
290
|
+
mergedFrom,
|
|
291
|
+
clusterUrls,
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
/**
|
|
295
|
+
* Merge results from an (arm × sub-query) grid (DESIGN D3, D2). Generalizes
|
|
296
|
+
* the pre-fan-out sub-query merge with two new keys: dedupe by
|
|
297
|
+
* `canonicalUrl(url)` (DESIGN D4) instead of the raw string, and a
|
|
298
|
+
* caller-supplied ranking `mode`.
|
|
299
|
+
*
|
|
113
300
|
* First-writer-wins: the earlier arm's title/summary/url win a collision
|
|
114
301
|
* (arm order is the tiebreak priority). Every URL accumulates
|
|
115
302
|
* `mergedFrom` (distinct providers, first-encounter order) when
|
|
116
303
|
* `emitMergedFrom` is set, and the merged list is sliced to `count`
|
|
117
304
|
* post-merge. The single-provider `--merge` path and the fan-out path
|
|
118
305
|
* share this one implementation.
|
|
306
|
+
*
|
|
307
|
+
* Ranking:
|
|
308
|
+
* - `"occurrence"` (legacy): occurrence count desc → best position asc,
|
|
309
|
+
* over a stable sort. Byte-identical to the pre-fusion merge.
|
|
310
|
+
* - `"rrf"`: raw reciprocal-rank score desc (`Σ 1/(RRF_K + rank)` over
|
|
311
|
+
* every grid occurrence) → occurrences desc → bestPos asc →
|
|
312
|
+
* first-encounter (the stable sort's insertion order). The sort runs
|
|
313
|
+
* on the RAW double, never on the rounded display value: two rows
|
|
314
|
+
* that round to the same `fusionScore` still order by their true
|
|
315
|
+
* scores. Under this mode every row emits `fusionScore` (exactly
|
|
316
|
+
* three decimals, locale-independent); under "occurrence" the key is
|
|
317
|
+
* absent entirely.
|
|
318
|
+
*
|
|
319
|
+
* `bestPos` is internal bookkeeping in both modes and never emitted.
|
|
119
320
|
*/
|
|
120
|
-
export function mergeResults(grid, options
|
|
121
|
-
const { emitMergedFrom = false, count } = options;
|
|
321
|
+
export function mergeResults(grid, options) {
|
|
322
|
+
const { mode, emitMergedFrom = false, count } = options ?? {};
|
|
323
|
+
if (mode !== "rrf" && mode !== "occurrence") {
|
|
324
|
+
throw new Error(`mergeResults requires an explicit mode ("rrf" | "occurrence"); got ${JSON.stringify(mode)}.`);
|
|
325
|
+
}
|
|
326
|
+
const isRrf = mode === "rrf";
|
|
122
327
|
const map = new Map();
|
|
123
328
|
for (const arm of grid) {
|
|
124
329
|
for (const results of arm.results) {
|
|
@@ -130,6 +335,11 @@ export function mergeResults(grid, options = {}) {
|
|
|
130
335
|
if (existing) {
|
|
131
336
|
existing.occurrences += 1;
|
|
132
337
|
existing.bestPos = Math.min(existing.bestPos, r.rank);
|
|
338
|
+
// Score accumulation shares the map-build loop; under
|
|
339
|
+
// "occurrence" it is never computed at all (the legacy path
|
|
340
|
+
// stays byte-identical and cheap).
|
|
341
|
+
if (isRrf)
|
|
342
|
+
existing.score += 1 / (RRF_K + r.rank);
|
|
133
343
|
if (emitMergedFrom && arm.provider && !existing.mergedFrom.includes(arm.provider)) {
|
|
134
344
|
existing.mergedFrom.push(arm.provider);
|
|
135
345
|
}
|
|
@@ -139,34 +349,48 @@ export function mergeResults(grid, options = {}) {
|
|
|
139
349
|
...r,
|
|
140
350
|
occurrences: 1,
|
|
141
351
|
bestPos: r.rank,
|
|
352
|
+
score: isRrf ? 1 / (RRF_K + r.rank) : 0,
|
|
142
353
|
mergedFrom: emitMergedFrom && arm.provider ? [arm.provider] : [],
|
|
143
354
|
});
|
|
144
355
|
}
|
|
145
356
|
}
|
|
146
357
|
}
|
|
147
358
|
}
|
|
148
|
-
let merged = Array.from(map.values());
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
359
|
+
let merged = clusterNearDuplicates(Array.from(map.values()));
|
|
360
|
+
if (isRrf) {
|
|
361
|
+
// Raw double first — occurrences and bestPos only break exact ties.
|
|
362
|
+
// The stable sort leaves full ties in insertion (first-encounter)
|
|
363
|
+
// order, so no explicit encounter index is needed.
|
|
364
|
+
merged.sort((a, b) => b.score - a.score || b.occurrences - a.occurrences || a.bestPos - b.bestPos);
|
|
365
|
+
}
|
|
366
|
+
else {
|
|
367
|
+
merged.sort((a, b) => {
|
|
368
|
+
if (b.occurrences !== a.occurrences)
|
|
369
|
+
return b.occurrences - a.occurrences;
|
|
370
|
+
return a.bestPos - b.bestPos;
|
|
371
|
+
});
|
|
372
|
+
}
|
|
154
373
|
// Post-merge --count slice (each arm was already asked for this count).
|
|
155
374
|
if (count !== undefined) {
|
|
156
375
|
merged = merged.slice(0, Math.max(0, count));
|
|
157
376
|
}
|
|
158
377
|
return merged.map((r, i) => {
|
|
159
|
-
const { bestPos: _bp, ...rest } = r;
|
|
378
|
+
const { bestPos: _bp, score: _score, ...rest } = r;
|
|
160
379
|
void _bp;
|
|
380
|
+
void _score;
|
|
161
381
|
const rank = i + 1;
|
|
382
|
+
// fusionScore is appended AFTER the emitted fields (key-order pin)
|
|
383
|
+
// and only under rrf; a result row keeps the first writer's key
|
|
384
|
+
// order otherwise, so `rank` overwrites in place.
|
|
385
|
+
const row = isRrf ? { ...rest, fusionScore: r.score.toFixed(3) } : rest;
|
|
162
386
|
if (!emitMergedFrom) {
|
|
163
387
|
// Omit mergedFrom entirely on the single path (SCHEMA.md) so the
|
|
164
388
|
// emitted objects stay byte-identical to the pre-fan-out merge.
|
|
165
|
-
const { mergedFrom: _mf, ...restNoProvenance } =
|
|
389
|
+
const { mergedFrom: _mf, ...restNoProvenance } = row;
|
|
166
390
|
void _mf;
|
|
167
391
|
return { ...restNoProvenance, rank };
|
|
168
392
|
}
|
|
169
|
-
return { ...
|
|
393
|
+
return { ...row, rank };
|
|
170
394
|
});
|
|
171
395
|
}
|
|
172
396
|
function renderTextFormat(results, mode) {
|
|
@@ -180,6 +404,9 @@ function renderTextFormat(results, mode) {
|
|
|
180
404
|
// absent). Never print `undefined` — omit what the allowlist took.
|
|
181
405
|
rank += 1;
|
|
182
406
|
const r = { rank, title: "", url: "", ...row };
|
|
407
|
+
// ×N badge (DESIGN D5): N counts the row's merged occurrences AND,
|
|
408
|
+
// under near-duplicate clustering (fan-out lane T5), the absorbed
|
|
409
|
+
// cluster members — occurrences accumulates both contributions.
|
|
183
410
|
const occBadge = r.occurrences && r.occurrences > 1 ? ` ×${r.occurrences}` : "";
|
|
184
411
|
if (mode === "compact") {
|
|
185
412
|
lines.push(r.title && r.url ? `${r.title}${occBadge} — ${r.url}` : r.url || r.title || r.summary || "");
|
|
@@ -271,7 +498,7 @@ export async function search(query, options = {}, deps, context) {
|
|
|
271
498
|
// owns `--max-chars` (SEARCH_LADDER whole-envelope budget); a smuggled
|
|
272
499
|
// value must fail loud, not silently no-budget.
|
|
273
500
|
rejectSmuggledMaxChars(options, "search");
|
|
274
|
-
const { capability, cache, sleep, random, retryPolicy, consume, now } = deps;
|
|
501
|
+
const { capability, cache, sleep, random, retryPolicy, consume, now, fusionMode } = deps;
|
|
275
502
|
// Split query on `|` if --merge is set. Empty fragments are dropped.
|
|
276
503
|
// A literal pipe in a single query can be escaped as `\|` (won't split).
|
|
277
504
|
let subQueries = [query];
|
|
@@ -305,9 +532,10 @@ export async function search(query, options = {}, deps, context) {
|
|
|
305
532
|
// The single-provider --merge path and the fan-out path (Ticket 3)
|
|
306
533
|
// share one merge implementation. The single path passes no provider
|
|
307
534
|
// and no count, so its output is byte-identical to the pre-fan-out
|
|
308
|
-
// merge (no mergedFrom field, no post-merge slice).
|
|
535
|
+
// merge (no mergedFrom field, no post-merge slice). Seed-24 T3: the
|
|
536
|
+
// ranking mode is named here, at the caller — the seam never defaults.
|
|
309
537
|
const formattedResults = isMerge
|
|
310
|
-
? mergeResults([{ results: perQueryFormatted }])
|
|
538
|
+
? mergeResults([{ results: perQueryFormatted }], { mode: fusionMode ?? "rrf" })
|
|
311
539
|
: perQueryFormatted[0] || [];
|
|
312
540
|
if (isMerge && context) {
|
|
313
541
|
context.notice(`ℹ️ merged ${subQueries.length} queries → ${formattedResults.length} unique results`);
|
|
@@ -562,19 +790,30 @@ export async function executeFanoutPlan(plan, options, context) {
|
|
|
562
790
|
provider: s.arm,
|
|
563
791
|
results: s.results,
|
|
564
792
|
}));
|
|
565
|
-
|
|
793
|
+
// Issue #243: merge WITHOUT the count slice, then slice locally, so the
|
|
794
|
+
// summary notice can report the merge's PRE-slice unique count — the old
|
|
795
|
+
// call passed count into mergeResults and the notice printed the
|
|
796
|
+
// post-slice length as "unique".
|
|
797
|
+
const fullMerged = mergeResults(grid, {
|
|
798
|
+
mode: options.fusionMode,
|
|
566
799
|
emitMergedFrom: true,
|
|
567
|
-
count: options.searchOptions.count,
|
|
568
800
|
});
|
|
801
|
+
const count = options.searchOptions.count;
|
|
802
|
+
// Same slice semantics as mergeResults' internal cap (rank-mapped rows
|
|
803
|
+
// 1..N; taking the first N is byte-identical to slicing pre-rank-map).
|
|
804
|
+
const merged = count === undefined ? fullMerged : fullMerged.slice(0, Math.max(0, count));
|
|
569
805
|
// Summary notice (D5). K = total raw results across the whole
|
|
570
806
|
// arms × sub-queries grid (the post-truncate counts the executor
|
|
571
|
-
// collected); M =
|
|
807
|
+
// collected); M = the merge's PRE-slice unique count; shown = rows
|
|
808
|
+
// remaining after the --count cap. An arm with 0 results
|
|
572
809
|
// contributes 0 to K — the notice still names the arm so the
|
|
573
810
|
// operator sees the full set.
|
|
574
811
|
const totalRaw = successes.reduce((sum, s) => sum + s.results.reduce((n, list) => n + list.length, 0), 0);
|
|
575
812
|
if (context) {
|
|
576
813
|
const armList = arms.join(", ");
|
|
577
|
-
context.notice(
|
|
814
|
+
context.notice(count === undefined
|
|
815
|
+
? `fanned out to ${arms.length} providers (${armList}) → ${fullMerged.length} unique of ${totalRaw} results`
|
|
816
|
+
: `fanned out to ${arms.length} providers (${armList}) → ${merged.length} shown of ${fullMerged.length} unique of ${totalRaw} results`);
|
|
578
817
|
}
|
|
579
818
|
const presentations = buildPresentations(merged);
|
|
580
819
|
const data = options.searchOptions.fields && options.searchOptions.fields.length > 0
|
|
@@ -584,12 +823,12 @@ export async function executeFanoutPlan(plan, options, context) {
|
|
|
584
823
|
}
|
|
585
824
|
// Help text
|
|
586
825
|
export const SEARCH_HELP = `
|
|
587
|
-
Search Command - Real-time web search (all
|
|
826
|
+
Search Command - Real-time web search (all ${SHARED_PROVIDER_IDS.length} Providers)
|
|
588
827
|
|
|
589
828
|
Usage: scoutline search <query> [options]
|
|
590
829
|
|
|
591
830
|
Provider selection (precedence: explicit flag, then SCOUTLINE_PROVIDER, then zai):
|
|
592
|
-
--provider
|
|
831
|
+
--provider <${SHARED_PROVIDER_FLAG_IDS}> Select the search provider (default: zai) SCOUTLINE_PROVIDER=<id> Fallback when --provider is not passed
|
|
593
832
|
|
|
594
833
|
Multi-provider fan-out — activation tiers (highest precedence first):
|
|
595
834
|
1. --provider <tavily,exa,...> or --provider all
|
|
@@ -621,6 +860,13 @@ Multi-provider fan-out — activation tiers (highest precedence first):
|
|
|
621
860
|
the arms × sub-queries grid. A failed arm is dropped with a stderr
|
|
622
861
|
notice; if every arm fails, the last arm's error surfaces.
|
|
623
862
|
|
|
863
|
+
Ranking (fusion): merged lists — from fan-out and from --merge —
|
|
864
|
+
rank by reciprocal rank fusion over every arm × sub-query occurrence
|
|
865
|
+
(config key \`fusion\`, rrf | occurrence; default rrf). Set
|
|
866
|
+
\`scoutline config set fusion occurrence\` (or SCOUTLINE_FUSION=occurrence)
|
|
867
|
+
to restore the legacy occurrence-count ordering byte-for-byte. There
|
|
868
|
+
is no --fusion flag; the fixed env door is SCOUTLINE_FUSION.
|
|
869
|
+
|
|
624
870
|
Note: support for the optional controls below varies by provider AND by
|
|
625
871
|
control — a control accepted by one provider may be rejected
|
|
626
872
|
(UNSUPPORTED_OPTION) by another before invocation. Run
|
|
@@ -705,6 +951,8 @@ Default JSON shape:
|
|
|
705
951
|
"date": "2024-01-15",
|
|
706
952
|
"occurrences": 2 // only present with --merge when >1
|
|
707
953
|
"mergedFrom": ["tavily", "exa"] // fan-out only: arms that surfaced this result
|
|
954
|
+
"fusionScore": "0.049" // rrf mode only: rank-fusion score, fixed 3 decimals
|
|
955
|
+
"clusterUrls": ["https://...", ...] // near-dup cluster members; the representative's own url is excluded
|
|
708
956
|
}
|
|
709
957
|
]
|
|
710
958
|
`.trim();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
|