@cachly-dev/mcp-server 0.10.96 → 0.10.98

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/README.md CHANGED
@@ -22,7 +22,7 @@
22
22
  <img src="https://img.shields.io/badge/GDPR-EU%20servers-green" alt="GDPR: EU servers" />
23
23
  </a>
24
24
  &nbsp;
25
- <img src="https://img.shields.io/badge/119%20MCP%20tools-violet" alt="119 MCP tools" />
25
+ <img src="https://img.shields.io/badge/121%20MCP%20tools-violet" alt="121 MCP tools" />
26
26
  &nbsp;
27
27
  <img src="https://img.shields.io/badge/License-Apache--2.0-yellow" alt="License: Apache-2.0" />
28
28
  </p>
@@ -191,6 +191,7 @@ close without breaking its own lock-in. **That gap is where cachly wins.**
191
191
  | **`brain_file_map`** | Before you touch a file: who's worked on it and which lessons reference it. |
192
192
  | **`team_expertise_map`** | The whole team's skills matrix in one table — onboarding and bus-factor insurance. |
193
193
  | **`brain_collab_pairs`** | Person↔Person Collaboration Graph — *"Frag X und Y, die haben das zusammen gelöst."* Bus-factor alerts included. |
194
+ | **`brain_portability`** | W9 Model-Neutrality — config for 7 clients (Claude, Cursor, Copilot, Windsurf, Cline, Zed, Continue). *"Same Brain, any model."* |
194
195
  | **`brain_from_git`** | Reads your entire git history and populates the team knowledge graph (people + files + lessons) — zero setup, retroactively. |
195
196
  | **`brain_coverage` / `skill_gaps`** | A 0–100 health score for your knowledge + a ranked list of blind spots to fix. |
196
197
  | **`brain_predict`** | Predicts likely failures *before* they happen, from past incident patterns. |
@@ -245,7 +246,7 @@ npx @cachly-dev/mcp-server@latest learn-git # Auto-learn lessons from recent git
245
246
 
246
247
  ---
247
248
 
248
- ## MCP Tools (119 total)
249
+ ## MCP Tools (120 total)
249
250
 
250
251
  ### 🧠 Session & Memory (most used)
251
252
 
@@ -271,10 +272,12 @@ npx @cachly-dev/mcp-server@latest learn-git # Auto-learn lessons from recent git
271
272
  | **`brain_file_map`** | Experts + lessons per file, before you touch it |
272
273
  | **`team_expertise_map`** | Full team skills matrix in one table |
273
274
  | **`brain_collab_pairs`** | Person↔Person Collaboration Graph — who collaborates with whom, bus-factor alerts |
275
+ | **`brain_portability`** | Config snippets for 7 MCP clients — proves model-neutrality, same Brain everywhere |
274
276
  | **`skill_gaps`** | Knowledge blind spots: unresolved failures, missing attribution |
275
277
  | **`brain_coverage`** | 0–100 knowledge-health score for your codebase |
276
278
  | `madc_deliberate` | Specialist AI agents vote to resolve contradictory lessons |
277
279
  | `memory_crystalize` | Distill all lessons into a Crystal for instant team context |
280
+ | `team_crystallize` | Team Crystal — fixes that 2+ teammates independently converged on (the cross-person, causal layer) |
278
281
 
279
282
  ### 🧬 Causal Intelligence
280
283
 
@@ -7,8 +7,23 @@ import { keywordSearch, tokenize, splitMultiQuery, levenshtein, indexVocab as _i
7
7
  import { rerankByQuality } from '../rerank.js';
8
8
  import { computeEmbedding, hasEmbedProvider } from '../embeddings.js';
9
9
  // ── Changelog (shown once per version in session_start) ──────────────────────
10
- const MCP_VERSION = '0.10.96';
10
+ const MCP_VERSION = '0.10.98';
11
11
  const WHATS_NEW = {
12
+ '0.10.98': [
13
+ `🌐 **Model-Neutrality as Feature (W9) — "Bring your own model, keep your brain."**`,
14
+ ` 🔌 New \`brain_portability()\` — shows your Brain ID, all compatible MCP clients, and ready-to-paste config snippets for each; proves the same Brain works in Claude, Cursor, Copilot, Windsurf, Cline, Zed and more`,
15
+ ` 🧠 Your lessons, crystals, and predictions are model-agnostic — no vendor lock-in at the memory layer`,
16
+ ` 📖 New docs: cachly.dev/docs/model-neutral — "Same Brain, Any Model" guide with live config examples`,
17
+ ` 📊 121 MCP tools (new: \`brain_portability\`)`,
18
+ ],
19
+ '0.10.97': [
20
+ `💠 **Team Crystallize (W8) — the team-wide, causal counter to per-user "Dreaming"**`,
21
+ ` 🧬 New \`team_crystallize()\` — surfaces fixes that 2+ teammates *independently converged on*, the one thing a single-user memory structurally can't build`,
22
+ ` 🧩 Cross-person clustering: groups structurally similar problems across people & namespaces (e.g. "pool exhaustion" solved the same way in payments, auth & db)`,
23
+ ` 👥 Each pattern names who converged — instant "ask @alice and @bob, they both hit this"`,
24
+ ` 💎 Shows up in \`crystal_view\` alongside your per-brain crystal`,
25
+ ` 📊 120 MCP tools (new: \`team_crystallize\`)`,
26
+ ],
12
27
  '0.10.96': [
13
28
  `🔐 **Roles & Team-Scopes now ENFORCED (W6) — the enterprise governance layer**`,
14
29
  ` 🛡️ \`team_confirm\` is now reviewer-gated, \`team_learn\` blocks viewers (recall-only) — roles stop being cosmetic the moment an admin is assigned`,
@@ -100,7 +115,7 @@ const WHATS_NEW = {
100
115
  '0.10.84': [
101
116
  `🤖 **M2M & agent-ecosystem reach — cachly for every caller, human or machine**`,
102
117
  ` 🔑 OAuth2 \`client_credentials\` grant — set CACHLY_CLIENT_ID + CACHLY_CLIENT_SECRET for fully headless auth (CI, agents, AI-to-AI)`,
103
- ` 🗂️ \`npx ... tool-specs --format=openai|anthropic|langchain\` — export all 119 tools in any framework's dialect`,
118
+ ` 🗂️ \`npx ... tool-specs --format=openai|anthropic|langchain\` — export all 121 tools in any framework's dialect`,
104
119
  ` 🌐 \`npx ... openapi\` — OpenAPI 3.1 doc (1 POST path per tool) for Assistants / codegen / Postman`,
105
120
  ` 🧪 14 new tests: client_credentials helpers, all four spec dialects, OpenAPI required-body inference`,
106
121
  ],
@@ -284,6 +299,7 @@ export const BRAIN_TOOL_NAMES = new Set([
284
299
  'session_start', 'session_end', 'session_ping', 'session_handoff', 'auto_learn_session',
285
300
  'brain_who_knows', 'brain_file_map', 'team_expertise_map',
286
301
  'skill_gaps', 'brain_coverage', 'brain_metrics', 'brain_service_map',
302
+ 'brain_collab_pairs', 'brain_portability',
287
303
  ]);
288
304
  export async function handleBrainTool(name, args, getConnection, apiFetch) {
289
305
  switch (name) {
@@ -2918,6 +2934,137 @@ export async function handleBrainTool(name, args, getConnection, apiFetch) {
2918
2934
  lines.push(``, `---`, `_Collaboration edges build from \`learn_from_attempts(author=..., file_paths=[...])\` and \`smart_recall(requester=...)\` cross-author reuse._`);
2919
2935
  return lines.join('\n');
2920
2936
  }
2937
+ // ── brain_portability ─────────────────────────────────────────────────────
2938
+ case 'brain_portability': {
2939
+ const { instance_id } = args;
2940
+ const clients = [
2941
+ {
2942
+ name: 'Claude Code',
2943
+ slug: 'claude-code',
2944
+ icon: '🤖',
2945
+ configPath: '~/.claude/settings.json',
2946
+ configBlock: JSON.stringify({
2947
+ mcpServers: {
2948
+ cachly: {
2949
+ command: 'npx',
2950
+ args: ['@cachly-dev/mcp-server@latest'],
2951
+ env: { CACHLY_INSTANCE_ID: instance_id },
2952
+ },
2953
+ },
2954
+ }, null, 2),
2955
+ },
2956
+ {
2957
+ name: 'Cursor',
2958
+ slug: 'cursor',
2959
+ icon: '🖱️',
2960
+ configPath: '~/.cursor/mcp.json',
2961
+ configBlock: JSON.stringify({
2962
+ mcpServers: {
2963
+ cachly: {
2964
+ command: 'npx',
2965
+ args: ['@cachly-dev/mcp-server@latest'],
2966
+ env: { CACHLY_INSTANCE_ID: instance_id },
2967
+ },
2968
+ },
2969
+ }, null, 2),
2970
+ },
2971
+ {
2972
+ name: 'Windsurf',
2973
+ slug: 'windsurf',
2974
+ icon: '🏄',
2975
+ configPath: '~/.windsurf/mcp.json',
2976
+ configBlock: JSON.stringify({
2977
+ mcpServers: {
2978
+ cachly: {
2979
+ command: 'npx',
2980
+ args: ['@cachly-dev/mcp-server@latest'],
2981
+ env: { CACHLY_INSTANCE_ID: instance_id },
2982
+ },
2983
+ },
2984
+ }, null, 2),
2985
+ },
2986
+ {
2987
+ name: 'GitHub Copilot (VS Code)',
2988
+ slug: 'copilot',
2989
+ icon: '🐙',
2990
+ configPath: '.vscode/mcp.json (workspace)',
2991
+ configBlock: JSON.stringify({
2992
+ servers: {
2993
+ cachly: {
2994
+ type: 'stdio',
2995
+ command: 'npx',
2996
+ args: ['@cachly-dev/mcp-server@latest'],
2997
+ env: { CACHLY_INSTANCE_ID: instance_id },
2998
+ },
2999
+ },
3000
+ }, null, 2),
3001
+ },
3002
+ {
3003
+ name: 'Cline',
3004
+ slug: 'cline',
3005
+ icon: '⚡',
3006
+ configPath: '~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json',
3007
+ configBlock: JSON.stringify({
3008
+ mcpServers: {
3009
+ cachly: {
3010
+ command: 'npx',
3011
+ args: ['@cachly-dev/mcp-server@latest'],
3012
+ env: { CACHLY_INSTANCE_ID: instance_id },
3013
+ },
3014
+ },
3015
+ }, null, 2),
3016
+ },
3017
+ {
3018
+ name: 'Zed',
3019
+ slug: 'zed',
3020
+ icon: '⚡',
3021
+ configPath: '~/.config/zed/settings.json',
3022
+ configBlock: JSON.stringify({
3023
+ context_servers: {
3024
+ cachly: {
3025
+ command: { path: 'npx', args: ['@cachly-dev/mcp-server@latest'] },
3026
+ env: { CACHLY_INSTANCE_ID: instance_id },
3027
+ },
3028
+ },
3029
+ }, null, 2),
3030
+ },
3031
+ {
3032
+ name: 'Continue',
3033
+ slug: 'continue',
3034
+ icon: '▶️',
3035
+ configPath: '~/.continue/config.json',
3036
+ configBlock: JSON.stringify({
3037
+ mcpServers: [
3038
+ {
3039
+ name: 'cachly',
3040
+ command: 'npx @cachly-dev/mcp-server@latest',
3041
+ env: { CACHLY_INSTANCE_ID: instance_id },
3042
+ },
3043
+ ],
3044
+ }, null, 2),
3045
+ },
3046
+ ];
3047
+ const lines = [
3048
+ `## 🌐 Brain Portability — Same Brain, Any Model`,
3049
+ ``,
3050
+ `> _"Bring your own model, keep your brain."_`,
3051
+ ``,
3052
+ `**Your Brain ID:** \`${instance_id}\``,
3053
+ ``,
3054
+ `This Brain ID is model-agnostic. Every lesson you've learned, every Memory Crystal you've distilled,`,
3055
+ `and every prediction from your Causal Knowledge Graph is accessible from **any MCP-compatible AI client**.`,
3056
+ ``,
3057
+ `---`,
3058
+ ``,
3059
+ `### Compatible Clients (${clients.length} supported)`,
3060
+ ``,
3061
+ ];
3062
+ for (const c of clients) {
3063
+ lines.push(`#### ${c.icon} ${c.name}`, `Config: \`${c.configPath}\``, ``, '```json', c.configBlock, '```', ``);
3064
+ }
3065
+ lines.push(`---`, ``, `### What travels with you`, ``, `| Data | Model-neutral? |`, `|------|---------------|`, `| Lessons (learn_from_attempts) | ✅ Full access in all clients |`, `| Memory Crystals (memory_crystalize) | ✅ Included in every session_start |`, `| Causal Knowledge Graph (brain_predict) | ✅ Same graph, same predictions |`, `| Team lessons (team_learn, team_confirm) | ✅ Team is per-Brain, not per-model |`, `| Domain Brain Marketplace installs | ✅ Installed once, available everywhere |`, `| Session handoffs (session_handoff) | ✅ Cross-client continuity |`, ``, `---`, ``, `### One-command setup for any new client`, ``, '```bash', `npx @cachly-dev/mcp-server@latest autopilot`, '```', ``, `Autopilot detects all installed editors and writes the config for each — with your \`${instance_id}\` Brain ID pre-filled.`, ``, `---`, `_Docs: cachly.dev/docs/model-neutral • Your Brain, Any Model_`);
3066
+ return lines.join('\n');
3067
+ }
2921
3068
  // ── sync_file_changes ─────────────────────────────────────────────────────
2922
3069
  default:
2923
3070
  return null;