@cachly-dev/mcp-server 0.10.107 → 0.10.111

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',
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,42 @@ 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
+ 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)}`, ` 💵 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)}`);
162
+ }
163
+ if (data.top_hits && data.top_hits.length > 0) {
164
+ lines.push(``, `🔝 Top cached prompts:`);
165
+ const topN = data.top_hits.slice(0, 3);
166
+ topN.forEach((hit, i) => {
167
+ const truncated = hit.prompt.length > 50 ? `${hit.prompt.slice(0, 50)}…` : hit.prompt;
168
+ lines.push(` ${i + 1}. "${truncated}" (hit ${hit.hit_count}×)`);
169
+ });
170
+ }
171
+ }
172
+ }
173
+ }
174
+ catch {
175
+ // API unavailable or free tier — skip silently
176
+ }
177
+ return lines.join('\n');
128
178
  }
129
179
  case 'semantic_search': {
130
180
  const { instance_id, query, threshold = 0.82, namespace: nsArg = 'cachly:sem', top_k = 5, use_hybrid = false, auto_namespace = false, } = args;
@@ -517,6 +567,41 @@ export async function handleCacheTool(name, args, getConnection, apiFetch) {
517
567
  const preview = full.slice(0, 500);
518
568
  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
569
  }
570
+ case 'cache_org_stats': {
571
+ const { instance_id, org_id } = args;
572
+ const redis = await getConnection(instance_id);
573
+ const namespace = `org:${org_id}:sem`;
574
+ const keys = await scanKeys(redis, `${namespace}:*`, { max: 10000, timeoutMs: 5000 });
575
+ const entryCount = keys.length;
576
+ const lines = [
577
+ `🏢 Org Cache Stats for org \`${org_id}\`:`,
578
+ ` 📦 Shared entries: ${entryCount}`,
579
+ ` 🔑 Namespace: ${namespace}`,
580
+ ` 👥 Benefit: All instances sharing this org_id serve from the same cache`,
581
+ ``,
582
+ `💡 To enable sharing: set org_id="${org_id}" in cache_set calls`,
583
+ ];
584
+ // Org-wide savings aggregation (API endpoint may not be deployed yet,
585
+ // or the caller may not be an org member — fail silently in that case).
586
+ try {
587
+ const savings = await apiFetch(`/api/v1/orgs/${org_id}/savings`);
588
+ const usd = (n) => `$${(n ?? 0).toFixed(2)}`;
589
+ 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)}`);
590
+ const top = [...(savings.per_instance ?? [])]
591
+ .sort((a, b) => b.estimated_total_saved_usd - a.estimated_total_saved_usd)
592
+ .slice(0, 5);
593
+ if (top.length > 0) {
594
+ lines.push(``, ` Top instances by savings:`);
595
+ for (const inst of top) {
596
+ lines.push(` • ${inst.name || inst.instance_id}: ${usd(inst.estimated_total_saved_usd)} (${inst.total_hits.toLocaleString('en-US')} hits)`);
597
+ }
598
+ }
599
+ }
600
+ catch {
601
+ // Endpoint unavailable / not a member / network error → Redis-only output.
602
+ }
603
+ return lines.join('\n');
604
+ }
520
605
  default:
521
606
  return null;
522
607
  }
@@ -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>;
@@ -4,6 +4,8 @@ import { safeJsonParse, normalizeGitPath } from '../utils.js';
4
4
  import { buildClsPostCommitHook } from '../cls-hook.js';
5
5
  // Last brain_from_git category counts — set after each run so index.ts can include them in telemetry
6
6
  export let _lastBrainFromGitCounts = null;
7
+ // Last brain_from_ci counts — set after each run so index.ts can include them in telemetry
8
+ export let _lastBrainFromCiCounts = null;
7
9
  // Git concurrency semaphore (for brain_from_git parallel workers)
8
10
  let _gitSemCount = 0;
9
11
  const _GIT_SEM_MAX = 10;
@@ -27,7 +29,7 @@ function _gitSemRelease() {
27
29
  export const FEDBRAIN_TOOL_NAMES = new Set([
28
30
  'madc_deliberate', 'cls_ingest', 'cls_install_hooks', 'fedbrain_contribute', 'fedbrain_search',
29
31
  'fedbrain_confirm', 'fedbrain_status', 'brain_federate', 'crystal_view', 'compact_recover',
30
- 'brain_from_git', 'brain_predict_failures',
32
+ 'brain_from_git', 'brain_from_ci', 'brain_predict_failures',
31
33
  'brain_contribute_signal', 'brain_import_meta',
32
34
  ]);
33
35
  export async function handleFedbrainTool(name, args, getConnection, apiFetch) {
@@ -1035,6 +1037,66 @@ export async function handleFedbrainTool(name, args, getConnection, apiFetch) {
1035
1037
  _gitSemRelease();
1036
1038
  }
1037
1039
  }
1040
+ // ── brain_from_ci ─────────────────────────────────────────────────────────
1041
+ case 'brain_from_ci': {
1042
+ const { instance_id, outcomes } = args;
1043
+ const redis = await getConnection(instance_id);
1044
+ const ts = Date.now();
1045
+ let fixes = 0;
1046
+ let breaks = 0;
1047
+ let stable = 0;
1048
+ const total = outcomes.length;
1049
+ for (const entry of outcomes) {
1050
+ const status = String(entry.status ?? '');
1051
+ const prev_status = String(entry.prev_status ?? '');
1052
+ const job = String(entry.job ?? 'unknown');
1053
+ const ciCtx = String(entry.context ?? '');
1054
+ const isFixed = ['failure', 'red', 'error'].includes(prev_status) && ['success', 'green', 'passed'].includes(status);
1055
+ const isBroken = ['success', 'green', 'passed'].includes(prev_status) && ['failure', 'red', 'error'].includes(status);
1056
+ const slug = `ci:${ckgSlug(job)}`;
1057
+ const conceptId = ckgSlug(slug);
1058
+ await ckgUpsertNode(redis, conceptId, 'ci', 'job');
1059
+ if (isFixed) {
1060
+ const problemId = ckgSlug(`problem:${ckgSlug(job)}`);
1061
+ await ckgUpsertNode(redis, problemId, 'problem', 'ci-failure');
1062
+ await ckgUpdateEdge(redis, conceptId, 'fixes', problemId, true);
1063
+ const lessonObj = {
1064
+ topic: slug, outcome: 'success',
1065
+ what_worked: `CI job "${job}" went ${prev_status} → ${status}`,
1066
+ what_failed: `Job "${job}" was failing`, context: `brain_from_ci: ${ciCtx}`,
1067
+ severity: 'major', file_paths: [], commands: [], tags: ['brain_from_ci', 'ci'],
1068
+ depends_on: [], recall_count: 0, ts, verified_at: ts, confidence: 0.65,
1069
+ audit_trail: [{ ts, action: 'brain_from_ci_fixed' }], version: 3,
1070
+ };
1071
+ await redis.rpush(`cachly:lessons:${slug}`, JSON.stringify(lessonObj));
1072
+ await redis.ltrim(`cachly:lessons:${slug}`, -100, -1);
1073
+ await redis.set(`cachly:lesson:best:${slug}`, JSON.stringify(lessonObj));
1074
+ fixes++;
1075
+ }
1076
+ else if (isBroken) {
1077
+ const causeId = ckgSlug(`cause:${ckgSlug(job)}`);
1078
+ await ckgUpsertNode(redis, causeId, 'cause', 'ci-break');
1079
+ await ckgUpdateEdge(redis, conceptId, 'causes', causeId, false);
1080
+ breaks++;
1081
+ }
1082
+ else {
1083
+ stable++;
1084
+ }
1085
+ const clsKey = `cachly:cls:${instance_id}`;
1086
+ await redis.rpush(clsKey, JSON.stringify({ source: 'ci_outcome', payload: { status, prev_status, job }, ts }));
1087
+ await redis.ltrim(clsKey, -200, -1);
1088
+ }
1089
+ _lastBrainFromCiCounts = { fixes, breaks, stable, total };
1090
+ return [
1091
+ `📥 **brain_from_ci**: Ingested ${total} outcomes — ${fixes} fixes learned, ${breaks} breaks noted, ${stable} stable`,
1092
+ '',
1093
+ fixes > 0 ? `✅ ${fixes} fix lesson${fixes !== 1 ? 's' : ''} written (confidence 0.65) — CKG \`fixes\` edges added` : '',
1094
+ breaks > 0 ? `🔴 ${breaks} break${breaks !== 1 ? 's' : ''} noted — CKG \`causes\` edges added` : '',
1095
+ stable > 0 ? `📊 ${stable} stable outcome${stable !== 1 ? 's' : ''} recorded` : '',
1096
+ '',
1097
+ `💡 Explore: \`brain_search(query="ci")\` | \`brain_predict(context="<job-name>")\``,
1098
+ ].filter(Boolean).join('\n');
1099
+ }
1038
1100
  // ── brain_predict_failures ─────────────────────────────────────────────────
1039
1101
  case 'brain_predict_failures': {
1040
1102
  const { instance_id, context: ctx, top_k = 5, format = 'detailed' } = args;