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.
Files changed (294) hide show
  1. package/README.md +60 -26
  2. package/dist/capabilities/search.d.ts +18 -4
  3. package/dist/capabilities/search.d.ts.map +1 -1
  4. package/dist/commands/config.d.ts.map +1 -1
  5. package/dist/commands/config.js +14 -5
  6. package/dist/commands/config.js.map +1 -1
  7. package/dist/commands/crawl.d.ts.map +1 -1
  8. package/dist/commands/crawl.js +2 -1
  9. package/dist/commands/crawl.js.map +1 -1
  10. package/dist/commands/doctor.d.ts.map +1 -1
  11. package/dist/commands/doctor.js +2 -1
  12. package/dist/commands/doctor.js.map +1 -1
  13. package/dist/commands/init.d.ts +42 -1
  14. package/dist/commands/init.d.ts.map +1 -1
  15. package/dist/commands/init.js +42 -5
  16. package/dist/commands/init.js.map +1 -1
  17. package/dist/commands/map.d.ts.map +1 -1
  18. package/dist/commands/map.js +2 -1
  19. package/dist/commands/map.js.map +1 -1
  20. package/dist/commands/quota.d.ts.map +1 -1
  21. package/dist/commands/quota.js +2 -2
  22. package/dist/commands/quota.js.map +1 -1
  23. package/dist/commands/read.d.ts.map +1 -1
  24. package/dist/commands/read.js +2 -1
  25. package/dist/commands/read.js.map +1 -1
  26. package/dist/commands/repo.js +1 -1
  27. package/dist/commands/research.d.ts.map +1 -1
  28. package/dist/commands/research.js +2 -1
  29. package/dist/commands/research.js.map +1 -1
  30. package/dist/commands/search.d.ts +54 -6
  31. package/dist/commands/search.d.ts.map +1 -1
  32. package/dist/commands/search.js +273 -25
  33. package/dist/commands/search.js.map +1 -1
  34. package/dist/index.d.ts +72 -1
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +364 -8
  37. package/dist/index.js.map +1 -1
  38. package/dist/lib/code-mode.d.ts +12 -0
  39. package/dist/lib/code-mode.d.ts.map +1 -1
  40. package/dist/lib/code-mode.js +18 -10
  41. package/dist/lib/code-mode.js.map +1 -1
  42. package/dist/lib/config-store.d.ts +45 -1
  43. package/dist/lib/config-store.d.ts.map +1 -1
  44. package/dist/lib/config-store.js +70 -1
  45. package/dist/lib/config-store.js.map +1 -1
  46. package/dist/lib/config.d.ts.map +1 -1
  47. package/dist/lib/config.js +5 -1
  48. package/dist/lib/config.js.map +1 -1
  49. package/dist/lib/errors.d.ts +7 -1
  50. package/dist/lib/errors.d.ts.map +1 -1
  51. package/dist/lib/errors.js +8 -2
  52. package/dist/lib/errors.js.map +1 -1
  53. package/dist/lib/execution.d.ts +14 -5
  54. package/dist/lib/execution.d.ts.map +1 -1
  55. package/dist/lib/execution.js +25 -6
  56. package/dist/lib/execution.js.map +1 -1
  57. package/dist/lib/mcp-client.d.ts +7 -0
  58. package/dist/lib/mcp-client.d.ts.map +1 -1
  59. package/dist/lib/mcp-client.js +11 -1
  60. package/dist/lib/mcp-client.js.map +1 -1
  61. package/dist/lib/parse-zoned-instant.d.ts +13 -0
  62. package/dist/lib/parse-zoned-instant.d.ts.map +1 -0
  63. package/dist/lib/parse-zoned-instant.js +17 -0
  64. package/dist/lib/parse-zoned-instant.js.map +1 -0
  65. package/dist/lib/quota-mapping.d.ts +4 -2
  66. package/dist/lib/quota-mapping.d.ts.map +1 -1
  67. package/dist/lib/quota-mapping.js +25 -2
  68. package/dist/lib/quota-mapping.js.map +1 -1
  69. package/dist/lib/redact.d.ts +3 -2
  70. package/dist/lib/redact.d.ts.map +1 -1
  71. package/dist/lib/redact.js +90 -24
  72. package/dist/lib/redact.js.map +1 -1
  73. package/dist/lib/timeout.d.ts +28 -0
  74. package/dist/lib/timeout.d.ts.map +1 -0
  75. package/dist/lib/timeout.js +30 -0
  76. package/dist/lib/timeout.js.map +1 -0
  77. package/dist/lib/url.d.ts +10 -4
  78. package/dist/lib/url.d.ts.map +1 -1
  79. package/dist/lib/url.js +21 -6
  80. package/dist/lib/url.js.map +1 -1
  81. package/dist/providers/arxiv/client.d.ts +4 -1
  82. package/dist/providers/arxiv/client.d.ts.map +1 -1
  83. package/dist/providers/arxiv/client.js +11 -3
  84. package/dist/providers/arxiv/client.js.map +1 -1
  85. package/dist/providers/bocha/adapter.d.ts +43 -0
  86. package/dist/providers/bocha/adapter.d.ts.map +1 -0
  87. package/dist/providers/bocha/adapter.js +197 -0
  88. package/dist/providers/bocha/adapter.js.map +1 -0
  89. package/dist/providers/bocha/client.d.ts +51 -0
  90. package/dist/providers/bocha/client.d.ts.map +1 -0
  91. package/dist/providers/bocha/client.js +104 -0
  92. package/dist/providers/bocha/client.js.map +1 -0
  93. package/dist/providers/bocha/credentials.d.ts +12 -0
  94. package/dist/providers/bocha/credentials.d.ts.map +1 -0
  95. package/dist/providers/bocha/credentials.js +29 -0
  96. package/dist/providers/bocha/credentials.js.map +1 -0
  97. package/dist/providers/bocha/diagnostics.d.ts +17 -0
  98. package/dist/providers/bocha/diagnostics.d.ts.map +1 -0
  99. package/dist/providers/bocha/diagnostics.js +33 -0
  100. package/dist/providers/bocha/diagnostics.js.map +1 -0
  101. package/dist/providers/brave/adapter.d.ts.map +1 -1
  102. package/dist/providers/brave/adapter.js +4 -3
  103. package/dist/providers/brave/adapter.js.map +1 -1
  104. package/dist/providers/brave/client.d.ts +1 -0
  105. package/dist/providers/brave/client.d.ts.map +1 -1
  106. package/dist/providers/brave/client.js +4 -6
  107. package/dist/providers/brave/client.js.map +1 -1
  108. package/dist/providers/brave/credentials.d.ts +2 -0
  109. package/dist/providers/brave/credentials.d.ts.map +1 -1
  110. package/dist/providers/brave/credentials.js +2 -0
  111. package/dist/providers/brave/credentials.js.map +1 -1
  112. package/dist/providers/catalog.d.ts +34 -0
  113. package/dist/providers/catalog.d.ts.map +1 -0
  114. package/dist/providers/catalog.js +57 -0
  115. package/dist/providers/catalog.js.map +1 -0
  116. package/dist/providers/crossref/adapter.js +2 -2
  117. package/dist/providers/crossref/adapter.js.map +1 -1
  118. package/dist/providers/crossref/client.d.ts +4 -1
  119. package/dist/providers/crossref/client.d.ts.map +1 -1
  120. package/dist/providers/crossref/client.js +11 -3
  121. package/dist/providers/crossref/client.js.map +1 -1
  122. package/dist/providers/crossref/diagnostics.d.ts +1 -1
  123. package/dist/providers/crossref/diagnostics.js +1 -1
  124. package/dist/providers/crossref/diagnostics.js.map +1 -1
  125. package/dist/providers/europepmc/adapter.js +2 -2
  126. package/dist/providers/europepmc/adapter.js.map +1 -1
  127. package/dist/providers/europepmc/client.d.ts +4 -1
  128. package/dist/providers/europepmc/client.d.ts.map +1 -1
  129. package/dist/providers/europepmc/client.js +11 -3
  130. package/dist/providers/europepmc/client.js.map +1 -1
  131. package/dist/providers/exa/client.d.ts +1 -0
  132. package/dist/providers/exa/client.d.ts.map +1 -1
  133. package/dist/providers/exa/client.js +3 -2
  134. package/dist/providers/exa/client.js.map +1 -1
  135. package/dist/providers/exa/credentials.d.ts +2 -0
  136. package/dist/providers/exa/credentials.d.ts.map +1 -1
  137. package/dist/providers/exa/credentials.js +2 -0
  138. package/dist/providers/exa/credentials.js.map +1 -1
  139. package/dist/providers/firecrawl/adapter.d.ts.map +1 -1
  140. package/dist/providers/firecrawl/adapter.js +2 -1
  141. package/dist/providers/firecrawl/adapter.js.map +1 -1
  142. package/dist/providers/firecrawl/client.d.ts +1 -0
  143. package/dist/providers/firecrawl/client.d.ts.map +1 -1
  144. package/dist/providers/firecrawl/client.js +3 -2
  145. package/dist/providers/firecrawl/client.js.map +1 -1
  146. package/dist/providers/firecrawl/credentials.d.ts +2 -0
  147. package/dist/providers/firecrawl/credentials.d.ts.map +1 -1
  148. package/dist/providers/firecrawl/credentials.js +2 -0
  149. package/dist/providers/firecrawl/credentials.js.map +1 -1
  150. package/dist/providers/firecrawl/quota.d.ts.map +1 -1
  151. package/dist/providers/firecrawl/quota.js +5 -2
  152. package/dist/providers/firecrawl/quota.js.map +1 -1
  153. package/dist/providers/jina/adapter.d.ts.map +1 -1
  154. package/dist/providers/jina/adapter.js +6 -4
  155. package/dist/providers/jina/adapter.js.map +1 -1
  156. package/dist/providers/jina/client.d.ts +2 -0
  157. package/dist/providers/jina/client.d.ts.map +1 -1
  158. package/dist/providers/jina/client.js +6 -5
  159. package/dist/providers/jina/client.js.map +1 -1
  160. package/dist/providers/jina/credentials.d.ts +2 -0
  161. package/dist/providers/jina/credentials.d.ts.map +1 -1
  162. package/dist/providers/jina/credentials.js +2 -0
  163. package/dist/providers/jina/credentials.js.map +1 -1
  164. package/dist/providers/kagi/adapter.d.ts +44 -0
  165. package/dist/providers/kagi/adapter.d.ts.map +1 -0
  166. package/dist/providers/kagi/adapter.js +188 -0
  167. package/dist/providers/kagi/adapter.js.map +1 -0
  168. package/dist/providers/kagi/client.d.ts +41 -0
  169. package/dist/providers/kagi/client.d.ts.map +1 -0
  170. package/dist/providers/kagi/client.js +100 -0
  171. package/dist/providers/kagi/client.js.map +1 -0
  172. package/dist/providers/kagi/credentials.d.ts +15 -0
  173. package/dist/providers/kagi/credentials.d.ts.map +1 -0
  174. package/dist/providers/kagi/credentials.js +35 -0
  175. package/dist/providers/kagi/credentials.js.map +1 -0
  176. package/dist/providers/kagi/diagnostics.d.ts +17 -0
  177. package/dist/providers/kagi/diagnostics.d.ts.map +1 -0
  178. package/dist/providers/kagi/diagnostics.js +33 -0
  179. package/dist/providers/kagi/diagnostics.js.map +1 -0
  180. package/dist/providers/linkup/client.d.ts +1 -0
  181. package/dist/providers/linkup/client.d.ts.map +1 -1
  182. package/dist/providers/linkup/client.js +3 -2
  183. package/dist/providers/linkup/client.js.map +1 -1
  184. package/dist/providers/linkup/credentials.d.ts +2 -0
  185. package/dist/providers/linkup/credentials.d.ts.map +1 -1
  186. package/dist/providers/linkup/credentials.js +2 -0
  187. package/dist/providers/linkup/credentials.js.map +1 -1
  188. package/dist/providers/minimax/adapter.d.ts.map +1 -1
  189. package/dist/providers/minimax/adapter.js +2 -2
  190. package/dist/providers/minimax/adapter.js.map +1 -1
  191. package/dist/providers/minimax/coding-plan-client.d.ts +1 -0
  192. package/dist/providers/minimax/coding-plan-client.d.ts.map +1 -1
  193. package/dist/providers/minimax/coding-plan-client.js +3 -2
  194. package/dist/providers/minimax/coding-plan-client.js.map +1 -1
  195. package/dist/providers/minimax/quota-client.d.ts +1 -0
  196. package/dist/providers/minimax/quota-client.d.ts.map +1 -1
  197. package/dist/providers/minimax/quota-client.js +3 -2
  198. package/dist/providers/minimax/quota-client.js.map +1 -1
  199. package/dist/providers/openalex/client.d.ts +2 -0
  200. package/dist/providers/openalex/client.d.ts.map +1 -1
  201. package/dist/providers/openalex/client.js +10 -3
  202. package/dist/providers/openalex/client.js.map +1 -1
  203. package/dist/providers/openalex/diagnostics.d.ts +1 -1
  204. package/dist/providers/openalex/diagnostics.js +1 -1
  205. package/dist/providers/openalex/diagnostics.js.map +1 -1
  206. package/dist/providers/parallel/client.d.ts +1 -0
  207. package/dist/providers/parallel/client.d.ts.map +1 -1
  208. package/dist/providers/parallel/client.js +3 -2
  209. package/dist/providers/parallel/client.js.map +1 -1
  210. package/dist/providers/parallel/credentials.d.ts +2 -0
  211. package/dist/providers/parallel/credentials.d.ts.map +1 -1
  212. package/dist/providers/parallel/credentials.js +2 -0
  213. package/dist/providers/parallel/credentials.js.map +1 -1
  214. package/dist/providers/perplexity/client.d.ts +2 -0
  215. package/dist/providers/perplexity/client.d.ts.map +1 -1
  216. package/dist/providers/perplexity/client.js +5 -4
  217. package/dist/providers/perplexity/client.js.map +1 -1
  218. package/dist/providers/perplexity/credentials.d.ts +2 -0
  219. package/dist/providers/perplexity/credentials.d.ts.map +1 -1
  220. package/dist/providers/perplexity/credentials.js +2 -0
  221. package/dist/providers/perplexity/credentials.js.map +1 -1
  222. package/dist/providers/pubmed/client.d.ts +2 -0
  223. package/dist/providers/pubmed/client.d.ts.map +1 -1
  224. package/dist/providers/pubmed/client.js +10 -3
  225. package/dist/providers/pubmed/client.js.map +1 -1
  226. package/dist/providers/registry.d.ts.map +1 -1
  227. package/dist/providers/registry.js +6 -0
  228. package/dist/providers/registry.js.map +1 -1
  229. package/dist/providers/searchapi/adapter.d.ts +54 -0
  230. package/dist/providers/searchapi/adapter.d.ts.map +1 -0
  231. package/dist/providers/searchapi/adapter.js +310 -0
  232. package/dist/providers/searchapi/adapter.js.map +1 -0
  233. package/dist/providers/searchapi/client.d.ts +73 -0
  234. package/dist/providers/searchapi/client.d.ts.map +1 -0
  235. package/dist/providers/searchapi/client.js +196 -0
  236. package/dist/providers/searchapi/client.js.map +1 -0
  237. package/dist/providers/searchapi/credentials.d.ts +46 -0
  238. package/dist/providers/searchapi/credentials.d.ts.map +1 -0
  239. package/dist/providers/searchapi/credentials.js +71 -0
  240. package/dist/providers/searchapi/credentials.js.map +1 -0
  241. package/dist/providers/searchapi/diagnostics.d.ts +48 -0
  242. package/dist/providers/searchapi/diagnostics.d.ts.map +1 -0
  243. package/dist/providers/searchapi/diagnostics.js +70 -0
  244. package/dist/providers/searchapi/diagnostics.js.map +1 -0
  245. package/dist/providers/searchapi/quota.d.ts +60 -0
  246. package/dist/providers/searchapi/quota.d.ts.map +1 -0
  247. package/dist/providers/searchapi/quota.js +125 -0
  248. package/dist/providers/searchapi/quota.js.map +1 -0
  249. package/dist/providers/spider/client.d.ts +2 -0
  250. package/dist/providers/spider/client.d.ts.map +1 -1
  251. package/dist/providers/spider/client.js +16 -6
  252. package/dist/providers/spider/client.js.map +1 -1
  253. package/dist/providers/spider/credentials.d.ts +2 -0
  254. package/dist/providers/spider/credentials.d.ts.map +1 -1
  255. package/dist/providers/spider/credentials.js +2 -0
  256. package/dist/providers/spider/credentials.js.map +1 -1
  257. package/dist/providers/tavily/client.d.ts +1 -0
  258. package/dist/providers/tavily/client.d.ts.map +1 -1
  259. package/dist/providers/tavily/client.js +3 -2
  260. package/dist/providers/tavily/client.js.map +1 -1
  261. package/dist/providers/tavily/credentials.d.ts +2 -0
  262. package/dist/providers/tavily/credentials.d.ts.map +1 -1
  263. package/dist/providers/tavily/credentials.js +2 -0
  264. package/dist/providers/tavily/credentials.js.map +1 -1
  265. package/dist/providers/types.d.ts +1 -1
  266. package/dist/providers/types.d.ts.map +1 -1
  267. package/dist/providers/types.js +3 -0
  268. package/dist/providers/types.js.map +1 -1
  269. package/dist/providers/you/client.d.ts +4 -0
  270. package/dist/providers/you/client.d.ts.map +1 -1
  271. package/dist/providers/you/client.js +4 -5
  272. package/dist/providers/you/client.js.map +1 -1
  273. package/dist/providers/you/credentials.d.ts +2 -0
  274. package/dist/providers/you/credentials.d.ts.map +1 -1
  275. package/dist/providers/you/credentials.js +3 -3
  276. package/dist/providers/you/credentials.js.map +1 -1
  277. package/dist/providers/zai/adapter.d.ts.map +1 -1
  278. package/dist/providers/zai/adapter.js +2 -1
  279. package/dist/providers/zai/adapter.js.map +1 -1
  280. package/dist/providers/zai/credentials.d.ts +2 -0
  281. package/dist/providers/zai/credentials.d.ts.map +1 -1
  282. package/dist/providers/zai/credentials.js +2 -0
  283. package/dist/providers/zai/credentials.js.map +1 -1
  284. package/dist/providers/zai/monitor-client.d.ts +1 -0
  285. package/dist/providers/zai/monitor-client.d.ts.map +1 -1
  286. package/dist/providers/zai/monitor-client.js +3 -2
  287. package/dist/providers/zai/monitor-client.js.map +1 -1
  288. package/dist/providers/zai/quota.d.ts +4 -0
  289. package/dist/providers/zai/quota.d.ts.map +1 -1
  290. package/dist/providers/zai/quota.js +16 -1
  291. package/dist/providers/zai/quota.js.map +1 -1
  292. package/package.json +1 -1
  293. package/skills/scoutline/SKILL.md +93 -45
  294. 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 exactly one new key: dedupe by
93
- * `canonicalUrl(url)` (DESIGN D4) instead of the raw string. Ranking is
94
- * unchanged — (occurrence count desc, best position asc) — but
95
- * `occurrences` now counts across the whole arms × sub-queries grid.
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?: MergeResultsOptions): FormattedResult[];
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":"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"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
@@ -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
- * Merge results from an (arm × sub-query) grid (DESIGN D3). Generalizes
109
- * the pre-fan-out sub-query merge with exactly one new key: dedupe by
110
- * `canonicalUrl(url)` (DESIGN D4) instead of the raw string. Ranking is
111
- * unchanged — (occurrence count desc, best position asc) — but
112
- * `occurrences` now counts across the whole arms × sub-queries grid.
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
- merged.sort((a, b) => {
150
- if (b.occurrences !== a.occurrences)
151
- return b.occurrences - a.occurrences;
152
- return a.bestPos - b.bestPos;
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 } = rest;
389
+ const { mergedFrom: _mf, ...restNoProvenance } = row;
166
390
  void _mf;
167
391
  return { ...restNoProvenance, rank };
168
392
  }
169
- return { ...rest, rank };
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
- const merged = mergeResults(grid, {
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 = merged unique count. An arm with 0 results
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(`fanned out to ${arms.length} providers (${armList}) → ${merged.length} unique of ${totalRaw} results`);
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 12 Providers)
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 <zai|minimax|tavily|exa|brave|firecrawl|parallel|perplexity|jina|you|linkup|spider> Select the search provider (default: zai) SCOUTLINE_PROVIDER=<id> Fallback when --provider is not passed
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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"}