@oomkapwn/enquire-mcp 3.7.13 → 3.7.15
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 +75 -0
- package/README.md +4 -4
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/tools/write.d.ts +10 -4
- package/dist/tools/write.d.ts.map +1 -1
- package/dist/tools/write.js +10 -4
- package/dist/tools/write.js.map +1 -1
- package/dist/vault.d.ts +21 -4
- package/dist/vault.d.ts.map +1 -1
- package/dist/vault.js +91 -19
- package/dist/vault.js.map +1 -1
- package/docs/COMPARISON.md +2 -2
- package/package.json +2 -2
- package/dist/tools.d.ts +0 -980
- package/dist/tools.d.ts.map +0 -1
- package/dist/tools.js +0 -3132
- package/dist/tools.js.map +0 -1
- package/docs/api-reference/.nojekyll +0 -1
- package/docs/api-reference/assets/hierarchy.js +0 -1
- package/docs/api-reference/assets/highlight.css +0 -71
- package/docs/api-reference/assets/icons.js +0 -18
- package/docs/api-reference/assets/icons.svg +0 -1
- package/docs/api-reference/assets/main.js +0 -60
- package/docs/api-reference/assets/navigation.js +0 -1
- package/docs/api-reference/assets/search.js +0 -1
- package/docs/api-reference/assets/style.css +0 -1633
- package/docs/api-reference/functions/index.buildEmbedText.html +0 -15
- package/docs/api-reference/functions/index.buildMcpServer.html +0 -4
- package/docs/api-reference/functions/index.formatReadyBanner.html +0 -4
- package/docs/api-reference/functions/index.main.html +0 -1
- package/docs/api-reference/functions/index.parsePositiveInt.html +0 -1
- package/docs/api-reference/functions/index.parseQuantizationMode.html +0 -5
- package/docs/api-reference/functions/index.prepareServerDeps.html +0 -5
- package/docs/api-reference/functions/index.startServer.html +0 -1
- package/docs/api-reference/functions/tools.appendToNote.html +0 -17
- package/docs/api-reference/functions/tools.archiveNote.html +0 -15
- package/docs/api-reference/functions/tools.assertHnswModelMatchesEmbedder.html +0 -13
- package/docs/api-reference/functions/tools.chatThreadAppend.html +0 -22
- package/docs/api-reference/functions/tools.chatThreadRead.html +0 -16
- package/docs/api-reference/functions/tools.contextPack.html +0 -21
- package/docs/api-reference/functions/tools.createNote.html +0 -19
- package/docs/api-reference/functions/tools.dataviewQuery.html +0 -16
- package/docs/api-reference/functions/tools.embeddingsSearch.html +0 -40
- package/docs/api-reference/functions/tools.findPath.html +0 -23
- package/docs/api-reference/functions/tools.findSimilar.html +0 -21
- package/docs/api-reference/functions/tools.frontmatterGet.html +0 -15
- package/docs/api-reference/functions/tools.frontmatterSearch.html +0 -16
- package/docs/api-reference/functions/tools.frontmatterSet.html +0 -19
- package/docs/api-reference/functions/tools.getBacklinks.html +0 -15
- package/docs/api-reference/functions/tools.getNoteNeighbors.html +0 -16
- package/docs/api-reference/functions/tools.getOpenQuestions.html +0 -19
- package/docs/api-reference/functions/tools.getOutboundLinks.html +0 -16
- package/docs/api-reference/functions/tools.getRecentEdits.html +0 -14
- package/docs/api-reference/functions/tools.getUnresolvedWikilinks.html +0 -14
- package/docs/api-reference/functions/tools.getVaultStats.html +0 -13
- package/docs/api-reference/functions/tools.lintWiki.html +0 -20
- package/docs/api-reference/functions/tools.listCanvases.html +0 -16
- package/docs/api-reference/functions/tools.listNotes.html +0 -19
- package/docs/api-reference/functions/tools.listPdfs.html +0 -15
- package/docs/api-reference/functions/tools.listTags.html +0 -14
- package/docs/api-reference/functions/tools.ocrPdf.html +0 -18
- package/docs/api-reference/functions/tools.openInUi.html +0 -17
- package/docs/api-reference/functions/tools.paperAudit.html +0 -16
- package/docs/api-reference/functions/tools.pickEmbedTextForHyde.html +0 -8
- package/docs/api-reference/functions/tools.readCanvas.html +0 -19
- package/docs/api-reference/functions/tools.readNote.html +0 -20
- package/docs/api-reference/functions/tools.readPdf.html +0 -18
- package/docs/api-reference/functions/tools.renameNote.html +0 -24
- package/docs/api-reference/functions/tools.replaceInNotes.html +0 -20
- package/docs/api-reference/functions/tools.resolveTarget.html +0 -24
- package/docs/api-reference/functions/tools.resolveWikilink.html +0 -20
- package/docs/api-reference/functions/tools.searchHybrid.html +0 -62
- package/docs/api-reference/functions/tools.searchText.html +0 -19
- package/docs/api-reference/functions/tools.semanticSearch.html +0 -19
- package/docs/api-reference/functions/tools.validateNoteProposal.html +0 -19
- package/docs/api-reference/hierarchy.html +0 -1
- package/docs/api-reference/index.html +0 -1
- package/docs/api-reference/interfaces/index.ServeOptions.html +0 -74
- package/docs/api-reference/interfaces/index.ServerDeps.html +0 -27
- package/docs/api-reference/interfaces/tool-manifest.ToolManifestEntry.html +0 -33
- package/docs/api-reference/interfaces/tools.ArchiveNoteArgs.html +0 -12
- package/docs/api-reference/interfaces/tools.BacklinkHit.html +0 -15
- package/docs/api-reference/interfaces/tools.CanvasEdge.html +0 -19
- package/docs/api-reference/interfaces/tools.CanvasSummary.html +0 -16
- package/docs/api-reference/interfaces/tools.ChatThreadAppendArgs.html +0 -10
- package/docs/api-reference/interfaces/tools.ChatThreadMessage.html +0 -14
- package/docs/api-reference/interfaces/tools.ChatThreadReadResult.html +0 -10
- package/docs/api-reference/interfaces/tools.ContextPackArgs.html +0 -12
- package/docs/api-reference/interfaces/tools.ContextPackResult.html +0 -20
- package/docs/api-reference/interfaces/tools.EmbedHit.html +0 -21
- package/docs/api-reference/interfaces/tools.EmbedSearchResponse.html +0 -14
- package/docs/api-reference/interfaces/tools.FindPathResult.html +0 -17
- package/docs/api-reference/interfaces/tools.FrontmatterSearchArgs.html +0 -20
- package/docs/api-reference/interfaces/tools.FrontmatterSetArgs.html +0 -13
- package/docs/api-reference/interfaces/tools.HnswSearchContext.html +0 -21
- package/docs/api-reference/interfaces/tools.LintWikiArgs.html +0 -14
- package/docs/api-reference/interfaces/tools.LintWikiFinding.html +0 -14
- package/docs/api-reference/interfaces/tools.LintWikiResult.html +0 -9
- package/docs/api-reference/interfaces/tools.NoteNeighbors.html +0 -17
- package/docs/api-reference/interfaces/tools.NoteReadFull.html +0 -20
- package/docs/api-reference/interfaces/tools.NoteReadMap.html +0 -25
- package/docs/api-reference/interfaces/tools.NoteSummary.html +0 -14
- package/docs/api-reference/interfaces/tools.OcrPdfArgs.html +0 -16
- package/docs/api-reference/interfaces/tools.OcrPdfPage.html +0 -15
- package/docs/api-reference/interfaces/tools.OcrPdfResult.html +0 -18
- package/docs/api-reference/interfaces/tools.OpenInUiResult.html +0 -11
- package/docs/api-reference/interfaces/tools.OpenQuestion.html +0 -20
- package/docs/api-reference/interfaces/tools.OutboundLink.html +0 -20
- package/docs/api-reference/interfaces/tools.PaperAuditFinding.html +0 -17
- package/docs/api-reference/interfaces/tools.PathStep.html +0 -9
- package/docs/api-reference/interfaces/tools.PdfSummary.html +0 -9
- package/docs/api-reference/interfaces/tools.ReadCanvasResult.html +0 -15
- package/docs/api-reference/interfaces/tools.ReadPdfArgs.html +0 -8
- package/docs/api-reference/interfaces/tools.ReadPdfPage.html +0 -13
- package/docs/api-reference/interfaces/tools.ReadPdfResult.html +0 -18
- package/docs/api-reference/interfaces/tools.RenameNoteResult.html +0 -14
- package/docs/api-reference/interfaces/tools.RenameProposal.html +0 -13
- package/docs/api-reference/interfaces/tools.ReplaceInNotesArgs.html +0 -15
- package/docs/api-reference/interfaces/tools.ReplaceInNotesFileResult.html +0 -6
- package/docs/api-reference/interfaces/tools.ReplaceInNotesResult.html +0 -21
- package/docs/api-reference/interfaces/tools.SearchHit.html +0 -16
- package/docs/api-reference/interfaces/tools.SearchHybridHit.html +0 -30
- package/docs/api-reference/interfaces/tools.SearchHybridResponse.html +0 -23
- package/docs/api-reference/interfaces/tools.SearchResponse.html +0 -13
- package/docs/api-reference/interfaces/tools.SemanticHit.html +0 -15
- package/docs/api-reference/interfaces/tools.SimilarNote.html +0 -15
- package/docs/api-reference/interfaces/tools.TagSummary.html +0 -13
- package/docs/api-reference/interfaces/tools.UnresolvedWikilink.html +0 -22
- package/docs/api-reference/interfaces/tools.ValidateProposalArgs.html +0 -10
- package/docs/api-reference/interfaces/tools.ValidateProposalResult.html +0 -14
- package/docs/api-reference/interfaces/tools.VaultStats.html +0 -26
- package/docs/api-reference/modules/index.html +0 -1
- package/docs/api-reference/modules/tool-manifest.html +0 -1
- package/docs/api-reference/modules/tools.html +0 -1
- package/docs/api-reference/types/tools.CanvasNode.html +0 -7
- package/docs/api-reference/types/tools.SearchMode.html +0 -7
- package/docs/api-reference/variables/index.VERSION.html +0 -9
- package/docs/api-reference/variables/tool-manifest.TOOL_MANIFEST.html +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,81 @@
|
|
|
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.15] — 2026-05-18
|
|
6
|
+
|
|
7
|
+
> **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.**
|
|
8
|
+
|
|
9
|
+
**Patch — round-17 post-merge audit.**
|
|
10
|
+
|
|
11
|
+
### The meta-finding
|
|
12
|
+
|
|
13
|
+
v3.7.14 was a "round-16 SELF-audit" that closed 5 findings, prominently including **F1 — silent overclaim #6** (renameNote TSDoc header still described the old buggy write order after the M1 internals fix). The very next class-sweep, run AFTER v3.7.14 shipped, found that v3.7.14's own **F2 fix did the exact same thing**: rewrote `vault.renameFile` to use `fs.link()` + `fs.unlink()` for atomic non-overwrite, but left the function header docstring saying *"Atomic via `fs.rename`"*. This is **overclaim #7**, occurring inside the patch designed to address overclaim #6. The pattern reproduces with high fidelity:
|
|
14
|
+
|
|
15
|
+
| Instance | Release | Class |
|
|
16
|
+
|---|---|---|
|
|
17
|
+
| 1 | v3.6.1 CRIT-1 | "All N callsites fixed" — actually 1 of 10 |
|
|
18
|
+
| 2 | v3.6.2 K-1 | "All 10 callsites fixed" — actually 4 of 10 |
|
|
19
|
+
| 3 | v3.6.4 K-1 cli.ts | 5 residual callsites missed |
|
|
20
|
+
| 4 | v3.7.10 D4 | `examples/` add to `package.json#files` claimed but Edit raced |
|
|
21
|
+
| 5 | v3.7.11 round-13 | retroactive overclaim correction documented |
|
|
22
|
+
| 6 | v3.7.14 F1 | renameNote TSDoc header drifted from M1 code change |
|
|
23
|
+
| **7** | **v3.7.14 F2 (self)** | **renameFile TSDoc header drifted from F2's own internal change** |
|
|
24
|
+
| **8** | **v3.7.14 release tag** | **Tagged the pre-squash-merge branch SHA (orphan, never on main); release.yml correctly refused. v3.7.14 never reached npm until corrective re-tag in this v3.7.15 release window. Different class from #1-#7 (procedural / git-tag discipline, not docstring) but same overclaim shape: CHANGELOG/release notes implied a complete ship that hadn't happened.** |
|
|
25
|
+
| **9** | **v3.7.14 F5 (automation overclaim)** | **F5 added a `gh release create` step to `release.yml` claiming "auto-create GH release per tag". First end-to-end test on v3.7.14 corrected-tag re-push: `HTTP 403: Resource not accessible by integration`. Root cause: `permissions:` block at workflow top had `contents: read` (GitHub 2023 security default), but `gh release create` needs `contents: write`. F5 was code-complete but permission-incomplete — the documentation in v3.7.14 CHANGELOG implied it worked. Fix in this patch: `contents: write` on the workflow.** |
|
|
26
|
+
|
|
27
|
+
The mechanism is **always the same**: a fix updates code inside a function but doesn't update the function's TSDoc header or related comments. TypeDoc + IDE hover then surface the stale (lying) description while the code does something else. There is no test gate that fires on stale docstrings.
|
|
28
|
+
|
|
29
|
+
### Findings
|
|
30
|
+
|
|
31
|
+
- **R17-1 — v3.7.14 F2 TSDoc drift (overclaim #7, IN-RELEASE recursion)** (`src/vault.ts:633` header). Pre-3.7.15 the docstring read *"Rename a markdown file inside the vault. Atomic via fs.rename. Refuses if source missing, target exists (unless overwrite)..."* — but v3.7.14 F2's body uses `fs.link()` + `fs.unlink()` for the non-overwrite path (because `fs.rename` silently replaces destinations on POSIX, which IS the TOCTOU race F2 fixed). Header now matches: explicit `link()+unlink()` description + EXDEV fallback + cross-reference to `renameNote` in `tools/write.ts` for orchestration context.
|
|
32
|
+
- **R17-2 — `appendNote` TSDoc enhancement** (`src/vault.ts:707` header). v3.7.14 F3 fixed the stat-then-append race via single-fd `fs.open(abs, "a")` → `handle.stat()` → `handle.write()`, but the function header just said *"Refuses if the resulting file would exceed the size cap"* without explaining the (now-closed) race. Header now documents the open-fd guarantee + cites F3.
|
|
33
|
+
- **R17-3 — `docs/COMPARISON.md` reranker row stale (v3.7.12 L4 missed instance)** (`docs/COMPARISON.md:31`). v3.7.12 L4 corrected `package.json#description` from *"5 cross-encoder reranker models"* to *"BGE cross-encoder reranker verified end-to-end (+4 aliases in catalog, transformers.js bump pending)"* and added a docs-consistency invariant for the new phrasing. But COMPARISON.md's feature-matrix row at line 31 still said *"Cross-encoder reranker (BGE, 5 models)"* — same class, missed instance carried 3 releases since v3.7.12. Fixed to *"Cross-encoder reranker (BGE verified end-to-end)"*.
|
|
34
|
+
- **R17-4 — New invariant: COMPARISON.md reranker honesty** (`tests/docs-consistency.test.ts`). Locks the v3.7.12 L4 narrative into structural enforcement on COMPARISON.md: rejects any *"reranker (BGE, N models)"* form via regex. If a future release rewrites COMPARISON.md and reverts to the flat-count framing, this test fails on the PR.
|
|
35
|
+
- **R17-5 — Overclaim #8 (v3.7.14 orphan-tag procedural error, caught and corrected).** `git tag v3.7.14 36d5c1d` pointed at the pre-squash-merge feature-branch commit (orphan, never on main); the squash-merge created a different SHA on main (`9c4172b`). `.github/workflows/release.yml`'s "Assert tag is on main" guard correctly refused to publish (this guard exists since v2.0.0 to prevent direct-push-to-tag bypass of PR review). Net effect: v3.7.14 never reached npm until this v3.7.15 release window's corrective re-tag (`git tag v3.7.14 9c4172b && git push origin v3.7.14`). The CHANGELOG / GH-release-claim for v3.7.14 thus described a ship that hadn't completed — a new shape of the overclaim class. **Fix in this patch:** the release.yml's "Assert tag is on main" guard ALREADY caught it (defense worked); the missing piece is procedural — the local `git tag` step needs to use the SQUASH-MERGE COMMIT on main, not the feature-branch HEAD. Adding to CLAUDE.md anti-patterns as a new rule (below) so the next release in this codebase avoids the trap. v3.7.12 and v3.7.13 happened to tag correctly because I used the merge-commit SHA from `git log -1 --oneline` on main — but this discipline wasn't documented as a rule.
|
|
36
|
+
|
|
37
|
+
### Root-cause analysis classes documented
|
|
38
|
+
|
|
39
|
+
The full root-cause sweep on v3.7.13/v3.7.14 fixes also produced these class observations:
|
|
40
|
+
|
|
41
|
+
1. **TSDoc/code drift class** (F1 + R17-1 + R17-2). 7 documented instances. No structural enforcement exists because docstring↔code agreement is undecidable in general. **Mitigation discipline (added to CLAUDE.md anti-patterns):** every fix that changes function internals MUST also update the function's TSDoc header in the same commit; reviewers MUST check the header diff alongside the body diff. PR template should include a checkbox.
|
|
42
|
+
2. **TOCTOU sibling sweep** (v3.7.13 M2 + v3.7.14 F2 + v3.7.14 F3). All vault stat-then-act sites swept; no remaining siblings found. Locations verified safe: `bases.ts:245`, `watcher.ts:117`, `media.ts:226/349/526/703`, `meta.ts:202`, `write.ts:1054/1089` (all read-paths, no follow-on write).
|
|
43
|
+
3. **Hardcoded counts class** (R17-3). All "5 reranker / models" mentions enumerated and corrected. `docs/benchmarks.md` BGE numbers are model-version refs (not counts), `README.md` "+5-10 NDCG@10" is a metric delta (not a count) — both safe.
|
|
44
|
+
4. **Silent-pass invariant class** (round-15 L4 already closed). Re-verified: only `tests/github-metadata-invariant.test.ts` has an explicit skip path; CI's `GH_TOKEN` wiring makes it loud. No additional siblings.
|
|
45
|
+
|
|
46
|
+
### Stats
|
|
47
|
+
|
|
48
|
+
- **816 tests** (was 815 in v3.7.14). **+1 test** (R17-4 invariant).
|
|
49
|
+
- **2 TSDoc headers** updated to match code reality.
|
|
50
|
+
- **1 docs surface** brought into the v3.7.12 L4 honest-framing era.
|
|
51
|
+
|
|
52
|
+
### Method note added to CLAUDE.md
|
|
53
|
+
|
|
54
|
+
> **Single class-sweep is not enough — same-release recursion happens.** v3.7.14 F1 fixed overclaim #6, and v3.7.14 F2 SHIPPED overclaim #7 in the very same patch. **Rule since v3.7.15**: after every audit-driven release that closes an "overclaim" or "TSDoc/code drift" finding, run a post-merge re-sweep specifically scanning the new patch's own diffs for fresh instances of the same class. The recursion rate observed across v3.6.x-v3.7.x is high enough that this is a required step, not an optional one.
|
|
55
|
+
|
|
56
|
+
## [3.7.14] — 2026-05-18
|
|
57
|
+
|
|
58
|
+
> **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).
|
|
59
|
+
|
|
60
|
+
**Patch — round-16 self-audit batch.**
|
|
61
|
+
|
|
62
|
+
### Findings
|
|
63
|
+
|
|
64
|
+
- **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.
|
|
65
|
+
- **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.
|
|
66
|
+
- **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.
|
|
67
|
+
- **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.
|
|
68
|
+
- **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.
|
|
69
|
+
|
|
70
|
+
### Stats
|
|
71
|
+
|
|
72
|
+
- **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`).
|
|
73
|
+
- **+1 docs-consistency invariant** (required-gates count).
|
|
74
|
+
- npm tarball unchanged; v3.7.14 is a pure correctness + automation patch.
|
|
75
|
+
|
|
76
|
+
### Method
|
|
77
|
+
|
|
78
|
+
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.
|
|
79
|
+
|
|
5
80
|
## [3.7.13] — 2026-05-18
|
|
6
81
|
|
|
7
82
|
> **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).
|
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 · 816 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
|
+
| **816 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 (816 tests, ~5s)
|
|
226
226
|
npm run lint # zero warnings
|
|
227
227
|
npm run build # tsc → dist/
|
|
228
228
|
```
|
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.15";
|
|
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.15";
|
|
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/tools/write.d.ts
CHANGED
|
@@ -118,10 +118,16 @@ export interface RenameNoteResult {
|
|
|
118
118
|
* moves the file. `dry_run` returns the same plan without touching disk.
|
|
119
119
|
*
|
|
120
120
|
* Self-references inside the renamed file are also rewritten in the same
|
|
121
|
-
* pass — the file ships with no broken self-links.
|
|
122
|
-
* recoverable:
|
|
123
|
-
*
|
|
124
|
-
*
|
|
121
|
+
* pass — the file ships with no broken self-links. v3.7.13 M1 — write
|
|
122
|
+
* order is recoverable: (1) rewrite source content at OLD path → (2)
|
|
123
|
+
* `fs.rename` OLD → NEW (atomic, runs FIRST so a failure here doesn't
|
|
124
|
+
* leave updated backlinks pointing at a phantom target) → (3) rewrite
|
|
125
|
+
* backlink-bearing files (destination already exists on disk). Every
|
|
126
|
+
* failure mode is recoverable by re-running the same call (each step is
|
|
127
|
+
* idempotent on re-input). Pre-v3.7.13 the order was (backlinks → source
|
|
128
|
+
* → rename), which left backlinks rewritten to the NEW name pointing at
|
|
129
|
+
* a phantom destination when the rename step failed.
|
|
130
|
+
* WRITE TOOL — only registered when `--enable-write` is passed.
|
|
125
131
|
*
|
|
126
132
|
* @param vault - The vault. Must allow writes.
|
|
127
133
|
* @param args - `from` and `to` are vault-relative paths (with or without
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/tools/write.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAGpD;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAsB,UAAU,CAC9B,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAAC,SAAS,CAAC,EAAE,OAAO,CAAA;CAAE,GAClG,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CASzD;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAsB,YAAY,CAChC,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GAC3E,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,cAAc,EAAE,MAAM,CAAA;CAAE,CAAC,CAUlE;AAUD;;;;;;GAMG;AACH,MAAM,WAAW,cAAc;IAC7B,kEAAkE;IAClE,IAAI,EAAE,MAAM,CAAC;IACb,yEAAyE;IACzE,QAAQ,EAAE,MAAM,CAAC;IACjB,wDAAwD;IACxD,MAAM,EAAE,MAAM,CAAC;IACf,yDAAyD;IACzD,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,qCAAqC;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,oDAAoD;IACpD,OAAO,EAAE,OAAO,CAAC;IACjB,6EAA6E;IAC7E,aAAa,EAAE,cAAc,EAAE,CAAC;IAChC,gDAAgD;IAChD,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED
|
|
1
|
+
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../src/tools/write.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/write.js
CHANGED
|
@@ -87,10 +87,16 @@ export async function appendToNote(vault, args) {
|
|
|
87
87
|
* moves the file. `dry_run` returns the same plan without touching disk.
|
|
88
88
|
*
|
|
89
89
|
* Self-references inside the renamed file are also rewritten in the same
|
|
90
|
-
* pass — the file ships with no broken self-links.
|
|
91
|
-
* recoverable:
|
|
92
|
-
*
|
|
93
|
-
*
|
|
90
|
+
* pass — the file ships with no broken self-links. v3.7.13 M1 — write
|
|
91
|
+
* order is recoverable: (1) rewrite source content at OLD path → (2)
|
|
92
|
+
* `fs.rename` OLD → NEW (atomic, runs FIRST so a failure here doesn't
|
|
93
|
+
* leave updated backlinks pointing at a phantom target) → (3) rewrite
|
|
94
|
+
* backlink-bearing files (destination already exists on disk). Every
|
|
95
|
+
* failure mode is recoverable by re-running the same call (each step is
|
|
96
|
+
* idempotent on re-input). Pre-v3.7.13 the order was (backlinks → source
|
|
97
|
+
* → rename), which left backlinks rewritten to the NEW name pointing at
|
|
98
|
+
* a phantom destination when the rename step failed.
|
|
99
|
+
* WRITE TOOL — only registered when `--enable-write` is passed.
|
|
94
100
|
*
|
|
95
101
|
* @param vault - The vault. Must allow writes.
|
|
96
102
|
* @param args - `from` and `to` are vault-relative paths (with or without
|
package/dist/tools/write.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/tools/write.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"write.js","sourceRoot":"","sources":["../../src/tools/write.ts"],"names":[],"mappings":"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"}
|
package/dist/vault.d.ts
CHANGED
|
@@ -233,10 +233,18 @@ export declare class Vault {
|
|
|
233
233
|
bytes: number;
|
|
234
234
|
}>;
|
|
235
235
|
private assertParentInsideVault;
|
|
236
|
-
/** Rename a markdown file inside the vault.
|
|
237
|
-
*
|
|
238
|
-
*
|
|
239
|
-
*
|
|
236
|
+
/** Rename a markdown file inside the vault. v3.7.14 F2 — atomic destination
|
|
237
|
+
* guard via `fs.link(fromAbs, toAbs)` + `fs.unlink(fromAbs)` for the
|
|
238
|
+
* non-overwrite path (link(2) fails atomically with EEXIST, closing the
|
|
239
|
+
* stat-then-rename TOCTOU race that POSIX rename(2) silently lost by
|
|
240
|
+
* replacing destinations). Cross-device fallback (`EXDEV`) uses
|
|
241
|
+
* `fs.copyFile(..., COPYFILE_EXCL)` + `fs.unlink` for the same atomic
|
|
242
|
+
* guarantee. The overwrite=true path keeps plain `fs.rename` since the
|
|
243
|
+
* caller opted into replacement. Refuses if source missing, target exists
|
|
244
|
+
* (unless overwrite), either path traverses, or the target sits behind a
|
|
245
|
+
* symlink that points outside the vault. Caller is responsible for
|
|
246
|
+
* rewriting wikilinks pointing at the old name (see {@link renameNote}
|
|
247
|
+
* in `src/tools/write.ts` for the orchestration). */
|
|
240
248
|
renameFile(fromRel: string, toRel: string, opts?: {
|
|
241
249
|
overwrite?: boolean;
|
|
242
250
|
}): Promise<{
|
|
@@ -248,6 +256,15 @@ export declare class Vault {
|
|
|
248
256
|
* Append text to an existing note. Requires `enableWrite: true`.
|
|
249
257
|
* Refuses if the resulting file would exceed the size cap.
|
|
250
258
|
*
|
|
259
|
+
* v3.7.14 F3 — the size-cap check is performed against the OPEN file
|
|
260
|
+
* descriptor's `fstat`, not a separate `fs.stat(abs)` call before
|
|
261
|
+
* `fs.appendFile`. Pre-3.7.14 the two-call pattern let parallel
|
|
262
|
+
* writers race the cap: stat says `before.size + addition <= max`,
|
|
263
|
+
* another process appends size Y between stat and our append, our
|
|
264
|
+
* append takes the file past `max`. The post-3.7.14 single-fd pattern
|
|
265
|
+
* keeps stat→write inside one kernel handle that another process
|
|
266
|
+
* can't reposition.
|
|
267
|
+
*
|
|
251
268
|
* @param relOrAbs - Vault-relative or absolute target path.
|
|
252
269
|
* @param addition - Text to append (UTF-8). Caller is responsible for
|
|
253
270
|
* including any leading newline.
|
package/dist/vault.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["../src/vault.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"vault.d.ts","sourceRoot":"","sources":["../src/vault.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,KAAK,UAAU,EAAa,MAAM,aAAa,CAAC;AACzD,OAAO,EAAsB,KAAK,cAAc,EAAE,MAAM,eAAe,CAAC;AAIxE;;;yCAGyC;AACzC,eAAO,MAAM,sBAAsB,QAAkB,CAAC;AACtD,yEAAyE;AACzE,eAAO,MAAM,yBAAyB,OAAO,CAAC;AAI9C;;2BAE2B;AAC3B,eAAO,MAAM,4BAA4B,QAAmB,CAAC;AAE7D;;;;GAIG;AACH,MAAM,WAAW,SAAS;IACxB,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,sEAAsE;IACtE,OAAO,EAAE,MAAM,CAAC;IAChB,8CAA8C;IAC9C,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;iDACiD;AACjD,MAAM,WAAW,UAAU;IACzB,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,iDAAiD;IACjD,MAAM,EAAE,UAAU,CAAC;IACnB,+DAA+D;IAC/D,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,iEAAiE;IACjE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uFAAuF;IACvF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,kFAAkF;IAClF,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,qEAAqE;IACrE,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,qFAAqF;IACrF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;uEAEmE;IACnE,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB;;;mEAG+D;IAC/D,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,qBAAa,KAAK;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC;IAC/B,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC;IACzC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,YAAY,EAAE,SAAS,MAAM,EAAE,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,CAAC;IACtC,OAAO,CAAC,cAAc,CAAW;IACjC,OAAO,CAAC,eAAe,CAAW;IAClC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,KAAK,CAAS;IACtB;;uCAEmC;IACnC,OAAO,CAAC,cAAc,CAA+B;gBAEzC,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,YAAiB;IAmCjD;;+EAE2E;IAC3E,eAAe,CACb,OAAO,EAAE,MAAM,GACd,4DAA4D,GAAG,yBAAyB,GAAG,IAAI;IAalG;;;;gFAI4E;IAC5E,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO;IAUpC;;;;;;;;OAQG;IACG,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBnC;;;;;;;;;;;OAWG;IACG,aAAa,IAAI,OAAO,CAAC,MAAM,CAAC;IAgFtC;;;;;OAKG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAaxC;;;;;;;;OAQG;IACG,aAAa,IAAI,OAAO,CAAC,IAAI,CAAC;IAiDpC;;;;;;;;OAQG;IACH,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM;IAShC;;;;;;;;;;;OAWG;IACG,YAAY,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA0BzD;;uEAEmE;IAC7D,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAoB9E;;oBAEgB;IACV,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMvD;;;;;;;;;OASG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAMjD;;;;;;;;;;;;OAYG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAkB5E;;;;;;;;;;;;;;;OAeG;IACG,SAAS,CACb,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,EACf,IAAI,GAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAO,GACjC,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;YAyElE,uBAAuB;IAerC;;;;;;;;;;;0DAWsD;IAChD,UAAU,CACd,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,IAAI,GAAE;QAAE,SAAS,CAAC,EAAE,OAAO,CAAA;KAAO,GACjC,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;IA4EzD;;;;;;;;;;;;;;;;;;;OAmBG;IACG,UAAU,CACd,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IAsCzF;;6DAEyD;IACzD,eAAe,IAAI,IAAI;IAIvB;iFAC6E;IAC7E,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAIpC;;;;;;;OAOG;IACG,IAAI,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;IAMxE;;;iCAG6B;IAC7B,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM;IAI1B;;;;;;;OAOG;IACG,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;IAM3D;;wEAEoE;IAC9D,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC;YAUpC,eAAe;YAuCf,UAAU;IASxB,OAAO,CAAC,QAAQ;CAQjB;AA4FD;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAkChD"}
|
package/dist/vault.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
|
-
import { promises as fs } from "node:fs";
|
|
2
|
+
import { promises as fs, constants as fsConstants } from "node:fs";
|
|
3
3
|
import * as os from "node:os";
|
|
4
4
|
import * as path from "node:path";
|
|
5
5
|
import { parseNote } from "./parser.js";
|
|
@@ -572,10 +572,18 @@ export class Vault {
|
|
|
572
572
|
current = path.dirname(current);
|
|
573
573
|
}
|
|
574
574
|
}
|
|
575
|
-
/** Rename a markdown file inside the vault.
|
|
576
|
-
*
|
|
577
|
-
*
|
|
578
|
-
*
|
|
575
|
+
/** Rename a markdown file inside the vault. v3.7.14 F2 — atomic destination
|
|
576
|
+
* guard via `fs.link(fromAbs, toAbs)` + `fs.unlink(fromAbs)` for the
|
|
577
|
+
* non-overwrite path (link(2) fails atomically with EEXIST, closing the
|
|
578
|
+
* stat-then-rename TOCTOU race that POSIX rename(2) silently lost by
|
|
579
|
+
* replacing destinations). Cross-device fallback (`EXDEV`) uses
|
|
580
|
+
* `fs.copyFile(..., COPYFILE_EXCL)` + `fs.unlink` for the same atomic
|
|
581
|
+
* guarantee. The overwrite=true path keeps plain `fs.rename` since the
|
|
582
|
+
* caller opted into replacement. Refuses if source missing, target exists
|
|
583
|
+
* (unless overwrite), either path traverses, or the target sits behind a
|
|
584
|
+
* symlink that points outside the vault. Caller is responsible for
|
|
585
|
+
* rewriting wikilinks pointing at the old name (see {@link renameNote}
|
|
586
|
+
* in `src/tools/write.ts` for the orchestration). */
|
|
579
587
|
async renameFile(fromRel, toRel, opts = {}) {
|
|
580
588
|
if (!this.writeEnabled) {
|
|
581
589
|
throw new Error("Vault is read-only — start the server with --enable-write to allow rename");
|
|
@@ -595,20 +603,56 @@ export class Vault {
|
|
|
595
603
|
: "--exclude-glob denylist";
|
|
596
604
|
throw new Error(`Refusing to rename — destination is excluded by ${reason}: ${toRelNorm}`);
|
|
597
605
|
}
|
|
598
|
-
if (!opts.overwrite) {
|
|
599
|
-
const exists = await fs
|
|
600
|
-
.stat(toAbs)
|
|
601
|
-
.then(() => true)
|
|
602
|
-
.catch(() => false);
|
|
603
|
-
if (exists)
|
|
604
|
-
throw new Error(`Destination already exists: ${toRelNorm} (pass overwrite=true to replace)`);
|
|
605
|
-
}
|
|
606
606
|
const targetLstat = await fs.lstat(toAbs).catch(() => null);
|
|
607
607
|
if (targetLstat?.isSymbolicLink()) {
|
|
608
608
|
throw new Error(`Refusing to rename — destination is a symlink: ${path.relative(this.root, toAbs)}`);
|
|
609
609
|
}
|
|
610
610
|
await fs.mkdir(path.dirname(toAbs), { recursive: true });
|
|
611
|
-
|
|
611
|
+
// v3.7.14 F2 — atomic exclusive-destination rename (parity with v3.7.13 M2).
|
|
612
|
+
// Pre-3.7.14 we did `stat(toAbs)`-then-`rename(fromAbs, toAbs)`. POSIX
|
|
613
|
+
// rename(2) silently REPLACES the destination if it exists, so between
|
|
614
|
+
// a stat() returning ENOENT and the follow-up rename(), another process
|
|
615
|
+
// could create the destination and our rename would clobber it without
|
|
616
|
+
// honoring overwrite=false. Closes the same class of TOCTOU race that
|
|
617
|
+
// M2 fixed for writeNote.
|
|
618
|
+
//
|
|
619
|
+
// The fix uses link()+unlink() for the non-overwrite path. link(2) fails
|
|
620
|
+
// atomically with EEXIST when the destination exists — no stat-then-act
|
|
621
|
+
// window. After successful link the source path is removed, leaving the
|
|
622
|
+
// file at the new path with identical contents. For the overwrite path
|
|
623
|
+
// we keep plain rename() since the user opted into replacement.
|
|
624
|
+
if (opts.overwrite) {
|
|
625
|
+
await fs.rename(fromAbs, toAbs);
|
|
626
|
+
}
|
|
627
|
+
else {
|
|
628
|
+
try {
|
|
629
|
+
await fs.link(fromAbs, toAbs);
|
|
630
|
+
}
|
|
631
|
+
catch (err) {
|
|
632
|
+
if (err instanceof Error && "code" in err && err.code === "EEXIST") {
|
|
633
|
+
throw new Error(`Destination already exists: ${toRelNorm} (pass overwrite=true to replace)`);
|
|
634
|
+
}
|
|
635
|
+
// EXDEV (cross-device link) is the realistic fallback: vault on a
|
|
636
|
+
// bind-mount, source on the underlying fs. Fall back to atomic
|
|
637
|
+
// copy-then-unlink with the wx flag.
|
|
638
|
+
if (err instanceof Error && "code" in err && err.code === "EXDEV") {
|
|
639
|
+
await fs.copyFile(fromAbs, toAbs, fsConstants.COPYFILE_EXCL);
|
|
640
|
+
await fs.unlink(fromAbs);
|
|
641
|
+
}
|
|
642
|
+
else {
|
|
643
|
+
throw err;
|
|
644
|
+
}
|
|
645
|
+
}
|
|
646
|
+
// link() succeeded — source still exists at fromAbs as a hard link.
|
|
647
|
+
// Unlink it to complete the move semantic. If unlink fails the user
|
|
648
|
+
// sees a still-present fromAbs alongside the new toAbs (hard-linked,
|
|
649
|
+
// same inode on POSIX); re-running renameFile will see toAbs exists
|
|
650
|
+
// and reject — but the duplicate is a recoverable state, not data
|
|
651
|
+
// loss, which is the v3.7.13 M1 recovery posture.
|
|
652
|
+
await fs.unlink(fromAbs).catch(() => {
|
|
653
|
+
// Best-effort cleanup; toAbs is the canonical truth.
|
|
654
|
+
});
|
|
655
|
+
}
|
|
612
656
|
this.cache.delete(fromAbs);
|
|
613
657
|
this.cache.delete(toAbs);
|
|
614
658
|
const stat = await fs.stat(toAbs);
|
|
@@ -622,6 +666,15 @@ export class Vault {
|
|
|
622
666
|
* Append text to an existing note. Requires `enableWrite: true`.
|
|
623
667
|
* Refuses if the resulting file would exceed the size cap.
|
|
624
668
|
*
|
|
669
|
+
* v3.7.14 F3 — the size-cap check is performed against the OPEN file
|
|
670
|
+
* descriptor's `fstat`, not a separate `fs.stat(abs)` call before
|
|
671
|
+
* `fs.appendFile`. Pre-3.7.14 the two-call pattern let parallel
|
|
672
|
+
* writers race the cap: stat says `before.size + addition <= max`,
|
|
673
|
+
* another process appends size Y between stat and our append, our
|
|
674
|
+
* append takes the file past `max`. The post-3.7.14 single-fd pattern
|
|
675
|
+
* keeps stat→write inside one kernel handle that another process
|
|
676
|
+
* can't reposition.
|
|
677
|
+
*
|
|
625
678
|
* @param relOrAbs - Vault-relative or absolute target path.
|
|
626
679
|
* @param addition - Text to append (UTF-8). Caller is responsible for
|
|
627
680
|
* including any leading newline.
|
|
@@ -634,18 +687,37 @@ export class Vault {
|
|
|
634
687
|
throw new Error("Vault is read-only — start the server with --enable-write to allow note appends");
|
|
635
688
|
}
|
|
636
689
|
const abs = await this.resolveSafePath(relOrAbs);
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
690
|
+
// v3.7.14 F3 — close the stat-then-append size-cap race. Pre-3.7.14
|
|
691
|
+
// we did `stat(abs)` → check `before.size + addition <= maxFileBytes` →
|
|
692
|
+
// `appendFile(abs, addition)`. Under parallel writes, the stat could
|
|
693
|
+
// report size X, another process appended size Y between stat and our
|
|
694
|
+
// appendFile, and our append took the file to X+Y+addition, possibly
|
|
695
|
+
// past `maxFileBytes`. Now we open with `O_APPEND` ourselves, fstat
|
|
696
|
+
// the open handle to get the current size, check the cap, write, and
|
|
697
|
+
// close — keeping the stat→write window inside a single kernel-held
|
|
698
|
+
// fd that another process can't reposition. fs.appendFile + open with
|
|
699
|
+
// O_APPEND means subsequent writes are always atomic at the end of
|
|
700
|
+
// file (POSIX append guarantee).
|
|
701
|
+
const handle = await fs.open(abs, "a");
|
|
702
|
+
let beforeSize = 0;
|
|
703
|
+
try {
|
|
704
|
+
const before = await handle.stat();
|
|
705
|
+
beforeSize = before.size;
|
|
706
|
+
if (before.size + Buffer.byteLength(addition, "utf8") > this.maxFileBytes) {
|
|
707
|
+
throw new Error(`Refusing to grow ${path.relative(this.root, abs)} past ${this.maxFileBytes} bytes`);
|
|
708
|
+
}
|
|
709
|
+
await handle.write(addition, null, "utf8");
|
|
710
|
+
}
|
|
711
|
+
finally {
|
|
712
|
+
await handle.close();
|
|
640
713
|
}
|
|
641
|
-
await fs.appendFile(abs, addition, "utf8");
|
|
642
714
|
this.cache.delete(abs);
|
|
643
715
|
const after = await fs.stat(abs);
|
|
644
716
|
return {
|
|
645
717
|
absPath: abs,
|
|
646
718
|
relPath: path.relative(this.root, abs),
|
|
647
719
|
mtimeMs: after.mtimeMs,
|
|
648
|
-
appended_bytes: after.size -
|
|
720
|
+
appended_bytes: after.size - beforeSize
|
|
649
721
|
};
|
|
650
722
|
}
|
|
651
723
|
/** Drop every entry from the in-memory parse cache. Used after bulk
|