@cachly-dev/mcp-server 0.10.91 β 0.10.93
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 +2 -2
- package/dist/src/handlers/brain.js +48 -9
- package/dist/src/handlers/brain.js.map +1 -1
- package/dist/src/handlers/syndicate.js +114 -1
- package/dist/src/handlers/syndicate.js.map +1 -1
- package/dist/src/index.js +3 -3
- package/dist/src/tools.d.ts +21 -0
- package/dist/src/tools.js +20 -0
- package/dist/src/tools.js.map +1 -1
- package/dist/src/toolspecs.d.ts +1 -1
- package/dist/src/toolspecs.js +1 -1
- package/package.json +2 -2
- package/server.json +3 -3
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
|
|
|
25
|
-
<img src="https://img.shields.io/badge/
|
|
25
|
+
<img src="https://img.shields.io/badge/115%20MCP%20tools-violet" alt="115 MCP tools" />
|
|
26
26
|
|
|
27
27
|
<img src="https://img.shields.io/badge/License-Apache--2.0-yellow" alt="License: Apache-2.0" />
|
|
28
28
|
</p>
|
|
@@ -244,7 +244,7 @@ npx @cachly-dev/mcp-server@latest learn-git # Auto-learn lessons from recent git
|
|
|
244
244
|
|
|
245
245
|
---
|
|
246
246
|
|
|
247
|
-
## MCP Tools (
|
|
247
|
+
## MCP Tools (115 total)
|
|
248
248
|
|
|
249
249
|
### π§ Session & Memory (most used)
|
|
250
250
|
|
|
@@ -7,21 +7,34 @@ 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.
|
|
10
|
+
const MCP_VERSION = '0.10.93';
|
|
11
11
|
const WHATS_NEW = {
|
|
12
|
+
'0.10.93': [
|
|
13
|
+
`πΊοΈ **\`brain_plan\` β your Brain goes from "what did we learn?" to "what should I do?"**`,
|
|
14
|
+
` π§ Give it a task you're about to start ("upgrade Postgres 14β16") and it returns an ordered, grounded action plan: ranked failure modes to avoid, proven fix steps (dependency-aware, with commands), and a pre-flight checklist β all from your own lessons`,
|
|
15
|
+
` π¬ Generative layer on the CKG: where \`brain_predict\` answers "what might fail?", \`brain_plan\` answers "what, in what order?"`,
|
|
16
|
+
` π 115 MCP tools (new: \`brain_plan\`)`,
|
|
17
|
+
],
|
|
18
|
+
'0.10.92': [
|
|
19
|
+
`π **Welcome-back digest β re-entry after a week away now leads with what changed**`,
|
|
20
|
+
` π± \`session_start\` detects a gap β₯ 7 days and surfaces how many lessons your Brain gained while you were gone (git, CI & teammates kept it learning), with the freshest topics`,
|
|
21
|
+
` π§ Zero extra latency β the digest is computed from data session_start already loads`,
|
|
22
|
+
` π New gRPC \`Learn\` RPC (M2M write path) β agents & CI can now teach the Brain directly, byte-compatible with the MCP lesson format`,
|
|
23
|
+
` π 115 MCP tools`,
|
|
24
|
+
],
|
|
12
25
|
'0.10.91': [
|
|
13
26
|
`π **Lesson-anchored time attribution β every recall shows when it was learned and how much it saves**`,
|
|
14
27
|
` π‘ "Brain saved you" banner now includes: when the lesson was learned (e.g. "12 May"), estimated original debug cost by severity (critical=2h, major=1h, minor=20min), and team attribution when a teammate's lesson fires`,
|
|
15
28
|
` π
Origin date formatted as "12 May" (same year) or "12 May 2024" (different year) β no clutter`,
|
|
16
29
|
` π₯ Cross-author recalls now show "@author" on the same banner line β the "team knowledge reuse" value is front-and-center`,
|
|
17
|
-
` π
|
|
30
|
+
` π 115 MCP tools`,
|
|
18
31
|
],
|
|
19
32
|
'0.10.90': [
|
|
20
33
|
`π **External benchmark corpus v2 β the proof is now statistically solid**`,
|
|
21
34
|
` π§ͺ Expanded from 8 queries β 61 lessons / 56 queries across 10 real-world engineering domains (k8s, DB, auth, CI, frontend, API, payments, observability, network, Node.js, security, infra)`,
|
|
22
35
|
` βοΈ 10 adversarial distractors added β failure lessons that share the exact same vocabulary as the query, forcing the quality reranker to earn its lift`,
|
|
23
36
|
` π Results on the larger corpus: cachly +2.9% Precision@1 vs flat-file, +12.5% vs raw BM25 baseline β on a harder dataset, not an easy one`,
|
|
24
|
-
` π
|
|
37
|
+
` π 115 MCP tools`,
|
|
25
38
|
],
|
|
26
39
|
'0.10.89': [
|
|
27
40
|
`β‘ **One-command onboarding β \`autopilot\` is now the single canonical setup**`,
|
|
@@ -29,14 +42,14 @@ const WHATS_NEW = {
|
|
|
29
42
|
` π§Ή Retired the split-brain instructions (legacy \`@cachly-dev/init\` wrapper + the old "three steps") so there's exactly one thing to copy-paste`,
|
|
30
43
|
` π§ Fixed a build-breaking duplicate \`export\` on buildClaudeMdBlock that failed CI on v0.10.88`,
|
|
31
44
|
` π’ Version hygiene β package.json, server.json, lockfile and MCP_VERSION resynced (server.json/lockfile were stuck at 0.10.85)`,
|
|
32
|
-
` π
|
|
45
|
+
` π 115 MCP tools`,
|
|
33
46
|
],
|
|
34
47
|
'0.10.88': [
|
|
35
48
|
`β
**Honest setup + tested config writer (v0.10.88)**`,
|
|
36
49
|
` π setup/autopilot now report the truth: if no editor config could be written it exits non-zero with the exact failures instead of falsely claiming "Brain is ready"`,
|
|
37
50
|
` π New setup_config_write_failed telemetry β permission/path failures that block activation are now visible in reporting`,
|
|
38
51
|
` π§ͺ 24 new unit tests for the config writer (buildServerEnv, buildMcpConfig, mergeMcpConfig, buildClaudeMdBlock) β the merge logic that must never clobber your other MCP servers is now regression-guarded`,
|
|
39
|
-
` π
|
|
52
|
+
` π 115 MCP tools`,
|
|
40
53
|
],
|
|
41
54
|
'0.10.87': [
|
|
42
55
|
`π **Multi-editor auth persistence + full activation telemetry (v0.10.87)**`,
|
|
@@ -46,7 +59,7 @@ const WHATS_NEW = {
|
|
|
46
59
|
` π‘ \`brain_from_git_failed\` fires with error reason when auto-bootstrap throws β no more empty brain with no explanation`,
|
|
47
60
|
` β¨ Git bootstrap shows lesson count in session_start: "Brain bootstrapped β 23 lessons loaded" β the WOW moment`,
|
|
48
61
|
` π§ API: McpEvent stores brain quality metrics (fixes/features/refactors/total) β git learning quality now measurable`,
|
|
49
|
-
` π
|
|
62
|
+
` π 115 MCP tools`,
|
|
50
63
|
],
|
|
51
64
|
'0.10.86': [
|
|
52
65
|
`π‘οΈ **Zero-friction activation β your Brain self-heals into existence**`,
|
|
@@ -54,7 +67,7 @@ const WHATS_NEW = {
|
|
|
54
67
|
` π€ Parallel tool calls on startup are coalesced into one resolve (no more duplicate-instance races)`,
|
|
55
68
|
` π¬ Clearer "instance still starting" message β leads with "just retry", no manual config needed`,
|
|
56
69
|
` π New activation-funnel telemetry: install β sign-in β provision, so silent churn is visible`,
|
|
57
|
-
` π
|
|
70
|
+
` π 115 MCP tools`,
|
|
58
71
|
],
|
|
59
72
|
'0.10.85': [
|
|
60
73
|
`π **One-command onboarding β \`npx @cachly-dev/mcp-server@latest autopilot\`**`,
|
|
@@ -65,7 +78,7 @@ const WHATS_NEW = {
|
|
|
65
78
|
'0.10.84': [
|
|
66
79
|
`π€ **M2M & agent-ecosystem reach β cachly for every caller, human or machine**`,
|
|
67
80
|
` π OAuth2 \`client_credentials\` grant β set CACHLY_CLIENT_ID + CACHLY_CLIENT_SECRET for fully headless auth (CI, agents, AI-to-AI)`,
|
|
68
|
-
` ποΈ \`npx ... tool-specs --format=openai|anthropic|langchain\` β export all
|
|
81
|
+
` ποΈ \`npx ... tool-specs --format=openai|anthropic|langchain\` β export all 115 tools in any framework's dialect`,
|
|
69
82
|
` π \`npx ... openapi\` β OpenAPI 3.1 doc (1 POST path per tool) for Assistants / codegen / Postman`,
|
|
70
83
|
` π§ͺ 14 new tests: client_credentials helpers, all four spec dialects, OpenAPI required-body inference`,
|
|
71
84
|
],
|
|
@@ -76,7 +89,7 @@ const WHATS_NEW = {
|
|
|
76
89
|
` π₯οΈ Consumed verbatim by the 3D frontend (react-force-graph-3d / three.js) β the visual brain map`,
|
|
77
90
|
` π Filters: \`domain\`, \`min_confidence\`, \`max_nodes\` (with truncation flag), \`format="summary"\``,
|
|
78
91
|
` π§ͺ 10 tests: kind detection, dangling-edge pruning, confidence/domain filters, schema contract`,
|
|
79
|
-
` π
|
|
92
|
+
` π 115 MCP tools`,
|
|
80
93
|
],
|
|
81
94
|
'0.10.82': [
|
|
82
95
|
`π‘ **Telemetry API contracts β dashboard ingest pipeline prepared**`,
|
|
@@ -1166,6 +1179,32 @@ export async function handleBrainTool(name, args, getConnection, apiFetch) {
|
|
|
1166
1179
|
const timeStr = h > 0 ? `${h}h${m > 0 ? ` ${m}m` : ''}` : `${m}m`;
|
|
1167
1180
|
lines.push(`β±οΈ **Brain saved you ~${timeStr} total** (time not re-researching known fixes)`, '');
|
|
1168
1181
|
}
|
|
1182
|
+
// ββ Welcome-back digest (gap β₯ 7 days) ββββββββββββββββββββββββββββββββββ
|
|
1183
|
+
// When the user has been away a week or more, lead with a short "what
|
|
1184
|
+
// happened while you were gone" digest. All data is already loaded above
|
|
1185
|
+
// (lastSession + lessons), so this adds zero Redis round-trips. The point
|
|
1186
|
+
// is re-entry value: the brain kept compounding (git/CI/teammates) and we
|
|
1187
|
+
// surface the growth before anything else competes for attention.
|
|
1188
|
+
if (lastSession?.ts) {
|
|
1189
|
+
const lastTs = new Date(lastSession.ts).getTime();
|
|
1190
|
+
const daysAway = Math.floor((Date.now() - lastTs) / 86_400_000);
|
|
1191
|
+
if (daysAway >= 7 && !Number.isNaN(lastTs)) {
|
|
1192
|
+
const newSinceAway = lessons.filter(l => {
|
|
1193
|
+
const t = new Date(l.ts).getTime();
|
|
1194
|
+
return !Number.isNaN(t) && t > lastTs;
|
|
1195
|
+
});
|
|
1196
|
+
lines.push(`π **Welcome back** β it's been ${daysAway} days since your last session.`);
|
|
1197
|
+
if (newSinceAway.length > 0) {
|
|
1198
|
+
// lessons is already recency-sorted desc, so take the freshest few.
|
|
1199
|
+
const topNew = newSinceAway.slice(0, 3).map(l => `\`${l.topic}\``).join(', ');
|
|
1200
|
+
lines.push(` π± Your Brain grew by **${newSinceAway.length} lesson${newSinceAway.length !== 1 ? 's' : ''}** while you were gone (git, CI & teammates kept it learning): ${topNew}${newSinceAway.length > 3 ? ', β¦' : ''}`);
|
|
1201
|
+
}
|
|
1202
|
+
else {
|
|
1203
|
+
lines.push(` π§ ${lessons.length} lesson${lessons.length !== 1 ? 's' : ''} held steady and ready β recall anything with \`smart_recall\`.`);
|
|
1204
|
+
}
|
|
1205
|
+
lines.push(` π‘ Full breakdown: \`npx @cachly-dev/mcp-server@latest digest\``, '');
|
|
1206
|
+
}
|
|
1207
|
+
}
|
|
1169
1208
|
// ββ What's New (shown once per version update) ββββββββββββββββββββββββββ
|
|
1170
1209
|
try {
|
|
1171
1210
|
const seenVersion = await redis.get('cachly:mcp:version:last_seen');
|