@cachly-dev/mcp-server 0.10.108 → 0.10.113

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.
@@ -5,18 +5,26 @@ import { join, relative, extname } from 'node:path';
5
5
  import { computeEmbedding, hasEmbedProvider, embedProviderHint } from '../embeddings.js';
6
6
  import { detectNamespace } from '../namespace.js';
7
7
  import { simpleHash } from '../confidence.js';
8
+ import { scanKeys } from '../utils.js';
8
9
  export const CACHE_TOOL_NAMES = new Set([
9
10
  'cache_get', 'cache_set', 'cache_delete', 'cache_exists', 'cache_ttl', 'cache_keys',
10
11
  'cache_stats', 'semantic_search', 'detect_namespace', 'cache_warmup', 'index_project',
11
12
  'cache_mset', 'cache_mget', 'cache_lock_acquire', 'cache_lock_release',
12
- 'cache_stream_set', 'cache_stream_get',
13
+ 'cache_stream_set', 'cache_stream_get', 'cache_org_stats', 'set_cost_per_call',
13
14
  ]);
14
15
  export async function handleCacheTool(name, args, getConnection, apiFetch) {
15
16
  switch (name) {
16
17
  case 'cache_get': {
17
- const { instance_id, key } = args;
18
+ const { instance_id, key, org_id } = args;
18
19
  const redis = await getConnection(instance_id);
19
- const value = await redis.get(key);
20
+ let value = await redis.get(key);
21
+ let source = 'direct';
22
+ if (value === null && org_id) {
23
+ const orgKey = `org:${org_id}:sem:${key}`;
24
+ value = await redis.get(orgKey);
25
+ if (value !== null)
26
+ source = `org:${org_id}:sem`;
27
+ }
20
28
  if (value === null)
21
29
  return `Key \`${key}\` → **not found** (null)`;
22
30
  let pretty = value;
@@ -26,17 +34,24 @@ export async function handleCacheTool(name, args, getConnection, apiFetch) {
26
34
  catch {
27
35
  // not JSON — return raw
28
36
  }
29
- return `Key \`${key}\`:\n\`\`\`\n${pretty}\n\`\`\``;
37
+ const sourceNote = source !== 'direct' ? ` _(from shared org namespace \`${source}\`)_` : '';
38
+ return `Key \`${key}\`:${sourceNote}\n\`\`\`\n${pretty}\n\`\`\``;
30
39
  }
31
40
  case 'cache_set': {
32
- const { instance_id, key, value, ttl } = args;
41
+ const { instance_id, key, value, ttl, org_id } = args;
33
42
  const redis = await getConnection(instance_id);
34
43
  if (ttl && ttl > 0) {
35
44
  await redis.set(key, value, 'EX', ttl);
36
- return `✅ Set \`${key}\` (TTL: ${ttl}s)`;
45
+ if (org_id) {
46
+ await redis.set(`org:${org_id}:sem:${key}`, value, 'EX', ttl);
47
+ }
48
+ return `✅ Set \`${key}\` (TTL: ${ttl}s)${org_id ? ` + shared to \`org:${org_id}:sem\`` : ''}`;
37
49
  }
38
50
  await redis.set(key, value);
39
- return `✅ Set \`${key}\` (no expiry)`;
51
+ if (org_id) {
52
+ await redis.set(`org:${org_id}:sem:${key}`, value);
53
+ }
54
+ return `✅ Set \`${key}\` (no expiry)${org_id ? ` + shared to \`org:${org_id}:sem\`` : ''}`;
40
55
  }
41
56
  case 'cache_delete': {
42
57
  const { instance_id, keys } = args;
@@ -113,7 +128,7 @@ export async function handleCacheTool(name, args, getConnection, apiFetch) {
113
128
  .split('\n')
114
129
  .filter((l) => l.startsWith('db'))
115
130
  .map((l) => ` ${l.trim()}`);
116
- return [
131
+ const lines = [
117
132
  `📊 **Cache Stats for instance \`${instance_id}\`:**`,
118
133
  ``,
119
134
  ` 💾 Memory used: ${usedMem} (peak: ${peakMem})`,
@@ -124,7 +139,46 @@ export async function handleCacheTool(name, args, getConnection, apiFetch) {
124
139
  keyspaceLines.length > 0
125
140
  ? ` 🗂️ Keyspace:\n${keyspaceLines.join('\n')}`
126
141
  : ` 🗂️ Keyspace: (empty)`,
127
- ].join('\n');
142
+ ];
143
+ try {
144
+ const inst = await apiFetch(`/api/v1/instances/${instance_id}`);
145
+ if (inst.vector_token) {
146
+ const vectorBase = process.env.CACHLY_VECTOR_URL ?? 'https://api.cachly.dev';
147
+ const statsRes = await fetch(`${vectorBase}/v1/sem/${inst.vector_token}/stats`, {
148
+ signal: AbortSignal.timeout(5000),
149
+ });
150
+ if (statsRes.ok) {
151
+ const data = await statsRes.json();
152
+ const fmt = (n, decimals = 2) => n !== undefined ? n.toLocaleString('en-US', { minimumFractionDigits: decimals, maximumFractionDigits: decimals }) : 'n/a';
153
+ const fmtInt = (n) => n !== undefined ? n.toLocaleString('en-US') : 'n/a';
154
+ const totalHits = data.total_hits ?? 0;
155
+ const totalEntries = data.total_entries ?? 0;
156
+ if (totalHits === 0 && totalEntries === 0) {
157
+ const proj = (devs) => (devs * 50 * 0.25 * 0.002 * 30).toFixed(2);
158
+ lines.push(``, `💰 **Tokenmaxxing ROI — Projection:**`, ` 📭 No cache hits yet — you're just getting started.`, ``, ` 📊 Typical savings for your team size:`, ` 5 devs × 50 LLM calls/day × 25% hit-rate → ~$${proj(5)}/month`, ` 10 devs × 50 LLM calls/day × 25% hit-rate → ~$${proj(10)}/month`, ` 20 devs × 50 LLM calls/day × 25% hit-rate → ~$${proj(20)}/month`, ` (Assumes avg $0.002/call saved per cache hit)`, ``, ` 🚀 Next: route LLM calls through cachly to start accumulating hits.`, ` Docs: https://cachly.dev/docs/semantic`);
159
+ }
160
+ else {
161
+ const wow = data.savings?.week_over_week_pct;
162
+ const wowLine = wow !== undefined
163
+ ? ` ${wow >= 0 ? '📈' : '📉'} 7d trend: ${wow >= 0 ? '+' : ''}${wow.toFixed(1)}% vs prev week`
164
+ : '';
165
+ lines.push(``, `💰 **Tokenmaxxing ROI:**`, ` 📦 Semantic entries: ${fmtInt(data.total_entries)}`, ` 🎯 Total cache hits: ${fmtInt(data.total_hits)}`, ` ⏱️ Hits last 24h: ${fmtInt(data.savings?.hits_last_24h)}`, ` 📅 Hits last 7d: ${fmtInt(data.savings?.hits_last_7d)}`, ...(wowLine ? [wowLine] : []), ` 💵 Total saved: $${fmt(data.savings?.estimated_total_saved_usd)}`, ` 📈 Projected/month: $${fmt(data.savings?.estimated_monthly_saved_usd)}`, ` 📊 Avg per hit: $${fmt(data.savings?.avg_cost_per_call_usd, 4)}`);
166
+ }
167
+ if (data.top_hits && data.top_hits.length > 0) {
168
+ lines.push(``, `🔝 Top cached prompts:`);
169
+ const topN = data.top_hits.slice(0, 3);
170
+ topN.forEach((hit, i) => {
171
+ const truncated = hit.prompt.length > 50 ? `${hit.prompt.slice(0, 50)}…` : hit.prompt;
172
+ lines.push(` ${i + 1}. "${truncated}" (hit ${hit.hit_count}×)`);
173
+ });
174
+ }
175
+ }
176
+ }
177
+ }
178
+ catch {
179
+ // API unavailable or free tier — skip silently
180
+ }
181
+ return lines.join('\n');
128
182
  }
129
183
  case 'semantic_search': {
130
184
  const { instance_id, query, threshold = 0.82, namespace: nsArg = 'cachly:sem', top_k = 5, use_hybrid = false, auto_namespace = false, } = args;
@@ -517,6 +571,65 @@ export async function handleCacheTool(name, args, getConnection, apiFetch) {
517
571
  const preview = full.slice(0, 500);
518
572
  return `✅ **cache_stream_get** – ${len} chunk(s) retrieved for \`${key}\`.\n\n**Preview** (first 500 chars):\n\`\`\`\n${preview}${preview.length < full.length ? '…' : ''}\n\`\`\``;
519
573
  }
574
+ case 'cache_org_stats': {
575
+ const { instance_id, org_id } = args;
576
+ const redis = await getConnection(instance_id);
577
+ const namespace = `org:${org_id}:sem`;
578
+ const keys = await scanKeys(redis, `${namespace}:*`, { max: 10000, timeoutMs: 5000 });
579
+ const entryCount = keys.length;
580
+ const lines = [
581
+ `🏢 Org Cache Stats for org \`${org_id}\`:`,
582
+ ` 📦 Shared entries: ${entryCount}`,
583
+ ` 🔑 Namespace: ${namespace}`,
584
+ ` 👥 Benefit: All instances sharing this org_id serve from the same cache`,
585
+ ``,
586
+ `💡 To enable sharing: set org_id="${org_id}" in cache_set calls`,
587
+ ];
588
+ // Org-wide savings aggregation (API endpoint may not be deployed yet,
589
+ // or the caller may not be an org member — fail silently in that case).
590
+ try {
591
+ const savings = await apiFetch(`/api/v1/orgs/${org_id}/savings`);
592
+ const usd = (n) => `$${(n ?? 0).toFixed(2)}`;
593
+ lines.push(``, `💰 Org-wide Tokenmaxxing ROI:`, ` 🖥️ Instances: ${savings.instance_count}`, ` 🎯 Total cache hits: ${savings.total_hits.toLocaleString('en-US')}`, ` ⏱️ Hits last 24h: ${savings.hits_last_24h.toLocaleString('en-US')}`, ` 💵 Total saved: ${usd(savings.estimated_total_saved_usd)}`, ` 📈 Projected/month: ${usd(savings.estimated_monthly_saved_usd)}`);
594
+ const top = [...(savings.per_instance ?? [])]
595
+ .sort((a, b) => b.estimated_total_saved_usd - a.estimated_total_saved_usd)
596
+ .slice(0, 5);
597
+ if (top.length > 0) {
598
+ lines.push(``, ` Top instances by savings:`);
599
+ for (const inst of top) {
600
+ lines.push(` • ${inst.name || inst.instance_id}: ${usd(inst.estimated_total_saved_usd)} (${inst.total_hits.toLocaleString('en-US')} hits)`);
601
+ }
602
+ }
603
+ }
604
+ catch {
605
+ // Endpoint unavailable / not a member / network error → Redis-only output.
606
+ }
607
+ return lines.join('\n');
608
+ }
609
+ case 'set_cost_per_call': {
610
+ const { instance_id, cost_per_call_usd } = args;
611
+ if (!cost_per_call_usd || cost_per_call_usd <= 0 || cost_per_call_usd > 100) {
612
+ throw new McpError(ErrorCode.InvalidParams, 'cost_per_call_usd must be a positive number ≤ 100');
613
+ }
614
+ await apiFetch(`/api/v1/instances/${instance_id}/cost-per-call`, {
615
+ method: 'PUT',
616
+ body: JSON.stringify({ cost_per_call_usd }),
617
+ });
618
+ const examples = {
619
+ '0.02': 'claude-opus-4.8',
620
+ '0.015': 'gpt-5.5',
621
+ '0.009': 'claude-sonnet-4.6',
622
+ '0.002': 'gpt-5.5-mini',
623
+ '0.001': 'claude-haiku-4.5',
624
+ };
625
+ const modelHint = examples[cost_per_call_usd.toString()] ? ` (${examples[cost_per_call_usd.toString()]})` : '';
626
+ return [
627
+ `✅ **Cost per call updated** — $${cost_per_call_usd.toFixed(4)}${modelHint}`,
628
+ ``,
629
+ `ROI savings in \`cache_stats\` will now use $${cost_per_call_usd.toFixed(4)} per avoided LLM call.`,
630
+ `Run \`cache_stats\` to see your updated savings estimate.`,
631
+ ].join('\n');
632
+ }
520
633
  default:
521
634
  return null;
522
635
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/handlers/cache.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cache.js","sourceRoot":"","sources":["../../../src/handlers/cache.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,12 @@ export declare let _lastBrainFromGitCounts: {
5
5
  refactors: number;
6
6
  total: number;
7
7
  } | null;
8
+ export declare let _lastBrainFromCiCounts: {
9
+ fixes: number;
10
+ breaks: number;
11
+ stable: number;
12
+ total: number;
13
+ } | null;
8
14
  type GetConnection = (instanceId: string) => Promise<Redis>;
9
15
  type ApiFetch = <T>(path: string, options?: RequestInit) => Promise<T>;
10
16
  export declare const FEDBRAIN_TOOL_NAMES: Set<string>;
@@ -2,8 +2,11 @@ import { createHmac } from 'node:crypto';
2
2
  import { ckgSlug, extractProblemConcept, ckgUpsertNode, ckgUpdateEdge, ckgUpsertPersonNode, ckgUpsertFileNode, ckgRecordCollaboration } from '../ckg.js';
3
3
  import { safeJsonParse, normalizeGitPath } from '../utils.js';
4
4
  import { buildClsPostCommitHook } from '../cls-hook.js';
5
+ import { installBrainWatchHook } from '../brain-watch-hook.js';
5
6
  // Last brain_from_git category counts — set after each run so index.ts can include them in telemetry
6
7
  export let _lastBrainFromGitCounts = null;
8
+ // Last brain_from_ci counts — set after each run so index.ts can include them in telemetry
9
+ export let _lastBrainFromCiCounts = null;
7
10
  // Git concurrency semaphore (for brain_from_git parallel workers)
8
11
  let _gitSemCount = 0;
9
12
  const _GIT_SEM_MAX = 10;
@@ -27,8 +30,8 @@ function _gitSemRelease() {
27
30
  export const FEDBRAIN_TOOL_NAMES = new Set([
28
31
  'madc_deliberate', 'cls_ingest', 'cls_install_hooks', 'fedbrain_contribute', 'fedbrain_search',
29
32
  'fedbrain_confirm', 'fedbrain_status', 'brain_federate', 'crystal_view', 'compact_recover',
30
- 'brain_from_git', 'brain_predict_failures',
31
- 'brain_contribute_signal', 'brain_import_meta',
33
+ 'brain_from_git', 'brain_from_ci', 'brain_predict_failures',
34
+ 'brain_contribute_signal', 'brain_import_meta', 'brain_watch',
32
35
  ]);
33
36
  export async function handleFedbrainTool(name, args, getConnection, apiFetch) {
34
37
  switch (name) {
@@ -1035,6 +1038,66 @@ export async function handleFedbrainTool(name, args, getConnection, apiFetch) {
1035
1038
  _gitSemRelease();
1036
1039
  }
1037
1040
  }
1041
+ // ── brain_from_ci ─────────────────────────────────────────────────────────
1042
+ case 'brain_from_ci': {
1043
+ const { instance_id, outcomes } = args;
1044
+ const redis = await getConnection(instance_id);
1045
+ const ts = Date.now();
1046
+ let fixes = 0;
1047
+ let breaks = 0;
1048
+ let stable = 0;
1049
+ const total = outcomes.length;
1050
+ for (const entry of outcomes) {
1051
+ const status = String(entry.status ?? '');
1052
+ const prev_status = String(entry.prev_status ?? '');
1053
+ const job = String(entry.job ?? 'unknown');
1054
+ const ciCtx = String(entry.context ?? '');
1055
+ const isFixed = ['failure', 'red', 'error'].includes(prev_status) && ['success', 'green', 'passed'].includes(status);
1056
+ const isBroken = ['success', 'green', 'passed'].includes(prev_status) && ['failure', 'red', 'error'].includes(status);
1057
+ const slug = `ci:${ckgSlug(job)}`;
1058
+ const conceptId = ckgSlug(slug);
1059
+ await ckgUpsertNode(redis, conceptId, 'ci', 'job');
1060
+ if (isFixed) {
1061
+ const problemId = ckgSlug(`problem:${ckgSlug(job)}`);
1062
+ await ckgUpsertNode(redis, problemId, 'problem', 'ci-failure');
1063
+ await ckgUpdateEdge(redis, conceptId, 'fixes', problemId, true);
1064
+ const lessonObj = {
1065
+ topic: slug, outcome: 'success',
1066
+ what_worked: `CI job "${job}" went ${prev_status} → ${status}`,
1067
+ what_failed: `Job "${job}" was failing`, context: `brain_from_ci: ${ciCtx}`,
1068
+ severity: 'major', file_paths: [], commands: [], tags: ['brain_from_ci', 'ci'],
1069
+ depends_on: [], recall_count: 0, ts, verified_at: ts, confidence: 0.65,
1070
+ audit_trail: [{ ts, action: 'brain_from_ci_fixed' }], version: 3,
1071
+ };
1072
+ await redis.rpush(`cachly:lessons:${slug}`, JSON.stringify(lessonObj));
1073
+ await redis.ltrim(`cachly:lessons:${slug}`, -100, -1);
1074
+ await redis.set(`cachly:lesson:best:${slug}`, JSON.stringify(lessonObj));
1075
+ fixes++;
1076
+ }
1077
+ else if (isBroken) {
1078
+ const causeId = ckgSlug(`cause:${ckgSlug(job)}`);
1079
+ await ckgUpsertNode(redis, causeId, 'cause', 'ci-break');
1080
+ await ckgUpdateEdge(redis, conceptId, 'causes', causeId, false);
1081
+ breaks++;
1082
+ }
1083
+ else {
1084
+ stable++;
1085
+ }
1086
+ const clsKey = `cachly:cls:${instance_id}`;
1087
+ await redis.rpush(clsKey, JSON.stringify({ source: 'ci_outcome', payload: { status, prev_status, job }, ts }));
1088
+ await redis.ltrim(clsKey, -200, -1);
1089
+ }
1090
+ _lastBrainFromCiCounts = { fixes, breaks, stable, total };
1091
+ return [
1092
+ `📥 **brain_from_ci**: Ingested ${total} outcomes — ${fixes} fixes learned, ${breaks} breaks noted, ${stable} stable`,
1093
+ '',
1094
+ fixes > 0 ? `✅ ${fixes} fix lesson${fixes !== 1 ? 's' : ''} written (confidence 0.65) — CKG \`fixes\` edges added` : '',
1095
+ breaks > 0 ? `🔴 ${breaks} break${breaks !== 1 ? 's' : ''} noted — CKG \`causes\` edges added` : '',
1096
+ stable > 0 ? `📊 ${stable} stable outcome${stable !== 1 ? 's' : ''} recorded` : '',
1097
+ '',
1098
+ `💡 Explore: \`brain_search(query="ci")\` | \`brain_predict(context="<job-name>")\``,
1099
+ ].filter(Boolean).join('\n');
1100
+ }
1038
1101
  // ── brain_predict_failures ─────────────────────────────────────────────────
1039
1102
  case 'brain_predict_failures': {
1040
1103
  const { instance_id, context: ctx, top_k = 5, format = 'detailed' } = args;
@@ -1271,6 +1334,38 @@ export async function handleFedbrainTool(name, args, getConnection, apiFetch) {
1271
1334
  }
1272
1335
  return lines.join('\n');
1273
1336
  }
1337
+ // ── brain_watch ───────────────────────────────────────────────────────────
1338
+ case 'brain_watch': {
1339
+ const { instance_id = '', project_dir = '.', api_key } = args;
1340
+ const { resolve } = await import('node:path');
1341
+ const projectDir = resolve(project_dir);
1342
+ const { result, hookPath } = await installBrainWatchHook(projectDir, instance_id, api_key);
1343
+ if (result === 'skipped-no-git') {
1344
+ return [
1345
+ `⚠️ **brain_watch: no git repository found**`,
1346
+ '',
1347
+ `No \`.git\` directory in \`${projectDir}\`.`,
1348
+ `Pass \`project_dir\` pointing to a git checkout.`,
1349
+ ].join('\n');
1350
+ }
1351
+ const statusLine = {
1352
+ written: '✅ Hook installed (new)',
1353
+ upgraded: '🔄 Hook upgraded to latest version',
1354
+ appended: '📎 Hook appended to existing post-commit script',
1355
+ unchanged: '✓ Hook already up to date — nothing changed',
1356
+ };
1357
+ return [
1358
+ `🧠 **brain_watch ${statusLine[result] ?? result}**`,
1359
+ '',
1360
+ `Hook path: \`${hookPath}\``,
1361
+ `Instance: \`${instance_id || '(none — set CACHLY_BRAIN_INSTANCE_ID or pass instance_id)'}\``,
1362
+ '',
1363
+ `Every future commit will automatically teach your Brain.`,
1364
+ `No manual \`brain_from_git\` needed — the hook runs silently in the background.`,
1365
+ '',
1366
+ `💡 Verify: \`git commit --allow-empty -m "test brain_watch"\` then \`smart_recall(query="test")\``,
1367
+ ].join('\n');
1368
+ }
1274
1369
  default:
1275
1370
  return null;
1276
1371
  }