@askalf/deepdive 0.6.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/dist/doctor.js CHANGED
@@ -14,6 +14,8 @@ import { join, dirname } from "node:path";
14
14
  import { fileURLToPath } from "node:url";
15
15
  import { resolveSearchAdapter } from "./search.js";
16
16
  import { trimTrailingSlashes } from "./url-util.js";
17
+ import { PRICE_TABLE, PRICE_TABLE_VERIFIED_AT, PRICE_TABLE_STALE_AFTER_DAYS, daysAgo, } from "./pricing.js";
18
+ import { isPdfExtractorAvailable } from "./pdf.js";
17
19
  export async function runDoctor(opts) {
18
20
  const now = opts.now ?? Date.now;
19
21
  const checks = [];
@@ -31,6 +33,10 @@ export async function runDoctor(opts) {
31
33
  if (!opts.skipBrowser)
32
34
  for (const check of await browserChecks(opts))
33
35
  checks.push(check);
36
+ for (const check of await pdfChecks(opts))
37
+ checks.push(check);
38
+ for (const check of await pricingChecks(opts))
39
+ checks.push(check);
34
40
  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
41
  return {
36
42
  version: await readDeepdiveVersion(),
@@ -279,6 +285,40 @@ async function searchChecks(opts) {
279
285
  }
280
286
  return out;
281
287
  }
288
+ async function pdfChecks(_opts) {
289
+ const available = await isPdfExtractorAvailable();
290
+ return [
291
+ {
292
+ id: "pdf.extractor",
293
+ category: "pdf",
294
+ status: available ? "ok" : "info",
295
+ label: "extractor",
296
+ detail: available
297
+ ? "pdfjs-dist available"
298
+ : "pdfjs-dist not installed (PDF sources will be skipped) — `npm install -g pdfjs-dist`",
299
+ },
300
+ ];
301
+ }
302
+ async function pricingChecks(opts) {
303
+ const now = opts.now?.() ?? Date.now();
304
+ const days = daysAgo(PRICE_TABLE_VERIFIED_AT, now);
305
+ const known = Object.keys(PRICE_TABLE).length;
306
+ const stale = Number.isFinite(days) && days > PRICE_TABLE_STALE_AFTER_DAYS;
307
+ return [
308
+ {
309
+ id: "pricing.table",
310
+ category: "pricing",
311
+ status: stale ? "warn" : "ok",
312
+ label: "price table",
313
+ detail: Number.isFinite(days)
314
+ ? `${known} models · verified ${PRICE_TABLE_VERIFIED_AT} (${days}d ago)` +
315
+ (stale
316
+ ? ` · stale (>${PRICE_TABLE_STALE_AFTER_DAYS}d) — verify against docs.anthropic.com/en/docs/about-claude/pricing`
317
+ : "")
318
+ : `${known} models · verification date malformed`,
319
+ },
320
+ ];
321
+ }
282
322
  async function browserChecks(opts) {
283
323
  const out = [];
284
324
  let playwright = null;
@@ -348,7 +388,7 @@ export function renderDoctorText(report, opts = {}) {
348
388
  const lines = [];
349
389
  lines.push(`deepdive doctor — v${report.version}`);
350
390
  lines.push("");
351
- const order = ["environment", "cache", "llm", "search", "browser"];
391
+ const order = ["environment", "cache", "llm", "search", "browser", "pdf", "pricing"];
352
392
  const seenCategories = new Set();
353
393
  const orderedCategories = [
354
394
  ...order.filter((c) => byCategory.has(c)),
@@ -1 +1 @@
1
- {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"doctor.js","sourceRoot":"","sources":["../src/doctor.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -11,7 +11,9 @@ export { retry, backoffDelay, type RetryOptions } from "./retry.js";
11
11
  export { resolveConfig, type RuntimeConfig, type CLIFlags } from "./config.js";
12
12
  export { createCache, cacheKey, type PageCache, type CacheOptions } from "./cache.js";
13
13
  export { runConcurrent } from "./concurrency.js";
14
- export { priceFor, estimateCost, formatCostLine, formatUsd, formatTokens, looksLikeDario, PRICE_TABLE, DARIO_DEFAULT_BASE_URL, type ModelPrice, type TokenUsage, type CostEstimate, } from "./pricing.js";
14
+ export { priceFor, estimateCost, formatCostLine, formatUsd, formatTokens, looksLikeDario, daysAgo, PRICE_TABLE, PRICE_TABLE_VERIFIED_AT, PRICE_TABLE_STALE_AFTER_DAYS, DARIO_DEFAULT_BASE_URL, type ModelPrice, type TokenUsage, type CostEstimate, } from "./pricing.js";
15
+ export { extractPdfText, isPdfExtractorAvailable, looksLikePdf, joinTextItems, dedupeRunningHeadersFooters, PdfExtractorMissingError, type PdfExtractOptions, type PdfExtractResult, } from "./pdf.js";
16
+ export { ingestLocalPaths, expandPaths, stripTags, type LocalIngestOptions, type LocalIngestResult, } from "./local.js";
15
17
  export { verifyCitations, splitSentences, extractCiteIds, contentTokens, recall, stripSourcesBlock, DEFAULT_CITE_MIN_RECALL, type CitationCheck, type VerificationReport, type VerifyOptions, } from "./verify.js";
16
18
  export { trimTrailingSlashes, stripHashFragment, dedupeKey } from "./url-util.js";
17
19
  export { runDoctor, renderDoctorText, renderDoctorJson, exitCodeFor, scrubPath, formatBytes, formatDuration, classifyFetchError, nodeMeetsMinimum, type CheckResult, type CheckStatus, type DoctorReport, type DoctorOptions, } from "./doctor.js";
@@ -1 +1 @@
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,EACL,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,SAAS,EACT,YAAY,EACZ,cAAc,EACd,WAAW,EACX,sBAAsB,EACtB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,YAAY,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,aAAa,EACb,MAAM,EACN,iBAAiB,EACjB,uBAAuB,EACvB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AACrB,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"}
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,EACL,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,SAAS,EACT,YAAY,EACZ,cAAc,EACd,OAAO,EACP,WAAW,EACX,uBAAuB,EACvB,4BAA4B,EAC5B,sBAAsB,EACtB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,YAAY,GAClB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,YAAY,EACZ,aAAa,EACb,2BAA2B,EAC3B,wBAAwB,EACxB,KAAK,iBAAiB,EACtB,KAAK,gBAAgB,GACtB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,SAAS,EACT,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,GACvB,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,aAAa,EACb,MAAM,EACN,iBAAiB,EACjB,uBAAuB,EACvB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,aAAa,GACnB,MAAM,aAAa,CAAC;AACrB,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
@@ -12,7 +12,9 @@ export { retry, backoffDelay } from "./retry.js";
12
12
  export { resolveConfig } from "./config.js";
13
13
  export { createCache, cacheKey } from "./cache.js";
14
14
  export { runConcurrent } from "./concurrency.js";
15
- export { priceFor, estimateCost, formatCostLine, formatUsd, formatTokens, looksLikeDario, PRICE_TABLE, DARIO_DEFAULT_BASE_URL, } from "./pricing.js";
15
+ export { priceFor, estimateCost, formatCostLine, formatUsd, formatTokens, looksLikeDario, daysAgo, PRICE_TABLE, PRICE_TABLE_VERIFIED_AT, PRICE_TABLE_STALE_AFTER_DAYS, DARIO_DEFAULT_BASE_URL, } from "./pricing.js";
16
+ export { extractPdfText, isPdfExtractorAvailable, looksLikePdf, joinTextItems, dedupeRunningHeadersFooters, PdfExtractorMissingError, } from "./pdf.js";
17
+ export { ingestLocalPaths, expandPaths, stripTags, } from "./local.js";
16
18
  export { verifyCitations, splitSentences, extractCiteIds, contentTokens, recall, stripSourcesBlock, DEFAULT_CITE_MIN_RECALL, } from "./verify.js";
17
19
  export { trimTrailingSlashes, stripHashFragment, dedupeKey } from "./url-util.js";
18
20
  export { runDoctor, renderDoctorText, renderDoctorJson, exitCodeFor, scrubPath, formatBytes, formatDuration, classifyFetchError, nodeMeetsMinimum, } from "./doctor.js";
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,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,EACL,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,SAAS,EACT,YAAY,EACZ,cAAc,EACd,WAAW,EACX,sBAAsB,GAIvB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,aAAa,EACb,MAAM,EACN,iBAAiB,EACjB,uBAAuB,GAIxB,MAAM,aAAa,CAAC;AACrB,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"}
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,EACL,QAAQ,EACR,YAAY,EACZ,cAAc,EACd,SAAS,EACT,YAAY,EACZ,cAAc,EACd,OAAO,EACP,WAAW,EACX,uBAAuB,EACvB,4BAA4B,EAC5B,sBAAsB,GAIvB,MAAM,cAAc,CAAC;AACtB,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,YAAY,EACZ,aAAa,EACb,2BAA2B,EAC3B,wBAAwB,GAGzB,MAAM,UAAU,CAAC;AAClB,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,SAAS,GAGV,MAAM,YAAY,CAAC;AACpB,OAAO,EACL,eAAe,EACf,cAAc,EACd,cAAc,EACd,aAAa,EACb,MAAM,EACN,iBAAiB,EACjB,uBAAuB,GAIxB,MAAM,aAAa,CAAC;AACrB,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,16 @@
1
+ import type { SourceWithContent } from "./synthesize.js";
2
+ export interface LocalIngestOptions {
3
+ pdfMaxPages?: number;
4
+ maxWordsPerSource: number;
5
+ }
6
+ export interface LocalIngestResult {
7
+ sources: Omit<SourceWithContent, "id">[];
8
+ skipped: {
9
+ path: string;
10
+ reason: string;
11
+ }[];
12
+ }
13
+ export declare function ingestLocalPaths(inputs: string[], opts: LocalIngestOptions): Promise<LocalIngestResult>;
14
+ export declare function expandPaths(inputs: string[]): Promise<string[]>;
15
+ export declare function stripTags(html: string): string;
16
+ //# sourceMappingURL=local.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local.d.ts","sourceRoot":"","sources":["../src/local.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAEzD,MAAM,WAAW,kBAAkB;IAEjC,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,EAAE,CAAC;IAGzC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;CAC7C;AASD,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,MAAM,EAAE,EAChB,IAAI,EAAE,kBAAkB,GACvB,OAAO,CAAC,iBAAiB,CAAC,CA6B5B;AA4BD,wBAAsB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAwCrE;AAMD,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAkB9C"}
package/dist/local.js ADDED
@@ -0,0 +1,160 @@
1
+ // Local file source ingestion — `--include=<path>` injects files and
2
+ // directories as pre-fetched sources alongside whatever the search /
3
+ // browser pipeline finds on the web.
4
+ //
5
+ // Supports:
6
+ // .pdf — extracted via src/pdf.ts (requires pdfjs-dist)
7
+ // .md, .txt — read as plain text
8
+ // .html, .htm — stripped of tags, then treated as text
9
+ //
10
+ // A local source's URL is the canonical `file://` URI for its absolute
11
+ // path; the synthesizer treats them like any other source and the
12
+ // citation footer renders a clickable file:// link.
13
+ import { promises as fs } from "node:fs";
14
+ import { resolve, basename, extname, sep } from "node:path";
15
+ import { pathToFileURL } from "node:url";
16
+ import { extractPdfText, PdfExtractorMissingError, } from "./pdf.js";
17
+ const TEXT_EXTS = new Set([".md", ".markdown", ".txt", ".text"]);
18
+ const HTML_EXTS = new Set([".html", ".htm"]);
19
+ const PDF_EXTS = new Set([".pdf"]);
20
+ // Public entry point. Walks every input path (file or directory), collects
21
+ // supported files, and extracts content. Errors on a single file are
22
+ // recorded in `skipped`; the rest of the batch still ingests.
23
+ export async function ingestLocalPaths(inputs, opts) {
24
+ const sources = [];
25
+ const skipped = [];
26
+ const files = await expandPaths(inputs);
27
+ for (const abs of files) {
28
+ const ext = extname(abs).toLowerCase();
29
+ try {
30
+ const content = await readAndExtract(abs, ext, opts);
31
+ if (content === null) {
32
+ skipped.push({ path: abs, reason: `unsupported extension: ${ext}` });
33
+ continue;
34
+ }
35
+ sources.push({
36
+ url: pathToFileURL(abs).href,
37
+ title: basename(abs),
38
+ fetchedAt: Date.now(),
39
+ content: clampWords(content, opts.maxWordsPerSource),
40
+ });
41
+ }
42
+ catch (err) {
43
+ const reason = err instanceof PdfExtractorMissingError
44
+ ? "pdfjs-dist not installed"
45
+ : err.message ?? "extraction failed";
46
+ skipped.push({ path: abs, reason });
47
+ }
48
+ }
49
+ return { sources, skipped };
50
+ }
51
+ async function readAndExtract(abs, ext, opts) {
52
+ if (TEXT_EXTS.has(ext)) {
53
+ return await fs.readFile(abs, "utf-8");
54
+ }
55
+ if (HTML_EXTS.has(ext)) {
56
+ const html = await fs.readFile(abs, "utf-8");
57
+ return stripTags(html);
58
+ }
59
+ if (PDF_EXTS.has(ext)) {
60
+ const buf = await fs.readFile(abs);
61
+ const pdfOpts = { maxPages: opts.pdfMaxPages };
62
+ const result = await extractPdfText(new Uint8Array(buf), pdfOpts);
63
+ return result.text;
64
+ }
65
+ return null;
66
+ }
67
+ // Walks a list of files / dirs / globs into an ordered list of absolute
68
+ // file paths. Directories are walked one level deep by default — recursing
69
+ // into arbitrary trees is opt-in to avoid surprising users with a
70
+ // thousand-file ingestion when they pointed at their home directory.
71
+ // Exported for unit tests.
72
+ export async function expandPaths(inputs) {
73
+ const out = [];
74
+ const seen = new Set();
75
+ for (const raw of inputs) {
76
+ const abs = resolve(raw);
77
+ let stat;
78
+ try {
79
+ stat = await fs.stat(abs);
80
+ }
81
+ catch {
82
+ continue; // Missing path — skip silently; caller handles via no-results.
83
+ }
84
+ if (stat.isFile()) {
85
+ if (!seen.has(abs)) {
86
+ seen.add(abs);
87
+ out.push(abs);
88
+ }
89
+ continue;
90
+ }
91
+ if (stat.isDirectory()) {
92
+ const entries = await fs.readdir(abs, { withFileTypes: true });
93
+ for (const e of entries) {
94
+ if (!e.isFile())
95
+ continue;
96
+ const ext = extname(e.name).toLowerCase();
97
+ if (!TEXT_EXTS.has(ext) &&
98
+ !HTML_EXTS.has(ext) &&
99
+ !PDF_EXTS.has(ext)) {
100
+ continue;
101
+ }
102
+ const full = abs + sep + e.name;
103
+ if (!seen.has(full)) {
104
+ seen.add(full);
105
+ out.push(full);
106
+ }
107
+ }
108
+ }
109
+ }
110
+ return out;
111
+ }
112
+ // Exported for unit tests. Minimal HTML→text — drops <script>/<style>
113
+ // and tags, decodes a small set of entities. The browser's text
114
+ // extraction is far better; this is for offline files only (not for
115
+ // sanitizing untrusted input).
116
+ export function stripTags(html) {
117
+ return html
118
+ // Lazy match with `\b[^>]*>` to tolerate whitespace, attributes, or
119
+ // other junk between the tag name and the closing `>` — browsers
120
+ // accept </script foo>, </script\t\n bar>, </style xx>, etc., so a
121
+ // strict </script\s*> check would let those slip through. Bounded
122
+ // ([^>]* with no nested quantifier) so no polynomial-backtracking
123
+ // risk. Scope is offline-trusted input — not a security sanitizer.
124
+ .replace(/<script\b[\s\S]*?<\/script\b[^>]*>/gi, " ")
125
+ .replace(/<style\b[\s\S]*?<\/style\b[^>]*>/gi, " ")
126
+ .replace(/<!--[\s\S]*?-->/g, " ")
127
+ .replace(/<[^>]+>/g, " ")
128
+ // Single-pass entity decode. Sequential .replace() calls would
129
+ // double-unescape "&amp;lt;" to "<"; one pass over the original
130
+ // string preserves the literal that the author wrote.
131
+ .replace(/&(?:amp|lt|gt|quot|nbsp|#39);/gi, decodeEntity)
132
+ .replace(/\s+/g, " ")
133
+ .trim();
134
+ }
135
+ function decodeEntity(match) {
136
+ switch (match.toLowerCase()) {
137
+ case "&amp;":
138
+ return "&";
139
+ case "&lt;":
140
+ return "<";
141
+ case "&gt;":
142
+ return ">";
143
+ case "&quot;":
144
+ return '"';
145
+ case "&nbsp;":
146
+ return " ";
147
+ case "&#39;":
148
+ return "'";
149
+ default:
150
+ return match;
151
+ }
152
+ }
153
+ // Word-cap, mirrors what extract.ts does for web sources.
154
+ function clampWords(text, maxWords) {
155
+ const words = text.split(/\s+/).filter(Boolean);
156
+ if (words.length <= maxWords)
157
+ return text.trim();
158
+ return words.slice(0, maxWords).join(" ") + " …";
159
+ }
160
+ //# sourceMappingURL=local.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"local.js","sourceRoot":"","sources":["../src/local.ts"],"names":[],"mappings":"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"}
package/dist/pdf.d.ts ADDED
@@ -0,0 +1,28 @@
1
+ export interface PdfExtractOptions {
2
+ maxPages?: number;
3
+ }
4
+ export interface PdfExtractResult {
5
+ text: string;
6
+ pageCount: number;
7
+ parsedPages: number;
8
+ truncated: boolean;
9
+ }
10
+ export declare class PdfExtractorMissingError extends Error {
11
+ constructor();
12
+ }
13
+ export declare function isPdfExtractorAvailable(): Promise<boolean>;
14
+ export declare function _resetPdfjsCache(): void;
15
+ export declare function extractPdfText(bytes: Uint8Array, opts?: PdfExtractOptions): Promise<PdfExtractResult>;
16
+ interface PdfTextItem {
17
+ str?: string;
18
+ hasEOL?: boolean;
19
+ }
20
+ export declare function joinTextItems(items: PdfTextItem[]): string;
21
+ export declare function dedupeRunningHeadersFooters(pages: string[]): string[];
22
+ export declare function looksLikePdf(args: {
23
+ url?: string;
24
+ finalUrl?: string;
25
+ contentType?: string;
26
+ }): boolean;
27
+ export {};
28
+ //# sourceMappingURL=pdf.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../src/pdf.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,iBAAiB;IAGhC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,wBAAyB,SAAQ,KAAK;;CAOlD;AAwBD,wBAAsB,uBAAuB,IAAI,OAAO,CAAC,OAAO,CAAC,CAEhE;AAGD,wBAAgB,gBAAgB,IAAI,IAAI,CAEvC;AAED,wBAAsB,cAAc,CAClC,KAAK,EAAE,UAAU,EACjB,IAAI,GAAE,iBAAsB,GAC3B,OAAO,CAAC,gBAAgB,CAAC,CA+D3B;AAUD,UAAU,WAAW;IACnB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAKD,wBAAgB,aAAa,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,MAAM,CAc1D;AAKD,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,EAAE,CAyBrE;AAgCD,wBAAgB,YAAY,CAAC,IAAI,EAAE;IACjC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CASV"}
package/dist/pdf.js ADDED
@@ -0,0 +1,195 @@
1
+ // PDF text extraction — optional path, lazy-loaded.
2
+ //
3
+ // Real research questions hit PDFs constantly (academic papers, RFCs,
4
+ // standards bodies). Without this module, deepdive returns near-empty
5
+ // content for those URLs because the headless browser only extracts the
6
+ // rendered viewer chrome.
7
+ //
8
+ // Architectural choice: pdfjs-dist is NOT a runtime dependency of
9
+ // deepdive. It is dynamically imported the first time a PDF is fetched,
10
+ // and a clear "install pdfjs-dist to enable PDF support" message is
11
+ // surfaced if it's missing. This keeps the headline "one runtime
12
+ // dependency" accurate for default installs while making the feature
13
+ // available to anyone who wants it via:
14
+ //
15
+ // npm install -g pdfjs-dist
16
+ //
17
+ // `deepdive doctor` reports the install state.
18
+ export class PdfExtractorMissingError extends Error {
19
+ constructor() {
20
+ super("pdfjs-dist not installed — install with `npm install -g pdfjs-dist` to enable PDF source support");
21
+ this.name = "PdfExtractorMissingError";
22
+ }
23
+ }
24
+ // Lazy resolver for pdfjs-dist. Cached after the first call so we don't
25
+ // re-resolve on every PDF in a multi-PDF run. Returns null if the module
26
+ // is not installed; the caller is expected to surface a clear message.
27
+ let pdfjsCache = undefined;
28
+ async function loadPdfjs() {
29
+ if (pdfjsCache !== undefined)
30
+ return pdfjsCache;
31
+ try {
32
+ // The legacy build is the only one that runs cleanly in Node without
33
+ // configuring a worker. Keep this import path as a string literal so
34
+ // bundlers / tsc don't try to resolve it at compile time.
35
+ const mod = await import(
36
+ /* @vite-ignore */ "pdfjs-dist/legacy/build/pdf.mjs");
37
+ pdfjsCache = mod;
38
+ return mod;
39
+ }
40
+ catch {
41
+ pdfjsCache = null;
42
+ return null;
43
+ }
44
+ }
45
+ // True iff pdfjs-dist is importable. Exported for doctor.
46
+ export async function isPdfExtractorAvailable() {
47
+ return (await loadPdfjs()) !== null;
48
+ }
49
+ // Resets the cache. Exported for tests; not used in production.
50
+ export function _resetPdfjsCache() {
51
+ pdfjsCache = undefined;
52
+ }
53
+ export async function extractPdfText(bytes, opts = {}) {
54
+ const pdfjs = (await loadPdfjs());
55
+ if (!pdfjs)
56
+ throw new PdfExtractorMissingError();
57
+ // pdfjs-dist's legacy build for Node still wants a worker source path
58
+ // even when `disableWorker: true` is set — it uses it to dynamically
59
+ // import the worker module for the "fake worker" inline path. Resolving
60
+ // the bundled worker file once and assigning its URL satisfies that
61
+ // requirement without spawning a real Worker thread.
62
+ if (pdfjs.GlobalWorkerOptions && !pdfjs.GlobalWorkerOptions.workerSrc) {
63
+ try {
64
+ const { createRequire } = await import("node:module");
65
+ const req = createRequire(import.meta.url);
66
+ pdfjs.GlobalWorkerOptions.workerSrc = req.resolve("pdfjs-dist/legacy/build/pdf.worker.mjs");
67
+ }
68
+ catch {
69
+ // Best-effort — if resolution fails, the getDocument call below
70
+ // will throw a clearer error with the original message.
71
+ }
72
+ }
73
+ const maxPages = Math.max(1, opts.maxPages ?? 50);
74
+ // pdfjs-dist mutates the buffer it parses; pass a copy so cache
75
+ // round-trips don't corrupt across uses.
76
+ const buf = bytes.slice();
77
+ const doc = await pdfjs
78
+ .getDocument({
79
+ data: buf,
80
+ disableWorker: true,
81
+ isEvalSupported: false,
82
+ useSystemFonts: false,
83
+ })
84
+ .promise;
85
+ const pageCount = doc.numPages;
86
+ const parsedPages = Math.min(pageCount, maxPages);
87
+ const pageTexts = [];
88
+ for (let i = 1; i <= parsedPages; i++) {
89
+ const page = await doc.getPage(i);
90
+ const content = await page.getTextContent();
91
+ pageTexts.push(joinTextItems(content.items));
92
+ }
93
+ await doc.destroy().catch(() => undefined);
94
+ const text = dedupeRunningHeadersFooters(pageTexts).join("\n\n");
95
+ return {
96
+ text,
97
+ pageCount,
98
+ parsedPages,
99
+ truncated: parsedPages < pageCount,
100
+ };
101
+ }
102
+ // Exported for unit tests. Joins a page's text-content items into
103
+ // readable prose, emitting a single space between items unless the item
104
+ // signals a hard line break via `hasEOL`.
105
+ export function joinTextItems(items) {
106
+ const out = [];
107
+ for (const item of items) {
108
+ const s = item.str ?? "";
109
+ if (!s && !item.hasEOL)
110
+ continue;
111
+ if (item.hasEOL) {
112
+ out.push(s);
113
+ out.push("\n");
114
+ }
115
+ else {
116
+ out.push(s);
117
+ out.push(" ");
118
+ }
119
+ }
120
+ return collapseWhitespace(out.join(""));
121
+ }
122
+ // Exported for unit tests. Drops lines that appear on >= 60% of pages
123
+ // (running headers / footers / page numbers). Frequency-based — does
124
+ // nothing on single-page PDFs.
125
+ export function dedupeRunningHeadersFooters(pages) {
126
+ if (pages.length < 3)
127
+ return pages;
128
+ const lineCounts = new Map();
129
+ for (const page of pages) {
130
+ const seenInPage = new Set();
131
+ for (const line of page.split(/\n+/)) {
132
+ const norm = normalizeForDedup(line);
133
+ if (!norm)
134
+ continue;
135
+ if (seenInPage.has(norm))
136
+ continue;
137
+ seenInPage.add(norm);
138
+ lineCounts.set(norm, (lineCounts.get(norm) ?? 0) + 1);
139
+ }
140
+ }
141
+ const cutoff = Math.ceil(pages.length * 0.6);
142
+ const drop = new Set();
143
+ for (const [line, count] of lineCounts) {
144
+ if (count >= cutoff)
145
+ drop.add(line);
146
+ }
147
+ if (drop.size === 0)
148
+ return pages;
149
+ return pages.map((p) => p
150
+ .split(/\n+/)
151
+ .filter((line) => !drop.has(normalizeForDedup(line)))
152
+ .join("\n"));
153
+ }
154
+ function normalizeForDedup(line) {
155
+ // Treat "Page 5" and "Page 12" as different (they correctly count
156
+ // distinctly) but ignore leading/trailing whitespace.
157
+ return line.trim().replace(/\s+/g, " ").toLowerCase();
158
+ }
159
+ function collapseWhitespace(s) {
160
+ // Per-line normalization avoids the polynomial backtracking that
161
+ // ` *\n */g` would do on inputs with long horizontal whitespace
162
+ // runs and no newlines (CodeQL flagged the earlier form). Every
163
+ // operation here is single-pass linear: split → trim → filter.
164
+ const lines = s.split(/\r?\n/).map((line) => line.replace(/[ \t\f\v]+/g, " ").trim());
165
+ const out = [];
166
+ let blanks = 0;
167
+ for (const line of lines) {
168
+ if (line === "") {
169
+ blanks++;
170
+ if (blanks <= 1)
171
+ out.push("");
172
+ }
173
+ else {
174
+ blanks = 0;
175
+ out.push(line);
176
+ }
177
+ }
178
+ return out.join("\n").trim();
179
+ }
180
+ // Returns true when the URL or content-type plausibly points at a PDF.
181
+ // Exported for unit tests and for browser.ts integration.
182
+ export function looksLikePdf(args) {
183
+ const ct = (args.contentType ?? "").toLowerCase();
184
+ if (ct.startsWith("application/pdf"))
185
+ return true;
186
+ for (const u of [args.finalUrl, args.url]) {
187
+ if (!u)
188
+ continue;
189
+ const lower = u.toLowerCase().split(/[?#]/)[0];
190
+ if (lower.endsWith(".pdf"))
191
+ return true;
192
+ }
193
+ return false;
194
+ }
195
+ //# sourceMappingURL=pdf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdf.js","sourceRoot":"","sources":["../src/pdf.ts"],"names":[],"mappings":"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"}