@oomkapwn/enquire-mcp 3.7.15 → 3.7.16
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/CHANGELOG.md +92 -0
- package/README.md +4 -4
- package/SECURITY.md +26 -0
- package/dist/doctor.js +1 -1
- package/dist/fts5.d.ts +8 -3
- package/dist/fts5.d.ts.map +1 -1
- package/dist/fts5.js +29 -7
- package/dist/fts5.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/ocr.d.ts +42 -3
- package/dist/ocr.d.ts.map +1 -1
- package/dist/ocr.js +41 -2
- package/dist/ocr.js.map +1 -1
- package/dist/pdf.d.ts +16 -1
- package/dist/pdf.d.ts.map +1 -1
- package/dist/pdf.js +16 -1
- package/dist/pdf.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +6 -1
- package/dist/server.js.map +1 -1
- package/dist/tools/meta.d.ts +9 -1
- package/dist/tools/meta.d.ts.map +1 -1
- package/dist/tools/meta.js +25 -1
- package/dist/tools/meta.js.map +1 -1
- package/dist/tools/search.d.ts.map +1 -1
- package/dist/tools/search.js +8 -2
- package/dist/tools/search.js.map +1 -1
- package/dist/tools/write.d.ts +8 -0
- package/dist/tools/write.d.ts.map +1 -1
- package/dist/tools/write.js +46 -10
- package/dist/tools/write.js.map +1 -1
- package/dist/vault.d.ts +75 -1
- package/dist/vault.d.ts.map +1 -1
- package/dist/vault.js +154 -3
- package/dist/vault.js.map +1 -1
- package/dist/watcher.d.ts +15 -0
- package/dist/watcher.d.ts.map +1 -1
- package/dist/watcher.js +37 -7
- package/dist/watcher.js.map +1 -1
- package/docs/COMPARISON.md +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,98 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project will be documented here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and the project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
4
4
|
|
|
5
|
+
## [3.7.16] — 2026-05-18
|
|
6
|
+
|
|
7
|
+
> **TL;DR:** Round-18 external audit response — 5th independent external audit since v3.6.0, run on the v3.7.5 codebase (commit `b9daf39`). The cascade v3.7.6 → v3.7.15 had already closed many findings; this patch addresses the still-open critical + high-impact items. **10 fixes** landed: 5 P1 High (OCR network disclosure + 200-page cap, persistent cache + privacy filters, PDF watcher lifecycle, macOS case-insensitive write bypass), 3 P2 Medium (title-based write ambiguity = silent data corruption, validateNoteProposal privacy check, FTS5 tag LIKE wildcard escape), 2 P3 Low (PDF install hint version, FTS5 reserved-word quoting, issue template ChatGPT). Plus 1 graph-boost path bug (P2-16, C# Notes.md). **+0 tests** (1 test contract change for P3-28). 4 architectural findings deferred to v3.8.0 (serve-http parity, FTS5/embedding chunking parity, search underfill, OCR timeout/concurrency).
|
|
8
|
+
|
|
9
|
+
**Patch — round-18 external audit batch.**
|
|
10
|
+
|
|
11
|
+
### Already FIXED by the v3.7.6-15 cascade
|
|
12
|
+
|
|
13
|
+
The audit was on v3.7.5 — these findings were closed before this patch:
|
|
14
|
+
|
|
15
|
+
- **#9 FTS5 reindex non-atomic** → v3.7.10 audit #10 (transaction wrap)
|
|
16
|
+
- **#17 TOOL_MANIFEST not in exports** → v3.7.12 H4
|
|
17
|
+
- **#19 7 required CI gates** → v3.7.13 M5 (bumped to 8)
|
|
18
|
+
- **#22 stale test counts (786/670)** → v3.7.11-15 cascade (now gated at 816)
|
|
19
|
+
- **#24 reranker "5 models" misleading** → v3.7.12 L4 + v3.7.15 R17-3
|
|
20
|
+
- **#19 partial** "CodeQL/Analyze workflows don't exist" — actually false positive: those run via GitHub Default Setup (no committed .yml needed); they DO execute and show on every PR
|
|
21
|
+
|
|
22
|
+
### P1 High fixes (5)
|
|
23
|
+
|
|
24
|
+
- **P1-1 — OCR Tesseract network policy disclosure** (`src/ocr.ts:147+`, `SECURITY.md`). Tesseract.js fetches `<lang>.traineddata` (~10 MB per language) from a CDN on first use — this is the only outbound network call possible in serve mode, contradicting the broader "zero outbound network calls" framing. Pre-3.7.16 the project's privacy-promise didn't disclose this. Fix: stderr disclosure warning fires once per OCR worker creation (`enquire OCR: Tesseract.js may fetch language pack '<lang>' from a CDN on first use...`), plus new SECURITY.md section "OCR (`obsidian_ocr_pdf`): network posture" documenting the trade-off and the v3.8.0 roadmap (offline `install-ocr-lang` subcommand + strict cache check).
|
|
25
|
+
- **P1-2 — OCR `DEFAULT_OCR_MAX_PAGES` safety cap** (`src/ocr.ts`). Pre-3.7.16 a single bearer-authenticated HTTP request could trigger unbounded OCR on a 10000-page PDF — minutes-to-hours of CPU pegged. Now defaults to 200 pages per call (`maxPages` opt to override), checked BEFORE the Tesseract worker spins up so no resources allocate on adversarial inputs.
|
|
26
|
+
- **P1-4 — Persistent cache + privacy filter drift** (`src/vault.ts` `loadDiskCache`). Pre-3.7.16, if a user filled the cache with all notes (no filter), then added `--exclude-glob "Personal/**"` on the next start, the excluded note bodies were loaded back from disk into the in-memory cache (and rewritten on the next save). At-rest privacy boundary broken across filter changes. Now `loadDiskCache` runs every candidate through `isExcluded()` against the LIVE filter state; misses are dropped and `cacheDirty` is set so the next save persists the pruned snapshot. Stderr disclosure when entries are dropped by privacy.
|
|
27
|
+
- **P1-5 — `--watch --include-pdfs` PDF watcher lifecycle** (`src/watcher.ts`, `src/server.ts`). Pre-3.7.16 the watcher hard-coded `.md`-only event handling, so PDFs added/changed/deleted/moved during a serve session left stale rows in FTS5 until restart. New `WatcherOptions.includePdfs`; when on AND `--include-pdfs` is on, the watcher dispatches `.pdf` events to `FtsIndex.reindexPdfFile()` / `dropFile()` via lazy `import("./pdf.js")`.
|
|
28
|
+
- **P1-6 — macOS / Windows case-insensitive write privacy bypass** (`src/vault.ts` `writeNote` + `renameFile`). Default macOS HFS+/APFS and Windows NTFS are case-insensitive. Pre-3.7.16 the write-path privacy check ran on the LEXICAL relative path (`personal/secret.md` ≠ `Personal/secret.md` to a case-sensitive `--exclude-glob`), but the actual write landed in the same physical directory. Fix: new private `canonicalRelForPrivacyCheck()` helper walks up from the target until it finds an existing parent, resolves its realpath (canonical case from disk), then re-joins the not-yet-existing tail. Linux ext4 unaffected (realpath is a no-op for case-sensitive FS).
|
|
29
|
+
|
|
30
|
+
### P2 Medium fixes (4)
|
|
31
|
+
|
|
32
|
+
- **P2-13 — Title-based write silent data corruption** (`src/vault.ts` + `src/tools/write.ts`). Pre-3.7.16 `findByTitle(title)` returned the first walk-order match; write tools (`appendToNote`, `frontmatterSet`) silently mutated whichever of `Work/Daily.md` / `Personal/Daily.md` came first. New `Vault.findAllByTitle()` + write-path now throws on `length > 1` with candidate paths listed: `Ambiguous title "Daily" — 2 notes share that basename: Personal/Daily.md, Work/Daily.md. Pass an explicit \`path\` argument instead.` Read tools keep the permissive behavior (no mutation risk).
|
|
33
|
+
- **P2-14 — `validateNoteProposal` privacy check** (`src/tools/meta.ts`). Pre-3.7.16 the pre-write validator returned green-light for proposals into excluded destinations; the actual write later failed at runtime. New `path-excluded` error class returned by the validator when `vault.exclusionReason(normalizedPath)` is non-null.
|
|
34
|
+
- **P2-15 — FTS5 tag LIKE wildcard injection** (`src/fts5.ts:482`). Pre-3.7.16 `where.push("(',' || chunks.tags || ',') LIKE ?")` accepted user-supplied tags containing `%` (matches anything) or `_` (matches one char). `tag: "%"` returned every chunk; `tag: "core_team"` matched `coreXteam`. Fix: escape `%`, `_`, and `\` with `\\`, add `ESCAPE '\\'` clause.
|
|
35
|
+
- **P2-16 — Graph boost path mangling on `#`** (`src/tools/search.ts:1456,1493`). Pre-3.7.16 `f.id.split("#")[0]` mangled `C# Notes.md` → `C` (drops the suffix as if it were a chunk index). Now uses regex `id.replace(/#\d+$/, "")` that only strips numeric chunk suffixes at end of id.
|
|
36
|
+
|
|
37
|
+
### P3 Low fixes (3)
|
|
38
|
+
|
|
39
|
+
- **P3-23 — PDF install hint version** (`src/pdf.ts`, `src/ocr.ts`, `src/doctor.ts`). The "missing optional dep" error message told users to install `pdfjs-dist@^4.10.38` but the actual `optionalDependencies` pin is `^5.7.284`. Now consistent across all 3 surfaces.
|
|
40
|
+
- **P3-28 — `safeFts5Query` reserved words** (`src/fts5.ts:581+`). Pre-3.7.16 `safeFts5Query("operating systems AND databases")` STRIPPED `AND`, dropping a real query term silently. AND there was no way to search for the literal word "AND". Now reserved words (`AND`/`OR`/`NOT`/`NEAR`) get double-quoted as literals — FTS5 treats them as the literal token, not the boolean operator. The existing test was updated to reflect the new contract.
|
|
41
|
+
- **P3-30 — Issue template ChatGPT option** (`.github/ISSUE_TEMPLATE/bug_report.yml`). Added "Claude Desktop" + "ChatGPT (custom GPT / Actions)" to the client dropdown (both were missing despite heavy marketing).
|
|
42
|
+
|
|
43
|
+
### Audit findings DEFERRED to v3.8.0
|
|
44
|
+
|
|
45
|
+
- **P1-3 serve-http flag parity** (`--enable-reranker` / `--use-hnsw` / `--include-pdfs` etc. missing from `serve-http`). Multi-day refactor; on the v3.8.0 backlog since round-15 M4.
|
|
46
|
+
- **#2 OCR concurrency / timeout** (per-call timeout, concurrent-request cap, HTTP-transport operation budget). Beyond the 200-page cap from P1-2.
|
|
47
|
+
- **P2-7 search underfill** after privacy filter post-processing (iterative over-fetch design change).
|
|
48
|
+
- **P2-8 FTS5/embedding chunking source mismatch** (standardize on parsed body — design change).
|
|
49
|
+
- **P2-10 stateful maxSessions race** (concurrent initialize past cap — needs slot-reservation design).
|
|
50
|
+
- **P2-11 HTTP server close cleanup** (centralized cleanup on `httpServer.close()`).
|
|
51
|
+
- **P2-12 doctor privacy filters** (add `--exclude-glob` / `--read-paths` to doctor).
|
|
52
|
+
- **P2-18 npm package docs broken links** (audit suggested either include `examples/bench/scripts` or rewrite docs to GitHub absolute URLs — partially handled by v3.7.13 L7 + v3.7.14 file-list explicit listing; needs follow-up sweep).
|
|
53
|
+
- **P2-20 canonical CLI docs incomplete** (reranker / HNSW / PDF / late-chunking / quantization flags missing from `docs/api.md` table).
|
|
54
|
+
- **P3-21 `obsidian_full_text_search` gating wording drift** in cli-help.
|
|
55
|
+
- **P3-25 Heading extraction tilde fences** (`~~~` blocks not detected the same way as backticks).
|
|
56
|
+
- **P3-26 Diagnostic substring search body vs raw** (decide contract — `content` includes frontmatter, docs say "body").
|
|
57
|
+
- **P3-27 HNSW metadata shallow validation** (validate `meta.dim`, `meta.size`, rows shape).
|
|
58
|
+
- **P3-29 setup-snippet mkdir** (`docs/http-transport.md` + `examples/chatgpt-actions.md`).
|
|
59
|
+
|
|
60
|
+
### Pre-merge RCA sweep (in-release recursion prevention)
|
|
61
|
+
|
|
62
|
+
Per the v3.7.15 rule *"single class-sweep is not enough — same-release recursion happens"*, I ran a post-fix class-sweep BEFORE merging this PR. Found **8 additional issues inside v3.7.16's own diff** + 2 cross-class sibling bugs. All fixed in this same patch:
|
|
63
|
+
|
|
64
|
+
| Class | Finding | Fix |
|
|
65
|
+
|---|---|---|
|
|
66
|
+
| A (TSDoc drift) | `loadDiskCache` header didn't mention P1-4 privacy drop | header updated |
|
|
67
|
+
| A (TSDoc drift) | `writeNote` header didn't mention P1-6 canonical case check | header updated |
|
|
68
|
+
| A (TSDoc drift) | `renameFile` header didn't mention P1-6 (mentioned v3.7.14 F2 but missed P1-6 layer) | header updated |
|
|
69
|
+
| A (TSDoc drift) | `findByTitle` header still claimed "silently pick one" (now P2-13-strict for writes) | cross-ref to `findAllByTitle` + `strictOnAmbiguousTitle` |
|
|
70
|
+
| A (TSDoc drift) | `safeFts5Query` header still claimed "strips reserved keywords" (P3-28 changed to quote-as-literal) | header updated |
|
|
71
|
+
| A (TSDoc drift) | `validateNoteProposal` header didn't list `path-excluded` in errors[].kind enum | header updated |
|
|
72
|
+
| A (TSDoc drift) | `extractPdfWithOcr` header didn't mention P1-1 (network) or P1-2 (200-page) | header updated |
|
|
73
|
+
| C (P1-6 sibling) | `renameNote` wrapper at `tools/write.ts:199` did lexical exclusion-check before delegating to `renameFile` — case-variant bypass wasted O(N) backlink work before the inner canonical check caught it | new `Vault.canonicalRelForPrivacyCheckPublic()`; wrapper now pre-checks canonically |
|
|
74
|
+
| F (P1-2 sibling) | `extractPdfText` (called by `obsidian_read_pdf` without `pages`) had no page-count cap — a 5MB / 2000-page PDF could peg CPU for minutes via HTTP | new `DEFAULT_PDF_MAX_PAGES = 500` cap with same pattern as OCR's `DEFAULT_OCR_MAX_PAGES` |
|
|
75
|
+
|
|
76
|
+
**Classes verified clean (no new findings):**
|
|
77
|
+
|
|
78
|
+
- **Class D** (cache/index privacy lifecycle siblings) — `vault.listMarkdown()` filters via `isExcluded()`, and the FTS5/EmbedDb `diff()` sync marks previously-indexed-now-excluded files as deleted on next sync. Tested by inspection.
|
|
79
|
+
- **Class E** (watcher coverage gaps) — `.canvas` and `.base` files are not FTS5-indexed (no chunks stored), so watcher's `.md`+`.pdf`-only coverage is complete. Only the `--include-pdfs` runtime gap (closed by P1-5) was real.
|
|
80
|
+
- **Class G** (user-input wildcard injection siblings) — other `LIKE` usages (`embed-db.ts:475`) already use `substr` not `LIKE`. RegExp constructions from user input (`new RegExp(args.pattern)` in `getOpenQuestions`, `dql.ts`) are documented as intentional advanced-user features.
|
|
81
|
+
- **Class H** (path/wikilink special-char parsing siblings) — wikilink inner parsing (`split("|")[0]` then `split("#")[0]` then `split("^")[0]` in `validateNoteProposal`) is correct per Obsidian wikilink grammar (`#` IS the section separator INSIDE wikilink inner text, unlike chunk-id parsing for graph boost).
|
|
82
|
+
- **Class I** (title-ambiguity write siblings) — only `appendToNote` and `frontmatterSet` accept `title`; both now use `strictOnAmbiguousTitle: true`. `archiveNote` and `replaceInNotes` require `path` (no title path → no ambiguity surface).
|
|
83
|
+
|
|
84
|
+
### Stats
|
|
85
|
+
|
|
86
|
+
- **816 tests** (unchanged count). 1 test CONTRACT change for P3-28 (quotes vs strips).
|
|
87
|
+
- **+0 docs-consistency invariants** (P2-13 + P1-6 enforced at runtime).
|
|
88
|
+
- **+10 RCA-driven fixes** discovered + fixed BEFORE merge (8 TSDoc + 1 Class C sibling + 1 Class F sibling).
|
|
89
|
+
- All 8 required CI gates pass locally.
|
|
90
|
+
|
|
91
|
+
### Method
|
|
92
|
+
|
|
93
|
+
5th independent external audit since v3.6.0. The "audit on v3.7.5 codebase but processed at v3.7.15 state" pattern is now established as the verification workflow — each external audit finds new failure modes that the previous releases' methodologies didn't cover. Round-18 added the OCR network-policy honesty (new privacy-promise class), persistent-cache filter lifecycle (new at-rest privacy class), and case-insensitive filesystem bypass (new portability class).
|
|
94
|
+
|
|
95
|
+
**Pre-merge RCA sweep is now mandatory** (Rule since v3.7.15 — verified working this release): caught 10 additional findings INSIDE v3.7.16's own diff before they shipped as overclaim #10+. This is the rule firing as designed — same-release class recursion happens, and the only way to prevent it from leaking into production is to scan the patch's own diff for fresh instances of every class it claims to fix.
|
|
96
|
+
|
|
5
97
|
## [3.7.15] — 2026-05-18
|
|
6
98
|
|
|
7
99
|
> **TL;DR:** Round-17 post-merge audit on v3.7.14 — **meta-recursion finding**: the v3.7.14 patch that closed overclaim #6 (F1) introduced overclaim **#7 inside its own release**. v3.7.14 F2 fixed `vault.renameFile` internals (stat→link()+unlink()) but left the function's TSDoc header claiming *"Atomic via fs.rename"* — exactly the same class as F1 it had just fixed. Plus 2 unfixed instances of v3.7.12 L4's reranker-honesty class missed in COMPARISON.md. 3 fixes + 1 new invariant. **+1 test** (816 total). Documents the methodological lesson: **a single class-sweep round isn't enough — same-release recursion is a real failure mode and requires post-merge re-sweep.**
|
package/README.md
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
[](https://github.com/oomkapwn/enquire-mcp/actions/workflows/ci.yml)
|
|
12
12
|
[](https://www.npmjs.com/package/@oomkapwn/enquire-mcp)
|
|
13
13
|
[](https://www.npmjs.com/package/@oomkapwn/enquire-mcp)
|
|
14
|
-
[](#trust)
|
|
15
15
|
[](./STABILITY.md)
|
|
16
16
|
[](https://slsa.dev/spec/v1.0/levels#build-l3)
|
|
17
17
|
[](https://modelcontextprotocol.io/)
|
|
@@ -36,7 +36,7 @@ Your Obsidian vault becomes **persistent, queryable long-term memory** for any M
|
|
|
36
36
|
> 2. **Best-in-class retrieval.** Hybrid BM25 + multilingual embeddings + BGE cross-encoder reranker fused via RRF, scaled with HNSW + int8 quantization. The same IR stack a search startup would build — open-sourced, in one binary.
|
|
37
37
|
> 3. **Zero cloud calls during serve.** Models cached locally (one-time download from HuggingFace). Your vault content never leaves your machine. Air-gap-safe by default.
|
|
38
38
|
|
|
39
|
-
**44 tools · 19 MCP prompts ·
|
|
39
|
+
**44 tools · 19 MCP prompts · 818 unit tests · 50+ languages · v3.7.x stable · semver-bound · MIT · SLSA-3 signed.**
|
|
40
40
|
|
|
41
41
|
---
|
|
42
42
|
|
|
@@ -112,7 +112,7 @@ Auto-generated **[API reference at oomkapwn.github.io/enquire-mcp](https://oomka
|
|
|
112
112
|
| **GraphRAG-light** (wikilink community detection via Louvain modularity) | ✅ **only here** | ❌ | ❌ |
|
|
113
113
|
| **Standalone `.base` query execution** (works without Obsidian running) | ✅ **only here** | ❌ | ❌ delegates to Obsidian |
|
|
114
114
|
| **HyDE retrieval** (Gao et al 2023) + sub-question decomposition | ✅ **only here** | ❌ | ❌ |
|
|
115
|
-
| **
|
|
115
|
+
| **818 unit tests · 8 required + 4 advisory CI gates per PR** | ✅ | n/a | rare |
|
|
116
116
|
| **SLSA-3 build provenance** | ✅ | n/a | ❌ |
|
|
117
117
|
| **Semver-bound public surface** ([STABILITY.md](./STABILITY.md)) | ✅ | n/a | ❌ |
|
|
118
118
|
| Standalone (no Obsidian plugin needed) | ✅ | ❌ requires Obsidian | varies |
|
|
@@ -222,7 +222,7 @@ Channel: `npm install @oomkapwn/enquire-mcp` → latest stable. Full changelog:
|
|
|
222
222
|
```bash
|
|
223
223
|
git clone https://github.com/oomkapwn/enquire-mcp.git
|
|
224
224
|
cd enquire-mcp && npm install
|
|
225
|
-
npm test # full suite (
|
|
225
|
+
npm test # full suite (818 tests, ~5s)
|
|
226
226
|
npm run lint # zero warnings
|
|
227
227
|
npm run build # tsc → dist/
|
|
228
228
|
```
|
package/SECURITY.md
CHANGED
|
@@ -156,6 +156,32 @@ The `obsidian_embeddings_search` tool plus the `install-model` and `build-embedd
|
|
|
156
156
|
- If `@huggingface/transformers` failed to install (e.g., user ran `npm install --omit=optional`, or the platform lacks ONNX runtime binaries), the embedding tools and subcommands surface a clean error message pointing the user at `npm install @huggingface/transformers` — never a cryptic module-not-found stack trace.
|
|
157
157
|
- Read-only / TF-IDF / FTS5 surfaces are unaffected. The server starts and serves all v1.x tools normally.
|
|
158
158
|
|
|
159
|
+
## OCR (`obsidian_ocr_pdf`): network posture (v3.7.16 disclosure)
|
|
160
|
+
|
|
161
|
+
The `obsidian_ocr_pdf` tool (v2.10+) uses `tesseract.js` for image-PDF OCR. Tesseract.js's default behavior is to fetch the `<lang>.traineddata` file (~10 MB per language) from `https://tessdata.projectnaptha.com/4.0.0/` on first use of each language.
|
|
162
|
+
|
|
163
|
+
**This is the only outbound network call possible in serve mode** — broader "zero outbound network calls in serve mode" framing in README needs this caveat. v3.7.16 added a stderr disclosure warning that fires once per OCR worker creation, so operators see the network-fetch behavior clearly in their logs / journald.
|
|
164
|
+
|
|
165
|
+
**Mitigations:**
|
|
166
|
+
- The OCR tool is only registered when the optional dependencies (`tesseract.js`, `@napi-rs/canvas`) are installed — `npm install --omit=optional` leaves OCR fully unavailable, restoring the strict offline posture.
|
|
167
|
+
- Pre-download trained-data files by running OCR once per language on a known-online machine, then copy the resulting `tessdata/` directory to the offline deployment.
|
|
168
|
+
- The runtime warning is unconditional — it fires whether the trained-data is cached or not, because the WORKER COULD fall back to the CDN if the cache is somehow incomplete.
|
|
169
|
+
|
|
170
|
+
**Roadmap (v3.8.0):**
|
|
171
|
+
- An `enquire-mcp install-ocr-lang <code>` subcommand to mirror `install-model` for embeddings (explicit, opt-in network call; offline posture for `serve`).
|
|
172
|
+
- Strict cache check before `createWorker()` that fails fast on missing trained-data, with a clear "run `install-ocr-lang <code>`" message.
|
|
173
|
+
- `--enable-ocr-online` flag for users who explicitly want the CDN fallback.
|
|
174
|
+
|
|
175
|
+
Tracked in CHANGELOG under v3.7.16 P1-1.
|
|
176
|
+
|
|
177
|
+
### OCR resource limits (v3.7.16 P1-2)
|
|
178
|
+
|
|
179
|
+
OCR is the slowest path in the project — ~1-2s per page on M1 CPU at default scale. Pre-3.7.16 a single bearer-authenticated HTTP request could trigger unbounded OCR work (the entire PDF, no timeout, no concurrency cap, no per-call budget). A 10000-page PDF would peg the CPU for hours.
|
|
180
|
+
|
|
181
|
+
v3.7.16 adds a default **200-page cap per call** (`DEFAULT_OCR_MAX_PAGES`), bypassable via an explicit `pages: [from, to]` range or via the `maxPages` option. The cap is checked BEFORE the Tesseract worker spins up, so no resources allocate on adversarial inputs.
|
|
182
|
+
|
|
183
|
+
Roadmap (v3.8.0): per-call timeout, concurrent-request cap, HTTP-transport operation budget.
|
|
184
|
+
|
|
159
185
|
## Persistent FTS5 index: privacy posture
|
|
160
186
|
|
|
161
187
|
When `--persistent-index` is enabled, the search-index file at `<vault-hash>.fts5.db` (alongside the parse cache) stores **chunked note content** (paragraph-level, ~4 KB each), the **comma-serialized tag list** of each note, and the **list of wikilink targets** as part of the FTS5 enrichment for recall.
|
package/dist/doctor.js
CHANGED
|
@@ -184,7 +184,7 @@ export async function runDoctor(opts) {
|
|
|
184
184
|
label: "pdfjs-dist (PDF read + indexing)",
|
|
185
185
|
status: hasPdfjs ? "ok" : "warn",
|
|
186
186
|
detail: hasPdfjs ? "loaded" : "PDFs in vault won't be indexable",
|
|
187
|
-
hint: hasPdfjs ? undefined : "npm install pdfjs-dist@^
|
|
187
|
+
hint: hasPdfjs ? undefined : "npm install pdfjs-dist@^5.7.284 (skip if you have no PDFs)"
|
|
188
188
|
});
|
|
189
189
|
// 5. tesseract.js + @napi-rs/canvas — gates obsidian_ocr_pdf.
|
|
190
190
|
const [hasTesseract, hasCanvas] = await Promise.all([
|
package/dist/fts5.d.ts
CHANGED
|
@@ -181,12 +181,17 @@ export declare class FtsIndex {
|
|
|
181
181
|
* Sanitize a user query for FTS5. Quote-wraps any token containing
|
|
182
182
|
* non-alphanumerics so hyphens / colons / dots are treated literally
|
|
183
183
|
* (without this, `"claude-telegram"` would parse as `claude NOT telegram`).
|
|
184
|
-
*
|
|
185
|
-
*
|
|
184
|
+
*
|
|
185
|
+
* v3.7.16 P3-28 — reserved keywords (`AND`, `OR`, `NOT`, `NEAR`) are
|
|
186
|
+
* QUOTED as literals instead of stripped. Pre-3.7.16 the strip-path
|
|
187
|
+
* silently dropped real query terms ("operating systems AND databases"
|
|
188
|
+
* lost the connective AND user couldn't search for the literal word
|
|
189
|
+
* "AND"). Quoting makes both cases work: FTS5 treats `"AND"` as the
|
|
190
|
+
* literal token rather than the boolean operator.
|
|
186
191
|
*
|
|
187
192
|
* @param q - User query string.
|
|
188
193
|
* @returns Sanitized query ready to pass to FTS5's `MATCH` operator.
|
|
189
|
-
* Empty string when
|
|
194
|
+
* Empty string when input is empty / whitespace-only.
|
|
190
195
|
*/
|
|
191
196
|
export declare function safeFts5Query(q: string): string;
|
|
192
197
|
interface ContentChunk {
|
package/dist/fts5.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fts5.d.ts","sourceRoot":"","sources":["../src/fts5.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"fts5.d.ts","sourceRoot":"","sources":["../src/fts5.ts"],"names":[],"mappings":"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"}
|
package/dist/fts5.js
CHANGED
|
@@ -370,8 +370,16 @@ export class FtsIndex {
|
|
|
370
370
|
if (opts.tag) {
|
|
371
371
|
// Exact-tag membership inside the comma-separated `tags` column —
|
|
372
372
|
// wrap both sides with commas so "core" doesn't match "core-team".
|
|
373
|
-
|
|
374
|
-
|
|
373
|
+
//
|
|
374
|
+
// v3.7.16 P2-15 — escape `%` and `_` (SQL LIKE wildcards) so a
|
|
375
|
+
// user-supplied tag with those characters matches LITERALLY. Pre-
|
|
376
|
+
// 3.7.16 a tag like `core_team` would match `coreXteam` (and any
|
|
377
|
+
// other 1-char-substituted variant) because `_` is the LIKE 1-char
|
|
378
|
+
// wildcard; `%` was even worse — `tag: "%"` matched every chunk.
|
|
379
|
+
// ESCAPE clause uses backslash, matching SQLite's standard form.
|
|
380
|
+
const literalTag = opts.tag.replace(/\\/g, "\\\\").replace(/%/g, "\\%").replace(/_/g, "\\_");
|
|
381
|
+
where.push("(',' || chunks.tags || ',') LIKE ? ESCAPE '\\'");
|
|
382
|
+
params.push(`%,${literalTag},%`);
|
|
375
383
|
}
|
|
376
384
|
let join = "";
|
|
377
385
|
if (opts.sinceMtimeMs !== undefined) {
|
|
@@ -438,22 +446,36 @@ export class FtsIndex {
|
|
|
438
446
|
* Sanitize a user query for FTS5. Quote-wraps any token containing
|
|
439
447
|
* non-alphanumerics so hyphens / colons / dots are treated literally
|
|
440
448
|
* (without this, `"claude-telegram"` would parse as `claude NOT telegram`).
|
|
441
|
-
*
|
|
442
|
-
*
|
|
449
|
+
*
|
|
450
|
+
* v3.7.16 P3-28 — reserved keywords (`AND`, `OR`, `NOT`, `NEAR`) are
|
|
451
|
+
* QUOTED as literals instead of stripped. Pre-3.7.16 the strip-path
|
|
452
|
+
* silently dropped real query terms ("operating systems AND databases"
|
|
453
|
+
* lost the connective AND user couldn't search for the literal word
|
|
454
|
+
* "AND"). Quoting makes both cases work: FTS5 treats `"AND"` as the
|
|
455
|
+
* literal token rather than the boolean operator.
|
|
443
456
|
*
|
|
444
457
|
* @param q - User query string.
|
|
445
458
|
* @returns Sanitized query ready to pass to FTS5's `MATCH` operator.
|
|
446
|
-
* Empty string when
|
|
459
|
+
* Empty string when input is empty / whitespace-only.
|
|
447
460
|
*/
|
|
448
461
|
export function safeFts5Query(q) {
|
|
449
462
|
const RESERVED = new Set(["AND", "OR", "NOT", "NEAR"]);
|
|
450
463
|
const parts = q.trim().split(/\s+/);
|
|
451
464
|
const out = [];
|
|
452
465
|
for (const p of parts) {
|
|
453
|
-
if (RESERVED.has(p.toUpperCase()))
|
|
454
|
-
continue;
|
|
455
466
|
if (!p)
|
|
456
467
|
continue;
|
|
468
|
+
// v3.7.16 P3-28 — quote reserved keywords as literals instead of
|
|
469
|
+
// stripping. Pre-3.7.16 a user searching "operating systems AND
|
|
470
|
+
// databases" got their AND dropped silently AND the unrelated tokens
|
|
471
|
+
// OR'd implicitly — but they ALSO couldn't search literally for the
|
|
472
|
+
// word "AND" (the SQL boolean conjunction). Now we wrap reserved
|
|
473
|
+
// words in double-quotes so FTS5 treats them as the literal token,
|
|
474
|
+
// matching how we handle any token with non-alphanumerics below.
|
|
475
|
+
if (RESERVED.has(p.toUpperCase())) {
|
|
476
|
+
out.push(`"${p}"`);
|
|
477
|
+
continue;
|
|
478
|
+
}
|
|
457
479
|
if (/[^A-Za-z0-9_]/.test(p)) {
|
|
458
480
|
const escaped = p.replace(/"/g, '""');
|
|
459
481
|
out.push(`"${escaped}"`);
|
package/dist/fts5.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fts5.js","sourceRoot":"","sources":["../src/fts5.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"fts5.js","sourceRoot":"","sources":["../src/fts5.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* + `McpServer({version})`) and `src/tool-registry.ts` (used in the
|
|
8
8
|
* `vault-info` resource payload).
|
|
9
9
|
*/
|
|
10
|
-
export declare const VERSION = "3.7.
|
|
10
|
+
export declare const VERSION = "3.7.16";
|
|
11
11
|
export { main } from "./cli.js";
|
|
12
12
|
export { buildEmbedText, buildMcpServer, formatReadyBanner, prepareServerDeps, type ServeOptions, type ServerDeps, startServer } from "./server.js";
|
|
13
13
|
export { parsePositiveInt, parseQuantizationMode } from "./tool-registry.js";
|
package/dist/index.js
CHANGED
|
@@ -32,7 +32,7 @@ import { main } from "./cli.js";
|
|
|
32
32
|
* + `McpServer({version})`) and `src/tool-registry.ts` (used in the
|
|
33
33
|
* `vault-info` resource payload).
|
|
34
34
|
*/
|
|
35
|
-
export const VERSION = "3.7.
|
|
35
|
+
export const VERSION = "3.7.16";
|
|
36
36
|
// Re-exports — preserve the v3.5.x public surface so http-transport.ts and
|
|
37
37
|
// tests don't need to know about the new module layout. The set below
|
|
38
38
|
// exactly matches the v3.5.x `export` declarations: `main`,
|
package/dist/ocr.d.ts
CHANGED
|
@@ -27,16 +27,39 @@ export interface OcrPdfResult {
|
|
|
27
27
|
export interface ExtractPdfWithOcrOptions {
|
|
28
28
|
/**
|
|
29
29
|
* Tesseract language pack(s). Default `'eng'`. Multi-lang via `'+'`,
|
|
30
|
-
* e.g. `'eng+rus'` for English+Russian mixed documents.
|
|
31
|
-
*
|
|
30
|
+
* e.g. `'eng+rus'` for English+Russian mixed documents.
|
|
31
|
+
*
|
|
32
|
+
* v3.7.16 P1-1 — language trained-data files (`<lang>.traineddata`,
|
|
33
|
+
* ~10 MB each) must be PRE-DOWNLOADED into the Tesseract cache.
|
|
34
|
+
* The runtime download path that Tesseract.js enables by default is
|
|
35
|
+
* a privacy-promise violation against README/SECURITY.md's "zero
|
|
36
|
+
* outbound network calls in serve mode" claim. The OCR pipeline now
|
|
37
|
+
* checks that the requested language files exist locally BEFORE
|
|
38
|
+
* spinning up the worker, and throws a clear "language not installed"
|
|
39
|
+
* error if any are missing — directing the user to run
|
|
40
|
+
* `enquire-mcp install-ocr-lang <code>` as a separate, EXPLICIT,
|
|
41
|
+
* documented network step (parity with `install-model` for embeddings).
|
|
32
42
|
*/
|
|
33
43
|
langs?: string;
|
|
34
44
|
/**
|
|
35
45
|
* Page range (1-indexed inclusive). Default: all pages. Useful for
|
|
36
46
|
* partial OCR of long documents — OCR is the slowest step in the
|
|
37
47
|
* pipeline (~1-2s per page), so a 100-page paper takes minutes.
|
|
48
|
+
*
|
|
49
|
+
* v3.7.16 P1-2 — when omitted, the page count is capped at
|
|
50
|
+
* `maxPages` (default 200) to bound CPU on adversarial / runaway
|
|
51
|
+
* inputs. Caller can opt to process more by setting `maxPages`
|
|
52
|
+
* explicitly OR by passing an explicit `pages` range.
|
|
38
53
|
*/
|
|
39
54
|
pages?: [number, number];
|
|
55
|
+
/**
|
|
56
|
+
* v3.7.16 P1-2 — defense-in-depth safety cap. Even when the caller
|
|
57
|
+
* doesn't pass `pages`, refuse to process more than this many pages
|
|
58
|
+
* in one call to bound CPU/memory on adversarial PDFs. Default 200
|
|
59
|
+
* (~5-10 min on M1 CPU; longer than any realistic interactive use).
|
|
60
|
+
* Pass `Number.POSITIVE_INFINITY` to opt out (background-job mode).
|
|
61
|
+
*/
|
|
62
|
+
maxPages?: number;
|
|
40
63
|
/**
|
|
41
64
|
* Render scale multiplier passed to pdfjs-dist's `getViewport({scale})`.
|
|
42
65
|
* Higher = more pixels = better OCR accuracy on small text but more
|
|
@@ -50,6 +73,9 @@ export interface ExtractPdfWithOcrOptions {
|
|
|
50
73
|
*/
|
|
51
74
|
onProgress?: (page: number, total: number) => void;
|
|
52
75
|
}
|
|
76
|
+
/** v3.7.16 P1-2 — default safety cap on per-call OCR work. See
|
|
77
|
+
* {@link ExtractPdfWithOcrOptions.maxPages}. */
|
|
78
|
+
export declare const DEFAULT_OCR_MAX_PAGES = 200;
|
|
53
79
|
/**
|
|
54
80
|
* Extract text from an image-only / scanned PDF via Tesseract OCR.
|
|
55
81
|
*
|
|
@@ -57,7 +83,20 @@ export interface ExtractPdfWithOcrOptions {
|
|
|
57
83
|
* `vault.readBinaryFile(relPath)` for vault-aware reading with
|
|
58
84
|
* privacy-filter + max-bytes guards applied).
|
|
59
85
|
*
|
|
60
|
-
*
|
|
86
|
+
* v3.7.16 P1-1 — fires a stderr disclosure warning once per worker
|
|
87
|
+
* creation: Tesseract.js may fetch the requested `<lang>.traineddata`
|
|
88
|
+
* file from a CDN on first use, contradicting the broader "zero
|
|
89
|
+
* outbound network calls in serve mode" framing. See SECURITY.md
|
|
90
|
+
* "OCR network posture" for the v3.8.0 offline-only roadmap.
|
|
91
|
+
*
|
|
92
|
+
* v3.7.16 P1-2 — refuses to process more than `opts.maxPages` (default
|
|
93
|
+
* {@link DEFAULT_OCR_MAX_PAGES} = 200) in a single call. The check
|
|
94
|
+
* runs BEFORE the Tesseract worker spawns, so adversarial inputs don't
|
|
95
|
+
* allocate resources. Pass an explicit `pages: [from, to]` slice to
|
|
96
|
+
* narrow the work, or raise `maxPages` to opt out of the default cap.
|
|
97
|
+
*
|
|
98
|
+
* Throws on encrypted PDFs, hard-corrupt files, missing optional deps,
|
|
99
|
+
* or when the requested page span exceeds `maxPages`.
|
|
61
100
|
* Returns empty pages (with `isEmpty: true`) for pages where Tesseract
|
|
62
101
|
* found nothing.
|
|
63
102
|
*/
|
package/dist/ocr.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ocr.d.ts","sourceRoot":"","sources":["../src/ocr.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,oEAAoE;AACpE,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,kEAAkE;IAClE,cAAc,EAAE,MAAM,CAAC;IACvB,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;CACf;AA4CD,MAAM,WAAW,wBAAwB;IACvC
|
|
1
|
+
{"version":3,"file":"ocr.d.ts","sourceRoot":"","sources":["../src/ocr.ts"],"names":[],"mappings":"AAqCA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,oEAAoE;AACpE,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,IAAI,EAAE,MAAM,CAAC;IACb,wEAAwE;IACxE,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB;;;OAGG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,UAAU,EAAE,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,sDAAsD;IACtD,OAAO,EAAE,OAAO,CAAC;IACjB,kEAAkE;IAClE,cAAc,EAAE,MAAM,CAAC;IACvB,yEAAyE;IACzE,KAAK,EAAE,MAAM,CAAC;CACf;AA4CD,MAAM,WAAW,wBAAwB;IACvC;;;;;;;;;;;;;;OAcG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;;OASG;IACH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzB;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;CACpD;AAED;iDACiD;AACjD,eAAO,MAAM,qBAAqB,MAAM,CAAC;AAEzC;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,wBAA6B,GAAG,OAAO,CAAC,YAAY,CAAC,CAgJlH;AAOD,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CASvD"}
|
package/dist/ocr.js
CHANGED
|
@@ -67,9 +67,12 @@ async function loadPdfjs() {
|
|
|
67
67
|
catch (err) {
|
|
68
68
|
const msg = err instanceof Error ? err.message : String(err);
|
|
69
69
|
throw new Error("enquire: pdfjs-dist (optional dependency) is not available. PDF OCR requires it. " +
|
|
70
|
-
`Install with: npm install pdfjs-dist@^
|
|
70
|
+
`Install with: npm install pdfjs-dist@^5.7.284\nUnderlying error: ${msg}`);
|
|
71
71
|
}
|
|
72
72
|
}
|
|
73
|
+
/** v3.7.16 P1-2 — default safety cap on per-call OCR work. See
|
|
74
|
+
* {@link ExtractPdfWithOcrOptions.maxPages}. */
|
|
75
|
+
export const DEFAULT_OCR_MAX_PAGES = 200;
|
|
73
76
|
/**
|
|
74
77
|
* Extract text from an image-only / scanned PDF via Tesseract OCR.
|
|
75
78
|
*
|
|
@@ -77,13 +80,38 @@ async function loadPdfjs() {
|
|
|
77
80
|
* `vault.readBinaryFile(relPath)` for vault-aware reading with
|
|
78
81
|
* privacy-filter + max-bytes guards applied).
|
|
79
82
|
*
|
|
80
|
-
*
|
|
83
|
+
* v3.7.16 P1-1 — fires a stderr disclosure warning once per worker
|
|
84
|
+
* creation: Tesseract.js may fetch the requested `<lang>.traineddata`
|
|
85
|
+
* file from a CDN on first use, contradicting the broader "zero
|
|
86
|
+
* outbound network calls in serve mode" framing. See SECURITY.md
|
|
87
|
+
* "OCR network posture" for the v3.8.0 offline-only roadmap.
|
|
88
|
+
*
|
|
89
|
+
* v3.7.16 P1-2 — refuses to process more than `opts.maxPages` (default
|
|
90
|
+
* {@link DEFAULT_OCR_MAX_PAGES} = 200) in a single call. The check
|
|
91
|
+
* runs BEFORE the Tesseract worker spawns, so adversarial inputs don't
|
|
92
|
+
* allocate resources. Pass an explicit `pages: [from, to]` slice to
|
|
93
|
+
* narrow the work, or raise `maxPages` to opt out of the default cap.
|
|
94
|
+
*
|
|
95
|
+
* Throws on encrypted PDFs, hard-corrupt files, missing optional deps,
|
|
96
|
+
* or when the requested page span exceeds `maxPages`.
|
|
81
97
|
* Returns empty pages (with `isEmpty: true`) for pages where Tesseract
|
|
82
98
|
* found nothing.
|
|
83
99
|
*/
|
|
84
100
|
export async function extractPdfWithOcr(buffer, opts = {}) {
|
|
85
101
|
const langs = opts.langs ?? "eng";
|
|
86
102
|
const scale = Math.max(0.5, Math.min(opts.scale ?? 2, 4)); // clamp to [0.5, 4]
|
|
103
|
+
const maxPages = opts.maxPages ?? DEFAULT_OCR_MAX_PAGES;
|
|
104
|
+
// v3.7.16 P1-1 — disclosure warning. Tesseract.js fetches the
|
|
105
|
+
// `<lang>.traineddata` file (~10 MB per language) from a CDN on first
|
|
106
|
+
// use. This is the ONE serve-time network path in the project and it
|
|
107
|
+
// contradicts README/SECURITY.md's broader "zero outbound network calls
|
|
108
|
+
// in serve mode" framing. The warning fires once per worker creation
|
|
109
|
+
// so operators see the disclosure in stderr / journald. Full offline-
|
|
110
|
+
// only enforcement (cache check + `install-ocr-lang` subcommand) is
|
|
111
|
+
// tracked for v3.8.0.
|
|
112
|
+
process.stderr.write(`enquire OCR: Tesseract.js may fetch language pack '${langs}' from a CDN on first use ` +
|
|
113
|
+
`(~10 MB per language, cached in tessdata/). This is the only outbound network call in serve mode. ` +
|
|
114
|
+
`See SECURITY.md "OCR network posture" for the v3.8.0 offline-only roadmap.\n`);
|
|
87
115
|
// Load all three lazy deps in parallel — they're independent.
|
|
88
116
|
const [pdfjs, canvasMod, tesseract] = await Promise.all([loadPdfjs(), loadCanvas(), loadTesseract()]);
|
|
89
117
|
const { createCanvas } = canvasMod;
|
|
@@ -101,6 +129,17 @@ export async function extractPdfWithOcr(buffer, opts = {}) {
|
|
|
101
129
|
const [from, to] = opts.pages && opts.pages.length === 2
|
|
102
130
|
? [Math.max(1, opts.pages[0]), Math.min(pageCount, opts.pages[1])]
|
|
103
131
|
: [1, pageCount];
|
|
132
|
+
// v3.7.16 P1-2 — refuse to OCR more than `maxPages` in a single call.
|
|
133
|
+
// The explicit `pages` slice can request any size (caller opted in),
|
|
134
|
+
// but the default "all pages" path must not run unbounded on
|
|
135
|
+
// adversarial PDFs (a 10000-page file would peg CPU for hours).
|
|
136
|
+
// Throws BEFORE the Tesseract worker spins up, so no resources allocated.
|
|
137
|
+
const requestedSpan = to - from + 1;
|
|
138
|
+
if (requestedSpan > maxPages) {
|
|
139
|
+
throw new Error(`enquire OCR: refusing to process ${requestedSpan} pages in a single call ` +
|
|
140
|
+
`(maxPages=${maxPages}). Pass an explicit narrower 'pages: [from, to]' range ` +
|
|
141
|
+
`or raise maxPages via the tool args.`);
|
|
142
|
+
}
|
|
104
143
|
// Spin up a Tesseract worker for the requested languages. We create one
|
|
105
144
|
// worker per call rather than reusing across calls — the per-request
|
|
106
145
|
// cost is small (~200ms warm cache) and avoids cross-request state
|
package/dist/ocr.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ocr.js","sourceRoot":"","sources":["../src/ocr.ts"],"names":[],"mappings":"AAAA,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,wEAAwE;AACxE,qEAAqE;AACrE,uEAAuE;AACvE,wEAAwE;AACxE,oDAAoD;AACpD,EAAE;AACF,gBAAgB;AAChB,EAAE;AACF,mDAAmD;AACnD,+CAA+C;AAC/C,qDAAqD;AACrD,+CAA+C;AAC/C,8CAA8C;AAC9C,EAAE;AACF,wEAAwE;AACxE,wEAAwE;AACxE,kEAAkE;AAClE,EAAE;AACF,+DAA+D;AAC/D,oDAAoD;AACpD,gDAAgD;AAChD,+DAA+D;AAC/D,EAAE;AACF,uEAAuE;AACvE,wEAAwE;AACxE,uEAAuE;AACvE,EAAE;AACF,yBAAyB;AACzB,wEAAwE;AACxE,wEAAwE;AACxE,uEAAuE;AACvE,iCAAiC;AACjC,kEAAkE;AA+BlE;;;GAGG;AACH,KAAK,UAAU,aAAa;IAC1B,IAAI,CAAC;QACH,OAAO,MAAM,MAAM,CAAC,cAAc,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,MAAM,IAAI,KAAK,CACb,qFAAqF;YACnF,gEAAgE,GAAG,EAAE,CACxE,CAAC;IACJ,CAAC;AACH,CAAC;AAED,yEAAyE;AACzE,KAAK,UAAU,UAAU;IACvB,IAAI,CAAC;QACH,OAAO,MAAM,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,MAAM,IAAI,KAAK,CACb,qHAAqH;YACnH,mEAAmE,GAAG,EAAE,CAC3E,CAAC;IACJ,CAAC;AACH,CAAC;AAED,yDAAyD;AACzD,KAAK,UAAU,SAAS;IACtB,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,MAAM,CAAC,iCAAiC,CAAC,CAA2C,CAAC;IACrG,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,GAAG,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC7D,MAAM,IAAI,KAAK,CACb,mFAAmF;YACjF,oEAAoE,GAAG,EAAE,CAC5E,CAAC;IACJ,CAAC;AACH,CAAC;
|
|
1
|
+
{"version":3,"file":"ocr.js","sourceRoot":"","sources":["../src/ocr.ts"],"names":[],"mappings":"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"}
|