@oomkapwn/enquire-mcp 3.7.8 → 3.7.9
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 +72 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/docs/QUICKSTART.md +2 -2
- package/docs/api.md +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,78 @@
|
|
|
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.9] — 2026-05-16
|
|
6
|
+
|
|
7
|
+
> **TL;DR:** Round-11 audit response — **positioning permeation completion**. v3.7.8 calibrated the GitHub About + Topics + README hero + npm description, but the same pass missed `docs/QUICKSTART.md`, `docs/api.md`, `tests/github-metadata-invariant.test.ts`, and `CLAUDE.md` status section. v3.7.9 syncs all 5 surfaces. **786 tests unchanged.** Zero code changes. Round-11 caught the same class of bug v3.7.4 caught (instance-fix-not-class-fix): v3.7.8 was an instance fix (key surfaces only), the broader class needed propagation to all positioning surfaces.
|
|
8
|
+
|
|
9
|
+
**Patch — positioning permeation completion (the v3.7.8 class fix).**
|
|
10
|
+
|
|
11
|
+
### Critical methodological correction — v3.7.8 was instance fix, class needed propagation
|
|
12
|
+
|
|
13
|
+
v3.7.8 changed:
|
|
14
|
+
- README hero
|
|
15
|
+
- README image alt text + 4 other README mentions
|
|
16
|
+
- `package.json#description`
|
|
17
|
+
- GitHub About (out-of-band)
|
|
18
|
+
- GitHub Topics (out-of-band)
|
|
19
|
+
|
|
20
|
+
But the **class** of "positioning surfaces" also includes:
|
|
21
|
+
- `docs/QUICKSTART.md` agent list (2 mentions)
|
|
22
|
+
- `docs/api.md` lead paragraph
|
|
23
|
+
- `tests/github-metadata-invariant.test.ts` REQUIRED_TOPICS + ABOUT_LEADS_WITH (the invariant that would have CAUGHT this drift was itself out of sync — it carried v3.7.0 values across v3.7.0 → v3.7.8 metadata changes)
|
|
24
|
+
- `CLAUDE.md` Current Phase Status section (stuck at v3.7.4)
|
|
25
|
+
|
|
26
|
+
This is the **6th instance** of the instance-fix-not-class-fix recursion class (after K-1 instances, v3.7.3 K-1 invariant negative-control, v3.7.4 github-metadata negative-control). The lesson keeps recurring: when a positioning/calibration touches one surface, the entire class of positioning surfaces needs the same touch in the same commit.
|
|
27
|
+
|
|
28
|
+
### Fixed — OpenClaw permeation across 3 docs surfaces
|
|
29
|
+
|
|
30
|
+
- `docs/QUICKSTART.md:12` agent list — OpenClaw added
|
|
31
|
+
- `docs/QUICKSTART.md:18` MCP client list — OpenClaw added
|
|
32
|
+
- `docs/api.md:3` lead paragraph — "the most advanced Obsidian MCP" credential added + OpenClaw added to agent list
|
|
33
|
+
|
|
34
|
+
### Fixed — github-metadata-invariant test drift
|
|
35
|
+
|
|
36
|
+
The invariant test caught GitHub metadata drift since v3.7.0 but its OWN constants drifted across positioning changes:
|
|
37
|
+
|
|
38
|
+
- `REQUIRED_TOPICS`: dropped `context-engineering` (no longer in Topics since v3.7.8), added `openclaw` (restored in Topics in v3.7.8). Now matches the actual Topics list.
|
|
39
|
+
- `ABOUT_LEADS_WITH`: updated from `/^Memory layer for AI agents/i` to `/^The most advanced Obsidian MCP/i` (matches v3.7.8 About copy).
|
|
40
|
+
- Negative-control test cases updated to verify the new canonical phrase: positive cases include "The most advanced Obsidian MCP — long-term memory for AI agents"; negative cases include the v3.7.0-v3.7.7 phrasing ("Memory layer for AI agents...", "Long-term memory for AI agents") which is now WRONG against the v3.7.8 About.
|
|
41
|
+
|
|
42
|
+
The negative-control proves the analyzer correctly distinguishes old vs new canonical phrasing — the v3.7.4 negative-control infrastructure pays dividends here.
|
|
43
|
+
|
|
44
|
+
### Changed — CLAUDE.md Current Phase Status section
|
|
45
|
+
|
|
46
|
+
Updated from v3.7.4 (4 releases stale) through v3.7.9. Now documents the full v3.7.5 → v3.7.9 arc: external audit response, ship-ready batch, visual refresh, positioning calibration, permeation completion.
|
|
47
|
+
|
|
48
|
+
### Tests
|
|
49
|
+
|
|
50
|
+
**786 tests** — unchanged. No code paths touched, no test additions/removals, no coverage delta. The invariant constants change is a CONFIG update, not a new test.
|
|
51
|
+
|
|
52
|
+
Lint clean · `tsc` strict + `noUncheckedIndexedAccess` clean · version-consistency green at `3.7.9` (5 surfaces) · all K-1 invariants green · github-metadata invariant now correctly tracks v3.7.8 metadata.
|
|
53
|
+
|
|
54
|
+
### Migration
|
|
55
|
+
|
|
56
|
+
**No-op for every consumer.** Zero code/API/behavior/schema changes. Same npm install, same wire format. Visible surfaces:
|
|
57
|
+
- GitHub repo metadata — already in v3.7.8 state
|
|
58
|
+
- README — already in v3.7.8 state
|
|
59
|
+
- `docs/QUICKSTART.md` + `docs/api.md` — now match v3.7.8 positioning (instantly after merge)
|
|
60
|
+
|
|
61
|
+
### Method note — the instance-fix-not-class-fix recursion now has its 6th instance
|
|
62
|
+
|
|
63
|
+
The instance-fix-not-class-fix bug has now recurred at the methodology-recursion level **6 times** across the v3.6.x → v3.7.x cascade:
|
|
64
|
+
1. K-1 instances (v3.6.1 1/10, v3.6.2 4/10, v3.6.4 10/10)
|
|
65
|
+
2. K-1 invariant chain (v3.6.4 grep → v3.7.0 AST → v3.7.4 caller-pattern)
|
|
66
|
+
3. K-1 invariant negative-control (v3.7.3 fixed k1-version-stamp instance, v3.7.4 caught github-metadata instance)
|
|
67
|
+
4. Reranker count gate (v3.7.4)
|
|
68
|
+
5. External-audit K-1/K-2 sibling class (v3.7.5)
|
|
69
|
+
6. **Positioning surface class** (v3.7.8 instance fix, v3.7.9 class propagation — THIS)
|
|
70
|
+
|
|
71
|
+
The pattern: every time I think a class is closed, the NEXT iteration finds another surface where the class still applies. The terminator would be a **"positioning consistency invariant test"** that scans all positioning surfaces (README, package.json description, docs/*.md leads, GitHub About via gh api) for the SAME canonical phrasing — but that's v3.8+ scope (requires defining what "positioning surfaces" means and how to extract their lead text).
|
|
72
|
+
|
|
73
|
+
For now: v3.7.9 closes the v3.7.8 class manually. If round-12 finds another positioning surface, that's the signal to ship the invariant.
|
|
74
|
+
|
|
75
|
+
---
|
|
76
|
+
|
|
5
77
|
## [3.7.8] — 2026-05-16
|
|
6
78
|
|
|
7
79
|
> **TL;DR:** Repo-page positioning patch. Restores **"The most advanced Obsidian MCP"** as the primary credential in the README hero (previously demoted to a secondary line in v3.6.3's "memory for AI agents" pivot, then dropped entirely in v3.7.7's visual refresh). Adds **OpenClaw** to all agent-list mentions (README hero, "What it is", Use cases, comparison matrix, npm description, image alt text). GitHub About description + Topics updated out-of-band via `gh api`: About now leads with "The most advanced Obsidian MCP — long-term memory for AI agents...", Topics list `openclaw` (dropped `context-engineering` from the 20-cap as the least-discoverable hype keyword). **Zero code changes.** 786 tests unchanged.
|
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.9";
|
|
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.9";
|
|
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/docs/QUICKSTART.md
CHANGED
|
@@ -9,13 +9,13 @@ From `npm install` to a working **long-term memory layer for your AI agents**, b
|
|
|
9
9
|
- **Hybrid search** across every `.md` in your vault — BM25 + TF-IDF fused via Reciprocal Rank Fusion (Cormack et al, 2009), so keyword hits *and* related-term hits both surface.
|
|
10
10
|
- **Top-K ranked notes with snippets** — each result returns the matching note path, a ~120-char snippet around the hit, and per-signal scores so you see why it ranked.
|
|
11
11
|
- **No Obsidian app required** — any directory with `.md` files works. Obsidian doesn't even need to be installed.
|
|
12
|
-
- **Works in every MCP client** — Claude Desktop, Claude Code, Cursor, ChatGPT custom GPT, Codex, mobile MCP clients. One server, one config snippet per client.
|
|
12
|
+
- **Works in every MCP client** — Claude Desktop, Claude Code, Cursor, ChatGPT custom GPT, Codex, OpenClaw, mobile MCP clients. One server, one config snippet per client.
|
|
13
13
|
|
|
14
14
|
## Prerequisites
|
|
15
15
|
|
|
16
16
|
- **Node 22.13+ recommended** (or 20+ for non-PDF use cases — `node --version` should print `v22.13` or higher to enable PDF indexing via `pdfjs-dist@5.7+`; on Node 20 you get the full MCP server minus PDF features). CI matrix tests Node 22 + 24.
|
|
17
17
|
- **An Obsidian vault folder** — any directory containing `.md` files. If you don't have one, `mkdir ~/TestVault && echo "# Hello" > ~/TestVault/note.md` is enough to follow this guide.
|
|
18
|
-
- **An MCP client** — one of: Claude Desktop, Claude Code, Cursor, ChatGPT custom GPT (with remote MCP), Codex, or any other MCP-compatible client.
|
|
18
|
+
- **An MCP client** — one of: Claude Desktop, Claude Code, Cursor, ChatGPT custom GPT (with remote MCP), Codex, OpenClaw, or any other MCP-compatible client.
|
|
19
19
|
|
|
20
20
|
## Step 1 — Install (15 seconds)
|
|
21
21
|
|
package/docs/api.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# enquire — API
|
|
2
2
|
|
|
3
|
-
**enquire is a long-term memory layer for AI agents, built on your Obsidian vault.** Open-source, MCP-native, vendor-neutral persistence: agents (Claude Code / Claude Desktop / Cursor / ChatGPT / Codex / any MCP client) get durable, queryable recall across sessions, models, and providers — your knowledge lives in plain markdown you own, not a vendor cloud. 44 MCP tools (33 always-on read + 4 opt-in read + 7 opt-in write); the 4 opt-ins are: 1 via `--persistent-index` + `--diagnostic-search-tools` (`obsidian_full_text_search` — needs BOTH flags: persistent-index for the FTS5 index, diagnostic-search-tools to surface it as a single-ranker tool alongside the hybrid default `obsidian_search`) + 3 via `--diagnostic-search-tools` (the single-ranker `obsidian_search_text` / `obsidian_semantic_search` / `obsidian_embeddings_search` — gated by default in v2.0+ since `obsidian_search` auto-detects + fuses signals). 2 + 1 opt-in MCP resources, 19 MCP prompts. **v3.1.0+ adds `obsidian_hyde_search`** (HyDE-augmented retrieval, Gao et al 2023; agent supplies a synthetic answer, server embeds it for retrieval) plus the `vault_research` (sub-question decomposition) and `vault_synthesis_page` (Karpathy LLM-Wiki synthesis loop) prompts. v2.6.0+ also speaks Streamable HTTP via `serve-http` (bearer auth + rate-limit + CORS). v2.7.0+ indexes PDFs as a separate read tool surface; **v2.8.0+ blends PDF chunks into `obsidian_search` hybrid retrieval** with `--include-pdfs` — every hit carries a `kind: "md" | "pdf"` flag and PDF snippets include `[page: N]` markers for citation. **v2.9.0+ adds BGE cross-encoder reranking** on top of RRF with `--enable-reranker` — typical +5-10 NDCG@10 retrieval-quality boost. **v2.10.0+ adds Tesseract OCR for image-only / scanned PDFs** via `obsidian_ocr_pdf` — completes the PDF retrieval story.
|
|
3
|
+
**enquire is the most advanced Obsidian MCP — a long-term memory layer for AI agents, built on your Obsidian vault.** Open-source, MCP-native, vendor-neutral persistence: agents (Claude Code / Claude Desktop / Cursor / ChatGPT / Codex / OpenClaw / any MCP client) get durable, queryable recall across sessions, models, and providers — your knowledge lives in plain markdown you own, not a vendor cloud. 44 MCP tools (33 always-on read + 4 opt-in read + 7 opt-in write); the 4 opt-ins are: 1 via `--persistent-index` + `--diagnostic-search-tools` (`obsidian_full_text_search` — needs BOTH flags: persistent-index for the FTS5 index, diagnostic-search-tools to surface it as a single-ranker tool alongside the hybrid default `obsidian_search`) + 3 via `--diagnostic-search-tools` (the single-ranker `obsidian_search_text` / `obsidian_semantic_search` / `obsidian_embeddings_search` — gated by default in v2.0+ since `obsidian_search` auto-detects + fuses signals). 2 + 1 opt-in MCP resources, 19 MCP prompts. **v3.1.0+ adds `obsidian_hyde_search`** (HyDE-augmented retrieval, Gao et al 2023; agent supplies a synthetic answer, server embeds it for retrieval) plus the `vault_research` (sub-question decomposition) and `vault_synthesis_page` (Karpathy LLM-Wiki synthesis loop) prompts. v2.6.0+ also speaks Streamable HTTP via `serve-http` (bearer auth + rate-limit + CORS). v2.7.0+ indexes PDFs as a separate read tool surface; **v2.8.0+ blends PDF chunks into `obsidian_search` hybrid retrieval** with `--include-pdfs` — every hit carries a `kind: "md" | "pdf"` flag and PDF snippets include `[page: N]` markers for citation. **v2.9.0+ adds BGE cross-encoder reranking** on top of RRF with `--enable-reranker` — typical +5-10 NDCG@10 retrieval-quality boost. **v2.10.0+ adds Tesseract OCR for image-only / scanned PDFs** via `obsidian_ocr_pdf` — completes the PDF retrieval story.
|
|
4
4
|
|
|
5
5
|
> **Channels:** stable v3.7.x (`@latest` on npm) ships 44 tools including `obsidian_search` (hybrid BM25 + TF-IDF + ML embeddings, RRF-fused) with optional BGE cross-encoder reranking, `obsidian_embeddings_search`, `obsidian_hyde_search`, plus the `install-model` / `build-embeddings` / `clear-embeddings` / `setup` / `doctor` / `eval` / `bench` subcommands. The `@rc` dist-tag carries the most recent release candidate. This document covers the **v3.7.x stable** surface — see [CHANGELOG.md](../CHANGELOG.md) for the v3.7.0 quality batch that closed the post-v3.6.4 audit cycle (K-1 class structurally enforced at 4 levels, ~20× faster search hot path via peek caching, per-file branch coverage floors, GitHub repo metadata invariant).
|
|
6
6
|
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@oomkapwn/enquire-mcp",
|
|
4
|
-
"version": "3.7.
|
|
4
|
+
"version": "3.7.9",
|
|
5
5
|
"description": "The most advanced Obsidian MCP — long-term memory for AI agents. Hybrid retrieval (BM25 + TF-IDF + multilingual ML embeddings, RRF-fused) with BGE cross-encoder reranking, HNSW + int8 quantization, late-chunking, HyDE + sub-question decomposition, agentic RAG, PDFs (with OCR), standalone Bases (.base query execution — no Obsidian needed), GraphRAG-light (Louvain wikilink community detection), wikilinks, backlinks, Dataview, frontmatter, canvas. Open-source long-term memory / second brain for Claude Code, Claude Desktop, Cursor, ChatGPT custom GPT, Codex, OpenClaw, and any MCP client. 44 tools, 19 MCP prompts, 5 cross-encoder reranker models, 786 tests, SLSA-3, semver-bound, MIT.",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"bin": {
|