@oomkapwn/enquire-mcp 3.8.0-rc.13 → 3.8.0-rc.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.
- package/CHANGELOG.md +80 -0
- package/README.md +4 -4
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/docs/COMPARISON.md +1 -1
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,86 @@
|
|
|
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.8.0-rc.14] — 2026-05-24
|
|
6
|
+
|
|
7
|
+
> **TL;DR:** Fourteenth v3.8.0 release candidate. **Post-rc.13 audit closure** — 4 findings: M-2 (root-class fix: new files `llms.txt` + `AGENTS.md` introduced drift surface without invariant coverage), L-2 (`CLAUDE.md` status section stale at rc.12 — same α-class drift the methodology keeps fighting), L-3 (Tier B0 MCP Registry submission successfully completed but not documented in CHANGELOG), L-4 (PR #117 `server.json` schema validation fix had no CHANGELOG entry). 7 new docs-consistency invariants extend coverage to llms.txt + AGENTS.md numeric claims (test count, tool breakdown, MCP prompt count, CI gate count, per-file floor count). **855 tests** (+7 invariants vs rc.13). Ships under `@rc` dist-tag.
|
|
8
|
+
|
|
9
|
+
**Minor — fourteenth v3.8.0 release candidate.**
|
|
10
|
+
|
|
11
|
+
### Fix M-2 (MEDIUM) — root-class fix for new-file drift-surface gap
|
|
12
|
+
|
|
13
|
+
**Background.** rc.12 added `llms.txt` (https://llmstxt.org/ standard for AI agents) and `AGENTS.md` (Cursor 2.0 / Claude Code / Codex coding-agent convention). Both contain numeric/structural claims — "848 unit tests", "44 tools", "19 MCP prompts", "9 required CI gates", "10 per-file branch floors" — that were NOT covered by the existing `docs-consistency.test.ts` invariants. Existing invariants checked README, STABILITY.md, COMPARISON.md, package.json description, and docs/api.md, but new files were a fresh drift surface.
|
|
14
|
+
|
|
15
|
+
Post-rc.13 audit found this as a class-level methodology gap: **whenever we add a new docs surface with numeric claims, we must extend docs-consistency at the same time**, otherwise the surface will silently drift. Same class as M-1 (CLI help text drift before rc.11 lifted to `cli-help.ts`) — but for a *new* surface we created in rc.12 rather than a pre-existing one.
|
|
16
|
+
|
|
17
|
+
**Fix** (`tests/docs-consistency.test.ts`): added a new `describe` block "llms.txt + AGENTS.md numeric claims (v3.8.0-rc.14 M-2)" with 7 invariants:
|
|
18
|
+
1. `llms.txt` test count = actual `it()` count across `tests/*.test.ts`
|
|
19
|
+
2. `llms.txt` tool breakdown `N tools (A always-on read + B opt-in + C gated writes)` = TOOL_MANIFEST counts per kind
|
|
20
|
+
3. `llms.txt` MCP prompt count = `registerPrompt` count in `src/prompts.ts`
|
|
21
|
+
4. `llms.txt` `N required + M advisory CI gates` count = `REQUIRED="..."` regex entries in `.github/workflows/release.yml`
|
|
22
|
+
5. `AGENTS.md` `X+ tests` lower-bound assertion (≤ actual, with drift detection if actual >50 above floor)
|
|
23
|
+
6. `AGENTS.md` per-file branch floor count = entries in `scripts/check-per-file-coverage.mjs` FLOORS object
|
|
24
|
+
7. `AGENTS.md` `N required CI gates` (multiple mentions) all = `release.yml` REQUIRED count
|
|
25
|
+
|
|
26
|
+
Tested empirically: invariants caught 7 fresh drift instances (test count now 855, not 848 — the 7 new invariants themselves changed the count). All surfaces updated to 855 in same commit.
|
|
27
|
+
|
|
28
|
+
**Defense-in-depth.** This now means EVERY new docs surface in this repo must either (a) avoid numeric claims, OR (b) be added to docs-consistency invariants at the same time. CLAUDE.md anti-patterns updated with new rule.
|
|
29
|
+
|
|
30
|
+
### Fix L-2 (LOW) — CLAUDE.md status section was stale at rc.12
|
|
31
|
+
|
|
32
|
+
**Background.** CLAUDE.md line 119 said `**v3.8.0-rc.12 shipped (current)**` after rc.13 was already shipped + MCP Registry submission successful. Classic α-class drift the methodology specifically warns against.
|
|
33
|
+
|
|
34
|
+
**Fix** (`CLAUDE.md`): updated status section to reflect rc.12 (shipped), rc.13 (shipped, includes MCP Registry submission confirmation), rc.14 (current). Same edit pattern as previous status updates.
|
|
35
|
+
|
|
36
|
+
### Fix L-3 (LOW) — MCP Registry submission was not documented in CHANGELOG
|
|
37
|
+
|
|
38
|
+
**Background.** rc.13 CHANGELOG entry predicted "After this RC publishes to npm, `mcp-publisher publish` submits server.json to the canonical MCP Registry." — but the *actual* successful submission was never recorded in any CHANGELOG entry. Audit trail gap.
|
|
39
|
+
|
|
40
|
+
**Confirmation.** Successfully published to `https://registry.modelcontextprotocol.io` on 2026-05-24 09:18:29 UTC:
|
|
41
|
+
- Server name: `io.github.oomkapwn/enquire-mcp`
|
|
42
|
+
- Version: `3.8.0-rc.13`
|
|
43
|
+
- Status: `active`
|
|
44
|
+
- `isLatest`: `true`
|
|
45
|
+
|
|
46
|
+
Live verification: `curl "https://registry.modelcontextprotocol.io/v0.1/servers?search=enquire"` → 1 listing. Glama.ai, mcp.so, smithery.ai will auto-sync from this canonical source over 24-48 hours.
|
|
47
|
+
|
|
48
|
+
Also opened **awesome-mcp-servers PR #6838** at `https://github.com/punkpeye/awesome-mcp-servers/pull/6838` in the Knowledge & Memory category. Awaiting maintainer review.
|
|
49
|
+
|
|
50
|
+
### Fix L-4 (LOW) — PR #117 server.json validation fix was not documented
|
|
51
|
+
|
|
52
|
+
**Background.** rc.13 shipped with `server.json` that failed MCP Registry validation (description >100 chars, runtimeArguments missing required `valueHint`/`value`/`name` fields per the v2025-12-11 schema). Fixed during the registry submission session and merged via PR #117 — but no CHANGELOG entry was added.
|
|
53
|
+
|
|
54
|
+
**Confirmation.** PR #117 merged to main at commit ea3a4cc. Changes:
|
|
55
|
+
1. `server.json` description: 489 chars → 91 chars (matches MCP Registry `length ≤ 100` constraint)
|
|
56
|
+
2. PositionalArgument: added `valueHint: "subcommand"`, `value: "serve"`, ordered fields per schema
|
|
57
|
+
3. NamedArgument: explicit `type: "named"` + `name: "--vault"` fields
|
|
58
|
+
|
|
59
|
+
`mcp-publisher validate` now passes cleanly. The corrected `server.json` is what was published to the registry; this RC documents the gap.
|
|
60
|
+
|
|
61
|
+
### Stats
|
|
62
|
+
|
|
63
|
+
- **855 tests** (+7 docs-consistency invariants vs rc.13).
|
|
64
|
+
- 2 surfaces newly covered by invariants: `llms.txt`, `AGENTS.md`.
|
|
65
|
+
- 5 surfaces with test-count bumps: README (×3), package.json, COMPARISON.md, llms.txt, AGENTS.md.
|
|
66
|
+
- `npm audit`: 0 vulnerabilities.
|
|
67
|
+
- Dist-tag: `@rc` (v3.7.20 stays `@latest`).
|
|
68
|
+
- All 9 required CI gates pass locally.
|
|
69
|
+
|
|
70
|
+
### Method note
|
|
71
|
+
|
|
72
|
+
**New rule (CLAUDE.md anti-patterns):** whenever a PR adds a new docs surface with numeric claims, the SAME PR must extend `docs-consistency.test.ts` to cover those claims. Otherwise the new surface becomes a fresh drift surface that the next external audit will catch. This generalizes the v3.7.17 OIA rule from "state-driven walks for existing files" to "structural invariants for new files".
|
|
73
|
+
|
|
74
|
+
### v3.8.0 remaining backlog
|
|
75
|
+
|
|
76
|
+
- **External audit** before `@latest` promotion (CLAUDE.md rule since v3.6.1 — required ≥2 independent external auditors per major).
|
|
77
|
+
- **Tier C** (deferred): JSON-LD `SoftwareApplication` schema on GH Pages, GitHub Sponsors funding.yml.
|
|
78
|
+
- **T-2, T-3** — communities handler + hyde E2E.
|
|
79
|
+
- **T-4** — optional serve-http HTTP smoke.
|
|
80
|
+
- **Multi-subcommand CLI drift audit** (from rc.11 RCA): install-model/build-embeddings/eval/bench for --include-pdfs/--embed-file/--json/etc.
|
|
81
|
+
- OCR'd PDF watcher embed-sync, HNSW in-memory watcher update.
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
5
85
|
## [3.8.0-rc.13] — 2026-05-24
|
|
6
86
|
|
|
7
87
|
> **TL;DR:** Thirteenth v3.8.0 release candidate. **AI/LLM discoverability Tier B** — adds `mcpName` field to `package.json` (`io.github.oomkapwn/enquire-mcp`) and ships `server.json` at repo root, both required by the official MCP Registry verification (registry.modelcontextprotocol.io). Adds `CITATION.cff` for academic discoverability (Google Scholar / Semantic Scholar) citing the underlying research papers (HyDE, RRF, BM25, Louvain, HNSW, BGE). After this RC ships to npm, mcp-publisher can submit to the canonical MCP Registry — which auto-propagates to glama.ai, mcp.so, smithery.ai, and other downstream registries. **No code changes; metadata + documentation only.** 848 tests unchanged. Ships under `@rc` dist-tag.
|
package/README.md
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
[](https://github.com/oomkapwn/enquire-mcp/actions/workflows/ci.yml)
|
|
14
14
|
[](https://www.npmjs.com/package/@oomkapwn/enquire-mcp)
|
|
15
15
|
[](https://www.npmjs.com/package/@oomkapwn/enquire-mcp)
|
|
16
|
-
[](#trust)
|
|
17
17
|
[](./STABILITY.md)
|
|
18
18
|
[](https://slsa.dev/spec/v1.0/levels#build-l3)
|
|
19
19
|
[](https://modelcontextprotocol.io/)
|
|
@@ -38,7 +38,7 @@ Your Obsidian vault becomes **persistent, queryable long-term memory** for any M
|
|
|
38
38
|
> 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.
|
|
39
39
|
> 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.
|
|
40
40
|
|
|
41
|
-
**44 tools · 19 MCP prompts ·
|
|
41
|
+
**44 tools · 19 MCP prompts · 855 unit tests · 50+ languages · v3.7.x stable · semver-bound · MIT · SLSA-3 signed.**
|
|
42
42
|
|
|
43
43
|
---
|
|
44
44
|
|
|
@@ -176,7 +176,7 @@ Auto-generated **[API reference at oomkapwn.github.io/enquire-mcp](https://oomka
|
|
|
176
176
|
| **GraphRAG-light** (wikilink community detection via Louvain modularity) | ✅ **only here** | ❌ | ❌ |
|
|
177
177
|
| **Standalone `.base` query execution** (works without Obsidian running) | ✅ **only here** | ❌ | ❌ delegates to Obsidian |
|
|
178
178
|
| **HyDE retrieval** (Gao et al 2023) + sub-question decomposition | ✅ **only here** | ❌ | ❌ |
|
|
179
|
-
| **
|
|
179
|
+
| **855 unit tests · 9 required + 4 advisory CI gates per PR** | ✅ | n/a | rare |
|
|
180
180
|
| **SLSA-3 build provenance** | ✅ | n/a | ❌ |
|
|
181
181
|
| **Semver-bound public surface** ([STABILITY.md](./STABILITY.md)) | ✅ | n/a | ❌ |
|
|
182
182
|
| Standalone (no Obsidian plugin needed) | ✅ | ❌ requires Obsidian | varies |
|
|
@@ -286,7 +286,7 @@ Channel: `npm install @oomkapwn/enquire-mcp` → latest stable. Full changelog:
|
|
|
286
286
|
```bash
|
|
287
287
|
git clone https://github.com/oomkapwn/enquire-mcp.git
|
|
288
288
|
cd enquire-mcp && npm install
|
|
289
|
-
npm test # full suite (
|
|
289
|
+
npm test # full suite (855 tests, ~5s)
|
|
290
290
|
npm run lint # zero warnings
|
|
291
291
|
npm run build # tsc → dist/
|
|
292
292
|
```
|
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.8.0-rc.
|
|
10
|
+
export declare const VERSION = "3.8.0-rc.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
|
@@ -40,7 +40,7 @@ import { main } from "./cli.js";
|
|
|
40
40
|
* + `McpServer({version})`) and `src/tool-registry.ts` (used in the
|
|
41
41
|
* `vault-info` resource payload).
|
|
42
42
|
*/
|
|
43
|
-
export const VERSION = "3.8.0-rc.
|
|
43
|
+
export const VERSION = "3.8.0-rc.14";
|
|
44
44
|
// Re-exports — preserve the v3.5.x public surface so http-transport.ts and
|
|
45
45
|
// tests don't need to know about the new module layout. The set below
|
|
46
46
|
// exactly matches the v3.5.x `export` declarations: `main`,
|
package/docs/COMPARISON.md
CHANGED
|
@@ -43,7 +43,7 @@ The four axes the external audit (#3, 2026-05) called out as decisive — **REST
|
|
|
43
43
|
| Read open editor state, active note, etc. | **No** | **Yes** | Limited | No | No |
|
|
44
44
|
| Zero outbound network calls in serve mode | **Yes** (default) | Local-only (REST)| Local-only (REST)| Yes | Yes |
|
|
45
45
|
| SLSA-3 build provenance on releases | **Yes** | No | No | No | No |
|
|
46
|
-
| Test count (public) | **
|
|
46
|
+
| Test count (public) | **855** | (varies) | (varies) | (varies) | (varies) |
|
|
47
47
|
| Tool count | 44 | ~25 | ~8 | ~10 | 3–5 |
|
|
48
48
|
| MCP prompt count | 19 | 0 | 0 | 0 | 0 |
|
|
49
49
|
| License | MIT | Apache-2.0 | MIT | MIT | (varies) |
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$schema": "https://json.schemastore.org/package.json",
|
|
3
3
|
"name": "@oomkapwn/enquire-mcp",
|
|
4
|
-
"version": "3.8.0-rc.
|
|
4
|
+
"version": "3.8.0-rc.14",
|
|
5
5
|
"mcpName": "io.github.oomkapwn/enquire-mcp",
|
|
6
|
-
"description": "MCP server giving AI agents (Claude Code, Claude Desktop, Cursor, ChatGPT, Codex, OpenClaw) persistent long-term memory backed by your local Obsidian markdown vault. Hybrid retrieval (BM25 + ML embeddings + BGE reranker, RRF-fused), HNSW + int8 quantization, agentic RAG (HyDE + sub-question decomposition), GraphRAG-light (Louvain), standalone Obsidian Bases, PDFs + Tesseract OCR. Vendor-neutral memory layer for any MCP-compatible agent. 44 tools, 19 MCP prompts,
|
|
6
|
+
"description": "MCP server giving AI agents (Claude Code, Claude Desktop, Cursor, ChatGPT, Codex, OpenClaw) persistent long-term memory backed by your local Obsidian markdown vault. Hybrid retrieval (BM25 + ML embeddings + BGE reranker, RRF-fused), HNSW + int8 quantization, agentic RAG (HyDE + sub-question decomposition), GraphRAG-light (Louvain), standalone Obsidian Bases, PDFs + Tesseract OCR. Vendor-neutral memory layer for any MCP-compatible agent. 44 tools, 19 MCP prompts, 855 tests, SLSA-3, semver-bound, MIT, zero cloud calls during serve.",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"bin": {
|
|
9
9
|
"enquire-mcp": "dist/index.js"
|