@askalf/deepdive 0.13.2 → 0.14.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 +118 -1
- package/dist/agent.d.ts +2 -1
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +36 -13
- package/dist/agent.js.map +1 -1
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js.map +1 -1
- package/dist/cache.d.ts.map +1 -1
- package/dist/cache.js +22 -2
- package/dist/cache.js.map +1 -1
- package/dist/citations.d.ts +1 -0
- package/dist/citations.d.ts.map +1 -1
- package/dist/citations.js +4 -1
- package/dist/citations.js.map +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +307 -17
- package/dist/cli.js.map +1 -1
- package/dist/completion.d.ts +3 -0
- package/dist/completion.d.ts.map +1 -0
- package/dist/completion.js +110 -0
- package/dist/completion.js.map +1 -0
- package/dist/confidence.d.ts +17 -0
- package/dist/confidence.d.ts.map +1 -0
- package/dist/confidence.js +41 -0
- package/dist/confidence.js.map +1 -0
- package/dist/config-file.d.ts +13 -0
- package/dist/config-file.d.ts.map +1 -0
- package/dist/config-file.js +149 -0
- package/dist/config-file.js.map +1 -0
- package/dist/config.d.ts +8 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +2 -0
- package/dist/config.js.map +1 -1
- package/dist/dates.d.ts +8 -0
- package/dist/dates.d.ts.map +1 -0
- package/dist/dates.js +195 -0
- package/dist/dates.js.map +1 -0
- package/dist/diff.d.ts +46 -0
- package/dist/diff.d.ts.map +1 -0
- package/dist/diff.js +227 -0
- package/dist/diff.js.map +1 -0
- package/dist/html-export.d.ts +6 -0
- package/dist/html-export.d.ts.map +1 -0
- package/dist/html-export.js +146 -0
- package/dist/html-export.js.map +1 -0
- package/dist/index.d.ts +10 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/markdown.d.ts +7 -0
- package/dist/markdown.d.ts.map +1 -0
- package/dist/markdown.js +232 -0
- package/dist/markdown.js.map +1 -0
- package/dist/profiles.d.ts +5 -0
- package/dist/profiles.d.ts.map +1 -0
- package/dist/profiles.js +38 -0
- package/dist/profiles.js.map +1 -0
- package/dist/robots.d.ts +1 -0
- package/dist/robots.d.ts.map +1 -1
- package/dist/robots.js +4 -7
- package/dist/robots.js.map +1 -1
- package/dist/search/arxiv.d.ts +7 -0
- package/dist/search/arxiv.d.ts.map +1 -0
- package/dist/search/arxiv.js +81 -0
- package/dist/search/arxiv.js.map +1 -0
- package/dist/search/brave.d.ts +1 -1
- package/dist/search/brave.d.ts.map +1 -1
- package/dist/search/brave.js +2 -1
- package/dist/search/brave.js.map +1 -1
- package/dist/search/duckduckgo.d.ts +1 -1
- package/dist/search/duckduckgo.d.ts.map +1 -1
- package/dist/search/duckduckgo.js +2 -1
- package/dist/search/duckduckgo.js.map +1 -1
- package/dist/search/github.d.ts +16 -0
- package/dist/search/github.d.ts.map +1 -0
- package/dist/search/github.js +59 -0
- package/dist/search/github.js.map +1 -0
- package/dist/search/searxng.d.ts +1 -1
- package/dist/search/searxng.d.ts.map +1 -1
- package/dist/search/searxng.js +2 -1
- package/dist/search/searxng.js.map +1 -1
- package/dist/search/wikipedia.d.ts +16 -0
- package/dist/search/wikipedia.d.ts.map +1 -0
- package/dist/search/wikipedia.js +56 -0
- package/dist/search/wikipedia.js.map +1 -0
- package/dist/search.d.ts +1 -0
- package/dist/search.d.ts.map +1 -1
- package/dist/search.js +26 -0
- package/dist/search.js.map +1 -1
- package/dist/sessions.d.ts +15 -0
- package/dist/sessions.d.ts.map +1 -1
- package/dist/sessions.js +67 -0
- package/dist/sessions.js.map +1 -1
- package/dist/synthesize.d.ts +6 -1
- package/dist/synthesize.d.ts.map +1 -1
- package/dist/synthesize.js +14 -5
- package/dist/synthesize.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
// Shell completion scripts. `deepdive completion <bash|zsh|fish>` prints a
|
|
2
|
+
// script the user evals/sources to get subcommand + flag completion. Pure: the
|
|
3
|
+
// scripts are generated from the lists below, no I/O.
|
|
4
|
+
const SUBCOMMANDS = [
|
|
5
|
+
["doctor", "health check"],
|
|
6
|
+
["sessions", "list / rm / prune saved sessions"],
|
|
7
|
+
["show", "print a saved session's answer"],
|
|
8
|
+
["resume", "re-synthesize a saved session (cheap)"],
|
|
9
|
+
["continue", "extend a session with new pages"],
|
|
10
|
+
["export", "render a session as html or md"],
|
|
11
|
+
["diff", "compare two saved sessions"],
|
|
12
|
+
["completion", "print a shell completion script"],
|
|
13
|
+
];
|
|
14
|
+
const FLAGS = [
|
|
15
|
+
["--deep", "critic loop (N rounds)"],
|
|
16
|
+
["--tldr", "lead the answer with a TL;DR"],
|
|
17
|
+
["--model", "LLM model"],
|
|
18
|
+
["--plan-model", "model for the planner stage"],
|
|
19
|
+
["--synth-model", "model for the synthesizer stage"],
|
|
20
|
+
["--critic-model", "model for the critic stage"],
|
|
21
|
+
["--search", "search adapter"],
|
|
22
|
+
["--profile", "named settings preset"],
|
|
23
|
+
["--max-cost", "budget cap in USD"],
|
|
24
|
+
["--max-sources", "total sources to fetch"],
|
|
25
|
+
["--concurrency", "parallel fetches"],
|
|
26
|
+
["--include", "local files/dirs as sources"],
|
|
27
|
+
["--allow-domain", "keep only these hosts"],
|
|
28
|
+
["--deny-domain", "drop these hosts"],
|
|
29
|
+
["--strict-cites", "fail on weakly-cited claims"],
|
|
30
|
+
["--narrate", "diff: add an LLM change summary"],
|
|
31
|
+
["--format", "export: html | md"],
|
|
32
|
+
["--older-than", "prune: age cutoff (e.g. 30d)"],
|
|
33
|
+
["--keep", "prune: retain the newest N"],
|
|
34
|
+
["--dry-run", "prune: preview, delete nothing"],
|
|
35
|
+
["--out", "write output to a file"],
|
|
36
|
+
["--json", "emit JSON"],
|
|
37
|
+
["--verbose", "stream progress to stderr"],
|
|
38
|
+
["--help", "show help"],
|
|
39
|
+
];
|
|
40
|
+
export function completionScript(shell) {
|
|
41
|
+
switch (shell) {
|
|
42
|
+
case "bash":
|
|
43
|
+
return bash();
|
|
44
|
+
case "zsh":
|
|
45
|
+
return zsh();
|
|
46
|
+
case "fish":
|
|
47
|
+
return fish();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
function bash() {
|
|
51
|
+
const subs = SUBCOMMANDS.map(([s]) => s).join(" ");
|
|
52
|
+
const flags = FLAGS.map(([f]) => f).join(" ");
|
|
53
|
+
return `# deepdive bash completion. Add to ~/.bashrc:
|
|
54
|
+
# source <(deepdive completion bash)
|
|
55
|
+
_deepdive_completions() {
|
|
56
|
+
local cur="\${COMP_WORDS[COMP_CWORD]}"
|
|
57
|
+
local subcommands="${subs}"
|
|
58
|
+
local flags="${flags}"
|
|
59
|
+
if [[ "\${cur}" == -* ]]; then
|
|
60
|
+
COMPREPLY=( $(compgen -W "\${flags}" -- "\${cur}") )
|
|
61
|
+
else
|
|
62
|
+
COMPREPLY=( $(compgen -W "\${subcommands}" -- "\${cur}") )
|
|
63
|
+
fi
|
|
64
|
+
}
|
|
65
|
+
complete -F _deepdive_completions deepdive
|
|
66
|
+
`;
|
|
67
|
+
}
|
|
68
|
+
function zsh() {
|
|
69
|
+
const subs = SUBCOMMANDS.map(([s, d]) => `'${s}:${d}'`).join(" ");
|
|
70
|
+
const flags = FLAGS.map(([f, d]) => `'${f}:${d}'`).join(" ");
|
|
71
|
+
return `#compdef deepdive
|
|
72
|
+
# deepdive zsh completion. Add to ~/.zshrc:
|
|
73
|
+
# source <(deepdive completion zsh)
|
|
74
|
+
_deepdive() {
|
|
75
|
+
local -a subcommands flags
|
|
76
|
+
subcommands=(${subs})
|
|
77
|
+
flags=(${flags})
|
|
78
|
+
if [[ \${words[CURRENT]} == -* ]]; then
|
|
79
|
+
_describe -t flags 'flag' flags
|
|
80
|
+
else
|
|
81
|
+
_describe -t commands 'deepdive command' subcommands
|
|
82
|
+
_describe -t flags 'flag' flags
|
|
83
|
+
fi
|
|
84
|
+
}
|
|
85
|
+
compdef _deepdive deepdive
|
|
86
|
+
`;
|
|
87
|
+
}
|
|
88
|
+
function fish() {
|
|
89
|
+
const lines = [
|
|
90
|
+
"# deepdive fish completion. Add to ~/.config/fish/completions/deepdive.fish:",
|
|
91
|
+
"# deepdive completion fish > ~/.config/fish/completions/deepdive.fish",
|
|
92
|
+
"complete -c deepdive -f",
|
|
93
|
+
];
|
|
94
|
+
for (const [s, d] of SUBCOMMANDS) {
|
|
95
|
+
lines.push(`complete -c deepdive -n '__fish_use_subcommand' -a '${s}' -d '${escapeFish(d)}'`);
|
|
96
|
+
}
|
|
97
|
+
for (const [f, d] of FLAGS) {
|
|
98
|
+
const long = f.replace(/^--/, "");
|
|
99
|
+
lines.push(`complete -c deepdive -l ${long} -d '${escapeFish(d)}'`);
|
|
100
|
+
}
|
|
101
|
+
return lines.join("\n") + "\n";
|
|
102
|
+
}
|
|
103
|
+
function escapeFish(s) {
|
|
104
|
+
// Escape the backslash first, then the single quote — escaping only the
|
|
105
|
+
// quote would leave a trailing backslash able to break out of the '…'
|
|
106
|
+
// string (CodeQL js/incomplete-sanitization). Inputs here are static, but
|
|
107
|
+
// keep the escaper correct.
|
|
108
|
+
return s.replace(/\\/g, "\\\\").replace(/'/g, "\\'");
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=completion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"completion.js","sourceRoot":"","sources":["../src/completion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export type ConfidenceLevel = "high" | "medium" | "low";
|
|
2
|
+
export interface ConfidenceInput {
|
|
3
|
+
sources: number;
|
|
4
|
+
citationsTotal: number;
|
|
5
|
+
citationsSupported: number;
|
|
6
|
+
}
|
|
7
|
+
export interface ConfidenceAssessment {
|
|
8
|
+
level: ConfidenceLevel;
|
|
9
|
+
sources: number;
|
|
10
|
+
citationsTotal: number;
|
|
11
|
+
citationsSupported: number;
|
|
12
|
+
supportRatio: number;
|
|
13
|
+
reasons: string[];
|
|
14
|
+
}
|
|
15
|
+
export declare function assessConfidence(input: ConfidenceInput): ConfidenceAssessment;
|
|
16
|
+
export declare function formatConfidenceLine(a: ConfidenceAssessment): string;
|
|
17
|
+
//# sourceMappingURL=confidence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confidence.d.ts","sourceRoot":"","sources":["../src/confidence.ts"],"names":[],"mappings":"AAMA,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;AAExD,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,eAAe,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,cAAc,EAAE,MAAM,CAAC;IACvB,kBAAkB,EAAE,MAAM,CAAC;IAE3B,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,oBAAoB,CA+B7E;AAGD,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,oBAAoB,GAAG,MAAM,CAEpE"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// Coverage / confidence signal. A deterministic, honest heuristic over what
|
|
2
|
+
// the run actually produced — how many sources were kept, and how well the
|
|
3
|
+
// answer's own [N] citations hold up under the lexical verifier. It is NOT a
|
|
4
|
+
// claim that the answer is correct; it's a fast "how much should I trust this
|
|
5
|
+
// at a glance, and what should I double-check" read. Pure and unit-testable.
|
|
6
|
+
export function assessConfidence(input) {
|
|
7
|
+
const { sources, citationsTotal, citationsSupported } = input;
|
|
8
|
+
const supportRatio = citationsTotal > 0 ? citationsSupported / citationsTotal : 1;
|
|
9
|
+
const reasons = [];
|
|
10
|
+
reasons.push(`${sources} source${sources === 1 ? "" : "s"}`);
|
|
11
|
+
reasons.push(citationsTotal > 0
|
|
12
|
+
? `${citationsSupported}/${citationsTotal} citations supported`
|
|
13
|
+
: "no inline citations");
|
|
14
|
+
// Low when the evidence base is thin, the answer cited nothing the verifier
|
|
15
|
+
// could check, or a meaningful share of citations failed.
|
|
16
|
+
const thin = sources <= 2;
|
|
17
|
+
const uncited = citationsTotal === 0;
|
|
18
|
+
const weakCites = citationsTotal > 0 && supportRatio < 0.6;
|
|
19
|
+
let level;
|
|
20
|
+
if (thin || uncited || weakCites) {
|
|
21
|
+
level = "low";
|
|
22
|
+
if (thin)
|
|
23
|
+
reasons.push("thin evidence base");
|
|
24
|
+
if (uncited)
|
|
25
|
+
reasons.push("answer not grounded in citations");
|
|
26
|
+
else if (weakCites)
|
|
27
|
+
reasons.push("several citations weakly supported");
|
|
28
|
+
}
|
|
29
|
+
else if (sources >= 5 && citationsTotal >= 3 && supportRatio >= 0.9) {
|
|
30
|
+
level = "high";
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
level = "medium";
|
|
34
|
+
}
|
|
35
|
+
return { level, sources, citationsTotal, citationsSupported, supportRatio, reasons };
|
|
36
|
+
}
|
|
37
|
+
// Exported for unit tests. One-line stderr summary, mirroring the cost line.
|
|
38
|
+
export function formatConfidenceLine(a) {
|
|
39
|
+
return `confidence · ${a.level} · ${a.reasons.join(" · ")}`;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=confidence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confidence.js","sourceRoot":"","sources":["../src/confidence.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,2EAA2E;AAC3E,6EAA6E;AAC7E,8EAA8E;AAC9E,6EAA6E;AAoB7E,MAAM,UAAU,gBAAgB,CAAC,KAAsB;IACrD,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,KAAK,CAAC;IAC9D,MAAM,YAAY,GAAG,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;IAElF,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,UAAU,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC7D,OAAO,CAAC,IAAI,CACV,cAAc,GAAG,CAAC;QAChB,CAAC,CAAC,GAAG,kBAAkB,IAAI,cAAc,sBAAsB;QAC/D,CAAC,CAAC,qBAAqB,CAC1B,CAAC;IAEF,4EAA4E;IAC5E,0DAA0D;IAC1D,MAAM,IAAI,GAAG,OAAO,IAAI,CAAC,CAAC;IAC1B,MAAM,OAAO,GAAG,cAAc,KAAK,CAAC,CAAC;IACrC,MAAM,SAAS,GAAG,cAAc,GAAG,CAAC,IAAI,YAAY,GAAG,GAAG,CAAC;IAE3D,IAAI,KAAsB,CAAC;IAC3B,IAAI,IAAI,IAAI,OAAO,IAAI,SAAS,EAAE,CAAC;QACjC,KAAK,GAAG,KAAK,CAAC;QACd,IAAI,IAAI;YAAE,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;QAC7C,IAAI,OAAO;YAAE,OAAO,CAAC,IAAI,CAAC,kCAAkC,CAAC,CAAC;aACzD,IAAI,SAAS;YAAE,OAAO,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;IACzE,CAAC;SAAM,IAAI,OAAO,IAAI,CAAC,IAAI,cAAc,IAAI,CAAC,IAAI,YAAY,IAAI,GAAG,EAAE,CAAC;QACtE,KAAK,GAAG,MAAM,CAAC;IACjB,CAAC;SAAM,CAAC;QACN,KAAK,GAAG,QAAQ,CAAC;IACnB,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,kBAAkB,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AACvF,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,oBAAoB,CAAC,CAAuB;IAC1D,OAAO,gBAAgB,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;AAC9D,CAAC"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type FileConfig = Record<string, unknown>;
|
|
2
|
+
export interface ParsedConfigFile {
|
|
3
|
+
base: FileConfig;
|
|
4
|
+
profiles: Record<string, FileConfig>;
|
|
5
|
+
defaultProfile?: string;
|
|
6
|
+
path?: string;
|
|
7
|
+
error?: string;
|
|
8
|
+
}
|
|
9
|
+
export declare function fileConfigToEnv(fc: FileConfig): Record<string, string>;
|
|
10
|
+
export declare function knownConfigKeys(): string[];
|
|
11
|
+
export declare function defaultConfigPath(env: Record<string, string | undefined>): string;
|
|
12
|
+
export declare function loadConfigFile(env: Record<string, string | undefined>): ParsedConfigFile;
|
|
13
|
+
//# sourceMappingURL=config-file.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-file.d.ts","sourceRoot":"","sources":["../src/config-file.ts"],"names":[],"mappings":"AAqBA,MAAM,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEjD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,UAAU,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAyDD,wBAAgB,eAAe,CAAC,EAAE,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA0BtE;AAGD,wBAAgB,eAAe,IAAI,MAAM,EAAE,CAE1C;AAGD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,MAAM,CAEjF;AAMD,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,GAAG,gBAAgB,CAiCxF"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
// Config file + profile support. A user can persist their defaults in
|
|
2
|
+
// ~/.deepdive/config.json (override the path with DEEPDIVE_CONFIG) so they
|
|
3
|
+
// don't retype --base-url / --model / --search every run, and can define named
|
|
4
|
+
// profiles for common modes.
|
|
5
|
+
//
|
|
6
|
+
// The trick that keeps this from touching the stable resolveConfig() at all:
|
|
7
|
+
// the file's friendly keys are translated to the DEEPDIVE_* env var strings
|
|
8
|
+
// resolveConfig already understands, then layered UNDER the real process.env
|
|
9
|
+
// (real env wins). So the effective precedence becomes:
|
|
10
|
+
//
|
|
11
|
+
// CLI flags > env vars > selected profile > config-file base > defaults
|
|
12
|
+
//
|
|
13
|
+
// Pure mapping (`fileConfigToEnv`) is separated from the file read
|
|
14
|
+
// (`loadConfigFile`) so the mapping is unit-testable without disk.
|
|
15
|
+
import { readFileSync } from "node:fs";
|
|
16
|
+
import { homedir } from "node:os";
|
|
17
|
+
import { join } from "node:path";
|
|
18
|
+
// Friendly config key → the DEEPDIVE_* env var resolveConfig reads, plus how
|
|
19
|
+
// to serialize the JSON value into the string env form.
|
|
20
|
+
const KEY_MAP = {
|
|
21
|
+
baseUrl: { env: "DEEPDIVE_BASE_URL", kind: "string" },
|
|
22
|
+
apiKey: { env: "DEEPDIVE_API_KEY", kind: "string" },
|
|
23
|
+
model: { env: "DEEPDIVE_MODEL", kind: "string" },
|
|
24
|
+
planModel: { env: "DEEPDIVE_PLAN_MODEL", kind: "string" },
|
|
25
|
+
synthModel: { env: "DEEPDIVE_SYNTH_MODEL", kind: "string" },
|
|
26
|
+
criticModel: { env: "DEEPDIVE_CRITIC_MODEL", kind: "string" },
|
|
27
|
+
maxTokens: { env: "DEEPDIVE_MAX_TOKENS", kind: "number" },
|
|
28
|
+
search: { env: "DEEPDIVE_SEARCH", kind: "string" },
|
|
29
|
+
resultsPerQuery: { env: "DEEPDIVE_RESULTS_PER_QUERY", kind: "number" },
|
|
30
|
+
maxSources: { env: "DEEPDIVE_MAX_SOURCES", kind: "number" },
|
|
31
|
+
maxWordsPerSource: { env: "DEEPDIVE_MAX_WORDS_PER_SOURCE", kind: "number" },
|
|
32
|
+
timeoutMs: { env: "DEEPDIVE_FETCH_TIMEOUT_MS", kind: "number" },
|
|
33
|
+
llmTimeoutMs: { env: "DEEPDIVE_LLM_TIMEOUT_MS", kind: "number" },
|
|
34
|
+
llmAttempts: { env: "DEEPDIVE_LLM_ATTEMPTS", kind: "number" },
|
|
35
|
+
deep: { env: "DEEPDIVE_DEEP_ROUNDS", kind: "number" },
|
|
36
|
+
concurrency: { env: "DEEPDIVE_CONCURRENCY", kind: "number" },
|
|
37
|
+
cacheTtlMs: { env: "DEEPDIVE_CACHE_TTL_MS", kind: "number" },
|
|
38
|
+
citeMinRecall: { env: "DEEPDIVE_CITE_MIN_RECALL", kind: "number" },
|
|
39
|
+
pdfMaxPages: { env: "DEEPDIVE_PDF_MAX_PAGES", kind: "number" },
|
|
40
|
+
maxCost: { env: "DEEPDIVE_MAX_COST", kind: "string" }, // string: "$0.50" allowed
|
|
41
|
+
apiFormat: { env: "DEEPDIVE_API_FORMAT", kind: "string" },
|
|
42
|
+
browserCdpEndpoint: { env: "DEEPDIVE_BROWSER_CDP_ENDPOINT", kind: "string" },
|
|
43
|
+
wikipediaLang: { env: "DEEPDIVE_WIKIPEDIA_LANG", kind: "string" },
|
|
44
|
+
githubToken: { env: "DEEPDIVE_GITHUB_TOKEN", kind: "string" },
|
|
45
|
+
braveKey: { env: "DEEPDIVE_BRAVE_KEY", kind: "string" },
|
|
46
|
+
tavilyKey: { env: "DEEPDIVE_TAVILY_KEY", kind: "string" },
|
|
47
|
+
exaKey: { env: "DEEPDIVE_EXA_KEY", kind: "string" },
|
|
48
|
+
searxngUrl: { env: "DEEPDIVE_SEARXNG_URL", kind: "string" },
|
|
49
|
+
cacheDir: { env: "DEEPDIVE_CACHE_DIR", kind: "string" },
|
|
50
|
+
sessionsDir: { env: "DEEPDIVE_SESSIONS_DIR", kind: "string" },
|
|
51
|
+
allowDomain: { env: "DEEPDIVE_ALLOW_DOMAIN", kind: "list" },
|
|
52
|
+
denyDomain: { env: "DEEPDIVE_DENY_DOMAIN", kind: "list" },
|
|
53
|
+
include: { env: "DEEPDIVE_INCLUDE", kind: "list" },
|
|
54
|
+
tldr: { env: "DEEPDIVE_TLDR", kind: "bool" },
|
|
55
|
+
strictCites: { env: "DEEPDIVE_STRICT_CITES", kind: "bool" },
|
|
56
|
+
verbose: { env: "DEEPDIVE_VERBOSE", kind: "bool" },
|
|
57
|
+
headed: { env: "DEEPDIVE_HEADED", kind: "bool" },
|
|
58
|
+
// Inverted toggles: the friendly key is the positive feature, set false to
|
|
59
|
+
// disable. e.g. {"cache": false} → DEEPDIVE_NO_CACHE=1.
|
|
60
|
+
cache: { env: "DEEPDIVE_NO_CACHE", kind: "boolInverted" },
|
|
61
|
+
verifyCites: { env: "DEEPDIVE_NO_VERIFY_CITES", kind: "boolInverted" },
|
|
62
|
+
cost: { env: "DEEPDIVE_NO_COST", kind: "boolInverted" },
|
|
63
|
+
sessions: { env: "DEEPDIVE_NO_SESSIONS", kind: "boolInverted" },
|
|
64
|
+
stream: { env: "DEEPDIVE_NO_STREAM", kind: "boolInverted" },
|
|
65
|
+
robots: { env: "DEEPDIVE_IGNORE_ROBOTS", kind: "boolInverted" },
|
|
66
|
+
};
|
|
67
|
+
// Exported for unit tests. Translate a FileConfig's friendly keys to the
|
|
68
|
+
// DEEPDIVE_* env-var string form. Unknown keys are skipped. Boolean toggles
|
|
69
|
+
// only emit an entry when they actually change behavior.
|
|
70
|
+
export function fileConfigToEnv(fc) {
|
|
71
|
+
const out = {};
|
|
72
|
+
for (const [key, value] of Object.entries(fc)) {
|
|
73
|
+
const spec = KEY_MAP[key];
|
|
74
|
+
if (!spec || value === undefined || value === null)
|
|
75
|
+
continue;
|
|
76
|
+
switch (spec.kind) {
|
|
77
|
+
case "string":
|
|
78
|
+
case "number":
|
|
79
|
+
out[spec.env] = String(value);
|
|
80
|
+
break;
|
|
81
|
+
case "list": {
|
|
82
|
+
const joined = Array.isArray(value)
|
|
83
|
+
? value.map((v) => String(v).trim()).filter(Boolean).join(",")
|
|
84
|
+
: String(value).trim();
|
|
85
|
+
if (joined)
|
|
86
|
+
out[spec.env] = joined;
|
|
87
|
+
break;
|
|
88
|
+
}
|
|
89
|
+
case "bool":
|
|
90
|
+
if (value === true)
|
|
91
|
+
out[spec.env] = "1";
|
|
92
|
+
break;
|
|
93
|
+
case "boolInverted":
|
|
94
|
+
if (value === false)
|
|
95
|
+
out[spec.env] = "1";
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return out;
|
|
100
|
+
}
|
|
101
|
+
// Exported for unit tests. The friendly keys a config file / profile accepts.
|
|
102
|
+
export function knownConfigKeys() {
|
|
103
|
+
return Object.keys(KEY_MAP);
|
|
104
|
+
}
|
|
105
|
+
// Default config path, override with DEEPDIVE_CONFIG.
|
|
106
|
+
export function defaultConfigPath(env) {
|
|
107
|
+
return env.DEEPDIVE_CONFIG ?? join(homedir(), ".deepdive", "config.json");
|
|
108
|
+
}
|
|
109
|
+
// Reads + parses the config file. A missing file is not an error (returns
|
|
110
|
+
// empty). A present-but-broken file returns `error` set so the caller can warn
|
|
111
|
+
// and proceed with no file config. Separates `profiles` and `defaultProfile`
|
|
112
|
+
// from the base settings.
|
|
113
|
+
export function loadConfigFile(env) {
|
|
114
|
+
const path = defaultConfigPath(env);
|
|
115
|
+
let raw;
|
|
116
|
+
try {
|
|
117
|
+
raw = readFileSync(path, "utf-8");
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
return { base: {}, profiles: {} }; // no file → no config, not an error
|
|
121
|
+
}
|
|
122
|
+
let json;
|
|
123
|
+
try {
|
|
124
|
+
json = JSON.parse(raw);
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
return { base: {}, profiles: {}, path, error: `invalid JSON in ${path}` };
|
|
128
|
+
}
|
|
129
|
+
if (typeof json !== "object" || json === null || Array.isArray(json)) {
|
|
130
|
+
return { base: {}, profiles: {}, path, error: `config at ${path} must be a JSON object` };
|
|
131
|
+
}
|
|
132
|
+
const obj = json;
|
|
133
|
+
const { profiles: rawProfiles, defaultProfile, ...base } = obj;
|
|
134
|
+
const profiles = {};
|
|
135
|
+
if (rawProfiles && typeof rawProfiles === "object" && !Array.isArray(rawProfiles)) {
|
|
136
|
+
for (const [name, cfg] of Object.entries(rawProfiles)) {
|
|
137
|
+
if (cfg && typeof cfg === "object" && !Array.isArray(cfg)) {
|
|
138
|
+
profiles[name] = cfg;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
return {
|
|
143
|
+
base,
|
|
144
|
+
profiles,
|
|
145
|
+
defaultProfile: typeof defaultProfile === "string" ? defaultProfile : undefined,
|
|
146
|
+
path,
|
|
147
|
+
};
|
|
148
|
+
}
|
|
149
|
+
//# sourceMappingURL=config-file.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config-file.js","sourceRoot":"","sources":["../src/config-file.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,2EAA2E;AAC3E,+EAA+E;AAC/E,6BAA6B;AAC7B,EAAE;AACF,6EAA6E;AAC7E,4EAA4E;AAC5E,6EAA6E;AAC7E,wDAAwD;AACxD,EAAE;AACF,kFAAkF;AAClF,EAAE;AACF,mEAAmE;AACnE,mEAAmE;AAEnE,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAiBjC,6EAA6E;AAC7E,wDAAwD;AACxD,MAAM,OAAO,GAAgD;IAC3D,OAAO,EAAE,EAAE,GAAG,EAAE,mBAAmB,EAAE,IAAI,EAAE,QAAQ,EAAE;IACrD,MAAM,EAAE,EAAE,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE;IACnD,KAAK,EAAE,EAAE,GAAG,EAAE,gBAAgB,EAAE,IAAI,EAAE,QAAQ,EAAE;IAChD,SAAS,EAAE,EAAE,GAAG,EAAE,qBAAqB,EAAE,IAAI,EAAE,QAAQ,EAAE;IACzD,UAAU,EAAE,EAAE,GAAG,EAAE,sBAAsB,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC3D,WAAW,EAAE,EAAE,GAAG,EAAE,uBAAuB,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC7D,SAAS,EAAE,EAAE,GAAG,EAAE,qBAAqB,EAAE,IAAI,EAAE,QAAQ,EAAE;IACzD,MAAM,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,QAAQ,EAAE;IAClD,eAAe,EAAE,EAAE,GAAG,EAAE,4BAA4B,EAAE,IAAI,EAAE,QAAQ,EAAE;IACtE,UAAU,EAAE,EAAE,GAAG,EAAE,sBAAsB,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC3D,iBAAiB,EAAE,EAAE,GAAG,EAAE,+BAA+B,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC3E,SAAS,EAAE,EAAE,GAAG,EAAE,2BAA2B,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC/D,YAAY,EAAE,EAAE,GAAG,EAAE,yBAAyB,EAAE,IAAI,EAAE,QAAQ,EAAE;IAChE,WAAW,EAAE,EAAE,GAAG,EAAE,uBAAuB,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC7D,IAAI,EAAE,EAAE,GAAG,EAAE,sBAAsB,EAAE,IAAI,EAAE,QAAQ,EAAE;IACrD,WAAW,EAAE,EAAE,GAAG,EAAE,sBAAsB,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC5D,UAAU,EAAE,EAAE,GAAG,EAAE,uBAAuB,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC5D,aAAa,EAAE,EAAE,GAAG,EAAE,0BAA0B,EAAE,IAAI,EAAE,QAAQ,EAAE;IAClE,WAAW,EAAE,EAAE,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC9D,OAAO,EAAE,EAAE,GAAG,EAAE,mBAAmB,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,0BAA0B;IACjF,SAAS,EAAE,EAAE,GAAG,EAAE,qBAAqB,EAAE,IAAI,EAAE,QAAQ,EAAE;IACzD,kBAAkB,EAAE,EAAE,GAAG,EAAE,+BAA+B,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC5E,aAAa,EAAE,EAAE,GAAG,EAAE,yBAAyB,EAAE,IAAI,EAAE,QAAQ,EAAE;IACjE,WAAW,EAAE,EAAE,GAAG,EAAE,uBAAuB,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC7D,QAAQ,EAAE,EAAE,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE,QAAQ,EAAE;IACvD,SAAS,EAAE,EAAE,GAAG,EAAE,qBAAqB,EAAE,IAAI,EAAE,QAAQ,EAAE;IACzD,MAAM,EAAE,EAAE,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,QAAQ,EAAE;IACnD,UAAU,EAAE,EAAE,GAAG,EAAE,sBAAsB,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC3D,QAAQ,EAAE,EAAE,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE,QAAQ,EAAE;IACvD,WAAW,EAAE,EAAE,GAAG,EAAE,uBAAuB,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC7D,WAAW,EAAE,EAAE,GAAG,EAAE,uBAAuB,EAAE,IAAI,EAAE,MAAM,EAAE;IAC3D,UAAU,EAAE,EAAE,GAAG,EAAE,sBAAsB,EAAE,IAAI,EAAE,MAAM,EAAE;IACzD,OAAO,EAAE,EAAE,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE;IAClD,IAAI,EAAE,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,MAAM,EAAE;IAC5C,WAAW,EAAE,EAAE,GAAG,EAAE,uBAAuB,EAAE,IAAI,EAAE,MAAM,EAAE;IAC3D,OAAO,EAAE,EAAE,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,EAAE;IAClD,MAAM,EAAE,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,MAAM,EAAE;IAChD,2EAA2E;IAC3E,wDAAwD;IACxD,KAAK,EAAE,EAAE,GAAG,EAAE,mBAAmB,EAAE,IAAI,EAAE,cAAc,EAAE;IACzD,WAAW,EAAE,EAAE,GAAG,EAAE,0BAA0B,EAAE,IAAI,EAAE,cAAc,EAAE;IACtE,IAAI,EAAE,EAAE,GAAG,EAAE,kBAAkB,EAAE,IAAI,EAAE,cAAc,EAAE;IACvD,QAAQ,EAAE,EAAE,GAAG,EAAE,sBAAsB,EAAE,IAAI,EAAE,cAAc,EAAE;IAC/D,MAAM,EAAE,EAAE,GAAG,EAAE,oBAAoB,EAAE,IAAI,EAAE,cAAc,EAAE;IAC3D,MAAM,EAAE,EAAE,GAAG,EAAE,wBAAwB,EAAE,IAAI,EAAE,cAAc,EAAE;CAChE,CAAC;AAEF,yEAAyE;AACzE,4EAA4E;AAC5E,yDAAyD;AACzD,MAAM,UAAU,eAAe,CAAC,EAAc;IAC5C,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;QAC1B,IAAI,CAAC,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,IAAI;YAAE,SAAS;QAC7D,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,QAAQ,CAAC;YACd,KAAK,QAAQ;gBACX,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAC9B,MAAM;YACR,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;oBACjC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;oBAC9D,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;gBACzB,IAAI,MAAM;oBAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;gBACnC,MAAM;YACR,CAAC;YACD,KAAK,MAAM;gBACT,IAAI,KAAK,KAAK,IAAI;oBAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;gBACxC,MAAM;YACR,KAAK,cAAc;gBACjB,IAAI,KAAK,KAAK,KAAK;oBAAE,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC;gBACzC,MAAM;QACV,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,eAAe;IAC7B,OAAO,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AAC9B,CAAC;AAED,sDAAsD;AACtD,MAAM,UAAU,iBAAiB,CAAC,GAAuC;IACvE,OAAO,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC;AAC5E,CAAC;AAED,0EAA0E;AAC1E,+EAA+E;AAC/E,6EAA6E;AAC7E,0BAA0B;AAC1B,MAAM,UAAU,cAAc,CAAC,GAAuC;IACpE,MAAM,IAAI,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC,CAAC,oCAAoC;IACzE,CAAC;IACD,IAAI,IAAa,CAAC;IAClB,IAAI,CAAC;QACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACzB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,mBAAmB,IAAI,EAAE,EAAE,CAAC;IAC5E,CAAC;IACD,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACrE,OAAO,EAAE,IAAI,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,aAAa,IAAI,wBAAwB,EAAE,CAAC;IAC5F,CAAC;IACD,MAAM,GAAG,GAAG,IAA+B,CAAC;IAC5C,MAAM,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE,GAAG,IAAI,EAAE,GAAG,GAAG,CAAC;IAC/D,MAAM,QAAQ,GAA+B,EAAE,CAAC;IAChD,IAAI,WAAW,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC;QAClF,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,WAAsC,CAAC,EAAE,CAAC;YACjF,IAAI,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1D,QAAQ,CAAC,IAAI,CAAC,GAAG,GAAiB,CAAC;YACrC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO;QACL,IAAI;QACJ,QAAQ;QACR,cAAc,EAAE,OAAO,cAAc,KAAK,QAAQ,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS;QAC/E,IAAI;KACL,CAAC;AACJ,CAAC"}
|
package/dist/config.d.ts
CHANGED
|
@@ -37,6 +37,7 @@ export interface RuntimeConfig {
|
|
|
37
37
|
streamEnabled: boolean;
|
|
38
38
|
verbose: boolean;
|
|
39
39
|
maxCostUsd?: number;
|
|
40
|
+
tldr: boolean;
|
|
40
41
|
}
|
|
41
42
|
export interface CLIFlags {
|
|
42
43
|
baseUrl?: string;
|
|
@@ -71,8 +72,15 @@ export interface CLIFlags {
|
|
|
71
72
|
json?: boolean;
|
|
72
73
|
noStream?: boolean;
|
|
73
74
|
verbose?: boolean;
|
|
75
|
+
tldr?: boolean;
|
|
74
76
|
maxCostUsd?: number;
|
|
75
77
|
browserCdpEndpoint?: string;
|
|
78
|
+
profile?: string;
|
|
79
|
+
format?: string;
|
|
80
|
+
narrate?: boolean;
|
|
81
|
+
dryRun?: boolean;
|
|
82
|
+
olderThan?: string;
|
|
83
|
+
keep?: number;
|
|
76
84
|
}
|
|
77
85
|
export declare function resolveConfig(flags: CLIFlags, env: Record<string, string | undefined>): RuntimeConfig;
|
|
78
86
|
export declare function parsePositiveInt(s: string | undefined): number | undefined;
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAmB,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAmB,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAIlE,MAAM,WAAW,aAAa;IAC5B,GAAG,EAAE,SAAS,CAAC;IAKf,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,OAAO,EAAE,cAAc,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,aAAa,EAAE,OAAO,CAAC;IACvB,eAAe,EAAE,OAAO,CAAC;IACzB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,YAAY,EAAE,YAAY,CAAC;IAC3B,QAAQ,EAAE;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAE,CAAC;IAC5C,UAAU,EAAE,OAAO,CAAC;IACpB,aAAa,EAAE,OAAO,CAAC;IACvB,OAAO,EAAE,OAAO,CAAC;IAEjB,UAAU,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config.js
CHANGED
|
@@ -108,6 +108,7 @@ export function resolveConfig(flags, env) {
|
|
|
108
108
|
// CLI can further require stdout.isTTY before enabling.
|
|
109
109
|
const streamEnabled = !streamOptOut && !jsonOutput;
|
|
110
110
|
const verbose = flags.verbose ?? env.DEEPDIVE_VERBOSE === "1";
|
|
111
|
+
const tldr = flags.tldr ?? env.DEEPDIVE_TLDR === "1";
|
|
111
112
|
// v0.11.0 — budget cap. Flag takes a pre-parsed number from cli.ts
|
|
112
113
|
// (which uses parseMaxCost on the raw string). Env var is parsed here.
|
|
113
114
|
const maxCostUsd = flags.maxCostUsd ?? parseMaxCost(env.DEEPDIVE_MAX_COST);
|
|
@@ -152,6 +153,7 @@ export function resolveConfig(flags, env) {
|
|
|
152
153
|
streamEnabled,
|
|
153
154
|
verbose,
|
|
154
155
|
maxCostUsd,
|
|
156
|
+
tldr,
|
|
155
157
|
};
|
|
156
158
|
}
|
|
157
159
|
// Exported for unit tests.
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,gEAAgE;AAChE,4EAA4E;AAE5E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAGjC,OAAO,EAAE,eAAe,EAAqB,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,eAAe,EAAkB,MAAM,iBAAiB,CAAC;AAClE,OAAO,EAAE,kBAAkB,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/dates.d.ts
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export declare function extractPublishedDate(html: string, now?: number): number | undefined;
|
|
2
|
+
export declare function metaTags(html: string): Map<string, string>;
|
|
3
|
+
export declare function jsonLdDates(html: string): {
|
|
4
|
+
published?: string;
|
|
5
|
+
modified?: string;
|
|
6
|
+
};
|
|
7
|
+
export declare function toEpoch(s: string, now?: number): number | undefined;
|
|
8
|
+
//# sourceMappingURL=dates.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dates.d.ts","sourceRoot":"","sources":["../src/dates.ts"],"names":[],"mappings":"AAaA,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,MAAmB,GACvB,MAAM,GAAG,SAAS,CAoCpB;AA4BD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAe1D;AASD,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,SAAS,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,CAsCnF;AA0CD,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,GAAG,GAAE,MAAmB,GAAG,MAAM,GAAG,SAAS,CAW/E"}
|