vantage-peers-mcp 2.10.0 → 2.12.0

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 CHANGED
@@ -1,5 +1,69 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.12.0] — 2026-06-14
4
+
5
+ ### Changed
6
+ - `check_messages` now calls `messages:checkNewMessagesEnvelope` (Convex PR #759 mergeCommit `c03023fc85463fe16fc53948d3002420bc1c4547`) for bounded tool-response size. New optional `limit` arg (1-50, default 20). When the call is truncated, the text payload appends `— truncated. Resume with check_messages since=<nextSince>` so the orchestrator can page the backlog cleanly without busting Claude Code's tool-response cap.
7
+ - `since` arg description amended with a "pair with `nextSince` from a previous truncated reply" hint.
8
+
9
+ ### Notes
10
+ - Closes Pi BLOCKER VP task `k1702xaahb` (Day 102 — sigma-vps cron crash on a 36-message / 53 KB backlog).
11
+ - Legacy `messages:checkNewMessages` Convex query left intact for vp-mcp <2.12.0 callers (no break).
12
+
13
+ ## [2.11.0] — 2026-06-14 — Day 102 CRUD baseline PR-C-bis option B: 3-entity Convex searchIndex (mission k575kc1ryps0n8br95jw3q7d0x88m2v9)
14
+
15
+ Mission `mcp-crud-baseline-standard` PR-C-bis under T2. Pi-sequenced follow-up after PR-C (rename-only safe subset) — implements **option B SCOPED** per Pi arbitrage msg `jn7abynmghy5qdr9ga0b914wmh88n99w` ("GO option B SCOPED — démarre PR-C avec 3 entités prioritaires"): tasks + messages + briefingNotes get native Convex BM25 search via `.searchIndex()` schema additions + per-entity Convex queries + MCP tool wrappers.
16
+
17
+ Backend choice (B over A): Convex native `.searchIndex()` is BM25-only, no embeddings, no RAG per-entity pipeline. Sub-linear scan stays in the same backend without spinning up an embedding pipeline per table. Hybrid/semantic per entity remains a future RFC.
18
+
19
+ ### Added — Convex schema searchIndex (3 tables)
20
+
21
+ - `tasks` → `searchIndex("search_title", { searchField: "title", filterFields: ["assignedTo", "status", "project", "missionId", "orgId"] })`
22
+ - `messages` → `searchIndex("search_content", { searchField: "content", filterFields: ["from", "channel", "sessionDay", "tenantId"] })`
23
+ - `briefingNotes` → `searchIndex("search_content", { searchField: "content", filterFields: ["topic", "createdBy", "orgId"] })`
24
+
25
+ ### Added — Convex query functions
26
+
27
+ - `tasks:searchTasksByKeyword` — BM25 over title with assignedTo/status/project/missionId filters + scope gate via `withOrgScope` + `filterByOrgScope` + `requireScope("view-own-tasks")`. Lite/full projection.
28
+ - `messages:searchMessagesByKeyword` — BM25 over content with from/channel/sessionDay/tenantId filters.
29
+ - `briefingNotes:searchBriefingNotesByKeyword` — BM25 over content with topic/createdBy filters.
30
+
31
+ All three: 20-item default limit, 200 cap, lite projection on demand.
32
+
33
+ ### Added — MCP tool wrappers (3 canonical)
34
+
35
+ - **`search_tasks_by_keyword`** — wires to `tasks:searchTasksByKeyword`. `readOnlyHint=true`.
36
+ - **`search_messages_by_keyword`** — wires to `messages:searchMessagesByKeyword`. `readOnlyHint=true`.
37
+ - **`search_briefing_notes_by_keyword`** — wires to `briefingNotes:searchBriefingNotesByKeyword`. `readOnlyHint=true`.
38
+
39
+ ### Why option B (and why scoped to 3)
40
+
41
+ `grep searchIndex convex/schema.ts` previously returned zero hits; only `memories` had search infrastructure (via `@convex-dev/rag`). The original "13-entity cluster" full scope was deferred via PR-C (rename-only) after arbitrage timeout. Pi's arbitrage landed shortly after: **option B SCOPED to 3 priority entities** is the right blend of doctrine progress + bounded scope:
42
+ - `tasks` — largest fleet audience (Eta T13 close-issue scan, dispatch-task-find, etc.).
43
+ - `messages` — post-incident audit + messages-history skill demand.
44
+ - `briefingNotes` — daily snapshot recall narrative.
45
+
46
+ The remaining 10 entities (mission/mandate/fix_pattern/component/repo_mapping/bu/profile/deployment/diary/error/issue/recurring_task/summary) go to a per-entity RFC (mission walk-through scheduled Wed 17 June 15h with Laurent) — each entity decides B (searchIndex), A (RAG if semantic justified, e.g. episodes/diary), or N/A semantic documented (deployment/repo_mapping).
47
+
48
+ ### Version sync
49
+
50
+ - `mcp-server/server.ts:115` SERVER_VERSION 2.10.0 → 2.11.0
51
+ - `mcp-server/package.json` → 2.11.0
52
+ - README + 4 cloud docs bumped to 2.11.0 markers (`enforce-release-sync` v1.0.1 gate).
53
+
54
+ ### Test fixture catch-up
55
+
56
+ - `READ_ONLY_TOOLS` set in `mcp-server/src/__tests__/chatgpt-tool-annotations.test.ts` extended with the 3 new canonical tool names.
57
+
58
+ ### Refs
59
+
60
+ - Mission `k575kc1ryps0n8br95jw3q7d0x88m2v9`.
61
+ - Pi sequencing dispatch: msg `jn76360ckrrkwpqbfwa6tst7k588mpsh` ("(1) T2 PR-C-bis option B SCOPED 3 entities").
62
+ - Pi arbitrage that selected option B: msg `jn7abynmghy5qdr9ga0b914wmh88n99w`.
63
+ - Audit T1: `analysis/mcp-crud-baseline-vp-audit-2026-06-14.md` rows 1 (task), 3 (message), 4 (briefing_note).
64
+ - Doctrine memory: `j57dhrmkzjerjtssnr0z9ba57n88n7q7` (5 ops per entity).
65
+ - Predecessors: PR-A 2.8.0 (memories canonical), PR-B 2.9.0 (episode 5-op), PR-C 2.10.0 (rename-only safe subset).
66
+
3
67
  ## [2.10.0] — 2026-06-14 — Day 102 CRUD baseline PR-C: rename-only safe subset (mission k575kc1ryps0n8br95jw3q7d0x88m2v9)
4
68
 
5
69
  Mission `mcp-crud-baseline-standard` PR-C under T2. Third of 4 sub-PRs aligning the MCP surface with the Day 101 doctrine `j57dhrmkzjerjtssnr0z9ba57n88n7q7`. Sigma autonomous default after arbitrage timeout on the original "13-entity search_by_keyword cluster" scope — that fuller scope requires a backend search-infrastructure decision (RAG-index per entity vs Convex `.searchIndex()` per table) that is NOT a thin-wrapper PR. PR-C ships the rename-only safe subset now to keep doctrine velocity; the full cluster is deferred to a backend-RFC mission.
package/README.md CHANGED
@@ -91,7 +91,7 @@ The server also reads `CONVEX_URL` from `.env.local` in the parent directory if
91
91
  ## Tools (97)
92
92
 
93
93
  ### Memory (6)
94
- `store_memory`, `recall`, `list_memories`, `soft_delete_memory`, `get_memory`, `store_episode`
94
+ `store_memory`, `search_memories_by_semantic` (alias `recall`), `list_memories`, `soft_delete_memory`, `get_memory`, `store_episode`
95
95
 
96
96
  ### Profiles (3)
97
97
  `get_profile`, `update_profile`, `list_peers`
@@ -115,7 +115,7 @@ The server also reads `CONVEX_URL` from `.env.local` in the parent directory if
115
115
  `create_briefing_note`, `list_briefing_notes`
116
116
 
117
117
  ### Search / RAG (3)
118
- `search_fix_patterns`, `text_search`, `hybrid_search`
118
+ `search_fix_patterns_by_semantic` (alias `search_fix_patterns`), `search_memories_by_keyword` (alias `text_search`), `hybrid_search`
119
119
 
120
120
  ### Issues (6)
121
121
  `get_issue`, `list_issues`, `update_issue_status`, `verify_issue`, `issue_stats`, `link_commit_to_issue`
@@ -231,7 +231,7 @@ Example:
231
231
  `create_bu`, `list_bus`, `get_bu`, `update_bu`, `delete_bu`
232
232
 
233
233
  ### Components (6)
234
- `register_component`, `list_components`, `get_component`, `update_component`, `delete_component`, `search_components`
234
+ `register_component`, `list_components`, `get_component`, `update_component`, `delete_component`, `search_components_by_keyword` (alias `search_components`)
235
235
 
236
236
  ### Mandates (6)
237
237
  `create_mandate`, `list_mandates`, `accept_mandate`, `update_mandate`, `validate_mandate_spending`, `settle_mandate`
@@ -242,7 +242,7 @@ Example:
242
242
  ### Session (1)
243
243
  `set_summary`
244
244
 
245
- ## Compact payloads and status aliases (v2.10.0 — feature since v2.3.0)
245
+ ## Compact payloads and status aliases (v2.11.0 — feature since v2.3.0)
246
246
 
247
247
  ### `fields=lite` — reduced token payloads
248
248
 
@@ -312,13 +312,13 @@ A fix pattern is a validated learning extracted from a resolved bug — symptom,
312
312
 
313
313
  The cycle runs as follows:
314
314
 
315
- 1. **Agent encounters a bug.** Before touching any code, call `search_fix_patterns` with a plain-language description of the symptom. The KB returns ranked matches using semantic vector search.
315
+ 1. **Agent encounters a bug.** Before touching any code, call `search_fix_patterns_by_semantic` (alias `search_fix_patterns`) with a plain-language description of the symptom. The KB returns ranked matches using semantic vector search.
316
316
  2. **KB hit.** If a validated pattern is returned, apply the known fix directly. Log the reuse via `add_fix_attempt` (`worked: true`) so confidence scores stay current.
317
317
  3. **KB miss.** If no pattern matches, the agent fixes the bug manually using standard debugging. Once resolved, the learning is captured immediately via `create_fix_pattern` — symptom, root cause, severity, stack, and the working fix.
318
318
  4. **Validation.** After the fix holds in production (or after a second independent confirmation), call `validate_fix` to promote the pattern to validated status. This is the signal that downstream agents can trust the pattern without verification.
319
319
  5. **Issue linkage.** Call `link_issue_to_pattern` to attach the VantagePeers issue ID to the pattern. This creates a bidirectional reference: the issue record points to the pattern, and the pattern's `linkedIssueIds` list points back.
320
320
 
321
- The four tools that power this cycle are: `create_fix_pattern`, `add_fix_attempt`, `validate_fix`, and `link_issue_to_pattern`. The fifth tool, `search_fix_patterns`, is in the Search / RAG category and is the entry point agents should call first.
321
+ The four tools that power this cycle are: `create_fix_pattern`, `add_fix_attempt`, `validate_fix`, and `link_issue_to_pattern`. The fifth tool, `search_fix_patterns_by_semantic` (alias `search_fix_patterns`), is in the Search / RAG category and is the entry point agents should call first.
322
322
 
323
323
  On the agent side, the `/capitalize-fix` skill and the `inject-fix-patterns` hook automate steps 3-5: the hook fires on task completion events and prompts the orchestrator to capture the learning before closing the task. The cycle is designed to be low-friction — one tool call per step, all via MCP, no `npx convex run` required.
324
324
 
package/dist/server.d.ts CHANGED
@@ -1,12 +1,19 @@
1
1
  #!/usr/bin/env node
2
2
  /**
3
- * VantagePeers MCP Server
4
- * Exposes 82 Convex-backed tools to Claude Code agents via stdio transport.
3
+ * VantagePeers MCP Server — stdio transport (Self-host / local Claude Code path).
5
4
  *
6
- * Tool categories: Memory, Profiles, Messages, Tasks, Missions, Diary,
7
- * Briefing Notes, Components, Recurring Tasks, Mandates, Business Units,
8
- * Issues, Fix Patterns, Search/RAG, Mission Templates, Error Monitoring,
9
- * Deployments, Repo Mappings.
5
+ * Thin bootstrap: resolves CONVEX_URL, instantiates McpServer + ConvexHttpClient,
6
+ * delegates ALL tool registration to the shared `registerTools(server, convex)`
7
+ * surface in src/tools.ts. This guarantees stdio and HTTP transports expose the
8
+ * same tool set (parity locked by src/__tests__/stdio-http-parity.test.ts).
9
+ *
10
+ * Day 102 refactor (fix-pattern m974adhs7wtwb6pt4h0sdxn1k988mnxk):
11
+ * Removed ~3.6k LOC of inline `server.tool(...)` registrations that had drifted
12
+ * out of sync with src/tools.ts, hiding 12 new CRUD-baseline tools from fleet
13
+ * stdio consumers (Claude Code, Codex via npx vantage-peers-mcp).
14
+ *
15
+ * VP_EMIT_UI_MARKERS env gate is honored inside src/tools.ts and therefore
16
+ * works transparently on stdio as well as HTTP.
10
17
  *
11
18
  * See README.md for the full tool reference.
12
19
  */