@askalf/deepdive 0.19.0 → 0.20.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 +9 -3
- package/dist/agent.d.ts +22 -0
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +99 -30
- package/dist/agent.js.map +1 -1
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +86 -5
- package/dist/cli.js.map +1 -1
- package/dist/completion.d.ts.map +1 -1
- package/dist/completion.js +2 -0
- package/dist/completion.js.map +1 -1
- package/dist/config-file.d.ts.map +1 -1
- package/dist/config-file.js +1 -0
- package/dist/config-file.js.map +1 -1
- package/dist/config.d.ts +2 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +3 -0
- package/dist/config.js.map +1 -1
- package/dist/doctor.d.ts +1 -0
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +2 -1
- package/dist/doctor.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -2
- package/dist/index.js.map +1 -1
- package/dist/search/duckduckgo.d.ts +2 -0
- package/dist/search/duckduckgo.d.ts.map +1 -1
- package/dist/search/duckduckgo.js +53 -2
- package/dist/search/duckduckgo.js.map +1 -1
- package/dist/search/multi.d.ts.map +1 -1
- package/dist/search/multi.js +11 -0
- package/dist/search/multi.js.map +1 -1
- package/dist/search.d.ts +7 -0
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +40 -0
- package/dist/search.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -417,7 +417,7 @@ One adapter per backend. Default (DuckDuckGo) needs no key.
|
|
|
417
417
|
|
|
418
418
|
| Adapter | Flag | Needs | Notes |
|
|
419
419
|
|---|---|---|---|
|
|
420
|
-
| DuckDuckGo HTML | `--search=duckduckgo` (default) | nothing | Scrapes `html.duckduckgo.com`. Good enough for most questions. |
|
|
420
|
+
| DuckDuckGo HTML | `--search=duckduckgo` (default) | nothing | Scrapes `html.duckduckgo.com`. Good enough for most questions. Rate-limits bursts — deepdive spaces requests 1s apart (`DEEPDIVE_DDG_DELAY_MS` to tune, `0` disables) and reports a detected throttle as a rate-limit error instead of a silent empty round. |
|
|
421
421
|
| SearXNG | `--search=searxng` | `DEEPDIVE_SEARXNG_URL` | Self-hosted metasearch. Best privacy. |
|
|
422
422
|
| Brave Search | `--search=brave` | `DEEPDIVE_BRAVE_KEY` | Paid, high quality. |
|
|
423
423
|
| Tavily | `--search=tavily` | `DEEPDIVE_TAVILY_KEY` | Research-tuned. Returns pre-extracted content; deepdive re-fetches anyway for consistency. |
|
|
@@ -435,6 +435,10 @@ One adapter per backend. Default (DuckDuckGo) needs no key.
|
|
|
435
435
|
|
|
436
436
|
The fan-out is how the adapter fleet composes: one general-web engine plus one or two domain engines gives the planner a source pool no single backend returns.
|
|
437
437
|
|
|
438
|
+
When a round gathers **zero** sources (backend throttled, every fetch blocked), deepdive stops *before* the synthesis LLM call and exits with code `3` and a message naming the cause — it never spends tokens producing a citation-free "unable to answer".
|
|
439
|
+
|
|
440
|
+
For unattended runs, add a recovery backend: `--search-fallback=wikipedia,arxiv` (env `DEEPDIVE_SEARCH_FALLBACK`, config key `searchFallback`) re-runs a round's queries through the fallback once when the primary produced zero candidates. Keyless adapters make good fallbacks — the run degrades to encyclopedia/paper sources instead of dying.
|
|
441
|
+
|
|
438
442
|
```bash
|
|
439
443
|
deepdive "are transformer alternatives viable in 2026" \
|
|
440
444
|
--search=multi:duckduckgo,arxiv,semanticscholar --deep
|
|
@@ -457,12 +461,12 @@ One command, aggregated health report. Paste the output when filing issues.
|
|
|
457
461
|
|
|
458
462
|
```bash
|
|
459
463
|
$ deepdive doctor
|
|
460
|
-
deepdive doctor — v0.
|
|
464
|
+
deepdive doctor — v0.20.0
|
|
461
465
|
|
|
462
466
|
# environment
|
|
463
467
|
OK Node v22.21.1
|
|
464
468
|
--- Platform win32 x64
|
|
465
|
-
--- deepdive v0.
|
|
469
|
+
--- deepdive v0.20.0
|
|
466
470
|
|
|
467
471
|
# cache
|
|
468
472
|
--- dir ~/.deepdive/cache
|
|
@@ -675,4 +679,6 @@ MIT — see [LICENSE](LICENSE) and [DISCLAIMER.md](DISCLAIMER.md).
|
|
|
675
679
|
|
|
676
680
|
This is one of the open-source building blocks from **[Sprayberry Labs](https://sprayberrylabs.com)** — an independent studio (Atlanta, GA) that ships bespoke software and **fixed-price code & security audits**, delivered with the AI workforce these tools are part of.
|
|
677
681
|
|
|
682
|
+
Part of the [askalf](https://askalf.org) ecosystem — a self-hosted AI workforce platform, now in early access.
|
|
683
|
+
|
|
678
684
|
**Got a codebase that needs an expert read?** → **[Scan a repo — free mini-audit](https://sprayberrylabs.com)**, or see the **$1,500 fixed-price Audit** and build Sprints. · [sprayberrylabs.com](https://sprayberrylabs.com) · hello@sprayberrylabs.com
|
package/dist/agent.d.ts
CHANGED
|
@@ -23,6 +23,7 @@ export interface AgentConfig {
|
|
|
23
23
|
maxCostUsd?: number;
|
|
24
24
|
preKept?: SourceWithContent[];
|
|
25
25
|
search: SearchAdapter;
|
|
26
|
+
fallbackSearch?: SearchAdapter;
|
|
26
27
|
browser: BrowserOptions;
|
|
27
28
|
resultsPerQuery: number;
|
|
28
29
|
maxSources: number;
|
|
@@ -64,6 +65,15 @@ export type AgentEvent = {
|
|
|
64
65
|
type: "search.done";
|
|
65
66
|
query: string;
|
|
66
67
|
count: number;
|
|
68
|
+
} | {
|
|
69
|
+
type: "search.error";
|
|
70
|
+
query: string;
|
|
71
|
+
message: string;
|
|
72
|
+
rateLimited: boolean;
|
|
73
|
+
} | {
|
|
74
|
+
type: "search.fallback";
|
|
75
|
+
adapter: string;
|
|
76
|
+
queries: string[];
|
|
67
77
|
} | {
|
|
68
78
|
type: "fetch.start";
|
|
69
79
|
url: string;
|
|
@@ -141,5 +151,17 @@ export interface AgentResult {
|
|
|
141
151
|
estimatedCostUsd: number;
|
|
142
152
|
};
|
|
143
153
|
}
|
|
154
|
+
export interface SearchErrorInfo {
|
|
155
|
+
query: string;
|
|
156
|
+
message: string;
|
|
157
|
+
rateLimited: boolean;
|
|
158
|
+
}
|
|
159
|
+
export declare class NoSourcesError extends Error {
|
|
160
|
+
readonly adapter: string;
|
|
161
|
+
readonly queries: string[];
|
|
162
|
+
readonly candidatesFound: number;
|
|
163
|
+
readonly searchErrors: SearchErrorInfo[];
|
|
164
|
+
constructor(adapter: string, queries: string[], candidatesFound: number, searchErrors: SearchErrorInfo[]);
|
|
165
|
+
}
|
|
144
166
|
export declare function runAgent(question: string, config: AgentConfig, signal?: AbortSignal): Promise<AgentResult>;
|
|
145
167
|
//# sourceMappingURL=agent.d.ts.map
|
package/dist/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAUA,OAAO,EAAa,KAAK,SAAS,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/agent.js
CHANGED
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
// Fetching is concurrent (configurable via browser.concurrency) and optionally
|
|
9
9
|
// backed by an on-disk cache (src/cache.ts) so re-running a question is cheap.
|
|
10
10
|
import { withModel } from "./llm.js";
|
|
11
|
-
import { dedupeByUrl } from "./search.js";
|
|
11
|
+
import { dedupeByUrl, isRateLimitError } from "./search.js";
|
|
12
12
|
import { planQueries, critique } from "./plan.js";
|
|
13
13
|
import { BrowserSession } from "./browser.js";
|
|
14
14
|
import { extractContent } from "./extract.js";
|
|
@@ -24,6 +24,29 @@ import { contentShingles, findNearDuplicate, DEFAULT_NEAR_DUPE_THRESHOLD, } from
|
|
|
24
24
|
import { classifyUrl } from "./domain-filter.js";
|
|
25
25
|
import { runConcurrent } from "./concurrency.js";
|
|
26
26
|
import { canFetch, DEFAULT_USER_AGENT, } from "./robots.js";
|
|
27
|
+
// v0.20.0 — thrown instead of synthesizing when zero sources survived the
|
|
28
|
+
// search + fetch + filter pipeline. Synthesizing over an empty source packet
|
|
29
|
+
// burns an LLM call to produce a guaranteed "unable to answer" (observed in
|
|
30
|
+
// the wild when DDG silently rate-limits a burst of queries). Failing loud
|
|
31
|
+
// with diagnostics is cheaper and more honest; the CLI renders a
|
|
32
|
+
// what-to-try-next message from the structured fields.
|
|
33
|
+
export class NoSourcesError extends Error {
|
|
34
|
+
adapter;
|
|
35
|
+
queries;
|
|
36
|
+
candidatesFound;
|
|
37
|
+
searchErrors;
|
|
38
|
+
constructor(adapter, queries, candidatesFound, searchErrors) {
|
|
39
|
+
const n = queries.length;
|
|
40
|
+
super(candidatesFound === 0
|
|
41
|
+
? `no sources gathered: ${n} quer${n === 1 ? "y" : "ies"} via ${adapter} returned 0 usable results${searchErrors.some((e) => e.rateLimited) ? " (rate-limited)" : ""}`
|
|
42
|
+
: `no sources gathered: ${candidatesFound} candidate(s) found but none could be fetched and extracted`);
|
|
43
|
+
this.adapter = adapter;
|
|
44
|
+
this.queries = queries;
|
|
45
|
+
this.candidatesFound = candidatesFound;
|
|
46
|
+
this.searchErrors = searchErrors;
|
|
47
|
+
this.name = "NoSourcesError";
|
|
48
|
+
}
|
|
49
|
+
}
|
|
27
50
|
export async function runAgent(question, config, signal) {
|
|
28
51
|
// v0.10.0 — per-phase LLM config. Each falls back to the base model
|
|
29
52
|
// when AgentConfig.models doesn't override that stage. The same auth /
|
|
@@ -82,12 +105,68 @@ export async function runAgent(question, config, signal) {
|
|
|
82
105
|
const seenUrls = new Set();
|
|
83
106
|
const allCandidates = [];
|
|
84
107
|
const allQueries = [];
|
|
108
|
+
const searchErrors = [];
|
|
85
109
|
const keptSources = [];
|
|
86
110
|
// Shingle sets for near-dup detection, lazily synced to keptSources so
|
|
87
111
|
// include[]/preKept entries (pushed below without touching this array)
|
|
88
112
|
// still participate as dedupe anchors.
|
|
89
113
|
const keptShingles = [];
|
|
90
114
|
const rounds = [];
|
|
115
|
+
// One pass of a round's queries through an adapter. Mutates the shared
|
|
116
|
+
// candidate pool / seen-URL set / error log; used for the primary adapter
|
|
117
|
+
// every round and for the optional fallback adapter when the primary
|
|
118
|
+
// produced nothing.
|
|
119
|
+
async function runSearchPass(adapter, queries) {
|
|
120
|
+
for (const query of queries) {
|
|
121
|
+
if (signal?.aborted)
|
|
122
|
+
throw new Error("aborted");
|
|
123
|
+
emit(config, { type: "search.start", query });
|
|
124
|
+
let results;
|
|
125
|
+
try {
|
|
126
|
+
results = await adapter.search(query, config.resultsPerQuery, signal);
|
|
127
|
+
}
|
|
128
|
+
catch (err) {
|
|
129
|
+
// A failed search shouldn't sink the round — record it, surface it
|
|
130
|
+
// as an event, and move on. The zero-source guard below catches the
|
|
131
|
+
// everything-failed case before any synthesis money is spent.
|
|
132
|
+
if (signal?.aborted)
|
|
133
|
+
throw err;
|
|
134
|
+
const rateLimited = isRateLimitError(err);
|
|
135
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
136
|
+
searchErrors.push({ query, message, rateLimited });
|
|
137
|
+
emit(config, { type: "search.error", query, message, rateLimited });
|
|
138
|
+
// The limiter that refused this query will refuse this pass's
|
|
139
|
+
// remaining queries too — skip them rather than hammer it.
|
|
140
|
+
if (rateLimited)
|
|
141
|
+
break;
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
const fresh = dedupeByUrl(results).filter((r) => !seenUrls.has(r.url));
|
|
145
|
+
let kept = 0;
|
|
146
|
+
for (const r of fresh) {
|
|
147
|
+
seenUrls.add(r.url);
|
|
148
|
+
if (config.domainFilter) {
|
|
149
|
+
const verdict = classifyUrl(r.url, config.domainFilter);
|
|
150
|
+
if (verdict !== "allow") {
|
|
151
|
+
emit(config, {
|
|
152
|
+
type: "fetch.skipped",
|
|
153
|
+
url: r.url,
|
|
154
|
+
reason: verdict === "deny-listed" ? "domain-deny" : "domain-not-allowed",
|
|
155
|
+
});
|
|
156
|
+
continue;
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
allCandidates.push({
|
|
160
|
+
url: r.url,
|
|
161
|
+
title: r.title,
|
|
162
|
+
snippet: r.snippet,
|
|
163
|
+
query,
|
|
164
|
+
});
|
|
165
|
+
kept++;
|
|
166
|
+
}
|
|
167
|
+
emit(config, { type: "search.done", query, count: kept });
|
|
168
|
+
}
|
|
169
|
+
}
|
|
91
170
|
// Local file ingestion: pre-fetched sources are placed at the head of
|
|
92
171
|
// the kept-sources list so they get the lowest [N] citation ids and
|
|
93
172
|
// are most prominent to the synthesizer.
|
|
@@ -158,35 +237,18 @@ export async function runAgent(question, config, signal) {
|
|
|
158
237
|
emit(config, { type: "round.start", round, queries: queriesForRound });
|
|
159
238
|
allQueries.push(...queriesForRound);
|
|
160
239
|
const candidatesBefore = allCandidates.length;
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
emit(config, {
|
|
174
|
-
type: "fetch.skipped",
|
|
175
|
-
url: r.url,
|
|
176
|
-
reason: verdict === "deny-listed" ? "domain-deny" : "domain-not-allowed",
|
|
177
|
-
});
|
|
178
|
-
continue;
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
allCandidates.push({
|
|
182
|
-
url: r.url,
|
|
183
|
-
title: r.title,
|
|
184
|
-
snippet: r.snippet,
|
|
185
|
-
query,
|
|
186
|
-
});
|
|
187
|
-
kept++;
|
|
188
|
-
}
|
|
189
|
-
emit(config, { type: "search.done", query, count: kept });
|
|
240
|
+
await runSearchPass(config.search, queriesForRound);
|
|
241
|
+
// Recovery pass: zero candidates from the primary (throttled, down, or
|
|
242
|
+
// genuinely empty) and a fallback is configured — re-run the round's
|
|
243
|
+
// queries through it once. Runs ALL the round's queries, including any
|
|
244
|
+
// the primary's rate-limit short-circuit skipped.
|
|
245
|
+
if (allCandidates.length === candidatesBefore && config.fallbackSearch) {
|
|
246
|
+
emit(config, {
|
|
247
|
+
type: "search.fallback",
|
|
248
|
+
adapter: config.fallbackSearch.name,
|
|
249
|
+
queries: queriesForRound,
|
|
250
|
+
});
|
|
251
|
+
await runSearchPass(config.fallbackSearch, queriesForRound);
|
|
190
252
|
}
|
|
191
253
|
const candidatesFoundThisRound = allCandidates.length - candidatesBefore;
|
|
192
254
|
const headroom = Math.max(0, config.maxSources - keptSources.length);
|
|
@@ -286,6 +348,13 @@ export async function runAgent(question, config, signal) {
|
|
|
286
348
|
content,
|
|
287
349
|
});
|
|
288
350
|
}
|
|
351
|
+
// Zero-source guard: synthesizing over an empty source packet would
|
|
352
|
+
// burn an LLM call on a guaranteed "unable to answer". Throw with the
|
|
353
|
+
// diagnostics instead. Only an issue at round 0 — later rounds can only
|
|
354
|
+
// grow keptSources — but the guard is cheap, so it's unconditional.
|
|
355
|
+
if (keptSources.length === 0) {
|
|
356
|
+
throw new NoSourcesError(config.search.name, allQueries, allCandidates.length, searchErrors);
|
|
357
|
+
}
|
|
289
358
|
emit(config, {
|
|
290
359
|
type: "synthesize.start",
|
|
291
360
|
sourceCount: keptSources.length,
|
package/dist/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { type CLIFlags } from "./config.js";
|
|
3
|
+
import { NoSourcesError } from "./agent.js";
|
|
3
4
|
import { type VerificationReport } from "./verify.js";
|
|
4
5
|
import { type CostEstimate } from "./pricing.js";
|
|
5
6
|
interface ParsedArgs {
|
|
@@ -8,6 +9,7 @@ interface ParsedArgs {
|
|
|
8
9
|
outPath?: string;
|
|
9
10
|
flags: CLIFlags;
|
|
10
11
|
help: boolean;
|
|
12
|
+
version: boolean;
|
|
11
13
|
}
|
|
12
14
|
export declare function parseArgs(argv: string[]): ParsedArgs;
|
|
13
15
|
export declare function renderCostSummary(cost: CostEstimate, model: string, baseUrl: string): string;
|
|
@@ -21,6 +23,7 @@ export declare function renderCostSummary(cost: CostEstimate, model: string, bas
|
|
|
21
23
|
*/
|
|
22
24
|
export declare function renderMultiModelCostSummary(cost: import("./pricing.js").MultiModelCostEstimate, baseUrl: string): string;
|
|
23
25
|
export declare function renderCitationHealthFooter(report: VerificationReport | undefined): string;
|
|
26
|
+
export declare function renderNoSourcesMessage(err: NoSourcesError): string;
|
|
24
27
|
export declare function safeErrorMessage(err: unknown): string;
|
|
25
28
|
export {};
|
|
26
29
|
//# sourceMappingURL=cli.d.ts.map
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAgBA,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAgBA,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG3D,OAAO,EAAY,cAAc,EAAmB,MAAM,YAAY,CAAC;AAKvE,OAAO,EAAgC,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAIL,KAAK,YAAY,EAClB,MAAM,cAAc,CAAC;AAmMtB,UAAU,UAAU;IAIlB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,QAAQ,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,OAAO,CAAC;CAClB;AAqBD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAiPpD;AAoFD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,MAAM,CAIR;AAED;;;;;;;GAOG;AACH,wBAAgB,2BAA2B,CACzC,IAAI,EAAE,OAAO,cAAc,EAAE,sBAAsB,EACnD,OAAO,EAAE,MAAM,GACd,MAAM,CAgBR;AAKD,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,kBAAkB,GAAG,SAAS,GACrC,MAAM,CASR;AAMD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAyBlE;AAKD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAIrD"}
|
package/dist/cli.js
CHANGED
|
@@ -16,7 +16,7 @@ import { fileURLToPath } from "node:url";
|
|
|
16
16
|
import { resolveConfig } from "./config.js";
|
|
17
17
|
import { parseMaxCost, BudgetExceededError } from "./budget.js";
|
|
18
18
|
import { resolveSearchAdapter } from "./search.js";
|
|
19
|
-
import { runAgent } from "./agent.js";
|
|
19
|
+
import { runAgent, NoSourcesError } from "./agent.js";
|
|
20
20
|
import { createCache } from "./cache.js";
|
|
21
21
|
import { createRobotsCache } from "./robots.js";
|
|
22
22
|
import { renderSourcesMarkdown, renderAnswerMarkdown } from "./citations.js";
|
|
@@ -33,7 +33,8 @@ import { completionScript } from "./completion.js";
|
|
|
33
33
|
import { browserOpenCommand } from "./open.js";
|
|
34
34
|
import { diffSessions, renderDiffText, DIFF_NARRATE_SYSTEM, buildDiffNarrateUser, } from "./diff.js";
|
|
35
35
|
import { callLLM } from "./llm.js";
|
|
36
|
-
import { runDoctor, renderDoctorText, renderDoctorJson, exitCodeFor, scrubPath, } from "./doctor.js";
|
|
36
|
+
import { runDoctor, renderDoctorText, renderDoctorJson, exitCodeFor, scrubPath, readDeepdiveVersion, } from "./doctor.js";
|
|
37
|
+
import { normalizeAdapterList } from "./search.js";
|
|
37
38
|
const USAGE = `deepdive — local research agent
|
|
38
39
|
|
|
39
40
|
Usage:
|
|
@@ -92,6 +93,11 @@ Flags:
|
|
|
92
93
|
first, Brave fallback (if DEEPDIVE_BRAVE_KEY). multi:
|
|
93
94
|
fans out to several adapters concurrently and interleaves
|
|
94
95
|
results (e.g. multi:duckduckgo,wikipedia,arxiv).
|
|
96
|
+
--search-fallback=<adapters> Recovery backend(s) tried once when a round's
|
|
97
|
+
primary searches produce zero candidates (e.g.
|
|
98
|
+
rate-limited). Comma list fans out: e.g.
|
|
99
|
+
--search-fallback=wikipedia,arxiv.
|
|
100
|
+
Env: DEEPDIVE_SEARCH_FALLBACK. Default: none.
|
|
95
101
|
--results-per-query=<n> Results per sub-query. Default: 5
|
|
96
102
|
--max-sources=<n> Total sources to fetch. Default: 12
|
|
97
103
|
--max-words-per-source=<n> Per-source content cap before synthesis. Default: 2000
|
|
@@ -152,10 +158,12 @@ Flags:
|
|
|
152
158
|
tokens to stdout (auto-off for --json and
|
|
153
159
|
non-TTY stdout)
|
|
154
160
|
--no-sessions Do not persist this run to ~/.deepdive/sessions/
|
|
161
|
+
--version, -V Print the deepdive version and exit
|
|
155
162
|
--help, -h Show this help
|
|
156
163
|
|
|
157
164
|
Environment:
|
|
158
165
|
DEEPDIVE_BASE_URL, DEEPDIVE_API_KEY, DEEPDIVE_MODEL, DEEPDIVE_SEARCH,
|
|
166
|
+
DEEPDIVE_SEARCH_FALLBACK,
|
|
159
167
|
DEEPDIVE_SEARXNG_URL, DEEPDIVE_BRAVE_KEY, DEEPDIVE_TAVILY_KEY, DEEPDIVE_EXA_KEY,
|
|
160
168
|
DEEPDIVE_WIKIPEDIA_LANG, DEEPDIVE_GITHUB_TOKEN, DEEPDIVE_STACKEXCHANGE_SITE,
|
|
161
169
|
DEEPDIVE_S2_KEY, DEEPDIVE_OPENALEX_MAILTO,
|
|
@@ -168,7 +176,13 @@ Environment:
|
|
|
168
176
|
DEEPDIVE_INCLUDE, DEEPDIVE_PDF_MAX_PAGES,
|
|
169
177
|
DEEPDIVE_ALLOW_DOMAIN, DEEPDIVE_DENY_DOMAIN, DEEPDIVE_SINCE, DEEPDIVE_API_FORMAT,
|
|
170
178
|
DEEPDIVE_NO_DEDUPE, DEEPDIVE_DEDUPE_THRESHOLD, DEEPDIVE_TAGS,
|
|
171
|
-
DEEPDIVE_NO_SESSIONS, DEEPDIVE_SESSIONS_DIR, DEEPDIVE_CONFIG
|
|
179
|
+
DEEPDIVE_NO_SESSIONS, DEEPDIVE_SESSIONS_DIR, DEEPDIVE_CONFIG,
|
|
180
|
+
DEEPDIVE_DDG_DELAY_MS (spacing between DuckDuckGo requests; default 1000, 0 disables)
|
|
181
|
+
|
|
182
|
+
Exit codes:
|
|
183
|
+
0 success · 1 error · 2 bad usage or --max-cost cap hit · 3 zero sources
|
|
184
|
+
gathered (run stopped before the synthesis LLM call; commonly the search
|
|
185
|
+
backend rate-limiting — the message names the cause)
|
|
172
186
|
|
|
173
187
|
Config file:
|
|
174
188
|
~/.deepdive/config.json (override path with DEEPDIVE_CONFIG) — JSON object of
|
|
@@ -200,11 +214,16 @@ export function parseArgs(argv) {
|
|
|
200
214
|
const extras = [];
|
|
201
215
|
let outPath;
|
|
202
216
|
let help = false;
|
|
217
|
+
let version = false;
|
|
203
218
|
for (const a of argv) {
|
|
204
219
|
if (a === "--help" || a === "-h") {
|
|
205
220
|
help = true;
|
|
206
221
|
continue;
|
|
207
222
|
}
|
|
223
|
+
if (a === "--version" || a === "-V") {
|
|
224
|
+
version = true;
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
208
227
|
if (a === "--verbose" || a === "-v") {
|
|
209
228
|
flags.verbose = true;
|
|
210
229
|
continue;
|
|
@@ -299,6 +318,9 @@ export function parseArgs(argv) {
|
|
|
299
318
|
case "search":
|
|
300
319
|
flags.search = value.toLowerCase();
|
|
301
320
|
break;
|
|
321
|
+
case "search-fallback":
|
|
322
|
+
flags.searchFallback = value.toLowerCase();
|
|
323
|
+
break;
|
|
302
324
|
case "results-per-query":
|
|
303
325
|
flags.resultsPerQuery = parsePositiveInt(value);
|
|
304
326
|
break;
|
|
@@ -414,7 +436,7 @@ export function parseArgs(argv) {
|
|
|
414
436
|
}
|
|
415
437
|
throw new Error(`unexpected positional argument: ${JSON.stringify(a)}. Wrap the question in quotes.`);
|
|
416
438
|
}
|
|
417
|
-
return { question, extras, outPath, flags, help };
|
|
439
|
+
return { question, extras, outPath, flags, help, version };
|
|
418
440
|
}
|
|
419
441
|
function parsePositiveInt(s) {
|
|
420
442
|
if (!/^\d+$/.test(s))
|
|
@@ -446,6 +468,10 @@ function renderEvent(e) {
|
|
|
446
468
|
return ` search ${e.query}`;
|
|
447
469
|
case "search.done":
|
|
448
470
|
return ` ${e.count} result${e.count === 1 ? "" : "s"}`;
|
|
471
|
+
case "search.error":
|
|
472
|
+
return ` search ⚠ ${e.rateLimited ? "rate-limited" : "failed"} — ${e.message}${e.rateLimited ? " (skipping this round's remaining queries)" : ""}`;
|
|
473
|
+
case "search.fallback":
|
|
474
|
+
return ` search primary adapter produced nothing — retrying the round via ${e.adapter}`;
|
|
449
475
|
case "fetch.start":
|
|
450
476
|
return ` fetch ${e.cached ? "(cached) " : ""}${e.url}`;
|
|
451
477
|
case "fetch.done":
|
|
@@ -533,6 +559,30 @@ export function renderCitationHealthFooter(report) {
|
|
|
533
559
|
`in their cited source (threshold ${report.threshold}). ` +
|
|
534
560
|
`Run with \`--verbose\` to see which.\n`);
|
|
535
561
|
}
|
|
562
|
+
// Exported for unit tests. Friendly multi-line rendering of a NoSourcesError —
|
|
563
|
+
// the structured fields tell us WHY the pipeline came up empty, so the message
|
|
564
|
+
// can name the actual problem and a concrete next step instead of a generic
|
|
565
|
+
// failure line.
|
|
566
|
+
export function renderNoSourcesMessage(err) {
|
|
567
|
+
const lines = [`deepdive: ${err.message} — stopped before spending the synthesis LLM call.`];
|
|
568
|
+
const rateLimited = err.searchErrors.some((e) => e.rateLimited);
|
|
569
|
+
for (const e of err.searchErrors.slice(0, 3)) {
|
|
570
|
+
lines.push(` search error: ${scrubPath(e.message)}`);
|
|
571
|
+
}
|
|
572
|
+
if (err.searchErrors.length > 3) {
|
|
573
|
+
lines.push(` … and ${err.searchErrors.length - 3} more search error(s)`);
|
|
574
|
+
}
|
|
575
|
+
if (err.candidatesFound > 0) {
|
|
576
|
+
lines.push(` candidates were found but none survived fetch + extraction (robots, fetch errors, paywalls).`, ` try: --verbose to see per-URL outcomes, or --ignore-robots if appropriate.`);
|
|
577
|
+
}
|
|
578
|
+
else if (rateLimited) {
|
|
579
|
+
lines.push(` try: wait a minute and re-run, or switch backends —`, ` --search=multi:wikipedia,arxiv (keyless) or --search=brave (needs DEEPDIVE_BRAVE_KEY)`);
|
|
580
|
+
}
|
|
581
|
+
else {
|
|
582
|
+
lines.push(` try: rephrase the question, or a different backend — --search=multi:duckduckgo,wikipedia`);
|
|
583
|
+
}
|
|
584
|
+
return lines.join("\n");
|
|
585
|
+
}
|
|
536
586
|
// Exported for unit tests. User-facing error rendering at the CLI boundary.
|
|
537
587
|
// Runs the error message through scrubPath so the user's home directory can
|
|
538
588
|
// never end up in a bug report.
|
|
@@ -558,6 +608,11 @@ async function main(argv) {
|
|
|
558
608
|
process.stdout.write(USAGE);
|
|
559
609
|
return 0;
|
|
560
610
|
}
|
|
611
|
+
if (parsed.version) {
|
|
612
|
+
// Bare version, no prefix — script-friendly (`deepdive --version` in CI).
|
|
613
|
+
process.stdout.write((await readDeepdiveVersion()) + "\n");
|
|
614
|
+
return 0;
|
|
615
|
+
}
|
|
561
616
|
// `completion` needs no config; everything else gets config-file + profile
|
|
562
617
|
// defaults layered beneath env (real env wins). Do this before any
|
|
563
618
|
// resolveConfig so all subcommands see the same effective settings.
|
|
@@ -757,7 +812,26 @@ async function runResearch(opts) {
|
|
|
757
812
|
`(30d, 12h, 2w); got: ${config.sinceRaw}\n`);
|
|
758
813
|
return { code: 2 };
|
|
759
814
|
}
|
|
760
|
-
|
|
815
|
+
// Adapter resolution can fail on user input (unknown name, missing key) —
|
|
816
|
+
// exit 2 with the message rather than an unhandled rejection.
|
|
817
|
+
let search;
|
|
818
|
+
let fallbackSearch;
|
|
819
|
+
try {
|
|
820
|
+
search = await resolveSearchAdapter(config.searchAdapter, process.env);
|
|
821
|
+
if (config.searchFallback) {
|
|
822
|
+
const fallbackName = normalizeAdapterList(config.searchFallback);
|
|
823
|
+
if (fallbackName && fallbackName !== config.searchAdapter) {
|
|
824
|
+
fallbackSearch = await resolveSearchAdapter(fallbackName, process.env);
|
|
825
|
+
}
|
|
826
|
+
else if (fallbackName === config.searchAdapter) {
|
|
827
|
+
process.stderr.write(`deepdive: warning: --search-fallback matches --search (${fallbackName}); ignoring the fallback\n`);
|
|
828
|
+
}
|
|
829
|
+
}
|
|
830
|
+
}
|
|
831
|
+
catch (err) {
|
|
832
|
+
process.stderr.write(`deepdive: ${safeErrorMessage(err)}\n`);
|
|
833
|
+
return { code: 2 };
|
|
834
|
+
}
|
|
761
835
|
const cache = config.cache.enabled
|
|
762
836
|
? createCache({ dir: config.cache.dir, ttlMs: config.cache.ttlMs })
|
|
763
837
|
: undefined;
|
|
@@ -782,6 +856,7 @@ async function runResearch(opts) {
|
|
|
782
856
|
maxCostUsd: config.maxCostUsd,
|
|
783
857
|
preKept,
|
|
784
858
|
search,
|
|
859
|
+
fallbackSearch,
|
|
785
860
|
browser: config.browser,
|
|
786
861
|
resultsPerQuery: config.resultsPerQuery,
|
|
787
862
|
maxSources: config.maxSources,
|
|
@@ -922,6 +997,12 @@ async function runResearch(opts) {
|
|
|
922
997
|
process.stderr.write(`deepdive: ${err.message}\n`);
|
|
923
998
|
return { code: 2 };
|
|
924
999
|
}
|
|
1000
|
+
// v0.20.0 — distinct exit code for "the pipeline gathered zero sources,
|
|
1001
|
+
// so we stopped before the synthesis call". Scripts can branch on 3.
|
|
1002
|
+
if (err instanceof NoSourcesError) {
|
|
1003
|
+
process.stderr.write(renderNoSourcesMessage(err) + "\n");
|
|
1004
|
+
return { code: 3 };
|
|
1005
|
+
}
|
|
925
1006
|
process.stderr.write(`deepdive: ${safeErrorMessage(err)}\n`);
|
|
926
1007
|
return { code: 1 };
|
|
927
1008
|
}
|