@askalf/deepdive 0.5.0 → 0.7.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 +46 -1
- package/dist/agent.d.ts +22 -1
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +99 -12
- package/dist/agent.js.map +1 -1
- package/dist/browser.d.ts +4 -0
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +54 -0
- package/dist/browser.js.map +1 -1
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +49 -1
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +6 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +12 -0
- package/dist/config.js.map +1 -1
- package/dist/doctor.d.ts.map +1 -1
- package/dist/doctor.js +41 -1
- package/dist/doctor.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/local.d.ts +16 -0
- package/dist/local.d.ts.map +1 -0
- package/dist/local.js +160 -0
- package/dist/local.js.map +1 -0
- package/dist/pdf.d.ts +28 -0
- package/dist/pdf.d.ts.map +1 -0
- package/dist/pdf.js +195 -0
- package/dist/pdf.js.map +1 -0
- package/dist/plan.d.ts +4 -3
- package/dist/plan.d.ts.map +1 -1
- package/dist/plan.js +8 -4
- package/dist/plan.js.map +1 -1
- package/dist/pricing.d.ts +29 -0
- package/dist/pricing.d.ts.map +1 -0
- package/dist/pricing.js +138 -0
- package/dist/pricing.js.map +1 -0
- package/dist/synthesize.d.ts +2 -1
- package/dist/synthesize.d.ts.map +1 -1
- package/dist/synthesize.js +9 -5
- package/dist/synthesize.js.map +1 -1
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -132,6 +132,48 @@ What this is not: a semantic judge. Lexical recall flags hallucinated names, num
|
|
|
132
132
|
|
|
133
133
|
---
|
|
134
134
|
|
|
135
|
+
## PDFs and local files
|
|
136
|
+
|
|
137
|
+
Two long-standing gaps closed in v0.7: real research questions hit PDFs constantly (academic papers, RFCs, standards docs), and the most useful sources are often already on your laptop (project notes, internal docs, exported chats). deepdive now reads both.
|
|
138
|
+
|
|
139
|
+
**PDFs** are detected by URL extension or `Content-Type` and routed through a separate extractor instead of the headless browser's DOM (Chromium's PDF viewer doesn't expose useful text). Page cap defaults to 50 (`--pdf-max-pages=<n>`); large papers are truncated rather than blowing the synth context.
|
|
140
|
+
|
|
141
|
+
PDF extraction uses [`pdfjs-dist`](https://github.com/mozilla/pdfjs-dist) — Mozilla's reference PDF.js library. To preserve deepdive's "one runtime dependency" guarantee on default installs, `pdfjs-dist` is **not** a runtime dep. The extractor is dynamically imported the first time a PDF is seen; if the library isn't installed, the source is skipped with a clear `pdf-no-extractor` event. Enable with one command:
|
|
142
|
+
|
|
143
|
+
```bash
|
|
144
|
+
npm install -g pdfjs-dist
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
`deepdive doctor` reports the install state under the `pdf` category.
|
|
148
|
+
|
|
149
|
+
**Local files** are ingested via `--include=<path>[,<path>]`. Each path may be a file or a directory (one level deep, supported extensions only). Files become pre-fetched sources at the head of the kept-sources list — they get the lowest `[N]` citation IDs, so they're most prominent to the synthesizer. Supported types: `.pdf` (needs `pdfjs-dist`), `.md`, `.txt`, `.html`.
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
# Mix your project notes with web research:
|
|
153
|
+
deepdive "what's our policy on retroactive billing?" \
|
|
154
|
+
--include=~/notes/billing,./CONTRIBUTING.md \
|
|
155
|
+
--search=brave --deep
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
This is the kind of thing hosted research tools cannot do — your notes don't leave your machine, and the resulting answer cites them as `file:///abs/path` URLs the user can click open.
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Cost telemetry
|
|
163
|
+
|
|
164
|
+
Every run prints a one-line summary on stderr at the end:
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
cost · ~$0.0085 · 412 in / 234 out · 4 LLM calls · claude-sonnet-4-6
|
|
168
|
+
(≈ at API list price; $0 on Claude Max via dario)
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
Token counts come straight from the Anthropic API responses. The dollar amount is computed against a small built-in price table covering the headline Claude models — see `src/pricing.ts` for current values; verify against [docs.anthropic.com/en/docs/about-claude/pricing](https://docs.anthropic.com/en/docs/about-claude/pricing) before relying on it for billing decisions. Unknown models render as `$?`; tokens are always shown.
|
|
172
|
+
|
|
173
|
+
The "$0 on Claude Max via dario" hint only appears when `--base-url` matches dario's default port (`http://localhost:3456`) — pointing at a different endpoint suppresses it automatically. Self-hosted or unfamiliar models can plug in their own pricing via `DEEPDIVE_PRICE_INPUT_PER_MTOK` and `DEEPDIVE_PRICE_OUTPUT_PER_MTOK` (per million tokens). Suppress the line entirely with `--no-cost` or `DEEPDIVE_NO_COST=1`. The same numbers also appear in `--json` output as `cost` and `usage.{llm,estimatedCostUsd}` for piping into your own dashboards.
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
135
177
|
## Common flags
|
|
136
178
|
|
|
137
179
|
Run `deepdive --help` for the full list. The ones you'll reach for:
|
|
@@ -146,7 +188,10 @@ Run `deepdive --help` for the full list. The ones you'll reach for:
|
|
|
146
188
|
| `--strict-cites` | off | Exit non-zero if any citation in the answer fails lexical verification. |
|
|
147
189
|
| `--cite-min-recall=<0..1>` | `0.4` | Citation-support threshold. Lower = more permissive. |
|
|
148
190
|
| `--no-verify-cites` | off | Skip the citation-verification pass entirely. |
|
|
149
|
-
| `--
|
|
191
|
+
| `--no-cost` | off | Suppress the end-of-run cost summary on stderr. |
|
|
192
|
+
| `--include=<paths>` | — | Comma-separated local files / dirs to ingest as sources (`.pdf`, `.md`, `.txt`, `.html`). |
|
|
193
|
+
| `--pdf-max-pages=<n>` | `50` | Per-PDF page cap. Larger PDFs are truncated. |
|
|
194
|
+
| `--json` | markdown | Emit `{question, plan, rounds, sources, answer, verification, cost, usage}` for piping. |
|
|
150
195
|
| `--out=<path>` | — | Save to file. |
|
|
151
196
|
| `--verbose`, `-v` | — | Stream plan / search / fetch / critique / verify events to stderr. |
|
|
152
197
|
|
package/dist/agent.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import { type Plan, type Critique } from "./plan.js";
|
|
|
4
4
|
import { type BrowserOptions, type FetchedPage } from "./browser.js";
|
|
5
5
|
import { type Source } from "./citations.js";
|
|
6
6
|
import { type VerificationReport } from "./verify.js";
|
|
7
|
+
import { type CostEstimate } from "./pricing.js";
|
|
7
8
|
import type { PageCache } from "./cache.js";
|
|
8
9
|
import { type RobotsCache } from "./robots.js";
|
|
9
10
|
export interface BrowserLike {
|
|
@@ -27,6 +28,9 @@ export interface AgentConfig {
|
|
|
27
28
|
robotsCache?: RobotsCache;
|
|
28
29
|
verifyCitations?: boolean;
|
|
29
30
|
citeMinRecall?: number;
|
|
31
|
+
pdfMaxPages?: number;
|
|
32
|
+
include?: string[];
|
|
33
|
+
env?: Record<string, string | undefined>;
|
|
30
34
|
onEvent?: (event: AgentEvent) => void;
|
|
31
35
|
onSynthesizeToken?: (chunk: string, round: number) => void;
|
|
32
36
|
}
|
|
@@ -61,7 +65,11 @@ export type AgentEvent = {
|
|
|
61
65
|
} | {
|
|
62
66
|
type: "fetch.skipped";
|
|
63
67
|
url: string;
|
|
64
|
-
reason: "robots";
|
|
68
|
+
reason: "robots" | "pdf-no-extractor";
|
|
69
|
+
} | {
|
|
70
|
+
type: "include.done";
|
|
71
|
+
ingested: number;
|
|
72
|
+
skipped: number;
|
|
65
73
|
} | {
|
|
66
74
|
type: "synthesize.start";
|
|
67
75
|
sourceCount: number;
|
|
@@ -79,6 +87,12 @@ export type AgentEvent = {
|
|
|
79
87
|
} | {
|
|
80
88
|
type: "verify.done";
|
|
81
89
|
report: VerificationReport;
|
|
90
|
+
} | {
|
|
91
|
+
type: "llm.call";
|
|
92
|
+
phase: "plan" | "synth" | "critique";
|
|
93
|
+
round: number;
|
|
94
|
+
inputTokens: number;
|
|
95
|
+
outputTokens: number;
|
|
82
96
|
};
|
|
83
97
|
export interface RoundTrace {
|
|
84
98
|
round: number;
|
|
@@ -96,6 +110,7 @@ export interface AgentResult {
|
|
|
96
110
|
markdown: string;
|
|
97
111
|
rounds: RoundTrace[];
|
|
98
112
|
verification?: VerificationReport;
|
|
113
|
+
cost: CostEstimate;
|
|
99
114
|
usage: {
|
|
100
115
|
queries: number;
|
|
101
116
|
fetched: number;
|
|
@@ -104,6 +119,12 @@ export interface AgentResult {
|
|
|
104
119
|
cacheHits: number;
|
|
105
120
|
citationsTotal: number;
|
|
106
121
|
citationsSupported: number;
|
|
122
|
+
llm: {
|
|
123
|
+
inputTokens: number;
|
|
124
|
+
outputTokens: number;
|
|
125
|
+
calls: number;
|
|
126
|
+
};
|
|
127
|
+
estimatedCostUsd: number;
|
|
107
128
|
};
|
|
108
129
|
}
|
|
109
130
|
export declare function runAgent(question: string, config: AgentConfig, signal?: AbortSignal): Promise<AgentResult>;
|
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,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEjD,OAAO,EAAyB,KAAK,IAAI,EAAE,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC5E,OAAO,EAAkB,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AAErF,OAAO,EAA0C,KAAK,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAErF,OAAO,EAGL,KAAK,kBAAkB,EACxB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAE5C,OAAO,EAGL,KAAK,WAAW,EACjB,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,WAAW;IAC1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACvB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IACzC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,SAAS,CAAC;IACf,MAAM,EAAE,aAAa,CAAC;IACtB,OAAO,EAAE,cAAc,CAAC;IACxB,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,CAAC,EAAE,SAAS,CAAC;IAClB,cAAc,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,WAAW,CAAC;IAIvD,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,WAAW,CAAC,EAAE,WAAW,CAAC;IAG1B,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|
package/dist/agent.js
CHANGED
|
@@ -14,17 +14,53 @@ import { extractContent } from "./extract.js";
|
|
|
14
14
|
import { buildSourceTable, renderAnswerMarkdown } from "./citations.js";
|
|
15
15
|
import { synthesize } from "./synthesize.js";
|
|
16
16
|
import { verifyCitations as runVerify, DEFAULT_CITE_MIN_RECALL, } from "./verify.js";
|
|
17
|
+
import { estimateCost } from "./pricing.js";
|
|
18
|
+
import { extractPdfText, PdfExtractorMissingError, looksLikePdf, } from "./pdf.js";
|
|
19
|
+
import { ingestLocalPaths } from "./local.js";
|
|
17
20
|
import { runConcurrent } from "./concurrency.js";
|
|
18
21
|
import { canFetch, DEFAULT_USER_AGENT, } from "./robots.js";
|
|
19
22
|
export async function runAgent(question, config, signal) {
|
|
23
|
+
const llmTotals = { inputTokens: 0, outputTokens: 0, calls: 0 };
|
|
24
|
+
const usageSinkFor = (phase, round) => (u) => {
|
|
25
|
+
llmTotals.inputTokens += u.input_tokens ?? 0;
|
|
26
|
+
llmTotals.outputTokens += u.output_tokens ?? 0;
|
|
27
|
+
llmTotals.calls += 1;
|
|
28
|
+
emit(config, {
|
|
29
|
+
type: "llm.call",
|
|
30
|
+
phase,
|
|
31
|
+
round,
|
|
32
|
+
inputTokens: u.input_tokens ?? 0,
|
|
33
|
+
outputTokens: u.output_tokens ?? 0,
|
|
34
|
+
});
|
|
35
|
+
};
|
|
20
36
|
emit(config, { type: "plan.start", question });
|
|
21
|
-
const plan = await planQueries(question, config.llm, signal);
|
|
37
|
+
const plan = await planQueries(question, config.llm, signal, usageSinkFor("plan", 0));
|
|
22
38
|
emit(config, { type: "plan.done", plan });
|
|
23
39
|
const seenUrls = new Set();
|
|
24
40
|
const allCandidates = [];
|
|
25
41
|
const allQueries = [];
|
|
26
42
|
const keptSources = [];
|
|
27
43
|
const rounds = [];
|
|
44
|
+
// Local file ingestion: pre-fetched sources are placed at the head of
|
|
45
|
+
// the kept-sources list so they get the lowest [N] citation ids and
|
|
46
|
+
// are most prominent to the synthesizer.
|
|
47
|
+
if (config.include && config.include.length > 0) {
|
|
48
|
+
const local = await ingestLocalPaths(config.include, {
|
|
49
|
+
pdfMaxPages: config.pdfMaxPages,
|
|
50
|
+
maxWordsPerSource: config.maxWordsPerSource,
|
|
51
|
+
});
|
|
52
|
+
for (const s of local.sources) {
|
|
53
|
+
if (keptSources.length >= config.maxSources)
|
|
54
|
+
break;
|
|
55
|
+
keptSources.push({ id: keptSources.length + 1, ...s });
|
|
56
|
+
seenUrls.add(s.url);
|
|
57
|
+
}
|
|
58
|
+
emit(config, {
|
|
59
|
+
type: "include.done",
|
|
60
|
+
ingested: local.sources.length,
|
|
61
|
+
skipped: local.skipped.length,
|
|
62
|
+
});
|
|
63
|
+
}
|
|
28
64
|
let browser = null;
|
|
29
65
|
let answer = "";
|
|
30
66
|
const makeBrowser = config.browserFactory ?? ((opts) => new BrowserSession(opts));
|
|
@@ -72,19 +108,56 @@ export async function runAgent(question, config, signal) {
|
|
|
72
108
|
for (const f of fetched) {
|
|
73
109
|
if (keptSources.length >= config.maxSources)
|
|
74
110
|
break;
|
|
75
|
-
if (f.page.status >= 200 && f.page.status < 400
|
|
76
|
-
|
|
111
|
+
if (!(f.page.status >= 200 && f.page.status < 400))
|
|
112
|
+
continue;
|
|
113
|
+
const isPdf = f.page.bytes !== undefined &&
|
|
114
|
+
looksLikePdf({
|
|
115
|
+
url: f.page.url,
|
|
116
|
+
finalUrl: f.page.finalUrl,
|
|
117
|
+
contentType: f.page.mimeType,
|
|
118
|
+
});
|
|
119
|
+
let content;
|
|
120
|
+
let title;
|
|
121
|
+
if (isPdf) {
|
|
122
|
+
try {
|
|
123
|
+
const result = await extractPdfText(f.page.bytes, {
|
|
124
|
+
maxPages: config.pdfMaxPages,
|
|
125
|
+
});
|
|
126
|
+
content = result.text;
|
|
127
|
+
title = f.candidate.title || basenameFromUrl(f.page.finalUrl || f.page.url);
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
if (err instanceof PdfExtractorMissingError) {
|
|
131
|
+
emit(config, {
|
|
132
|
+
type: "fetch.skipped",
|
|
133
|
+
url: f.page.url,
|
|
134
|
+
reason: "pdf-no-extractor",
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
continue;
|
|
138
|
+
}
|
|
139
|
+
// Apply the same word cap as web sources.
|
|
140
|
+
const words = content.split(/\s+/).filter(Boolean);
|
|
141
|
+
if (words.length > config.maxWordsPerSource) {
|
|
142
|
+
content = words.slice(0, config.maxWordsPerSource).join(" ") + " …";
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
if (f.words <= 50)
|
|
147
|
+
continue;
|
|
77
148
|
const extracted = extractContent(f.page.text, f.page.title || f.candidate.title, config.maxWordsPerSource);
|
|
78
149
|
if (extracted.text.length === 0)
|
|
79
150
|
continue;
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
url: f.page.finalUrl || f.page.url,
|
|
83
|
-
title: f.page.title || f.candidate.title,
|
|
84
|
-
fetchedAt: f.page.fetchedAt,
|
|
85
|
-
content: extracted.text,
|
|
86
|
-
});
|
|
151
|
+
content = extracted.text;
|
|
152
|
+
title = f.page.title || f.candidate.title;
|
|
87
153
|
}
|
|
154
|
+
keptSources.push({
|
|
155
|
+
id: keptSources.length + 1,
|
|
156
|
+
url: f.page.finalUrl || f.page.url,
|
|
157
|
+
title,
|
|
158
|
+
fetchedAt: f.page.fetchedAt,
|
|
159
|
+
content,
|
|
160
|
+
});
|
|
88
161
|
}
|
|
89
162
|
emit(config, {
|
|
90
163
|
type: "synthesize.start",
|
|
@@ -94,7 +167,7 @@ export async function runAgent(question, config, signal) {
|
|
|
94
167
|
const tokenSink = config.onSynthesizeToken
|
|
95
168
|
? (chunk) => config.onSynthesizeToken(chunk, round)
|
|
96
169
|
: undefined;
|
|
97
|
-
answer = await synthesize(question, keptSources, config.llm, signal, tokenSink);
|
|
170
|
+
answer = await synthesize(question, keptSources, config.llm, signal, tokenSink, usageSinkFor("synth", round));
|
|
98
171
|
emit(config, { type: "synthesize.done", round });
|
|
99
172
|
const roundTrace = {
|
|
100
173
|
round,
|
|
@@ -106,7 +179,7 @@ export async function runAgent(question, config, signal) {
|
|
|
106
179
|
const isLastPossibleRound = round === maxRoundsTotal - 1;
|
|
107
180
|
if (!isLastPossibleRound && keptSources.length < config.maxSources) {
|
|
108
181
|
emit(config, { type: "critique.start", round });
|
|
109
|
-
const crit = await critique(question, answer, allQueries, config.llm, signal);
|
|
182
|
+
const crit = await critique(question, answer, allQueries, config.llm, signal, usageSinkFor("critique", round));
|
|
110
183
|
emit(config, { type: "critique.done", round, critique: crit });
|
|
111
184
|
roundTrace.critique = crit;
|
|
112
185
|
rounds.push(roundTrace);
|
|
@@ -137,6 +210,7 @@ export async function runAgent(question, config, signal) {
|
|
|
137
210
|
});
|
|
138
211
|
emit(config, { type: "verify.done", report: verification });
|
|
139
212
|
}
|
|
213
|
+
const cost = estimateCost(llmTotals, config.llm.model, config.env);
|
|
140
214
|
return {
|
|
141
215
|
question,
|
|
142
216
|
plan,
|
|
@@ -145,6 +219,7 @@ export async function runAgent(question, config, signal) {
|
|
|
145
219
|
markdown,
|
|
146
220
|
rounds,
|
|
147
221
|
verification,
|
|
222
|
+
cost,
|
|
148
223
|
usage: {
|
|
149
224
|
queries: allQueries.length,
|
|
150
225
|
fetched: rounds.reduce((sum, r) => sum + r.fetched, 0),
|
|
@@ -153,6 +228,8 @@ export async function runAgent(question, config, signal) {
|
|
|
153
228
|
cacheHits: config.cache?.hits ?? 0,
|
|
154
229
|
citationsTotal: verification?.totalCitations ?? 0,
|
|
155
230
|
citationsSupported: verification?.supportedCitations ?? 0,
|
|
231
|
+
llm: { ...llmTotals },
|
|
232
|
+
estimatedCostUsd: cost.amountUsd,
|
|
156
233
|
},
|
|
157
234
|
};
|
|
158
235
|
}
|
|
@@ -221,4 +298,14 @@ async function fetchOne(c, config, ensureBrowser) {
|
|
|
221
298
|
function emit(config, event) {
|
|
222
299
|
config.onEvent?.(event);
|
|
223
300
|
}
|
|
301
|
+
function basenameFromUrl(url) {
|
|
302
|
+
try {
|
|
303
|
+
const u = new URL(url);
|
|
304
|
+
const last = u.pathname.split("/").filter(Boolean).pop();
|
|
305
|
+
return last ? decodeURIComponent(last) : u.host;
|
|
306
|
+
}
|
|
307
|
+
catch {
|
|
308
|
+
return url;
|
|
309
|
+
}
|
|
310
|
+
}
|
|
224
311
|
//# sourceMappingURL=agent.js.map
|
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/browser.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ export interface FetchedPage {
|
|
|
6
6
|
text: string;
|
|
7
7
|
html: string;
|
|
8
8
|
fetchedAt: number;
|
|
9
|
+
mimeType?: string;
|
|
10
|
+
bytes?: Uint8Array;
|
|
9
11
|
}
|
|
10
12
|
export interface BrowserOptions {
|
|
11
13
|
headless: boolean;
|
|
@@ -21,6 +23,8 @@ export declare class BrowserSession {
|
|
|
21
23
|
constructor(opts: BrowserOptions);
|
|
22
24
|
start(): Promise<void>;
|
|
23
25
|
fetch(url: string): Promise<FetchedPage>;
|
|
26
|
+
private fetchPdf;
|
|
24
27
|
close(): Promise<void>;
|
|
25
28
|
}
|
|
29
|
+
export declare function extractMimeType(headerValue: string | undefined): string | undefined;
|
|
26
30
|
//# sourceMappingURL=browser.d.ts.map
|
package/dist/browser.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAaA,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAKlB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,UAAU,CAAC;CACpB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,kBAAkB,QAEuB,CAAC;AAYvD,qBAAa,cAAc;IAIb,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHjC,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,OAAO,CAA+B;gBAEjB,IAAI,EAAE,cAAc;IAE3C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IActB,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;YAqDhC,QAAQ;IA4BhB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAM7B;AAID,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAInF"}
|
package/dist/browser.js
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
// Thin Playwright wrapper. One browser per agent run, one context, one page
|
|
2
2
|
// re-used across fetches. Stealth-flavored Chrome args ported from the
|
|
3
3
|
// substrate browser container.
|
|
4
|
+
//
|
|
5
|
+
// PDFs short-circuit Playwright entirely: Chromium's PDF viewer doesn't
|
|
6
|
+
// expose useful text content via the DOM, and `page.goto()` on a PDF can
|
|
7
|
+
// get stuck on `networkidle` waits. Instead we issue a plain HTTP GET via
|
|
8
|
+
// the request context, capture the bytes, and let src/pdf.ts handle
|
|
9
|
+
// extraction downstream.
|
|
4
10
|
import { chromium } from "playwright";
|
|
11
|
+
import { looksLikePdf } from "./pdf.js";
|
|
5
12
|
export const DEFAULT_USER_AGENT = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 " +
|
|
6
13
|
"(KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36";
|
|
7
14
|
const STEALTH_ARGS = [
|
|
@@ -36,6 +43,12 @@ export class BrowserSession {
|
|
|
36
43
|
async fetch(url) {
|
|
37
44
|
if (!this.context)
|
|
38
45
|
throw new Error("browser not started");
|
|
46
|
+
// PDFs: skip the page goto entirely. Use the context's request API
|
|
47
|
+
// for a plain GET so we get the raw bytes (Chromium's PDF viewer
|
|
48
|
+
// doesn't surface text through the DOM).
|
|
49
|
+
if (looksLikePdf({ url })) {
|
|
50
|
+
return await this.fetchPdf(url);
|
|
51
|
+
}
|
|
39
52
|
const page = await this.context.newPage();
|
|
40
53
|
try {
|
|
41
54
|
const response = await page.goto(url, {
|
|
@@ -46,6 +59,14 @@ export class BrowserSession {
|
|
|
46
59
|
await page
|
|
47
60
|
.waitForLoadState("networkidle", { timeout: Math.min(5000, this.opts.timeoutMs) })
|
|
48
61
|
.catch(() => undefined);
|
|
62
|
+
// If the response advertised a PDF content-type even though the
|
|
63
|
+
// URL didn't end in .pdf, redirect to the bytes path.
|
|
64
|
+
const headers = response?.headers() ?? {};
|
|
65
|
+
const ct = headers["content-type"] ?? "";
|
|
66
|
+
if (looksLikePdf({ contentType: ct })) {
|
|
67
|
+
await page.close().catch(() => undefined);
|
|
68
|
+
return await this.fetchPdf(url);
|
|
69
|
+
}
|
|
49
70
|
const finalUrl = page.url();
|
|
50
71
|
const status = response?.status() ?? 0;
|
|
51
72
|
const title = await page.title().catch(() => "");
|
|
@@ -59,12 +80,37 @@ export class BrowserSession {
|
|
|
59
80
|
text,
|
|
60
81
|
html,
|
|
61
82
|
fetchedAt: Date.now(),
|
|
83
|
+
mimeType: extractMimeType(ct),
|
|
62
84
|
};
|
|
63
85
|
}
|
|
64
86
|
finally {
|
|
65
87
|
await page.close().catch(() => undefined);
|
|
66
88
|
}
|
|
67
89
|
}
|
|
90
|
+
async fetchPdf(url) {
|
|
91
|
+
if (!this.context)
|
|
92
|
+
throw new Error("browser not started");
|
|
93
|
+
const response = await this.context.request.get(url, {
|
|
94
|
+
timeout: this.opts.timeoutMs,
|
|
95
|
+
maxRedirects: 5,
|
|
96
|
+
});
|
|
97
|
+
const status = response.status();
|
|
98
|
+
const buf = await response.body();
|
|
99
|
+
const bytes = new Uint8Array(buf.buffer, buf.byteOffset, Math.min(buf.byteLength, this.opts.maxBytes * 4));
|
|
100
|
+
const headers = response.headers();
|
|
101
|
+
const ct = headers["content-type"] ?? "application/pdf";
|
|
102
|
+
return {
|
|
103
|
+
url,
|
|
104
|
+
finalUrl: response.url(),
|
|
105
|
+
status,
|
|
106
|
+
title: "",
|
|
107
|
+
text: "", // populated by the PDF extractor downstream
|
|
108
|
+
html: "",
|
|
109
|
+
fetchedAt: Date.now(),
|
|
110
|
+
mimeType: extractMimeType(ct) ?? "application/pdf",
|
|
111
|
+
bytes,
|
|
112
|
+
};
|
|
113
|
+
}
|
|
68
114
|
async close() {
|
|
69
115
|
await this.context?.close().catch(() => undefined);
|
|
70
116
|
await this.browser?.close().catch(() => undefined);
|
|
@@ -72,4 +118,12 @@ export class BrowserSession {
|
|
|
72
118
|
this.browser = null;
|
|
73
119
|
}
|
|
74
120
|
}
|
|
121
|
+
// Exported for unit tests. Pulls the bare media type out of a content-type
|
|
122
|
+
// header value (e.g. "text/html; charset=utf-8" → "text/html").
|
|
123
|
+
export function extractMimeType(headerValue) {
|
|
124
|
+
if (!headerValue)
|
|
125
|
+
return undefined;
|
|
126
|
+
const semi = headerValue.indexOf(";");
|
|
127
|
+
return (semi === -1 ? headerValue : headerValue.slice(0, semi)).trim().toLowerCase();
|
|
128
|
+
}
|
|
75
129
|
//# sourceMappingURL=browser.js.map
|
package/dist/browser.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"AAAA,4EAA4E;AAC5E,uEAAuE;AACvE,+BAA+B;
|
|
1
|
+
{"version":3,"file":"browser.js","sourceRoot":"","sources":["../src/browser.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { type CLIFlags } from "./config.js";
|
|
3
3
|
import type { VerificationReport } from "./verify.js";
|
|
4
|
+
import { type CostEstimate } from "./pricing.js";
|
|
4
5
|
interface ParsedArgs {
|
|
5
6
|
question?: string;
|
|
6
7
|
outPath?: string;
|
|
@@ -8,6 +9,7 @@ interface ParsedArgs {
|
|
|
8
9
|
help: boolean;
|
|
9
10
|
}
|
|
10
11
|
export declare function parseArgs(argv: string[]): ParsedArgs;
|
|
12
|
+
export declare function renderCostSummary(cost: CostEstimate, model: string, baseUrl: string): string;
|
|
11
13
|
export declare function renderCitationHealthFooter(report: VerificationReport | undefined): string;
|
|
12
14
|
export declare function safeErrorMessage(err: unknown): string;
|
|
13
15
|
export {};
|
package/dist/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAcA,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAK3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAcA,OAAO,EAAiB,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAK3D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAC;AACtD,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,cAAc,CAAC;AAiEtB,UAAU,UAAU;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,QAAQ,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CACf;AAGD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CAiIpD;AA8ED,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,YAAY,EAClB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,MAAM,GACd,MAAM,CAIR;AAKD,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,kBAAkB,GAAG,SAAS,GACrC,MAAM,CASR;AAKD,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAIrD"}
|