@cachly-dev/mcp-server 0.10.94 β†’ 0.10.96

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.
@@ -6,6 +6,7 @@ import { safeJsonParse } from '../utils.js';
6
6
  export const SYNDICATE_TOOL_NAMES = new Set([
7
7
  'syndicate', 'syndicate_search', 'syndicate_stats', 'syndicate_trending',
8
8
  'brain_search', 'ckg_inspect', 'brain_predict', 'brain_plan',
9
+ 'brain_marketplace', 'brain_install',
9
10
  ]);
10
11
  export async function handleSyndicateTool(name, args, getConnection, apiFetch) {
11
12
  switch (name) {
@@ -452,6 +453,125 @@ export async function handleSyndicateTool(name, args, getConnection, apiFetch) {
452
453
  lines.push(`πŸ’‘ After you ship: \`learn_from_attempts(topic="...", outcome="success", ...)\` β†’ the next plan gets sharper.`);
453
454
  return lines.join('\n');
454
455
  }
456
+ // ── W10: Domain Brains marketplace β€” brain_marketplace ──────────────────────
457
+ // Browse curated, installable packs of high-trust community lessons by domain.
458
+ case 'brain_marketplace': {
459
+ const { min_confirms = 1 } = args;
460
+ const params = new URLSearchParams();
461
+ if (min_confirms && min_confirms > 1)
462
+ params.set('min_confirms', String(min_confirms));
463
+ const res = await apiFetch(`/api/v1/syndication/brains${params.toString() ? `?${params}` : ''}`);
464
+ if (!res.brains || res.brains.length === 0) {
465
+ return [
466
+ `## 🧠 Domain Brain Marketplace`,
467
+ ``,
468
+ `No domain brains are available yet β€” the marketplace fills as the community`,
469
+ `contributes verified lessons. Be an early contributor:`,
470
+ `\`syndicate(topic="k8s:oom-kill", what_worked="raise memory limit + add probe")\``,
471
+ ].join('\n');
472
+ }
473
+ const lines = [
474
+ `## 🧠 Domain Brain Marketplace`,
475
+ `*${res.count} installable brain${res.count === 1 ? '' : 's'} Β· curated from the global Knowledge Commons*`,
476
+ ``,
477
+ ];
478
+ for (const b of res.brains) {
479
+ const badge = b.curated ? '⭐ curated' : 'community';
480
+ lines.push(`### ${b.icon} ${b.name} \`${b.slug}\``, `${b.description}`, `**${b.lesson_count}** lesson${b.lesson_count === 1 ? '' : 's'} · 🀝 ${b.total_confirms} community confirm${b.total_confirms === 1 ? '' : 's'} · ${badge}`, `Install: \`brain_install(slug="${b.slug}")\``, ``);
481
+ }
482
+ lines.push(`---`, `_Installed brains merge into your local Brain and surface in \`smart_recall\` β€” they never override your own lessons._`);
483
+ return lines.join('\n');
484
+ }
485
+ // ── W10: Domain Brains marketplace β€” brain_install ──────────────────────────
486
+ // Pull a domain brain's curated lessons into the local Brain so they're
487
+ // available offline in smart_recall. Idempotent + non-destructive: never
488
+ // clobbers the user's own lessons (only prior marketplace installs).
489
+ case 'brain_install': {
490
+ const { instance_id, slug, min_confirms = 1, limit = 200, dry_run = false } = args;
491
+ const cleanSlug = typeof slug === 'string' ? slug.trim() : '';
492
+ if (!cleanSlug) {
493
+ throw new McpError(ErrorCode.InvalidParams, 'slug is required β€” run brain_marketplace() to see available domain brains');
494
+ }
495
+ const params = new URLSearchParams();
496
+ if (min_confirms && min_confirms > 1)
497
+ params.set('min_confirms', String(min_confirms));
498
+ if (limit && limit !== 200)
499
+ params.set('limit', String(Math.min(Math.max(1, limit), 500)));
500
+ const pack = await apiFetch(`/api/v1/syndication/brains/${encodeURIComponent(cleanSlug)}${params.toString() ? `?${params}` : ''}`);
501
+ if (!pack.lessons || pack.lessons.length === 0) {
502
+ return `No installable lessons found for domain brain \`${cleanSlug}\`. Run \`brain_marketplace()\` to see what's available.`;
503
+ }
504
+ if (dry_run) {
505
+ return [
506
+ `## πŸ“¦ ${pack.name} (DRY RUN)`,
507
+ `Would install **${pack.lessons.length}** lesson${pack.lessons.length === 1 ? '' : 's'} into your Brain.`,
508
+ ``,
509
+ ...pack.lessons.slice(0, 15).map(l => ` β€’ \`${l.topic}\` Β· 🀝 ${l.confirm_count}`),
510
+ pack.lessons.length > 15 ? ` …and ${pack.lessons.length - 15} more` : '',
511
+ ``,
512
+ `Run without \`dry_run\` to install: \`brain_install(slug="${cleanSlug}")\``,
513
+ ].filter(Boolean).join('\n');
514
+ }
515
+ const redis = await getConnection(instance_id);
516
+ const source = `marketplace:${cleanSlug}`;
517
+ const now = new Date().toISOString();
518
+ let installed = 0;
519
+ let skipped = 0;
520
+ for (const l of pack.lessons) {
521
+ if (!l.topic || !l.what_worked) {
522
+ skipped++;
523
+ continue;
524
+ }
525
+ const bestKey = `cachly:lesson:best:${l.topic}`;
526
+ // Never clobber a user's own lesson (or a prior install from a different brain).
527
+ const existing = await redis.get(bestKey);
528
+ if (existing) {
529
+ const parsed = safeJsonParse(existing, null);
530
+ if (parsed && parsed.source !== source) {
531
+ skipped++;
532
+ continue;
533
+ }
534
+ }
535
+ // Tags arrive as a JSON string from the commons; normalise to an array.
536
+ const tags = (() => {
537
+ const t = safeJsonParse(l.tags, []);
538
+ return Array.isArray(t) ? t.filter((x) => typeof x === 'string') : [];
539
+ })();
540
+ const record = JSON.stringify({
541
+ topic: l.topic,
542
+ outcome: l.outcome || 'success',
543
+ what_worked: l.what_worked,
544
+ what_failed: l.what_failed || '',
545
+ severity: l.severity || 'minor',
546
+ tags,
547
+ visibility: 'team',
548
+ confidence: calculateConfidence({ ts: now, verified_at: now, recall_count: l.confirm_count }),
549
+ recall_count: 0,
550
+ source,
551
+ ts: now,
552
+ verified_at: now,
553
+ version: 3,
554
+ });
555
+ await redis.set(bestKey, record);
556
+ const listKey = `cachly:lessons:${l.topic}`;
557
+ await redis.rpush(listKey, record);
558
+ await redis.ltrim(listKey, -100, -1);
559
+ await redis.expire(listKey, 90 * 86400);
560
+ installed++;
561
+ }
562
+ // Stamp born_at so time-to-first-recall counts from the install moment.
563
+ await redis.set(`cachly:stats:born_at:${instance_id}`, now, 'EX', 365 * 86400, 'NX').catch(() => { });
564
+ return [
565
+ `## πŸ“¦ Installed: ${pack.name}`,
566
+ ``,
567
+ `**${installed}** lesson${installed === 1 ? '' : 's'} merged into your Brain${skipped > 0 ? ` Β· ${skipped} skipped (your own lessons take priority)` : ''}.`,
568
+ ``,
569
+ `They're live in \`smart_recall\` now β€” try a query in this domain:`,
570
+ ` β€’ \`smart_recall(query="${pack.lessons[0]?.topic.split(':').pop() ?? 'your problem'}")\``,
571
+ ``,
572
+ `_Installed lessons are tagged \`source: "${source}"\` and never override your own. Re-run anytime to pull updates._`,
573
+ ].join('\n');
574
+ }
455
575
  // ── Layer 3: MADC ─────────────────────────────────────────────────────────
456
576
  default:
457
577
  return null;
@@ -1 +1 @@
1
- {"version":3,"file":"syndicate.js","sourceRoot":"","sources":["../../../src/handlers/syndicate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"syndicate.js","sourceRoot":"","sources":["../../../src/handlers/syndicate.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,17 @@ export declare function getRole(redis: import('ioredis').Redis, instanceId: stri
10
10
  export declare function hasPermission(actorRole: TeamRole | null, required: TeamRole): boolean;
11
11
  /** The review level a role warrants in team_confirm. */
12
12
  export declare function roleToReviewLevel(role: TeamRole | null): 'senior' | 'peer';
13
+ /** True once at least one admin exists β€” i.e. governance has been turned on. */
14
+ export declare function rbacActive(redis: import('ioredis').Redis, instanceId: string): Promise<boolean>;
15
+ /**
16
+ * Enforce that `handle` holds at least `required` β€” but only when governance is
17
+ * active. Returns null when the action is permitted, or a clear refusal message
18
+ * (never throws β€” a denied write must not break the agent call). `action` is a
19
+ * short human phrase, e.g. "store team lessons".
20
+ */
21
+ export declare function requireRole(redis: import('ioredis').Redis, instanceId: string, handle: string, required: TeamRole, action: string): Promise<string | null>;
22
+ /** Append an immutable governance-audit entry (role changes, gated actions). */
23
+ export declare function auditLog(redis: import('ioredis').Redis, instanceId: string, entry: Record<string, unknown>): Promise<void>;
13
24
  export declare const GROUPS_INDEX_KEY: (instanceId: string) => string;
14
25
  export declare const GROUP_KEY: (instanceId: string, group: string) => string;
15
26
  /** Return the set of group names `handle` belongs to (lower-cased). */
@@ -7,7 +7,7 @@ export const TEAM_TOOL_NAMES = new Set([
7
7
  'brain_doctor', 'recall_at', 'trace_dependency', 'global_learn', 'global_recall',
8
8
  'publish_lesson', 'import_public_brain', 'setup_ai_memory',
9
9
  'team_assign_role', 'team_whoami', 'team_roster',
10
- 'team_grant_scope', 'team_scopes',
10
+ 'team_grant_scope', 'team_scopes', 'team_audit',
11
11
  ]);
12
12
  const ROLE_RANK = {
13
13
  admin: 4, reviewer: 3, contributor: 2, viewer: 1,
@@ -36,6 +36,45 @@ export function hasPermission(actorRole, required) {
36
36
  export function roleToReviewLevel(role) {
37
37
  return role === 'admin' || role === 'reviewer' ? 'senior' : 'peer';
38
38
  }
39
+ // ── RBAC enforcement (W6) ──────────────────────────────────────────────────────
40
+ // Governance "activates" once an admin is bootstrapped on a brain (the same
41
+ // signal team_assign_role uses). Before that, the team is open and every tool
42
+ // behaves exactly as before β€” so existing single-user and small-team flows are
43
+ // untouched. Once an admin exists, write/review tools enforce role minimums.
44
+ /** True once at least one admin exists β€” i.e. governance has been turned on. */
45
+ export async function rbacActive(redis, instanceId) {
46
+ const allRoles = await redis.hgetall(ROLES_KEY(instanceId)).catch(() => ({}));
47
+ return Object.values(allRoles).includes('admin');
48
+ }
49
+ /**
50
+ * Enforce that `handle` holds at least `required` β€” but only when governance is
51
+ * active. Returns null when the action is permitted, or a clear refusal message
52
+ * (never throws β€” a denied write must not break the agent call). `action` is a
53
+ * short human phrase, e.g. "store team lessons".
54
+ */
55
+ export async function requireRole(redis, instanceId, handle, required, action) {
56
+ if (!(await rbacActive(redis, instanceId)))
57
+ return null; // open team β€” allow
58
+ const role = handle ? await getRole(redis, instanceId, handle) : null;
59
+ if (hasPermission(role, required))
60
+ return null;
61
+ const have = role ? `${ROLE_BADGE[role]} ${role}` : 'no role';
62
+ return [
63
+ `πŸ”’ **Permission denied** β€” to ${action} you need at least \`${required}\` ${ROLE_BADGE[required]} (you have: ${have}).`,
64
+ ``,
65
+ `Ask an admin to grant it:`,
66
+ `\`team_assign_role(instance_id="${instanceId}", handle="${handle || '<your-handle>'}", role="${required}", assigned_by="<admin>")\``,
67
+ `_Governance is active on this brain. Run \`team_whoami\` to check your role._`,
68
+ ].join('\n');
69
+ }
70
+ /** Append an immutable governance-audit entry (role changes, gated actions). */
71
+ export async function auditLog(redis, instanceId, entry) {
72
+ const key = `cachly:team:audit:${instanceId}`;
73
+ const rec = JSON.stringify({ ...entry, ts: new Date().toISOString() });
74
+ await redis.rpush(key, rec).catch(() => { });
75
+ await redis.ltrim(key, -500, -1).catch(() => { });
76
+ await redis.expire(key, 365 * 2 * 86400).catch(() => { }); // 2-year retention
77
+ }
39
78
  // ── Team-level visibility scopes (groups) ─────────────────────────────────────
40
79
  // A named sub-team (e.g. "backend", "security"). Lessons can be scoped to a group
41
80
  // via `group` on learn_from_attempts; they then only surface in recall for members
@@ -134,6 +173,12 @@ export async function handleTeamTool(name, args, getConnection, apiFetch) {
134
173
  const iid = instance_id;
135
174
  if (!iid)
136
175
  return '❌ instance_id required';
176
+ // W6 enforcement: once governance is active, a viewer (recall-only) cannot
177
+ // store team lessons β€” contributor+ required. Open teams are unaffected.
178
+ const redisTL = await getConnection(iid);
179
+ const learnDenied = await requireRole(redisTL, iid, author, 'contributor', 'store team lessons');
180
+ if (learnDenied)
181
+ return learnDenied;
137
182
  // Store with author attribution via the same learn_from_attempts Redis structure
138
183
  const lesson = {
139
184
  topic, outcome, what_worked,
@@ -147,11 +192,10 @@ export async function handleTeamTool(name, args, getConnection, apiFetch) {
147
192
  recall_count: 0,
148
193
  version: 2,
149
194
  };
150
- const redis = await getConnection(iid);
151
195
  const key = `cachly:lessons:${topic}`;
152
- await redis.rpush(key, JSON.stringify(lesson));
196
+ await redisTL.rpush(key, JSON.stringify(lesson));
153
197
  if (outcome === 'success') {
154
- await redis.set(`cachly:lesson:best:${topic}`, JSON.stringify(lesson));
198
+ await redisTL.set(`cachly:lesson:best:${topic}`, JSON.stringify(lesson));
155
199
  }
156
200
  return `βœ… Team lesson stored by **${author}**: \`${topic}\` (${outcome})\nπŸ’‘ ${what_worked.slice(0, 120)}`;
157
201
  }
@@ -165,11 +209,17 @@ export async function handleTeamTool(name, args, getConnection, apiFetch) {
165
209
  return '❌ instance_id required';
166
210
  if (!topic || !reviewer)
167
211
  return '❌ Required: topic, reviewer';
212
+ const redis = await getConnection(instance_id);
213
+ // W6 enforcement: once governance is active, only reviewer+ may confirm
214
+ // lessons (vision: "nur reviewer dΓΌrfen team_confirm"). Open teams are
215
+ // unaffected. A denied confirm returns guidance, never throws.
216
+ const confirmDenied = await requireRole(redis, instance_id, reviewer, 'reviewer', 'confirm team lessons');
217
+ if (confirmDenied)
218
+ return confirmDenied;
168
219
  // Role-aware review level: if the reviewer has an assigned role, that determines
169
220
  // weight (admin/reviewer β†’ senior, contributor β†’ peer). The caller can still
170
221
  // pass `level` explicitly to override (e.g. a guest reviewer without a role).
171
222
  // This prevents self-promotion β€” you can't claim senior by just passing level="senior".
172
- const redis = await getConnection(instance_id);
173
223
  const assignedRole = await getRole(redis, instance_id, reviewer);
174
224
  const autoLevel = roleToReviewLevel(assignedRole);
175
225
  // If the caller explicitly asked for 'peer' on a senior-role reviewer,
@@ -210,6 +260,11 @@ export async function handleTeamTool(name, args, getConnection, apiFetch) {
210
260
  await redis.rpush(logKey, JSON.stringify(reviewLog));
211
261
  await redis.ltrim(logKey, -50, -1);
212
262
  await redis.expire(logKey, 365 * 86400);
263
+ // Governance audit trail (W6): every confirm is recorded brain-wide so an
264
+ // admin can answer "who endorsed what, and when" for compliance.
265
+ await auditLog(redis, instance_id, {
266
+ action: 'team_confirm', actor: reviewer, topic, level: effectiveLevel,
267
+ });
213
268
  const badge = effectiveLevel === 'senior' ? 'πŸ›‘οΈ senior-reviewed' : 'βœ”οΈ peer-reviewed';
214
269
  const alreadyNote = isNewEndorser ? '' : ` (already endorsed by ${reviewer} β€” no change to rank)`;
215
270
  return `${badge} β€” \`${topic}\` confirmed by **${reviewer}**${roleNote} (${endorsements} distinct endorsement${endorsements === 1 ? '' : 's'})${alreadyNote}.\nπŸ“ˆ This lesson now ranks higher in \`smart_recall\` / \`team_recall\`.${note ? `\nπŸ“ ${note.slice(0, 200)}` : ''}`;
@@ -1208,8 +1263,14 @@ Result: Your AI **never solves the same problem twice** and always picks up exac
1208
1263
  ].join('\n');
1209
1264
  }
1210
1265
  }
1266
+ const prevRole = allRoles[handle.toLowerCase()] ?? null;
1211
1267
  await redis.hset(ROLES_KEY(instance_id), handle.toLowerCase(), cleanRole);
1212
1268
  await redis.expire(ROLES_KEY(instance_id), 365 * 2 * 86400); // 2-year TTL
1269
+ // Governance audit trail (W6): record every role change with who made it.
1270
+ await auditLog(redis, instance_id, {
1271
+ action: 'team_assign_role', actor: assigned_by || '(bootstrap)',
1272
+ handle: handle.toLowerCase(), from: prevRole, to: cleanRole,
1273
+ });
1213
1274
  const isBootstrap = !hasAdmin;
1214
1275
  const badge = ROLE_BADGE[cleanRole];
1215
1276
  return [
@@ -1283,6 +1344,52 @@ Result: Your AI **never solves the same problem twice** and always picks up exac
1283
1344
  lines.push(``, `_Manage with \`team_assign_role\`. Any admin can add or change roles._`);
1284
1345
  return lines.join('\n');
1285
1346
  }
1347
+ // ── team_audit ────────────────────────────────────────────────────────────
1348
+ // Governance/compliance trail (W6): who changed roles, who confirmed which
1349
+ // lessons, and when. Admin-gated once governance is active β€” the audit log is
1350
+ // sensitive (it reveals the team's review activity). Newest entries first.
1351
+ case 'team_audit': {
1352
+ const { instance_id, requester = '', limit = 50 } = args;
1353
+ if (!instance_id)
1354
+ return '❌ Required: instance_id';
1355
+ const redis = await getConnection(instance_id);
1356
+ const denied = await requireRole(redis, instance_id, requester, 'admin', 'view the governance audit log');
1357
+ if (denied)
1358
+ return denied;
1359
+ const max = Math.min(Math.max(1, Number(limit) || 50), 200);
1360
+ const raw = await redis.lrange(`cachly:team:audit:${instance_id}`, -max, -1).catch(() => []);
1361
+ if (raw.length === 0) {
1362
+ return [
1363
+ `## πŸ“œ Governance Audit Log`,
1364
+ ``,
1365
+ `No governance events recorded yet.`,
1366
+ `Events are logged automatically on \`team_assign_role\` and \`team_confirm\`.`,
1367
+ ].join('\n');
1368
+ }
1369
+ const entries = raw
1370
+ .map(r => safeJsonParse(r, null))
1371
+ .filter((e) => e !== null)
1372
+ .reverse(); // newest first
1373
+ const fmt = (e) => {
1374
+ const when = e.ts ? new Date(e.ts).toISOString().replace('T', ' ').slice(0, 16) : '?';
1375
+ if (e.action === 'team_assign_role') {
1376
+ return `| ${when} | πŸ‘‘ role | **${e.actor}** set \`${e.handle}\`: ${e.from ?? 'β€”'} β†’ **${e.to}** |`;
1377
+ }
1378
+ if (e.action === 'team_confirm') {
1379
+ return `| ${when} | βœ… confirm | **${e.actor}** confirmed \`${e.topic}\` (${e.level}) |`;
1380
+ }
1381
+ return `| ${when} | ${e.action ?? '?'} | ${e.actor ?? '?'} |`;
1382
+ };
1383
+ return [
1384
+ `## πŸ“œ Governance Audit Log (${entries.length} event${entries.length !== 1 ? 's' : ''})`,
1385
+ ``,
1386
+ `| When (UTC) | Type | Detail |`,
1387
+ `|---|---|---|`,
1388
+ ...entries.map(fmt),
1389
+ ``,
1390
+ `_Immutable trail Β· 2-year retention Β· last ${max} events. Admin-only._`,
1391
+ ].join('\n');
1392
+ }
1286
1393
  // ── team_grant_scope ──────────────────────────────────────────────────────
1287
1394
  // Add (or remove) a member to a named group/sub-team. Group-scoped lessons
1288
1395
  // only surface in recall for members of that group. Admin-gated after the