@askalf/deepdive 0.1.0 → 0.4.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 +177 -52
- package/dist/agent.d.ts +48 -2
- package/dist/agent.d.ts.map +1 -1
- package/dist/agent.js +178 -65
- package/dist/agent.js.map +1 -1
- package/dist/cache.d.ts +16 -0
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +62 -0
- package/dist/cache.js.map +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +164 -18
- package/dist/cli.js.map +1 -1
- package/dist/concurrency.d.ts +2 -0
- package/dist/concurrency.d.ts.map +1 -0
- package/dist/concurrency.js +38 -0
- package/dist/concurrency.js.map +1 -0
- package/dist/config.d.ts +20 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +64 -3
- package/dist/config.js.map +1 -1
- package/dist/doctor.d.ts +44 -0
- package/dist/doctor.d.ts.map +1 -0
- package/dist/doctor.js +533 -0
- package/dist/doctor.js.map +1 -0
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -3
- package/dist/index.js.map +1 -1
- package/dist/llm-stream.d.ts +27 -0
- package/dist/llm-stream.d.ts.map +1 -0
- package/dist/llm-stream.js +173 -0
- package/dist/llm-stream.js.map +1 -0
- package/dist/llm.d.ts +10 -0
- package/dist/llm.d.ts.map +1 -1
- package/dist/llm.js +96 -20
- package/dist/llm.js.map +1 -1
- package/dist/plan.d.ts +7 -0
- package/dist/plan.d.ts.map +1 -1
- package/dist/plan.js +51 -0
- package/dist/plan.js.map +1 -1
- package/dist/retry.d.ts +18 -0
- package/dist/retry.d.ts.map +1 -0
- package/dist/retry.js +70 -0
- package/dist/retry.js.map +1 -0
- package/dist/robots.d.ts +26 -0
- package/dist/robots.d.ts.map +1 -0
- package/dist/robots.js +183 -0
- package/dist/robots.js.map +1 -0
- package/dist/search/duckduckgo.d.ts +2 -0
- package/dist/search/duckduckgo.d.ts.map +1 -1
- package/dist/search/duckduckgo.js +38 -13
- package/dist/search/duckduckgo.js.map +1 -1
- package/dist/search/exa.d.ts +17 -0
- package/dist/search/exa.d.ts.map +1 -0
- package/dist/search/exa.js +62 -0
- package/dist/search/exa.js.map +1 -0
- 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.d.ts.map +1 -1
- package/dist/search.js +9 -1
- package/dist/search.js.map +1 -1
- package/dist/synthesize.d.ts +1 -1
- package/dist/synthesize.d.ts.map +1 -1
- package/dist/synthesize.js +11 -2
- package/dist/synthesize.js.map +1 -1
- package/dist/url-util.d.ts +4 -0
- package/dist/url-util.d.ts.map +1 -0
- package/dist/url-util.js +24 -0
- package/dist/url-util.js.map +1 -0
- package/package.json +3 -2
package/dist/doctor.js
ADDED
|
@@ -0,0 +1,533 @@
|
|
|
1
|
+
// `deepdive doctor` — one command, one aggregated report.
|
|
2
|
+
//
|
|
3
|
+
// Mirrors dario's doctor philosophy: every subsystem deepdive depends on
|
|
4
|
+
// (Node, the LLM endpoint, the search adapter, Playwright + Chromium, the
|
|
5
|
+
// cache dir) gets probed; anything unhealthy is visible without the user
|
|
6
|
+
// chasing error messages across 3 separate commands. Paste-able into issues.
|
|
7
|
+
//
|
|
8
|
+
// Non-destructive: cache is inspected, not modified. LLM probe sends a
|
|
9
|
+
// max_tokens=1 request (a few tokens of cost, not zero). Browser probe opens
|
|
10
|
+
// + closes a blank page. Nothing persists across the run.
|
|
11
|
+
import { promises as fs } from "node:fs";
|
|
12
|
+
import { homedir, platform, arch } from "node:os";
|
|
13
|
+
import { join, dirname } from "node:path";
|
|
14
|
+
import { fileURLToPath } from "node:url";
|
|
15
|
+
import { resolveSearchAdapter } from "./search.js";
|
|
16
|
+
import { trimTrailingSlashes } from "./url-util.js";
|
|
17
|
+
export async function runDoctor(opts) {
|
|
18
|
+
const now = opts.now ?? Date.now;
|
|
19
|
+
const checks = [];
|
|
20
|
+
for (const check of await envChecks(opts))
|
|
21
|
+
checks.push(check);
|
|
22
|
+
if (!opts.skipCache)
|
|
23
|
+
for (const check of await cacheChecks(opts))
|
|
24
|
+
checks.push(check);
|
|
25
|
+
if (!opts.skipLLM)
|
|
26
|
+
for (const check of await llmChecks(opts))
|
|
27
|
+
checks.push(check);
|
|
28
|
+
if (!opts.skipSearch)
|
|
29
|
+
for (const check of await searchChecks(opts))
|
|
30
|
+
checks.push(check);
|
|
31
|
+
if (!opts.skipBrowser)
|
|
32
|
+
for (const check of await browserChecks(opts))
|
|
33
|
+
checks.push(check);
|
|
34
|
+
const summary = checks.reduce((s, c) => ({ ...s, total: s.total + 1, [c.status]: s[c.status] + 1 }), { total: 0, ok: 0, warn: 0, fail: 0, info: 0 });
|
|
35
|
+
return {
|
|
36
|
+
version: await readDeepdiveVersion(),
|
|
37
|
+
generatedAt: now(),
|
|
38
|
+
checks,
|
|
39
|
+
summary,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
async function envChecks(_opts) {
|
|
43
|
+
const out = [];
|
|
44
|
+
out.push({
|
|
45
|
+
id: "env.node",
|
|
46
|
+
category: "environment",
|
|
47
|
+
status: nodeMeetsMinimum(process.version) ? "ok" : "fail",
|
|
48
|
+
label: "Node",
|
|
49
|
+
detail: process.version,
|
|
50
|
+
});
|
|
51
|
+
out.push({
|
|
52
|
+
id: "env.platform",
|
|
53
|
+
category: "environment",
|
|
54
|
+
status: "info",
|
|
55
|
+
label: "Platform",
|
|
56
|
+
detail: `${platform()} ${arch()}`,
|
|
57
|
+
});
|
|
58
|
+
out.push({
|
|
59
|
+
id: "env.version",
|
|
60
|
+
category: "environment",
|
|
61
|
+
status: "info",
|
|
62
|
+
label: "deepdive",
|
|
63
|
+
detail: `v${await readDeepdiveVersion()}`,
|
|
64
|
+
});
|
|
65
|
+
return out;
|
|
66
|
+
}
|
|
67
|
+
async function cacheChecks(opts) {
|
|
68
|
+
const out = [];
|
|
69
|
+
const dir = opts.config.cache.dir;
|
|
70
|
+
if (!opts.config.cache.enabled) {
|
|
71
|
+
out.push({
|
|
72
|
+
id: "cache.enabled",
|
|
73
|
+
category: "cache",
|
|
74
|
+
status: "info",
|
|
75
|
+
label: "cache",
|
|
76
|
+
detail: "disabled (--no-cache or DEEPDIVE_NO_CACHE=1)",
|
|
77
|
+
});
|
|
78
|
+
return out;
|
|
79
|
+
}
|
|
80
|
+
out.push({
|
|
81
|
+
id: "cache.dir",
|
|
82
|
+
category: "cache",
|
|
83
|
+
status: "info",
|
|
84
|
+
label: "dir",
|
|
85
|
+
detail: dir,
|
|
86
|
+
});
|
|
87
|
+
const stat = await inspectCacheDir(dir);
|
|
88
|
+
if (!stat.exists) {
|
|
89
|
+
out.push({
|
|
90
|
+
id: "cache.state",
|
|
91
|
+
category: "cache",
|
|
92
|
+
status: "info",
|
|
93
|
+
label: "state",
|
|
94
|
+
detail: "directory does not exist yet — will be created on first fetch",
|
|
95
|
+
});
|
|
96
|
+
return out;
|
|
97
|
+
}
|
|
98
|
+
out.push({
|
|
99
|
+
id: "cache.state",
|
|
100
|
+
category: "cache",
|
|
101
|
+
status: stat.writable ? "ok" : "fail",
|
|
102
|
+
label: "writable",
|
|
103
|
+
detail: stat.writable ? "yes" : "no — fetched pages cannot be cached",
|
|
104
|
+
});
|
|
105
|
+
out.push({
|
|
106
|
+
id: "cache.entries",
|
|
107
|
+
category: "cache",
|
|
108
|
+
status: "info",
|
|
109
|
+
label: "entries",
|
|
110
|
+
detail: `${stat.fileCount} file${stat.fileCount === 1 ? "" : "s"} · ${formatBytes(stat.totalBytes)}`,
|
|
111
|
+
});
|
|
112
|
+
if (stat.oldestMtime !== null) {
|
|
113
|
+
const ageMs = Date.now() - stat.oldestMtime;
|
|
114
|
+
out.push({
|
|
115
|
+
id: "cache.oldest",
|
|
116
|
+
category: "cache",
|
|
117
|
+
status: "info",
|
|
118
|
+
label: "oldest",
|
|
119
|
+
detail: `${formatDuration(ageMs)} ago`,
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
return out;
|
|
123
|
+
}
|
|
124
|
+
async function llmChecks(opts) {
|
|
125
|
+
const out = [];
|
|
126
|
+
const { baseUrl, apiKey, model } = opts.config.llm;
|
|
127
|
+
const fetchImpl = opts.fetchImpl ?? fetch;
|
|
128
|
+
out.push({
|
|
129
|
+
id: "llm.base-url",
|
|
130
|
+
category: "llm",
|
|
131
|
+
status: "info",
|
|
132
|
+
label: "base URL",
|
|
133
|
+
detail: baseUrl,
|
|
134
|
+
});
|
|
135
|
+
out.push({
|
|
136
|
+
id: "llm.model",
|
|
137
|
+
category: "llm",
|
|
138
|
+
status: "info",
|
|
139
|
+
label: "model",
|
|
140
|
+
detail: model,
|
|
141
|
+
});
|
|
142
|
+
// Non-regex trim to avoid CodeQL's polynomial-ReDoS detection on
|
|
143
|
+
// `/\/+$/`. The regex is actually safe (no nested repetition) but
|
|
144
|
+
// `trimTrailingSlashes` is our standard helper used everywhere else.
|
|
145
|
+
const url = `${trimTrailingSlashes(baseUrl)}/v1/messages`;
|
|
146
|
+
const body = {
|
|
147
|
+
model,
|
|
148
|
+
max_tokens: 1,
|
|
149
|
+
system: "Reply with a single character.",
|
|
150
|
+
messages: [{ role: "user", content: "." }],
|
|
151
|
+
};
|
|
152
|
+
const start = Date.now();
|
|
153
|
+
try {
|
|
154
|
+
const res = await fetchImpl(url, {
|
|
155
|
+
method: "POST",
|
|
156
|
+
headers: {
|
|
157
|
+
"content-type": "application/json",
|
|
158
|
+
"anthropic-version": "2023-06-01",
|
|
159
|
+
"x-api-key": apiKey,
|
|
160
|
+
},
|
|
161
|
+
body: JSON.stringify(body),
|
|
162
|
+
signal: AbortSignal.timeout(10_000),
|
|
163
|
+
});
|
|
164
|
+
const durationMs = Date.now() - start;
|
|
165
|
+
if (!res.ok) {
|
|
166
|
+
const text = await safeReadText(res);
|
|
167
|
+
out.push({
|
|
168
|
+
id: "llm.reachable",
|
|
169
|
+
category: "llm",
|
|
170
|
+
status: "fail",
|
|
171
|
+
label: "reachable",
|
|
172
|
+
detail: `${res.status} ${res.statusText} — ${clip(text, 120)}`,
|
|
173
|
+
durationMs,
|
|
174
|
+
});
|
|
175
|
+
return out;
|
|
176
|
+
}
|
|
177
|
+
const json = await safeReadJson(res);
|
|
178
|
+
if (!json || !isAnthropicMessagesShape(json)) {
|
|
179
|
+
out.push({
|
|
180
|
+
id: "llm.shape",
|
|
181
|
+
category: "llm",
|
|
182
|
+
status: "warn",
|
|
183
|
+
label: "shape",
|
|
184
|
+
detail: "endpoint returned 200 but the body does not match the Anthropic Messages format — check your proxy",
|
|
185
|
+
durationMs,
|
|
186
|
+
});
|
|
187
|
+
return out;
|
|
188
|
+
}
|
|
189
|
+
out.push({
|
|
190
|
+
id: "llm.reachable",
|
|
191
|
+
category: "llm",
|
|
192
|
+
status: "ok",
|
|
193
|
+
label: "reachable",
|
|
194
|
+
detail: `200 in ${durationMs}ms`,
|
|
195
|
+
durationMs,
|
|
196
|
+
});
|
|
197
|
+
const usage = json.usage ?? {};
|
|
198
|
+
const inTok = typeof usage.input_tokens === "number" ? usage.input_tokens : "?";
|
|
199
|
+
const outTok = typeof usage.output_tokens === "number" ? usage.output_tokens : "?";
|
|
200
|
+
out.push({
|
|
201
|
+
id: "llm.probe",
|
|
202
|
+
category: "llm",
|
|
203
|
+
status: "ok",
|
|
204
|
+
label: "probe",
|
|
205
|
+
detail: `max_tokens=1 · in=${inTok} out=${outTok}`,
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
catch (err) {
|
|
209
|
+
const durationMs = Date.now() - start;
|
|
210
|
+
out.push({
|
|
211
|
+
id: "llm.reachable",
|
|
212
|
+
category: "llm",
|
|
213
|
+
status: "fail",
|
|
214
|
+
label: "reachable",
|
|
215
|
+
detail: classifyFetchError(err) + ` (${durationMs}ms)`,
|
|
216
|
+
durationMs,
|
|
217
|
+
});
|
|
218
|
+
}
|
|
219
|
+
return out;
|
|
220
|
+
}
|
|
221
|
+
async function searchChecks(opts) {
|
|
222
|
+
const out = [];
|
|
223
|
+
const name = opts.config.searchAdapter;
|
|
224
|
+
let adapter;
|
|
225
|
+
try {
|
|
226
|
+
adapter = await resolveSearchAdapter(name, opts.env);
|
|
227
|
+
}
|
|
228
|
+
catch (err) {
|
|
229
|
+
out.push({
|
|
230
|
+
id: "search.resolve",
|
|
231
|
+
category: "search",
|
|
232
|
+
status: "fail",
|
|
233
|
+
label: "adapter",
|
|
234
|
+
detail: `${name} — ${err.message}`,
|
|
235
|
+
});
|
|
236
|
+
return out;
|
|
237
|
+
}
|
|
238
|
+
out.push({
|
|
239
|
+
id: "search.adapter",
|
|
240
|
+
category: "search",
|
|
241
|
+
status: "info",
|
|
242
|
+
label: "adapter",
|
|
243
|
+
detail: name,
|
|
244
|
+
});
|
|
245
|
+
const start = Date.now();
|
|
246
|
+
try {
|
|
247
|
+
const results = await adapter.search("hello world", 3);
|
|
248
|
+
const durationMs = Date.now() - start;
|
|
249
|
+
if (results.length === 0) {
|
|
250
|
+
out.push({
|
|
251
|
+
id: "search.probe",
|
|
252
|
+
category: "search",
|
|
253
|
+
status: "warn",
|
|
254
|
+
label: "probe",
|
|
255
|
+
detail: `0 results for "hello world" (${durationMs}ms) — upstream may be throttling or parser may need an update`,
|
|
256
|
+
durationMs,
|
|
257
|
+
});
|
|
258
|
+
return out;
|
|
259
|
+
}
|
|
260
|
+
out.push({
|
|
261
|
+
id: "search.probe",
|
|
262
|
+
category: "search",
|
|
263
|
+
status: "ok",
|
|
264
|
+
label: "probe",
|
|
265
|
+
detail: `${results.length} results in ${durationMs}ms`,
|
|
266
|
+
durationMs,
|
|
267
|
+
});
|
|
268
|
+
}
|
|
269
|
+
catch (err) {
|
|
270
|
+
const durationMs = Date.now() - start;
|
|
271
|
+
out.push({
|
|
272
|
+
id: "search.probe",
|
|
273
|
+
category: "search",
|
|
274
|
+
status: "fail",
|
|
275
|
+
label: "probe",
|
|
276
|
+
detail: classifyFetchError(err) + ` (${durationMs}ms)`,
|
|
277
|
+
durationMs,
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
return out;
|
|
281
|
+
}
|
|
282
|
+
async function browserChecks(opts) {
|
|
283
|
+
const out = [];
|
|
284
|
+
let playwright = null;
|
|
285
|
+
try {
|
|
286
|
+
playwright = await import("playwright");
|
|
287
|
+
}
|
|
288
|
+
catch {
|
|
289
|
+
out.push({
|
|
290
|
+
id: "browser.module",
|
|
291
|
+
category: "browser",
|
|
292
|
+
status: "fail",
|
|
293
|
+
label: "playwright",
|
|
294
|
+
detail: "playwright module not installed — run `npm install -g @askalf/deepdive`",
|
|
295
|
+
});
|
|
296
|
+
return out;
|
|
297
|
+
}
|
|
298
|
+
out.push({
|
|
299
|
+
id: "browser.module",
|
|
300
|
+
category: "browser",
|
|
301
|
+
status: "ok",
|
|
302
|
+
label: "playwright",
|
|
303
|
+
detail: "module loaded",
|
|
304
|
+
});
|
|
305
|
+
const start = Date.now();
|
|
306
|
+
try {
|
|
307
|
+
const browser = await playwright.chromium.launch({
|
|
308
|
+
headless: true,
|
|
309
|
+
args: ["--disable-dev-shm-usage"],
|
|
310
|
+
});
|
|
311
|
+
await browser.close();
|
|
312
|
+
const durationMs = Date.now() - start;
|
|
313
|
+
out.push({
|
|
314
|
+
id: "browser.launch",
|
|
315
|
+
category: "browser",
|
|
316
|
+
status: "ok",
|
|
317
|
+
label: "chromium",
|
|
318
|
+
detail: `launch + close in ${durationMs}ms`,
|
|
319
|
+
durationMs,
|
|
320
|
+
});
|
|
321
|
+
}
|
|
322
|
+
catch (err) {
|
|
323
|
+
const durationMs = Date.now() - start;
|
|
324
|
+
const msg = scrubPath(err.message ?? String(err));
|
|
325
|
+
const hint = /Executable doesn't exist|No such file|spawn ENOENT/i.test(msg)
|
|
326
|
+
? " — run `npx playwright install chromium`"
|
|
327
|
+
: "";
|
|
328
|
+
out.push({
|
|
329
|
+
id: "browser.launch",
|
|
330
|
+
category: "browser",
|
|
331
|
+
status: "fail",
|
|
332
|
+
label: "chromium",
|
|
333
|
+
detail: `${clip(msg, 120)}${hint} (${durationMs}ms)`,
|
|
334
|
+
durationMs,
|
|
335
|
+
});
|
|
336
|
+
}
|
|
337
|
+
return out;
|
|
338
|
+
}
|
|
339
|
+
// ──────── helpers ────────
|
|
340
|
+
// Exported for unit tests.
|
|
341
|
+
export function renderDoctorText(report, opts = {}) {
|
|
342
|
+
const byCategory = new Map();
|
|
343
|
+
for (const c of report.checks) {
|
|
344
|
+
const arr = byCategory.get(c.category) ?? [];
|
|
345
|
+
arr.push(c);
|
|
346
|
+
byCategory.set(c.category, arr);
|
|
347
|
+
}
|
|
348
|
+
const lines = [];
|
|
349
|
+
lines.push(`deepdive doctor — v${report.version}`);
|
|
350
|
+
lines.push("");
|
|
351
|
+
const order = ["environment", "cache", "llm", "search", "browser"];
|
|
352
|
+
const seenCategories = new Set();
|
|
353
|
+
const orderedCategories = [
|
|
354
|
+
...order.filter((c) => byCategory.has(c)),
|
|
355
|
+
...[...byCategory.keys()].filter((c) => !order.includes(c)),
|
|
356
|
+
];
|
|
357
|
+
for (const cat of orderedCategories) {
|
|
358
|
+
if (seenCategories.has(cat))
|
|
359
|
+
continue;
|
|
360
|
+
seenCategories.add(cat);
|
|
361
|
+
lines.push(`# ${cat}`);
|
|
362
|
+
for (const c of byCategory.get(cat) ?? []) {
|
|
363
|
+
lines.push(` ${badge(c.status, opts.color)} ${pad(c.label, 11)} ${c.detail}`);
|
|
364
|
+
}
|
|
365
|
+
lines.push("");
|
|
366
|
+
}
|
|
367
|
+
const { total, ok, warn, fail } = report.summary;
|
|
368
|
+
lines.push(`Summary: ${total} check${total === 1 ? "" : "s"} · ${ok} ok · ${warn} warn · ${fail} fail`);
|
|
369
|
+
return lines.join("\n");
|
|
370
|
+
}
|
|
371
|
+
// Exported for unit tests.
|
|
372
|
+
export function renderDoctorJson(report) {
|
|
373
|
+
return JSON.stringify(report, null, 2) + "\n";
|
|
374
|
+
}
|
|
375
|
+
// Exported for unit tests.
|
|
376
|
+
export function exitCodeFor(report) {
|
|
377
|
+
return report.summary.fail > 0 ? 1 : 0;
|
|
378
|
+
}
|
|
379
|
+
function badge(status, color = false) {
|
|
380
|
+
const plain = { ok: "OK ", warn: "!! ", fail: "XX ", info: "---" }[status];
|
|
381
|
+
if (!color)
|
|
382
|
+
return plain;
|
|
383
|
+
const ansi = { ok: "\x1b[32m", warn: "\x1b[33m", fail: "\x1b[31m", info: "\x1b[90m" }[status];
|
|
384
|
+
return `${ansi}${plain}\x1b[0m`;
|
|
385
|
+
}
|
|
386
|
+
function pad(s, width) {
|
|
387
|
+
return s.length >= width ? s : s + " ".repeat(width - s.length);
|
|
388
|
+
}
|
|
389
|
+
// Exported for unit tests.
|
|
390
|
+
export function nodeMeetsMinimum(versionString) {
|
|
391
|
+
const m = /^v(\d+)\./.exec(versionString);
|
|
392
|
+
if (!m)
|
|
393
|
+
return false;
|
|
394
|
+
return Number(m[1]) >= 20;
|
|
395
|
+
}
|
|
396
|
+
async function inspectCacheDir(dir) {
|
|
397
|
+
try {
|
|
398
|
+
await fs.stat(dir);
|
|
399
|
+
}
|
|
400
|
+
catch {
|
|
401
|
+
return { exists: false, writable: true, fileCount: 0, totalBytes: 0, oldestMtime: null };
|
|
402
|
+
}
|
|
403
|
+
let writable = true;
|
|
404
|
+
try {
|
|
405
|
+
const probe = join(dir, `.write-probe.${process.pid}.${Date.now()}`);
|
|
406
|
+
await fs.writeFile(probe, "");
|
|
407
|
+
await fs.unlink(probe);
|
|
408
|
+
}
|
|
409
|
+
catch {
|
|
410
|
+
writable = false;
|
|
411
|
+
}
|
|
412
|
+
let fileCount = 0;
|
|
413
|
+
let totalBytes = 0;
|
|
414
|
+
let oldestMtime = null;
|
|
415
|
+
try {
|
|
416
|
+
const names = await fs.readdir(dir);
|
|
417
|
+
for (const n of names) {
|
|
418
|
+
if (!n.endsWith(".json"))
|
|
419
|
+
continue;
|
|
420
|
+
try {
|
|
421
|
+
const s = await fs.stat(join(dir, n));
|
|
422
|
+
fileCount++;
|
|
423
|
+
totalBytes += s.size;
|
|
424
|
+
if (oldestMtime === null || s.mtimeMs < oldestMtime)
|
|
425
|
+
oldestMtime = s.mtimeMs;
|
|
426
|
+
}
|
|
427
|
+
catch {
|
|
428
|
+
/* ignore */
|
|
429
|
+
}
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
catch {
|
|
433
|
+
/* ignore */
|
|
434
|
+
}
|
|
435
|
+
return { exists: true, writable, fileCount, totalBytes, oldestMtime };
|
|
436
|
+
}
|
|
437
|
+
// Exported for unit tests.
|
|
438
|
+
export function formatBytes(n) {
|
|
439
|
+
if (n < 1024)
|
|
440
|
+
return `${n} B`;
|
|
441
|
+
if (n < 1024 * 1024)
|
|
442
|
+
return `${(n / 1024).toFixed(1)} KB`;
|
|
443
|
+
if (n < 1024 * 1024 * 1024)
|
|
444
|
+
return `${(n / 1024 / 1024).toFixed(1)} MB`;
|
|
445
|
+
return `${(n / 1024 / 1024 / 1024).toFixed(2)} GB`;
|
|
446
|
+
}
|
|
447
|
+
// Exported for unit tests.
|
|
448
|
+
export function formatDuration(ms) {
|
|
449
|
+
const s = Math.floor(ms / 1000);
|
|
450
|
+
if (s < 60)
|
|
451
|
+
return `${s}s`;
|
|
452
|
+
const m = Math.floor(s / 60);
|
|
453
|
+
if (m < 60)
|
|
454
|
+
return `${m}m`;
|
|
455
|
+
const h = Math.floor(m / 60);
|
|
456
|
+
if (h < 24)
|
|
457
|
+
return `${h}h`;
|
|
458
|
+
const d = Math.floor(h / 24);
|
|
459
|
+
return `${d}d`;
|
|
460
|
+
}
|
|
461
|
+
// Exported for unit tests.
|
|
462
|
+
export function classifyFetchError(err) {
|
|
463
|
+
const msg = err?.message ?? String(err);
|
|
464
|
+
const scrubbed = scrubPath(msg);
|
|
465
|
+
if (/abort/i.test(msg) && /TimeoutError/i.test(msg))
|
|
466
|
+
return "timeout (10s)";
|
|
467
|
+
if (/timeout/i.test(msg))
|
|
468
|
+
return "timeout";
|
|
469
|
+
if (/ECONNREFUSED/i.test(msg))
|
|
470
|
+
return "connection refused — is the endpoint running?";
|
|
471
|
+
if (/ENOTFOUND|getaddrinfo/i.test(msg))
|
|
472
|
+
return "DNS failure — hostname not resolvable";
|
|
473
|
+
if (/ECONNRESET/i.test(msg))
|
|
474
|
+
return "connection reset by peer";
|
|
475
|
+
if (/certificate|CERT_|TLS|SSL/i.test(msg))
|
|
476
|
+
return `TLS error: ${clip(scrubbed, 80)}`;
|
|
477
|
+
return clip(scrubbed, 120);
|
|
478
|
+
}
|
|
479
|
+
// Exported for unit tests. Strips Unix and Windows home-directory paths from
|
|
480
|
+
// text so they don't end up in bug reports or logs.
|
|
481
|
+
export function scrubPath(s) {
|
|
482
|
+
const home = homedir();
|
|
483
|
+
if (!home)
|
|
484
|
+
return s;
|
|
485
|
+
let out = s;
|
|
486
|
+
const homeEsc = home.replace(/[\\.*+?^${}()|[\]]/g, "\\$&");
|
|
487
|
+
out = out.replace(new RegExp(homeEsc, "g"), "~");
|
|
488
|
+
out = out.replace(/\\/g, "/");
|
|
489
|
+
return out;
|
|
490
|
+
}
|
|
491
|
+
function isAnthropicMessagesShape(json) {
|
|
492
|
+
if (!json || typeof json !== "object")
|
|
493
|
+
return false;
|
|
494
|
+
const o = json;
|
|
495
|
+
if (!Array.isArray(o.content))
|
|
496
|
+
return false;
|
|
497
|
+
if (o.role !== "assistant")
|
|
498
|
+
return false;
|
|
499
|
+
return true;
|
|
500
|
+
}
|
|
501
|
+
async function safeReadText(res) {
|
|
502
|
+
try {
|
|
503
|
+
return await res.text();
|
|
504
|
+
}
|
|
505
|
+
catch {
|
|
506
|
+
return "";
|
|
507
|
+
}
|
|
508
|
+
}
|
|
509
|
+
async function safeReadJson(res) {
|
|
510
|
+
try {
|
|
511
|
+
return await res.json();
|
|
512
|
+
}
|
|
513
|
+
catch {
|
|
514
|
+
return null;
|
|
515
|
+
}
|
|
516
|
+
}
|
|
517
|
+
function clip(s, max) {
|
|
518
|
+
return s.length <= max ? s : s.slice(0, max - 1) + "…";
|
|
519
|
+
}
|
|
520
|
+
async function readDeepdiveVersion() {
|
|
521
|
+
try {
|
|
522
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
523
|
+
// dist/doctor.js → dist/../package.json
|
|
524
|
+
const pkgPath = join(here, "..", "package.json");
|
|
525
|
+
const raw = await fs.readFile(pkgPath, "utf-8");
|
|
526
|
+
const parsed = JSON.parse(raw);
|
|
527
|
+
return parsed.version ?? "unknown";
|
|
528
|
+
}
|
|
529
|
+
catch {
|
|
530
|
+
return "unknown";
|
|
531
|
+
}
|
|
532
|
+
}
|
|
533
|
+
//# sourceMappingURL=doctor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,10 +1,16 @@
|
|
|
1
|
-
export { runAgent, type AgentConfig, type AgentEvent, type AgentResult } from "./agent.js";
|
|
2
|
-
export { planQueries, parsePlan, type Plan } from "./plan.js";
|
|
1
|
+
export { runAgent, type AgentConfig, type AgentEvent, type AgentResult, type BrowserLike, type RoundTrace, } from "./agent.js";
|
|
2
|
+
export { planQueries, parsePlan, critique, parseCritique, type Plan, type Critique, } from "./plan.js";
|
|
3
3
|
export { resolveSearchAdapter, dedupeByUrl, type SearchAdapter, type SearchResult, } from "./search.js";
|
|
4
4
|
export { BrowserSession, type BrowserOptions, type FetchedPage } from "./browser.js";
|
|
5
5
|
export { extractContent, type ExtractedContent } from "./extract.js";
|
|
6
6
|
export { synthesize, type SourceWithContent } from "./synthesize.js";
|
|
7
7
|
export { buildSourceTable, renderAnswerMarkdown, renderSourcesMarkdown, type Source, } from "./citations.js";
|
|
8
|
-
export { callLLM, type LLMConfig, type LLMMessage, type LLMResult } from "./llm.js";
|
|
8
|
+
export { callLLM, LLMError, DEFAULT_LLM_TIMEOUT_MS, DEFAULT_LLM_ATTEMPTS, type LLMConfig, type LLMMessage, type LLMResult, } from "./llm.js";
|
|
9
|
+
export { callLLMStream, parseBlocks, parseSSE, type StreamOptions } from "./llm-stream.js";
|
|
10
|
+
export { retry, backoffDelay, type RetryOptions } from "./retry.js";
|
|
9
11
|
export { resolveConfig, type RuntimeConfig, type CLIFlags } from "./config.js";
|
|
12
|
+
export { createCache, cacheKey, type PageCache, type CacheOptions } from "./cache.js";
|
|
13
|
+
export { runConcurrent } from "./concurrency.js";
|
|
14
|
+
export { trimTrailingSlashes, stripHashFragment, dedupeKey } from "./url-util.js";
|
|
15
|
+
export { runDoctor, renderDoctorText, renderDoctorJson, exitCodeFor, scrubPath, formatBytes, formatDuration, classifyFetchError, nodeMeetsMinimum, type CheckResult, type CheckStatus, type DoctorReport, type DoctorOptions, } from "./doctor.js";
|
|
10
16
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,QAAQ,EACR,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,UAAU,GAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,WAAW,EACX,SAAS,EACT,QAAQ,EACR,aAAa,EACb,KAAK,IAAI,EACT,KAAK,QAAQ,GACd,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,oBAAoB,EACpB,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,YAAY,GAClB,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAE,KAAK,cAAc,EAAE,KAAK,WAAW,EAAE,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,KAAK,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACrE,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,MAAM,GACZ,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,OAAO,EACP,QAAQ,EACR,sBAAsB,EACtB,oBAAoB,EACpB,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,SAAS,GACf,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,aAAa,EAAE,KAAK,aAAa,EAAE,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,KAAK,SAAS,EAAE,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAClF,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,YAAY,EACjB,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
// Library exports for programmatic use.
|
|
2
|
-
export { runAgent } from "./agent.js";
|
|
3
|
-
export { planQueries, parsePlan } from "./plan.js";
|
|
2
|
+
export { runAgent, } from "./agent.js";
|
|
3
|
+
export { planQueries, parsePlan, critique, parseCritique, } from "./plan.js";
|
|
4
4
|
export { resolveSearchAdapter, dedupeByUrl, } from "./search.js";
|
|
5
5
|
export { BrowserSession } from "./browser.js";
|
|
6
6
|
export { extractContent } from "./extract.js";
|
|
7
7
|
export { synthesize } from "./synthesize.js";
|
|
8
8
|
export { buildSourceTable, renderAnswerMarkdown, renderSourcesMarkdown, } from "./citations.js";
|
|
9
|
-
export { callLLM } from "./llm.js";
|
|
9
|
+
export { callLLM, LLMError, DEFAULT_LLM_TIMEOUT_MS, DEFAULT_LLM_ATTEMPTS, } from "./llm.js";
|
|
10
|
+
export { callLLMStream, parseBlocks, parseSSE } from "./llm-stream.js";
|
|
11
|
+
export { retry, backoffDelay } from "./retry.js";
|
|
10
12
|
export { resolveConfig } from "./config.js";
|
|
13
|
+
export { createCache, cacheKey } from "./cache.js";
|
|
14
|
+
export { runConcurrent } from "./concurrency.js";
|
|
15
|
+
export { trimTrailingSlashes, stripHashFragment, dedupeKey } from "./url-util.js";
|
|
16
|
+
export { runDoctor, renderDoctorText, renderDoctorJson, exitCodeFor, scrubPath, formatBytes, formatDuration, classifyFetchError, nodeMeetsMinimum, } from "./doctor.js";
|
|
11
17
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AAExC,OAAO,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wCAAwC;AAExC,OAAO,EACL,QAAQ,GAMT,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,WAAW,EACX,SAAS,EACT,QAAQ,EACR,aAAa,GAGd,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,oBAAoB,EACpB,WAAW,GAGZ,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,cAAc,EAAyC,MAAM,cAAc,CAAC;AACrF,OAAO,EAAE,cAAc,EAAyB,MAAM,cAAc,CAAC;AACrE,OAAO,EAAE,UAAU,EAA0B,MAAM,iBAAiB,CAAC;AACrE,OAAO,EACL,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,GAEtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,OAAO,EACP,QAAQ,EACR,sBAAsB,EACtB,oBAAoB,GAIrB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,QAAQ,EAAsB,MAAM,iBAAiB,CAAC;AAC3F,OAAO,EAAE,KAAK,EAAE,YAAY,EAAqB,MAAM,YAAY,CAAC;AACpE,OAAO,EAAE,aAAa,EAAqC,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAqC,MAAM,YAAY,CAAC;AACtF,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAClF,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,WAAW,EACX,cAAc,EACd,kBAAkB,EAClB,gBAAgB,GAKjB,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type LLMConfig, type LLMMessage, type LLMResult } from "./llm.js";
|
|
2
|
+
export interface StreamOptions {
|
|
3
|
+
onToken?: (text: string) => void;
|
|
4
|
+
}
|
|
5
|
+
export declare function callLLMStream(messages: LLMMessage[], system: string, config: LLMConfig, opts?: StreamOptions, signal?: AbortSignal): Promise<LLMResult>;
|
|
6
|
+
interface SSEEvent {
|
|
7
|
+
type?: string;
|
|
8
|
+
delta?: {
|
|
9
|
+
type?: string;
|
|
10
|
+
text?: string;
|
|
11
|
+
};
|
|
12
|
+
message?: {
|
|
13
|
+
usage?: {
|
|
14
|
+
input_tokens?: number;
|
|
15
|
+
output_tokens?: number;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
usage?: {
|
|
19
|
+
input_tokens?: number;
|
|
20
|
+
output_tokens?: number;
|
|
21
|
+
};
|
|
22
|
+
[key: string]: unknown;
|
|
23
|
+
}
|
|
24
|
+
export declare function parseSSE(stream: ReadableStream<Uint8Array>, signal?: AbortSignal): AsyncGenerator<SSEEvent>;
|
|
25
|
+
export declare function parseBlocks(block: string): Generator<SSEEvent>;
|
|
26
|
+
export {};
|
|
27
|
+
//# sourceMappingURL=llm-stream.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"llm-stream.d.ts","sourceRoot":"","sources":["../src/llm-stream.ts"],"names":[],"mappings":"AASA,OAAO,EAIL,KAAK,SAAS,EACd,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,UAAU,CAAC;AAElB,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAClC;AAED,wBAAsB,aAAa,CACjC,QAAQ,EAAE,UAAU,EAAE,EACtB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,SAAS,EACjB,IAAI,GAAE,aAAkB,EACxB,MAAM,CAAC,EAAE,WAAW,GACnB,OAAO,CAAC,SAAS,CAAC,CAiFpB;AAED,UAAU,QAAQ;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACzC,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE;YAAE,YAAY,CAAC,EAAE,MAAM,CAAC;YAAC,aAAa,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAC;IACxE,KAAK,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC1D,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAGD,wBAAuB,QAAQ,CAC7B,MAAM,EAAE,cAAc,CAAC,UAAU,CAAC,EAClC,MAAM,CAAC,EAAE,WAAW,GACnB,cAAc,CAAC,QAAQ,CAAC,CA8B1B;AAaD,wBAAiB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,CAmB/D"}
|