@oomkapwn/enquire-mcp 3.7.12 → 3.7.14

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.
Files changed (169) hide show
  1. package/CHANGELOG.md +81 -0
  2. package/README.md +5 -5
  3. package/dist/http-transport.d.ts +11 -0
  4. package/dist/http-transport.d.ts.map +1 -1
  5. package/dist/http-transport.js +34 -0
  6. package/dist/http-transport.js.map +1 -1
  7. package/dist/index.d.ts +1 -1
  8. package/dist/index.js +1 -1
  9. package/dist/pdf.d.ts +22 -1
  10. package/dist/pdf.d.ts.map +1 -1
  11. package/dist/pdf.js +9 -2
  12. package/dist/pdf.js.map +1 -1
  13. package/dist/tool-registry.d.ts.map +1 -1
  14. package/dist/tool-registry.js +26 -1
  15. package/dist/tool-registry.js.map +1 -1
  16. package/dist/tools/media.d.ts.map +1 -1
  17. package/dist/tools/media.js +15 -6
  18. package/dist/tools/media.js.map +1 -1
  19. package/dist/tools/write.d.ts +10 -4
  20. package/dist/tools/write.d.ts.map +1 -1
  21. package/dist/tools/write.js +56 -14
  22. package/dist/tools/write.js.map +1 -1
  23. package/dist/vault.d.ts.map +1 -1
  24. package/dist/vault.js +108 -29
  25. package/dist/vault.js.map +1 -1
  26. package/docs/COMPARISON.md +1 -1
  27. package/docs/QUICKSTART.md +2 -2
  28. package/docs/api.md +1 -1
  29. package/docs/benchmarks.md +16 -9
  30. package/package.json +9 -4
  31. package/dist/tools.d.ts +0 -980
  32. package/dist/tools.d.ts.map +0 -1
  33. package/dist/tools.js +0 -3132
  34. package/dist/tools.js.map +0 -1
  35. package/docs/api-reference/.nojekyll +0 -1
  36. package/docs/api-reference/assets/hierarchy.js +0 -1
  37. package/docs/api-reference/assets/highlight.css +0 -71
  38. package/docs/api-reference/assets/icons.js +0 -18
  39. package/docs/api-reference/assets/icons.svg +0 -1
  40. package/docs/api-reference/assets/main.js +0 -60
  41. package/docs/api-reference/assets/navigation.js +0 -1
  42. package/docs/api-reference/assets/search.js +0 -1
  43. package/docs/api-reference/assets/style.css +0 -1633
  44. package/docs/api-reference/functions/index.buildEmbedText.html +0 -15
  45. package/docs/api-reference/functions/index.buildMcpServer.html +0 -4
  46. package/docs/api-reference/functions/index.formatReadyBanner.html +0 -4
  47. package/docs/api-reference/functions/index.main.html +0 -1
  48. package/docs/api-reference/functions/index.parsePositiveInt.html +0 -1
  49. package/docs/api-reference/functions/index.parseQuantizationMode.html +0 -5
  50. package/docs/api-reference/functions/index.prepareServerDeps.html +0 -5
  51. package/docs/api-reference/functions/index.startServer.html +0 -1
  52. package/docs/api-reference/functions/tools.appendToNote.html +0 -17
  53. package/docs/api-reference/functions/tools.archiveNote.html +0 -15
  54. package/docs/api-reference/functions/tools.assertHnswModelMatchesEmbedder.html +0 -13
  55. package/docs/api-reference/functions/tools.chatThreadAppend.html +0 -22
  56. package/docs/api-reference/functions/tools.chatThreadRead.html +0 -16
  57. package/docs/api-reference/functions/tools.contextPack.html +0 -21
  58. package/docs/api-reference/functions/tools.createNote.html +0 -19
  59. package/docs/api-reference/functions/tools.dataviewQuery.html +0 -16
  60. package/docs/api-reference/functions/tools.embeddingsSearch.html +0 -40
  61. package/docs/api-reference/functions/tools.findPath.html +0 -23
  62. package/docs/api-reference/functions/tools.findSimilar.html +0 -21
  63. package/docs/api-reference/functions/tools.frontmatterGet.html +0 -15
  64. package/docs/api-reference/functions/tools.frontmatterSearch.html +0 -16
  65. package/docs/api-reference/functions/tools.frontmatterSet.html +0 -19
  66. package/docs/api-reference/functions/tools.getBacklinks.html +0 -15
  67. package/docs/api-reference/functions/tools.getNoteNeighbors.html +0 -16
  68. package/docs/api-reference/functions/tools.getOpenQuestions.html +0 -19
  69. package/docs/api-reference/functions/tools.getOutboundLinks.html +0 -16
  70. package/docs/api-reference/functions/tools.getRecentEdits.html +0 -14
  71. package/docs/api-reference/functions/tools.getUnresolvedWikilinks.html +0 -14
  72. package/docs/api-reference/functions/tools.getVaultStats.html +0 -13
  73. package/docs/api-reference/functions/tools.lintWiki.html +0 -20
  74. package/docs/api-reference/functions/tools.listCanvases.html +0 -16
  75. package/docs/api-reference/functions/tools.listNotes.html +0 -19
  76. package/docs/api-reference/functions/tools.listPdfs.html +0 -15
  77. package/docs/api-reference/functions/tools.listTags.html +0 -14
  78. package/docs/api-reference/functions/tools.ocrPdf.html +0 -18
  79. package/docs/api-reference/functions/tools.openInUi.html +0 -17
  80. package/docs/api-reference/functions/tools.paperAudit.html +0 -16
  81. package/docs/api-reference/functions/tools.pickEmbedTextForHyde.html +0 -8
  82. package/docs/api-reference/functions/tools.readCanvas.html +0 -19
  83. package/docs/api-reference/functions/tools.readNote.html +0 -20
  84. package/docs/api-reference/functions/tools.readPdf.html +0 -18
  85. package/docs/api-reference/functions/tools.renameNote.html +0 -24
  86. package/docs/api-reference/functions/tools.replaceInNotes.html +0 -20
  87. package/docs/api-reference/functions/tools.resolveTarget.html +0 -24
  88. package/docs/api-reference/functions/tools.resolveWikilink.html +0 -20
  89. package/docs/api-reference/functions/tools.searchHybrid.html +0 -62
  90. package/docs/api-reference/functions/tools.searchText.html +0 -19
  91. package/docs/api-reference/functions/tools.semanticSearch.html +0 -19
  92. package/docs/api-reference/functions/tools.validateNoteProposal.html +0 -19
  93. package/docs/api-reference/hierarchy.html +0 -1
  94. package/docs/api-reference/index.html +0 -1
  95. package/docs/api-reference/interfaces/index.ServeOptions.html +0 -74
  96. package/docs/api-reference/interfaces/index.ServerDeps.html +0 -27
  97. package/docs/api-reference/interfaces/tool-manifest.ToolManifestEntry.html +0 -33
  98. package/docs/api-reference/interfaces/tools.ArchiveNoteArgs.html +0 -12
  99. package/docs/api-reference/interfaces/tools.BacklinkHit.html +0 -15
  100. package/docs/api-reference/interfaces/tools.CanvasEdge.html +0 -19
  101. package/docs/api-reference/interfaces/tools.CanvasSummary.html +0 -16
  102. package/docs/api-reference/interfaces/tools.ChatThreadAppendArgs.html +0 -10
  103. package/docs/api-reference/interfaces/tools.ChatThreadMessage.html +0 -14
  104. package/docs/api-reference/interfaces/tools.ChatThreadReadResult.html +0 -10
  105. package/docs/api-reference/interfaces/tools.ContextPackArgs.html +0 -12
  106. package/docs/api-reference/interfaces/tools.ContextPackResult.html +0 -20
  107. package/docs/api-reference/interfaces/tools.EmbedHit.html +0 -21
  108. package/docs/api-reference/interfaces/tools.EmbedSearchResponse.html +0 -14
  109. package/docs/api-reference/interfaces/tools.FindPathResult.html +0 -17
  110. package/docs/api-reference/interfaces/tools.FrontmatterSearchArgs.html +0 -20
  111. package/docs/api-reference/interfaces/tools.FrontmatterSetArgs.html +0 -13
  112. package/docs/api-reference/interfaces/tools.HnswSearchContext.html +0 -21
  113. package/docs/api-reference/interfaces/tools.LintWikiArgs.html +0 -14
  114. package/docs/api-reference/interfaces/tools.LintWikiFinding.html +0 -14
  115. package/docs/api-reference/interfaces/tools.LintWikiResult.html +0 -9
  116. package/docs/api-reference/interfaces/tools.NoteNeighbors.html +0 -17
  117. package/docs/api-reference/interfaces/tools.NoteReadFull.html +0 -20
  118. package/docs/api-reference/interfaces/tools.NoteReadMap.html +0 -25
  119. package/docs/api-reference/interfaces/tools.NoteSummary.html +0 -14
  120. package/docs/api-reference/interfaces/tools.OcrPdfArgs.html +0 -16
  121. package/docs/api-reference/interfaces/tools.OcrPdfPage.html +0 -15
  122. package/docs/api-reference/interfaces/tools.OcrPdfResult.html +0 -18
  123. package/docs/api-reference/interfaces/tools.OpenInUiResult.html +0 -11
  124. package/docs/api-reference/interfaces/tools.OpenQuestion.html +0 -20
  125. package/docs/api-reference/interfaces/tools.OutboundLink.html +0 -20
  126. package/docs/api-reference/interfaces/tools.PaperAuditFinding.html +0 -17
  127. package/docs/api-reference/interfaces/tools.PathStep.html +0 -9
  128. package/docs/api-reference/interfaces/tools.PdfSummary.html +0 -9
  129. package/docs/api-reference/interfaces/tools.ReadCanvasResult.html +0 -15
  130. package/docs/api-reference/interfaces/tools.ReadPdfArgs.html +0 -8
  131. package/docs/api-reference/interfaces/tools.ReadPdfPage.html +0 -13
  132. package/docs/api-reference/interfaces/tools.ReadPdfResult.html +0 -18
  133. package/docs/api-reference/interfaces/tools.RenameNoteResult.html +0 -14
  134. package/docs/api-reference/interfaces/tools.RenameProposal.html +0 -13
  135. package/docs/api-reference/interfaces/tools.ReplaceInNotesArgs.html +0 -15
  136. package/docs/api-reference/interfaces/tools.ReplaceInNotesFileResult.html +0 -6
  137. package/docs/api-reference/interfaces/tools.ReplaceInNotesResult.html +0 -21
  138. package/docs/api-reference/interfaces/tools.SearchHit.html +0 -16
  139. package/docs/api-reference/interfaces/tools.SearchHybridHit.html +0 -30
  140. package/docs/api-reference/interfaces/tools.SearchHybridResponse.html +0 -23
  141. package/docs/api-reference/interfaces/tools.SearchResponse.html +0 -13
  142. package/docs/api-reference/interfaces/tools.SemanticHit.html +0 -15
  143. package/docs/api-reference/interfaces/tools.SimilarNote.html +0 -15
  144. package/docs/api-reference/interfaces/tools.TagSummary.html +0 -13
  145. package/docs/api-reference/interfaces/tools.UnresolvedWikilink.html +0 -22
  146. package/docs/api-reference/interfaces/tools.ValidateProposalArgs.html +0 -10
  147. package/docs/api-reference/interfaces/tools.ValidateProposalResult.html +0 -14
  148. package/docs/api-reference/interfaces/tools.VaultStats.html +0 -26
  149. package/docs/api-reference/modules/index.html +0 -1
  150. package/docs/api-reference/modules/tool-manifest.html +0 -1
  151. package/docs/api-reference/modules/tools.html +0 -1
  152. package/docs/api-reference/types/tools.CanvasNode.html +0 -7
  153. package/docs/api-reference/types/tools.SearchMode.html +0 -7
  154. package/docs/api-reference/variables/index.VERSION.html +0 -9
  155. package/docs/api-reference/variables/tool-manifest.TOOL_MANIFEST.html +0 -1
  156. package/docs/audits/findings/L1-code-quality.md +0 -213
  157. package/docs/audits/findings/L2-architecture.md +0 -245
  158. package/docs/audits/findings/L3-tests.md +0 -339
  159. package/docs/audits/findings/L4-cicd.md +0 -290
  160. package/docs/audits/findings/L5-security.md +0 -350
  161. package/docs/audits/findings/L6-documentation.md +0 -347
  162. package/docs/audits/findings/L7-operational.md +0 -50
  163. package/docs/audits/findings/L8-reproducibility.md +0 -64
  164. package/docs/audits/findings/L9-process.md +0 -84
  165. package/docs/audits/findings/baseline.json +0 -19
  166. package/docs/audits/v3.6.0-external-anonymous-audit.md +0 -163
  167. package/docs/audits/v3.6.0-final-audit.md +0 -171
  168. package/docs/audits/v3.6.0-rc.4-rootcause.md +0 -134
  169. package/docs/audits/v3.6.0-system-audit-plan.md +0 -199
package/CHANGELOG.md CHANGED
@@ -2,6 +2,87 @@
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.14] — 2026-05-18
6
+
7
+ > **TL;DR:** Round-16 self-audit on the v3.7.13 codebase — class-sweep methodology applied to the round-15 fixes. Found 5 findings: **F1** v3.7.13 silent overclaim (M1 fixed renameNote ordering but the TSDoc header still described the OLD buggy write order — 6th overclaim instance), **F2** M2 sibling (`vault.renameFile` had the same stat-then-rename TOCTOU race that M2 fixed for `writeNote`), **F3** `appendNote` had a stat-then-append race that let parallel writers bypass the `maxFileBytes` size cap, **F4** "8 required CI gates" hardcoded count was not gated by docs-consistency (v3.5.9 anti-pattern recurrence), **F5** automated `gh release create` in `release.yml` (M13 from round-15, originally deferred to v3.8.0 but trivial to land). **+1 test** (815 total), **+1 docs-consistency invariant** (required-gates count).
8
+
9
+ **Patch — round-16 self-audit batch.**
10
+
11
+ ### Findings
12
+
13
+ - **F1 — v3.7.13 silent overclaim #6** (`src/tools/write.ts:145-148`). The v3.7.13 M1 fix reordered `renameNote()`'s write steps (rename first, backlinks second) and added a long comment block inside the function explaining the new order. But the function-LEVEL TSDoc header (lines 145-148, what TypeDoc publishes + IDE hover surfaces) still described the OLD ordering: *"backlink-bearing files first, source last, fs.rename last — a mid-operation crash leaves backlinks pointing at the still-present old name"*. That's the exact (LYING) comment v3.7.13 M1 replaced inside the function body — but the public-facing docstring kept it. **6th overclaim instance** documented (after v3.6.1 CRIT-1, v3.6.2 K-1 callsite count, v3.6.4 K-1 cli.ts callsites, v3.7.10 silent `files`-array miss, v3.7.11 round-13 retroactive correction). Header now matches reality + cross-references v3.7.13 M1.
14
+ - **F2 — `vault.renameFile` had the M2 TOCTOU race for the destination** (`src/vault.ts:633-688`). v3.7.13 M2 fixed `writeNote(overwrite=false)`'s stat-then-write race by switching to the `wx` open flag, but `renameFile(overwrite=false)` had the SAME pattern: `stat(toAbs)` → check ENOENT → `fs.rename(fromAbs, toAbs)`. POSIX `rename(2)` silently replaces the destination if it exists, so a parallel writer creating the destination between the stat and the rename would get its file clobbered by ours, bypassing the `overwrite=false` guard. Fix: use `fs.link(fromAbs, toAbs)` for the non-overwrite path. `link(2)` fails atomically with `EEXIST` when the destination exists — no stat-then-act window. After successful link, `fs.unlink(fromAbs)` completes the move semantic. `EXDEV` (cross-device link) falls back to `copyFile(..., COPYFILE_EXCL)` + `unlink` for the same atomic guarantee on bind-mounted vaults. **+1 negative-control test** firing two simultaneous `renameFile()` calls at the same destination and asserting exactly-one-success.
15
+ - **F3 — `appendNote` stat-then-append size-cap bypass** (`src/vault.ts:697-704`). Pre-3.7.14 the size guard was `fs.stat(abs)` → check `before.size + addition <= maxFileBytes` → `fs.appendFile(abs, addition)`. Under parallel appends, the stat could report size X, another process appended size Y between stat and our append, and our append took the file to X+Y+addition — past the cap. Fix: open the file via `fs.open(abs, "a")`, `handle.stat()` from the open fd to get the current size, check the cap, write via `handle.write()`, close in `finally`. Keeps the stat→write window inside a single kernel-held fd, and the "a" mode flag's POSIX append guarantee ensures atomic end-of-file writes.
16
+ - **F4 — "8 required CI gates" claim ungated** (`README.md:115`, `README.md:185`, `CLAUDE.md:29`). v3.7.13 M5 bumped the claim from 7 → 8 manually, but no test gated it against `.github/workflows/release.yml`'s actual `REQUIRED` regex. Recurrence of the v3.5.9 anti-pattern ("Hardcoded counts in docs without an invariant"). Fix: new docs-consistency invariant `'N required CI gates' claims match release.yml REQUIRED regex count` that (a) parses the `REQUIRED="lint|test \(22\)|..."` assignment, splits on `|`, counts entries; (b) cross-checks against `REQ_COUNT=N` in the same workflow (double-source-of-truth structural guard); (c) asserts every `**N**? required` claim in README + CLAUDE.md matches the actual count. If a 9th gate is added later, all three drift surfaces fail together.
17
+ - **F5 — Automated `gh release create` in release workflow** (`.github/workflows/release.yml:124-167`, M13 from round-15). Pre-3.7.14 README claimed *"npm + GitHub release per tag"* but `gh release create` was a manual post-release step (CONTRIBUTING.md:87). Originally deferred to v3.8.0 in round-15; landed early because it's trivial. Workflow now: extracts the matching `## [X.Y.Z]` section from `CHANGELOG.md` via `awk`, marks stable versions (`latest` dist-tag) as Latest with `--latest --target main`, marks prereleases with `--prerelease`, falls back to a CHANGELOG link if the section can't be parsed, skips with a warning if a release already exists (manual creation before the tag-push). CONTRIBUTING.md updated to reflect the new automation.
18
+
19
+ ### Stats
20
+
21
+ - **815 tests** (was 813 in v3.7.13). **+2 tests**: 1 F2 negative-control (`tests/write.test.ts`) + 1 F4 invariant (`tests/docs-consistency.test.ts`).
22
+ - **+1 docs-consistency invariant** (required-gates count).
23
+ - npm tarball unchanged; v3.7.14 is a pure correctness + automation patch.
24
+
25
+ ### Method
26
+
27
+ Round-16 was a SELF-audit (no external auditor), but used the round-15 fix patterns AS the audit methodology — apply each fix's class pattern across the rest of the codebase. The result: 2 real new bugs (F2/F3) that v3.7.13's external-audit-driven scope didn't catch, plus 1 silent overclaim instance (F1) of the SAME class that recurred in v3.7.10, v3.7.11, v3.7.12. **Class-pattern sweeps after every external-audit cycle is the right post-ship discipline** — externals find the entry point, the class sweep cleans up the siblings before another auditor flags them.
28
+
29
+ ## [3.7.13] — 2026-05-18
30
+
31
+ > **TL;DR:** Round-15 external audit response (4th independent external audit since v3.6.0). 15 ship-ready fixes landed: 3 High (PDF page slicing pre-extraction DoS vector, HTTP stateful pre-initialize resource leak, `engines.node` floor mismatch with CI matrix), 9 Medium (renameNote rollback recovery, atomic non-overwrite create via `wx`, OCR lang regex validation, README required-gates count, per-file coverage fail-on-missing, parse-cache chmod-only-newly-created, broken docs/api.md → SECURITY.md link, benchmarks latency-column de-duplication, COMPARISON.md test-count gate), 3 Low (OCR/read_pdf page-range refine, github-metadata invariant fail-loud in CI with GH_TOKEN, exclude `docs/audits/` from npm package). **+11 tests** (813 total), with negative-controls on every new invariant. 2 audit findings already closed by v3.7.12 (L1 `.base` path normalization, L3 canvas mtimeMs leak). 7 architectural findings deferred to v3.8.0 with reasoning (M4/M6/M7/M13/L5/L6 — write-tool smoke variant, reranker-smoke-in-CI, release automation, declarations-vs-runs test count).
32
+
33
+ **Patch — round-15 external audit batch.**
34
+
35
+ ### High-severity fixes
36
+
37
+ - **H1 — PDF page slicing applied AFTER full document extraction** (`src/pdf.ts` + `src/tools/media.ts`). Pre-3.7.13 `extractPdfText(buf)` iterated EVERY page of the doc, then `readPdf` sliced down to the caller's `args.pages` window. Wasted CPU/memory on big PDFs and a bearer-token DoS vector in `serve-http` (a client with a valid token could request small page ranges of 1000-page PDFs to peg the server). Fixed by adding `ExtractPdfTextOptions.pageRange` and threading the requested window through to `doc.getPage()`, so only the needed pages get deserialized. `result.pageCount` still reports the document total (read from pdfjs metadata, not from page count returned), so callers can paginate. **+4 tests** in `tests/pdf.test.ts` including negative-control that omitting `pageRange` extracts every page.
38
+ - **H2 — HTTP stateful mode allocated server/transport BEFORE checking that the body was `initialize`** (`src/http-transport.ts:480-516`). Any POST without `Mcp-Session-Id` allocated a fresh `McpServer` + `StreamableHTTPServerTransport` pair, then handed the body to the SDK; in some failure modes (the body not being a valid `initialize` request), `onsessioninitialized` never fired and cleanup never ran, leaking the pair. Bearer-token DoS — not anonymous, but easy for any client with a valid token to fire create-and-abandon traffic until `maxSessions` blocks further work. Fix: new `isInitializeRequest(body)` helper validates the JSON-RPC method BEFORE allocation; non-initialize POSTs are rejected with `400 -32600`. **+5 tests** in `tests/http-transport.test.ts` covering single + batch + 5 negative-control cases (tools/list, tools/call, malformed, batch-without-initialize, case-sensitivity).
39
+ - **H3 — `package.json#engines.node: ">=20"` was wider than the CI matrix (Node 22+24)** (`package.json:168-170`, `docs/QUICKSTART.md`). Pre-3.7.13, users on Node 20 could install the package (npm honored the loose `>=20`) but get into trouble at runtime — `pdfjs-dist@5.7+` requires `>=22.13.0`, so PDF features either crashed or silently no-op'd. CI hasn't tested Node 20 since v3.5.11, but the engines floor stayed at the old value. Fixed: bumped `engines.node` to `>=22.13.0` matching the CI matrix. Users on Node 20 now get a clean `unsupported engine` warning at install time. QUICKSTART updated to recommend pinning v3.7.12 for Node 20 use cases.
40
+
41
+ ### Medium-severity fixes
42
+
43
+ - **M1 — `renameNote()` write order made backlinks inconsistent on partial failure** (`src/tools/write.ts:263-277`). Pre-3.7.13: (1) rewrite all backlink-bearing files → (2) rewrite source content at OLD path → (3) `fs.rename` OLD → NEW. If step 3 failed, backlinks were ALREADY pointing at the NEW name (rewritten in step 1) but the file was still at the OLD path — backlinks reference a phantom destination. The inline comment claimed "backlinks pointing at the still-present old name (worst case: safe, recoverable)" — but that was FALSE; step 1 had already broken them. Fix: reordered to (1) rewrite source at OLD path → (2) `fs.rename` (atomic, most-failure-prone step runs FIRST) → (3) rewrite backlinks (destination exists, so updated backlinks always resolve). Every failure mode is now recoverable by re-running the same call (each step is idempotent on re-input).
44
+ - **M2 — `overwrite=false` create path was not atomic** (`src/vault.ts:564-580`). Pre-3.7.13 `writeNote(..., overwrite=false)` was `stat()`-then-`writeFile()`: between the two calls, another process or parallel MCP call could create the file, and overwrite=false would silently clobber it. Fixed by using `fs.writeFile(abs, content, { flag: "wx" })` for the non-overwrite path — the kernel atomically refuses to open the file if it exists, translating to the same user-facing "Note already exists" error. **+1 integration test** firing two simultaneous `createNote()` calls against the same path and asserting exactly-one-success.
45
+ - **M3 — OCR `lang` was an unconstrained string** (`src/tool-registry.ts:731`). Schema accepted any string and passed it straight to `tesseract.createWorker(langs, ...)`, which downloads each requested language pack on first use (~10 MB each). A bearer-token client could request `lang: "eng+rus+jpn+chi_sim+...+ben+hin+kor+vie+tha"` to trigger N parallel pack downloads + slow multi-language OCR. Resource exhaustion DoS. Fix: schema regex `/^[a-z]{3}(_[a-z]+)?(\+[a-z]{3}(_[a-z]+)?){0,7}$/` (1-8 `+`-joined Tesseract codes, lowercase 3-letter codes with optional `_variant` suffix for regional packs like `chi_sim`, `chi_tra`). The pattern matches the standard Tesseract trained-data file naming.
46
+ - **M5 — README claimed "7 required" CI gates, but release.yml requires 8** (`README.md:115` + `README.md:185` + `CLAUDE.md:29`). The 8th gate (`docs` — TypeDoc generation) was added in v3.7.10's release.yml but the README + CLAUDE.md text wasn't updated. The release workflow already enforces 8 (`REQ_COUNT=8`), so the public-facing claim was simply stale. Fixed: 7 → 8 across all 3 surfaces with v3.7.10 attribution.
47
+ - **M8 — `scripts/check-per-file-coverage.mjs` warning-only on missing coverage entries** (`scripts/check-per-file-coverage.mjs:79-93`). If a `FLOORS` key didn't have a matching coverage entry (e.g., file renamed, vitest include-regex change excluded it), the script emitted a `WARN` and continued. So a per-file floor could silently disappear from enforcement. Fixed: `hasError = true` + clear "update FLOORS or coverage config" message; the script now exits 1 on missing entries.
48
+ - **M9 — `saveDiskCache()` chmod'd the parse-cache parent dir even if it pre-existed** (`src/vault.ts:361-367`). Pre-3.7.13, `await fs.chmod(cacheDir, 0o700)` ran unconditionally — clobbering perms on a custom `--cache-file` parent (e.g., a shared Dropbox folder, an NFS mount with group-readable defaults). `FtsIndex` and `EmbedDb` already use the `parentExisted` gate (only chmod if newly-created); applying the same pattern here closes the inconsistency. Fix: `stat(cacheDir).then(true).catch(false)` → if parent existed, skip the chmod; if we created it, lock perms.
49
+ - **M10 — `docs/api.md` linked to a non-existent README anchor** (`docs/api.md:80`). The `--persistent-cache` row referenced `[Cache & privacy](../README.md#cache--privacy)` but README has no such section — the canonical content lives at `SECURITY.md#persistent-cache-privacy-posture`. Users following the link missed the privacy warning. Fix: redirect to the real anchor in `SECURITY.md`.
50
+ - **M11 — Benchmark latency numbers contradicted between TL;DR and stack-config tables** (`docs/benchmarks.md:14-23` vs `:107-115`). TL;DR was re-synced in v3.7.10 (round-12 audit M-5) to A18 Pro measurements; the stack-config implementation table still carried the original M1 numbers (~110ms / ~230ms / ~520ms / ~730ms vs the new 179 / 401 / 1028 / 1344). Fix: dropped the latency column from the implementation table entirely. Latency now has a single source of truth (TL;DR, re-measured from `bench/benchmarks.json`).
51
+ - **M12 — `docs/COMPARISON.md` test count was stale + ungated** (`docs/COMPARISON.md:46`). Pre-3.7.13 COMPARISON said `Test count (public) | **786**` while README+package were at 787 (and 801 after v3.7.12). The previous COMPARISON docs-consistency gate covered tools+prompts but missed test count. Fix: bumped to 813 + added a new invariant that locks "**N**" in the `Test count` row against the actual `countActualTests()` result.
52
+
53
+ ### Low-severity fixes
54
+
55
+ - **L2 — Invalid OCR page ranges silently returned empty success** (`src/ocr.ts:166-185`, `src/tool-registry.ts:739`). `pages: [10, 5]` made `from=10, to=5`, the loop body never executed, and the response was a successful `{ pages: [], full_text: "" }`. Clients couldn't distinguish "PDF has nothing on those pages" from "your range was invalid". Fix: schema-level `.refine(([from, to]) => to >= from)` rejects inverted ranges at the tool boundary; the library function still clamps as a defense-in-depth. Same constraint added to `obsidian_read_pdf` for parity.
56
+ - **L4 — `tests/github-metadata-invariant.test.ts` silently no-op'd in CI** (`tests/github-metadata-invariant.test.ts:100-127`, `.github/workflows/ci.yml`). Pre-3.7.13 the test had `if (!available) return;` (early-return without assertion) when `gh` wasn't authenticated AND `if (!meta) return;` (early-return) when `gh` was available but the API call failed (rate limit, network). Both branches let CI count the test as "passed" without verifying anything. Fix: (1) CI workflow now passes `GH_TOKEN: ${{ github.token }}` so `gh api` always works against the live repo, (2) test now fails loud with a clear error message when `gh` is available but the API fails (rate limit / network / token scope problem worth surfacing).
57
+ - **L7 — npm package shipped `docs/audits/` (228 KB internal audit process notes)** (`package.json#files`). Pre-3.7.13 `"files": ["dist", "docs", ...]` shipped the entire `docs/` tree. End users don't need rc-stage audit plans or `findings/L9-process.md` snapshots. Fix: explicit file list (`docs/api.md` + QUICKSTART/COMPARISON/benchmarks/http-transport.md + `docs/api-reference/`), dropping the `docs/audits/` subtree from npm tarballs.
58
+
59
+ ### Audit findings already closed by v3.7.12
60
+
61
+ - **L1 — `.base` path docs say extension optional, implementation doesn't.** Closed by v3.7.12 H2 (`.base` path normalization in `readBase` mirrors `readCanvas` / `readPdf`).
62
+ - **L3 — Malformed canvas summaries report `mtimeMs` as `size_bytes`.** Closed by v3.7.12 M3 (`let size = 0` initialization in `listCanvases`).
63
+
64
+ ### Architectural findings DEFERRED to v3.8.0
65
+
66
+ Documented inline so future audits don't re-flag:
67
+
68
+ - **M4** — HTTP transport `serve-http` doesn't accept `--enable-reranker` / `--use-hnsw` / `--include-pdfs`; docs claim "identical semantics" for those flags. Capability matrix is a docs-only fix but the underlying flag plumbing needs design work (HNSW persistence in HTTP mode, reranker model lifecycle across stateless sessions).
69
+ - **M6** — Real reranker smoke not enforced in CI. Adding `ENQUIRE_LOAD_RERANKER_SMOKE=1` to a CI job will download ~110 MB of BGE weights on every PR; needs a dedicated job with cache strategy.
70
+ - **M7** — Write-tool MCP registration + `--enabled-tools` / `--disabled-tools` filtering not smoke-tested. Requires a new smoke variant — non-trivial design.
71
+ - **M13** — README claims "npm + GitHub release per tag" but `gh release create` is manual per CONTRIBUTING.md. Automating this in `release.yml` is on the v3.8.0 backlog.
72
+ - **L5** — Public test count is `it()` declaration count, not Vitest-actually-ran count. Switching to Vitest JSON output is a meaningful design change to the count invariant.
73
+ - **L6** — Watcher tests timing-sensitive (chokidar polling). Refactoring to observable events / injectable watcher adapter is a multi-day test refactor.
74
+
75
+ ### Stats
76
+
77
+ - **813 tests** (was 801 in v3.7.12). **+12 tests**: 4 pageRange (`tests/pdf.test.ts`), 5 isInitializeRequest (`tests/http-transport.test.ts`), 1 atomic create-race (`tests/write.test.ts`), 1 COMPARISON test-count gate + 1 STABILITY-exports invariant alignment (`tests/docs-consistency.test.ts`).
78
+ - **+1 docs-consistency invariant** (COMPARISON.md test count).
79
+ - **CI**: GH_TOKEN wired to test jobs so `tests/github-metadata-invariant.test.ts` actually runs against the live repo.
80
+ - **npm package**: `docs/audits/` (228 KB) removed from published tarball.
81
+
82
+ ### Method
83
+
84
+ Round-15 audit found findings that 4 prior internal audits + 3 prior external audits all missed. Notably H1 (PDF page slicing) and H2 (HTTP stateful pre-check) are CPU/memory DoS vectors that became obvious only when the auditor traced the resource path end-to-end — a methodology different from the K-1 destructive-bootstrap class that previous audits emphasized. Re-confirms the v3.6.1 method note: **every minor / major needs ≥2 independent external auditors with DIFFERENT methodologies**.
85
+
5
86
  ## [3.7.12] — 2026-05-18
6
87
 
7
88
  > **TL;DR:** Round-14 external audit response (3rd independent external audit; 8 High + 11 Medium + 7 Low findings on the v3.7.5 codebase, re-verified against current v3.7.11). 10 ship-ready fixes landed: 2 High (`.base` path normalization, `./tool-manifest` missing from `package.json#exports`), 4 Medium (`listCanvases` mtime-as-bytes leak, HTTP body cap below file cap, graph-boost wasted I/O on `.pdf`, HTTP docs token-env primary), 4 Low (HTTP stateless/stateful clarification, QUICKSTART version stale, reranker catalog vs verified clarification, TypeDoc `treatWarningsAsErrors`). **+14 tests** (801 total), with negative-controls on every new invariant. 2 audit findings verified as FALSE POSITIVES (audit ran on stale v3.7.5 tree — PNG asset + `examples/queries.jsonl` already present in current main). 19 architectural findings deferred to v3.8.0 backlog with reasoning.
package/README.md CHANGED
@@ -11,7 +11,7 @@
11
11
  [![CI](https://github.com/oomkapwn/enquire-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/oomkapwn/enquire-mcp/actions/workflows/ci.yml)
12
12
  [![npm](https://img.shields.io/npm/v/@oomkapwn/enquire-mcp.svg?label=npm&color=cb3837)](https://www.npmjs.com/package/@oomkapwn/enquire-mcp)
13
13
  [![downloads](https://img.shields.io/npm/dm/@oomkapwn/enquire-mcp.svg?color=cb3837)](https://www.npmjs.com/package/@oomkapwn/enquire-mcp)
14
- [![tests](https://img.shields.io/badge/tests-801%20passing-brightgreen.svg)](#trust)
14
+ [![tests](https://img.shields.io/badge/tests-815%20passing-brightgreen.svg)](#trust)
15
15
  [![stable](https://img.shields.io/badge/v3.7.x-stable-brightgreen.svg)](./STABILITY.md)
16
16
  [![SLSA-3](https://img.shields.io/badge/SLSA-3-blue.svg)](https://slsa.dev/spec/v1.0/levels#build-l3)
17
17
  [![MCP](https://img.shields.io/badge/MCP-1.29-8A2BE2.svg)](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 · 801 unit tests · 50+ languages · v3.7.x stable · semver-bound · MIT · SLSA-3 signed.**
39
+ **44 tools · 19 MCP prompts · 815 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
- | **801 unit tests · 7 required + 4 advisory CI gates per PR** | ✅ | n/a | rare |
115
+ | **815 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 |
@@ -182,7 +182,7 @@ Plus 3 MCP resources (`obsidian://vault/info`, `obsidian://note/{path}`, `obsidi
182
182
  | **HTTP transport** | Bearer auth (constant-time SHA-256 + `timingSafeEqual`), per-token rate-limit, strict CORS |
183
183
  | **Frontmatter** | `gray-matter` (`js-yaml` safeLoad) — no code execution |
184
184
  | **Cache + index files** | chmod 0600, parent dir 0700 |
185
- | **CI** | **7 required** branch-protection gates (lint · test ×2 [Node 22/24] · smoke · audit · coverage · version-consistency) + **4 advisory** (test-macos · CodeQL ×2 · Analyze actions). Release workflow re-verifies all 7 required passed on tagged SHA before npm publish. _v3.5.11Node 20 dropped (EOL'd 2026-04, pdfjs v5 requires 22.13)._ |
185
+ | **CI** | **8 required** branch-protection gates (lint · test ×2 [Node 22/24] · smoke · audit · coverage · version-consistency · docs) + **4 advisory** (test-macos · CodeQL ×2 · Analyze actions). Release workflow re-verifies all 8 required passed on tagged SHA before npm publish. _v3.7.10`docs` (TypeDoc generation gate) added to required set. v3.7.13 — `engines.node` floor bumped to `>=22.13.0` to match the CI matrix._ |
186
186
  | **Coverage** | Lines ≥86% · statements ≥82% · functions ≥75% · branches ≥74% (gated) |
187
187
  | **Releases** | npm + GitHub release per tag · semver · **SLSA-3** build provenance |
188
188
  | **Stability** | v3.0+ semver-bound — every CLI flag, tool name, MCP resource, prompt, exported symbol is contract |
@@ -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 (801 tests, ~5s)
225
+ npm test # full suite (815 tests, ~5s)
226
226
  npm run lint # zero warnings
227
227
  npm run build # tsc → dist/
228
228
  ```
@@ -98,6 +98,17 @@ declare class RateLimiter {
98
98
  declare function verifyBearer(authHeader: string | undefined, expectedToken: string): string | null;
99
99
  /** Read the entire request body (UTF-8 JSON). Returns undefined for empty. */
100
100
  declare function readJsonBody(req: IncomingMessage, maxBytes: number): Promise<unknown>;
101
+ /**
102
+ * v3.7.13 H2 — detect a JSON-RPC 2.0 `initialize` request without parsing
103
+ * the full envelope. The body can be either a single message or a batch
104
+ * (JSON-RPC permits arrays); we accept both, requiring AT LEAST ONE
105
+ * element in a batch to be `method: "initialize"`. Returns false on
106
+ * anything else (including malformed bodies — the caller has already
107
+ * parsed JSON, so the shape is unknown but not parse-error territory).
108
+ *
109
+ * @internal — exported only for tests.
110
+ */
111
+ export declare function isInitializeRequest(body: unknown): boolean;
101
112
  /**
102
113
  * Build the request handler. Factored out of the listener-creation path
103
114
  * so tests can drive it without binding a TCP port.
@@ -1 +1 @@
1
- {"version":3,"file":"http-transport.d.ts","sourceRoot":"","sources":["../src/http-transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-transport.d.ts","sourceRoot":"","sources":["../src/http-transport.ts"],"names":[],"mappings":"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"}
@@ -114,6 +114,24 @@ async function readJsonBody(req, maxBytes) {
114
114
  const text = Buffer.concat(chunks).toString("utf8");
115
115
  return JSON.parse(text);
116
116
  }
117
+ /**
118
+ * v3.7.13 H2 — detect a JSON-RPC 2.0 `initialize` request without parsing
119
+ * the full envelope. The body can be either a single message or a batch
120
+ * (JSON-RPC permits arrays); we accept both, requiring AT LEAST ONE
121
+ * element in a batch to be `method: "initialize"`. Returns false on
122
+ * anything else (including malformed bodies — the caller has already
123
+ * parsed JSON, so the shape is unknown but not parse-error territory).
124
+ *
125
+ * @internal — exported only for tests.
126
+ */
127
+ export function isInitializeRequest(body) {
128
+ if (Array.isArray(body))
129
+ return body.some(isInitializeRequest);
130
+ if (!body || typeof body !== "object")
131
+ return false;
132
+ const method = body.method;
133
+ return method === "initialize";
134
+ }
117
135
  /** Send a JSON-RPC error response with the given HTTP + RPC status. */
118
136
  function sendJsonRpcError(res, httpStatus, code, message) {
119
137
  if (res.headersSent)
@@ -402,6 +420,22 @@ export function createHttpHandler(deps, opts) {
402
420
  }));
403
421
  return;
404
422
  }
423
+ // v3.7.13 H2 — verify the body is an `initialize` JSON-RPC request
424
+ // BEFORE we allocate a server + transport. Pre-3.7.13, any POST
425
+ // without `Mcp-Session-Id` allocated both, then handed the body to
426
+ // the SDK; if the body wasn't `initialize`, the SDK would either
427
+ // reject internally or surface a protocol error — but in some
428
+ // failure modes `onsessioninitialized` never fires and cleanup
429
+ // never runs, leaking the McpServer + transport pair. Bearer-token
430
+ // DoS: not anonymous, but easy for any client with a valid token
431
+ // to fire create-and-abandon traffic until `maxSessions` blocks
432
+ // further work. This pre-validation short-circuits the leak by
433
+ // rejecting non-initialize POSTs at the JSON-RPC level before any
434
+ // allocation.
435
+ if (!isInitializeRequest(body)) {
436
+ sendJsonRpcError(res, 400, -32600, "First POST without Mcp-Session-Id header must be a JSON-RPC `initialize` request");
437
+ return;
438
+ }
405
439
  // Allocate session: server + transport with a fresh session id.
406
440
  // The SDK's `sessionIdGenerator` returns a UUID; the transport
407
441
  // sets the `Mcp-Session-Id` response header automatically on
@@ -1 +1 @@
1
- {"version":3,"file":"http-transport.js","sourceRoot":"","sources":["../src/http-transport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-transport.js","sourceRoot":"","sources":["../src/http-transport.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.12";
10
+ export declare const VERSION = "3.7.14";
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.12";
35
+ export const VERSION = "3.7.14";
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/pdf.d.ts CHANGED
@@ -37,6 +37,27 @@ export interface PdfExtractionResult {
37
37
  modDate?: string;
38
38
  };
39
39
  }
40
+ /**
41
+ * Optional options for {@link extractPdfText}.
42
+ *
43
+ * v3.7.13 H1 — `pageRange` lets callers limit which pages get loaded by
44
+ * pdfjs. Pre-3.7.13, `extractPdfText` ALWAYS iterated `pageCount` pages
45
+ * even when the caller only wanted pages 1-3 of a 1000-page PDF, then
46
+ * `obsidian_read_pdf` sliced down to the requested window post-hoc. That
47
+ * was wasted CPU/memory and a bearer-token DoS vector in `serve-http`
48
+ * (a client with a valid token could request small page ranges of huge
49
+ * PDFs to peg the server). Passing the range down to `doc.getPage()`
50
+ * means we only deserialize the pages we need.
51
+ */
52
+ export interface ExtractPdfTextOptions {
53
+ /** 1-indexed inclusive page range. `to >= from > 0`. Values are clamped
54
+ * to the document's actual `pageCount` if out-of-range. When `undefined`,
55
+ * every page is extracted (legacy behavior). */
56
+ pageRange?: {
57
+ from: number;
58
+ to: number;
59
+ };
60
+ }
40
61
  /**
41
62
  * Extract text from a PDF buffer. Memory-mode — caller has already
42
63
  * loaded the file. Use `vault.readBinaryFile(relPath)` to get the
@@ -46,6 +67,6 @@ export interface PdfExtractionResult {
46
67
  * Throws on encrypted PDFs without a password or on hard-corrupt files.
47
68
  * Returns empty pages (with `isEmpty: true`) for image-only scans.
48
69
  */
49
- export declare function extractPdfText(buffer: Buffer): Promise<PdfExtractionResult>;
70
+ export declare function extractPdfText(buffer: Buffer, opts?: ExtractPdfTextOptions): Promise<PdfExtractionResult>;
50
71
  export declare function isPdfjsAvailable(): Promise<boolean>;
51
72
  //# sourceMappingURL=pdf.d.ts.map
package/dist/pdf.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../src/pdf.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,OAAO,EAAE,OAAO,CAAC;IACjB,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;IACjB;gEAC4D;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,OAAO,EAAE,OAAO,CAAC;IACjB,6DAA6D;IAC7D,QAAQ,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AA0BD;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAmFjF;AAQD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CASzD"}
1
+ {"version":3,"file":"pdf.d.ts","sourceRoot":"","sources":["../src/pdf.ts"],"names":[],"mappings":"AAmCA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C;;;;;GAKG;AACH,MAAM,WAAW,OAAO;IACtB,uDAAuD;IACvD,UAAU,EAAE,MAAM,CAAC;IACnB,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,oEAAoE;IACpE,OAAO,EAAE,OAAO,CAAC;IACjB,oEAAoE;IACpE,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,8DAA8D;IAC9D,QAAQ,EAAE,MAAM,CAAC;IACjB;gEAC4D;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,0EAA0E;IAC1E,OAAO,EAAE,OAAO,CAAC;IACjB,6DAA6D;IAC7D,QAAQ,EAAE;QACR,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AA0BD;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,qBAAqB;IACpC;;qDAEiD;IACjD,SAAS,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1C;AAED;;;;;;;;GAQG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,GAAE,qBAA0B,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA2FnH;AAQD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CASzD"}
package/dist/pdf.js CHANGED
@@ -63,7 +63,7 @@ async function loadPdfjs() {
63
63
  * Throws on encrypted PDFs without a password or on hard-corrupt files.
64
64
  * Returns empty pages (with `isEmpty: true`) for image-only scans.
65
65
  */
66
- export async function extractPdfText(buffer) {
66
+ export async function extractPdfText(buffer, opts = {}) {
67
67
  const pdfjs = await loadPdfjs();
68
68
  // Convert Buffer → Uint8Array (pdfjs accepts both, but the typed-array
69
69
  // path skips a copy in some Node builds).
@@ -79,7 +79,14 @@ export async function extractPdfText(buffer) {
79
79
  const doc = await loadingTask.promise;
80
80
  const pageCount = doc.numPages;
81
81
  const pages = [];
82
- for (let i = 1; i <= pageCount; i++) {
82
+ // v3.7.13 H1 restrict the iteration to the requested window so
83
+ // doc.getPage() / getTextContent() only fire on pages the caller asked
84
+ // for. `pageRange.from / to` are clamped against the actual pageCount;
85
+ // an inverted or out-of-range range yields an empty iteration (the
86
+ // earlier full-document extraction was the resource-leak path).
87
+ const fromPage = opts.pageRange ? Math.max(1, opts.pageRange.from) : 1;
88
+ const toPage = opts.pageRange ? Math.min(pageCount, opts.pageRange.to) : pageCount;
89
+ for (let i = fromPage; i <= toPage; i++) {
83
90
  try {
84
91
  const page = await doc.getPage(i);
85
92
  const content = await page.getTextContent();
package/dist/pdf.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"pdf.js","sourceRoot":"","sources":["../src/pdf.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"pdf.js","sourceRoot":"","sources":["../src/pdf.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../src/tool-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,yCAAyC,CAAC;AAE3F,OAAO,EAAoB,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAyC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAIrD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CA8DrF;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,GAAG,IAAI,EACzB,qBAAqB,EAAE,OAAO;AAC9B;;;;GAIG;AACH,cAAc,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAW;AAC/D;;;;GAIG;AACH,WAAW,GAAE,UAAU,CAAC,aAAa,CAAQ,GAC5C,IAAI,CAy1BN;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CA2JxE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAoD1F;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAsDvE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CASzF;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAI/F"}
1
+ {"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../src/tool-registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,SAAS,EAAoB,MAAM,yCAAyC,CAAC;AAE3F,OAAO,EAAoB,KAAK,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE5D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAyC9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAExC,+EAA+E;AAC/E,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAIrD;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CA8DrF;AAED,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,SAAS,EACjB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,GAAG,IAAI,EACzB,qBAAqB,EAAE,OAAO;AAC9B;;;;GAIG;AACH,cAAc,GAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAW;AAC/D;;;;GAIG;AACH,WAAW,GAAE,UAAU,CAAC,aAAa,CAAQ,GAC5C,IAAI,CAq3BN;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CA2JxE;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAoD1F;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,GAAG,IAAI,CAsDvE;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAMlE;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CASzF;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAEtD;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,OAAO,GAAG;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAAE,CAI/F"}
@@ -486,8 +486,16 @@ hnswContext = null) {
486
486
  annotations: { ...READ_ONLY, title: "Read PDF" },
487
487
  inputSchema: {
488
488
  path: z.string().describe("Vault-relative path of the .pdf file (with or without .pdf)"),
489
+ // v3.7.13 L2 — schema-level rejection of inverted ranges (parity
490
+ // with obsidian_ocr_pdf). Pre-3.7.13 a `[10, 5]` request flowed
491
+ // through to readPdf's silent fallback (range ignored, full doc
492
+ // extracted) — actively worse than the OCR path because the
493
+ // entire PDF still got iterated by pdfjs. Now rejected upfront.
489
494
  pages: z
490
495
  .tuple([z.number().int().positive(), z.number().int().positive()])
496
+ .refine(([from, to]) => to >= from, {
497
+ message: "pages: 'to' must be >= 'from' (1-indexed inclusive range)"
498
+ })
491
499
  .optional()
492
500
  .describe("Optional 1-indexed inclusive page range, e.g. [2, 5] reads pages 2..5"),
493
501
  include_metadata: z.boolean().optional().describe("Include doc-level metadata in result (default true)")
@@ -504,12 +512,29 @@ hnswContext = null) {
504
512
  annotations: { ...READ_ONLY, title: "OCR PDF" },
505
513
  inputSchema: {
506
514
  path: z.string().describe("Vault-relative path of the .pdf file (with or without .pdf)"),
515
+ // v3.7.13 M3 — `lang` is passed straight to `tesseract.createWorker`,
516
+ // which downloads each requested language pack on first use (~10 MB
517
+ // each, cached). A bearer-token client could request many language
518
+ // combinations to trigger repeated downloads + slow OCR jobs — a
519
+ // resource-exhaustion DoS vector. Schema constraint: 1-8 entries,
520
+ // each a 3-letter Tesseract code (lowercase, optionally suffixed
521
+ // with `_<variant>` for regional packs like `chi_sim`, `chi_tra`).
522
+ // The pattern accepts the common Tesseract trained-data file
523
+ // naming (https://tesseract-ocr.github.io/tessdoc/Data-Files.html).
507
524
  lang: z
508
525
  .string()
526
+ .regex(/^[a-z]{3}(_[a-z]+)?(\+[a-z]{3}(_[a-z]+)?){0,7}$/, "lang must be 1-8 '+'-joined Tesseract codes (3 lowercase letters, optional `_variant` suffix). Example: 'eng', 'rus', 'chi_sim', 'eng+rus'.")
509
527
  .optional()
510
- .describe("Tesseract language pack(s). Default 'eng'. Multi-lang via '+': 'eng+rus' for English+Russian mixed scans. Common: 'eng', 'rus', 'jpn', 'chi_sim', 'fra', 'deu'."),
528
+ .describe("Tesseract language pack(s). Default 'eng'. Multi-lang via '+': 'eng+rus' for English+Russian mixed scans (max 8 packs per call). Common: 'eng', 'rus', 'jpn', 'chi_sim', 'fra', 'deu'."),
529
+ // v3.7.13 L2 — schema-level rejection of inverted ranges. Pre-3.7.13
530
+ // a `pages: [10, 5]` request flowed through to `ocr.ts:166-170` where
531
+ // `[from=10, to=5]` made the loop body never execute and returned an
532
+ // empty "success" result. Now rejected at the boundary.
511
533
  pages: z
512
534
  .tuple([z.number().int().positive(), z.number().int().positive()])
535
+ .refine(([from, to]) => to >= from, {
536
+ message: "pages: 'to' must be >= 'from' (1-indexed inclusive range)"
537
+ })
513
538
  .optional()
514
539
  .describe("Optional 1-indexed inclusive page range, e.g. [2, 5] OCRs pages 2..5"),
515
540
  scale: z