agentmesh-ai 0.3.1 → 0.4.0

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.
Files changed (54) hide show
  1. package/GUIDE.md +20 -24
  2. package/README.md +50 -0
  3. package/dist/cloud/cloud-conversation.js +1 -1
  4. package/dist/cloud/cloud-conversation.js.map +1 -1
  5. package/dist/index.d.ts +2 -0
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js +1 -0
  8. package/dist/index.js.map +1 -1
  9. package/dist/mcp/conversation-tools.d.ts.map +1 -1
  10. package/dist/mcp/conversation-tools.js +159 -7
  11. package/dist/mcp/conversation-tools.js.map +1 -1
  12. package/dist/mcp/index.js +32 -10
  13. package/dist/mcp/index.js.map +1 -1
  14. package/dist/mcp/memory-tools.d.ts.map +1 -1
  15. package/dist/mcp/memory-tools.js +99 -22
  16. package/dist/mcp/memory-tools.js.map +1 -1
  17. package/dist/memory/consolidator.d.ts +54 -0
  18. package/dist/memory/consolidator.d.ts.map +1 -0
  19. package/dist/memory/consolidator.js +173 -0
  20. package/dist/memory/consolidator.js.map +1 -0
  21. package/dist/memory/index.d.ts +2 -1
  22. package/dist/memory/index.d.ts.map +1 -1
  23. package/dist/memory/index.js +2 -1
  24. package/dist/memory/index.js.map +1 -1
  25. package/dist/memory/merge-view.d.ts +6 -1
  26. package/dist/memory/merge-view.d.ts.map +1 -1
  27. package/dist/memory/merge-view.js +136 -15
  28. package/dist/memory/merge-view.js.map +1 -1
  29. package/dist/memory/schema.d.ts +32 -8
  30. package/dist/memory/schema.d.ts.map +1 -1
  31. package/dist/memory/schema.js +4 -1
  32. package/dist/memory/schema.js.map +1 -1
  33. package/dist/memory/searcher.d.ts +15 -4
  34. package/dist/memory/searcher.d.ts.map +1 -1
  35. package/dist/memory/searcher.js +80 -28
  36. package/dist/memory/searcher.js.map +1 -1
  37. package/dist/memory/types.d.ts +23 -2
  38. package/dist/memory/types.d.ts.map +1 -1
  39. package/dist/memory/write-utils.d.ts +5 -1
  40. package/dist/memory/write-utils.d.ts.map +1 -1
  41. package/dist/memory/write-utils.js +37 -0
  42. package/dist/memory/write-utils.js.map +1 -1
  43. package/dist/sdk.d.ts +95 -0
  44. package/dist/sdk.d.ts.map +1 -0
  45. package/dist/sdk.js +177 -0
  46. package/dist/sdk.js.map +1 -0
  47. package/dist/utils/id.d.ts +1 -1
  48. package/dist/utils/id.d.ts.map +1 -1
  49. package/dist/utils/id.js +2 -2
  50. package/dist/utils/id.js.map +1 -1
  51. package/package.json +5 -1
  52. package/test-realtime.mjs +97 -0
  53. package/test-realtime2.mjs +43 -0
  54. package/test-realtime3.mjs +73 -0
@@ -1 +1 @@
1
- {"version":3,"file":"memory-tools.d.ts","sourceRoot":"","sources":["../../src/mcp/memory-tools.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEhH,2FAA2F;AAC3F,UAAU,YAAY;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,KAAK,CAAC;QACpB,KAAK,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QAClD,OAAO,EAAE,GAAG,EAAE,CAAC;KAChB,CAAC,CAAC;IACH,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE,CAAC;IACjD,gBAAgB,EAAE,uBAAuB,EAAE,CAAC;IAC5C,QAAQ,EAAE,oBAAoB,EAAE,CAAC;CAClC;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,cAAc,EAAE,MAAM,MAAM,EAC5B,UAAU,EAAE,MAAM,MAAM,EACxB,SAAS,CAAC,EAAE,MAAM,YAAY,GAAG,IAAI,EACrC,SAAS,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,QAmQrC"}
1
+ {"version":3,"file":"memory-tools.d.ts","sourceRoot":"","sources":["../../src/mcp/memory-tools.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,aAAa,EAAE,uBAAuB,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEhH,2FAA2F;AAC3F,UAAU,YAAY;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,KAAK,CAAC;QACpB,KAAK,EAAE;YAAE,EAAE,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC;QAClD,OAAO,EAAE,GAAG,EAAE,CAAC;KAChB,CAAC,CAAC;IACH,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACjC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,EAAE,CAAC;IACjD,gBAAgB,EAAE,uBAAuB,EAAE,CAAC;IAC5C,QAAQ,EAAE,oBAAoB,EAAE,CAAC;CAClC;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,EACjB,cAAc,EAAE,MAAM,MAAM,EAC5B,UAAU,EAAE,MAAM,MAAM,EACxB,SAAS,CAAC,EAAE,MAAM,YAAY,GAAG,IAAI,EACrC,SAAS,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,QAyVrC"}
@@ -8,27 +8,37 @@ import { z } from 'zod';
8
8
  import { readAllAgentMemories, readHubConfig } from '../memory/reader.js';
9
9
  import { writeMemoryEntry } from '../memory/writer.js';
10
10
  import { searchMemories } from '../memory/searcher.js';
11
- import { mergeMemories, formatMergedMemories } from '../memory/merge-view.js';
11
+ import { mergeMemories, formatMergedMemories, formatMemoryIndex } from '../memory/merge-view.js';
12
+ import { analyzeMemoryHealth, formatHealthReport } from '../memory/consolidator.js';
12
13
  import { cloudReadAllMemories, cloudWriteMemory } from '../cloud/supabase-client.js';
13
14
  export function registerMemoryTools(server, getAgentHubDir, getAgentId, getClient, getTeamId) {
14
- server.tool('read_memory', `Read the project's shared memory — all knowledge recorded by all AI agents working on this project.
15
+ server.tool('read_memory', `Read the project's shared memory — knowledge recorded by all AI agents on this project.
15
16
 
16
- Call this tool when you start a new task or need to understand the project context.
17
- It returns everything the team knows: tech stack, APIs, conventions, decisions, gotchas.`, {
17
+ TWO MODES:
18
+ 1. Without "topics" Returns a compact INDEX grouped by category (decisions, APIs, conventions, etc.)
19
+ Rules are shown at the top. Use this to get an overview, then pick relevant topics.
20
+ 2. With "topics" → Returns FULL DETAILS for the specified topics only.
21
+
22
+ RECOMMENDED FLOW:
23
+ - First call: read_memory() → see the index
24
+ - Then call: read_memory({ topics: ["User API", "Auth Strategy"] }) → read details you need
25
+
26
+ Call this when you start a new task or need project context.`, {
27
+ topics: z.array(z.string()).optional().describe('Specific topic names to read in full. Without this, returns a compact index.'),
18
28
  tags: z.array(z.string()).optional().describe('Filter by tags (e.g. ["api", "user-service"])'),
19
29
  agent: z.string().optional().describe('Only read one specific agent\'s memory'),
20
- limit: z.number().optional().describe('Max entries to return (default 50). Use search_memory for targeted lookups.'),
21
- }, async ({ tags, agent, limit }) => {
30
+ limit: z.number().optional().describe('Max entries to return (default 50).'),
31
+ }, async ({ topics, tags, agent, limit }) => {
22
32
  const dir = getAgentHubDir();
23
33
  const teamId = getTeamId?.();
24
- // Cloud-first: use cloud as primary source, local as fallback
34
+ const myId = getAgentId();
35
+ // Cloud-first: cloud as primary, local as fallback
25
36
  let memories;
26
37
  let cloudActive = false;
27
38
  if (teamId) {
28
39
  try {
29
40
  memories = await cloudReadAllMemories(teamId);
30
- cloudActive = memories.length > 0 || true; // connected = active even if empty
31
- // Supplement with local-only agents not yet in cloud
41
+ cloudActive = true;
32
42
  const localMemories = await readAllAgentMemories(dir);
33
43
  for (const local of localMemories) {
34
44
  if (!memories.some(m => m.agent === local.agent)) {
@@ -37,12 +47,10 @@ It returns everything the team knows: tech stack, APIs, conventions, decisions,
37
47
  }
38
48
  }
39
49
  catch {
40
- // Cloud unavailable — fall back to local
41
50
  memories = await readAllAgentMemories(dir);
42
51
  }
43
52
  }
44
53
  else {
45
- // No team_id — local only
46
54
  memories = await readAllAgentMemories(dir);
47
55
  }
48
56
  // Legacy: merge from WebSocket conversation space
@@ -60,10 +68,20 @@ It returns everything the team knows: tech stack, APIs, conventions, decisions,
60
68
  }
61
69
  }
62
70
  }
63
- const allMerged = mergeMemories(memories, { tags, agent });
64
- const totalCount = allMerged.length;
65
- const limited = allMerged.slice(0, limit ?? 50);
66
- let text = formatMergedMemories(limited, totalCount);
71
+ // Get current agent's last_active for "recent changes" summary
72
+ const myMemory = memories.find(m => m.agent === myId);
73
+ const myLastActive = myMemory?.last_active;
74
+ // Merge with filtering
75
+ const allMerged = mergeMemories(memories, { tags, agent, topics, limit: topics ? undefined : (limit ?? 50) });
76
+ let text;
77
+ if (topics && topics.length > 0) {
78
+ // Drill-down mode: full details for specified topics
79
+ text = formatMergedMemories(allMerged);
80
+ }
81
+ else {
82
+ // Index mode: compact overview grouped by category
83
+ text = formatMemoryIndex(allMerged, myId, myLastActive);
84
+ }
67
85
  if (cloudActive) {
68
86
  text = `☁️ Cloud (team: ${teamId})\n\n` + text;
69
87
  }
@@ -157,13 +175,23 @@ HUMAN-IN-THE-LOOP — use the right status level:
157
175
  topic: z.string().describe('Short title for this knowledge (e.g. "User Service API", "Database Choice")'),
158
176
  content: z.string().describe('The knowledge to record — concise, structured, important info first'),
159
177
  tags: z.array(z.string()).describe('Categorization tags (e.g. ["api", "user-service"], ["convention", "naming"])'),
178
+ category: z.enum(['decision', 'api', 'convention', 'gotcha', 'dependency', 'project_fact', 'user_pref']).optional().describe('Knowledge category (auto-inferred from tags if not set):\n' +
179
+ ' decision — tech/architecture decisions and rationale\n' +
180
+ ' api — endpoints, contracts, interfaces\n' +
181
+ ' convention — coding standards, naming patterns\n' +
182
+ ' gotcha — bugs, pitfalls, workarounds\n' +
183
+ ' dependency — external libs, services, tools\n' +
184
+ ' project_fact — general project info\n' +
185
+ ' user_pref — human user preferences'),
186
+ summary: z.string().optional().describe('One-line summary for the index view (auto-generated if not set)'),
160
187
  decided_with: z.array(z.string()).optional().describe('Other agent IDs who participated in this decision'),
161
188
  status: z.enum(['auto', 'proposal', 'protected']).optional().describe('Memory status level:\n' +
162
189
  ' auto (default) — routine knowledge, recorded automatically\n' +
163
190
  ' proposal — important decision that needs team discussion/confirmation\n' +
164
191
  ' protected — confirmed team consensus, cannot be overwritten by others'),
165
192
  owner: z.string().optional().describe('Agent ID who owns this protected entry. Defaults to you.'),
166
- }, async ({ topic, content, tags, decided_with, status, owner }) => {
193
+ private: z.boolean().optional().describe('Set to true to make this entry visible only to you, not shared with the team'),
194
+ }, async ({ topic, content, tags, category, summary, decided_with, status, owner, private: isPrivate }) => {
167
195
  const dir = getAgentHubDir();
168
196
  const agentId = getAgentId();
169
197
  const hub = await readHubConfig(dir);
@@ -171,7 +199,11 @@ HUMAN-IN-THE-LOOP — use the right status level:
171
199
  const role = agentInfo?.role ?? 'developer';
172
200
  const tool = agentInfo?.tool ?? 'unknown';
173
201
  const teamId = getTeamId?.() ?? hub?.team_id;
174
- const writeOpts = { topic, content, tags, decided_with, status, owner };
202
+ const writeOpts = {
203
+ topic, content, tags, decided_with, status, owner,
204
+ category, summary,
205
+ ...(isPrivate ? { scope: 'private' } : {}),
206
+ };
175
207
  // Cloud-first: write to cloud as primary, local as cache
176
208
  let result;
177
209
  let cloudSynced = false;
@@ -206,10 +238,14 @@ HUMAN-IN-THE-LOOP — use the right status level:
206
238
  content: [{ type: 'text', text: msg }]
207
239
  };
208
240
  });
209
- server.tool('search_memory', `Search the shared memory for specific information.
210
- Use this when you need to find something specific, like "how is the user API defined" or "what database are we using".`, {
241
+ server.tool('search_memory', `Search shared memory for specific information. Returns top 10 most relevant results.
242
+
243
+ Use this when you need to find something specific, like "how is the user API defined" or "what database are we using".
244
+ You can narrow results by category: decision, api, convention, gotcha, dependency, project_fact, user_pref.`, {
211
245
  query: z.string().describe('Search keywords (e.g. "user api", "database", "authentication")'),
212
- }, async ({ query }) => {
246
+ category: z.enum(['decision', 'api', 'convention', 'gotcha', 'dependency', 'project_fact', 'user_pref']).optional().describe('Filter by category'),
247
+ limit: z.number().optional().describe('Max results (default 10)'),
248
+ }, async ({ query, category, limit }) => {
213
249
  const dir = getAgentHubDir();
214
250
  const teamId = getTeamId?.();
215
251
  // Cloud-first: cloud as primary, local as fallback
@@ -231,8 +267,49 @@ Use this when you need to find something specific, like "how is the user API def
231
267
  else {
232
268
  memories = await readAllAgentMemories(dir);
233
269
  }
234
- const results = searchMemories(memories, query);
235
- const text = formatMergedMemories(results);
270
+ const results = searchMemories(memories, query, { category, limit });
271
+ const totalText = results.length < (limit ?? 10)
272
+ ? `${results.length} result(s)`
273
+ : `Showing top ${results.length} results`;
274
+ const text = `${totalText} for "${query}"${category ? ` [${category}]` : ''}:\n\n` + formatMergedMemories(results);
275
+ return { content: [{ type: 'text', text }] };
276
+ });
277
+ // ── consolidate_memory ─────────────────────────────────────────────────
278
+ server.tool('consolidate_memory', `Analyze the health of shared memory and generate a cleanup report.
279
+
280
+ Returns a report showing:
281
+ - Potential duplicates (similar topics that could be merged)
282
+ - Stale entries (>30 days old, not referenced by newer entries)
283
+ - Conflicts (same topic, different agents, different content)
284
+ - Statistics (total entries, by category, by agent)
285
+
286
+ The report includes actionable suggestions. After reading it, use write_memory to
287
+ fix issues or discuss tool to resolve conflicts.
288
+
289
+ Call this periodically (weekly) or when memory seems cluttered (>30 entries).`, {}, async () => {
290
+ const dir = getAgentHubDir();
291
+ const teamId = getTeamId?.();
292
+ let memories;
293
+ if (teamId) {
294
+ try {
295
+ memories = await cloudReadAllMemories(teamId);
296
+ const local = await readAllAgentMemories(dir);
297
+ for (const l of local) {
298
+ if (!memories.some(m => m.agent === l.agent))
299
+ memories.push(l);
300
+ }
301
+ }
302
+ catch {
303
+ memories = await readAllAgentMemories(dir);
304
+ }
305
+ }
306
+ else {
307
+ memories = await readAllAgentMemories(dir);
308
+ }
309
+ // Flatten all entries
310
+ const allEntries = mergeMemories(memories, { limit: 999 });
311
+ const report = analyzeMemoryHealth(allEntries);
312
+ const text = formatHealthReport(report);
236
313
  return { content: [{ type: 'text', text }] };
237
314
  });
238
315
  }
@@ -1 +1 @@
1
- {"version":3,"file":"memory-tools.js","sourceRoot":"","sources":["../../src/mcp/memory-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"memory-tools.js","sourceRoot":"","sources":["../../src/mcp/memory-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ /**
2
+ * Memory health analyzer (consolidator).
3
+ *
4
+ * Pure data analysis — no AI API calls. Identifies duplicates, stale entries,
5
+ * conflicts, and generates a structured report for the AI to act on.
6
+ */
7
+ import type { MergedMemoryEntry } from './types.js';
8
+ /** A group of potentially duplicate entries. */
9
+ export interface DuplicateGroup {
10
+ entries: MergedMemoryEntry[];
11
+ reason: string;
12
+ }
13
+ /** Health report for the memory system. */
14
+ export interface HealthReport {
15
+ duplicates: DuplicateGroup[];
16
+ stale: MergedMemoryEntry[];
17
+ conflicts: Array<{
18
+ topic: string;
19
+ entries: MergedMemoryEntry[];
20
+ }>;
21
+ stats: {
22
+ total: number;
23
+ byCategory: Record<string, number>;
24
+ byAgent: Record<string, number>;
25
+ protectedCount: number;
26
+ proposalCount: number;
27
+ oldestDate: string;
28
+ newestDate: string;
29
+ };
30
+ }
31
+ /** Analyze memory health and return a structured report. */
32
+ export declare function analyzeMemoryHealth(entries: MergedMemoryEntry[], staleDays?: number): HealthReport;
33
+ /** Find groups of entries with similar topics. */
34
+ export declare function findDuplicateGroups(entries: MergedMemoryEntry[]): DuplicateGroup[];
35
+ /** Find entries older than staleDays that aren't referenced by newer entries. */
36
+ export declare function findStaleEntries(entries: MergedMemoryEntry[], staleDays: number): MergedMemoryEntry[];
37
+ /** Find entries from different agents on the same topic with different content. */
38
+ export declare function findConflicts(entries: MergedMemoryEntry[]): Array<{
39
+ topic: string;
40
+ entries: MergedMemoryEntry[];
41
+ }>;
42
+ /** Get aggregate statistics about the memory. */
43
+ export declare function getMemoryStats(entries: MergedMemoryEntry[]): {
44
+ total: number;
45
+ byCategory: Record<string, number>;
46
+ byAgent: Record<string, number>;
47
+ protectedCount: number;
48
+ proposalCount: number;
49
+ oldestDate: string;
50
+ newestDate: string;
51
+ };
52
+ /** Format health report as markdown. */
53
+ export declare function formatHealthReport(report: HealthReport): string;
54
+ //# sourceMappingURL=consolidator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consolidator.d.ts","sourceRoot":"","sources":["../../src/memory/consolidator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,iBAAiB,EAAkB,MAAM,YAAY,CAAC;AAGpE,gDAAgD;AAChD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,iBAAiB,EAAE,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,2CAA2C;AAC3C,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,cAAc,EAAE,CAAC;IAC7B,KAAK,EAAE,iBAAiB,EAAE,CAAC;IAC3B,SAAS,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,iBAAiB,EAAE,CAAA;KAAE,CAAC,CAAC;IAClE,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAChC,cAAc,EAAE,MAAM,CAAC;QACvB,aAAa,EAAE,MAAM,CAAC;QACtB,UAAU,EAAE,MAAM,CAAC;QACnB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;CACH;AAED,4DAA4D;AAC5D,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,EAAE,EAAE,SAAS,SAAK,GAAG,YAAY,CAO9F;AAED,kDAAkD;AAClD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,cAAc,EAAE,CAoClF;AAED,iFAAiF;AACjF,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,iBAAiB,EAAE,EAAE,SAAS,EAAE,MAAM,GAAG,iBAAiB,EAAE,CAmBrG;AAED,mFAAmF;AACnF,wBAAgB,aAAa,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,KAAK,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,iBAAiB,EAAE,CAAA;CAAE,CAAC,CAyBlH;AAED,iDAAiD;AACjD,wBAAgB,cAAc,CAAC,OAAO,EAAE,iBAAiB,EAAE;;;;;;;;EA8B1D;AAED,wCAAwC;AACxC,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAqD/D"}
@@ -0,0 +1,173 @@
1
+ import { getEffectiveStatus, inferCategory } from './write-utils.js';
2
+ /** Analyze memory health and return a structured report. */
3
+ export function analyzeMemoryHealth(entries, staleDays = 30) {
4
+ return {
5
+ duplicates: findDuplicateGroups(entries),
6
+ stale: findStaleEntries(entries, staleDays),
7
+ conflicts: findConflicts(entries),
8
+ stats: getMemoryStats(entries),
9
+ };
10
+ }
11
+ /** Find groups of entries with similar topics. */
12
+ export function findDuplicateGroups(entries) {
13
+ const groups = [];
14
+ const processed = new Set();
15
+ for (let i = 0; i < entries.length; i++) {
16
+ if (processed.has(i))
17
+ continue;
18
+ const group = [entries[i]];
19
+ const wordsA = topicWords(entries[i].topic);
20
+ for (let j = i + 1; j < entries.length; j++) {
21
+ if (processed.has(j))
22
+ continue;
23
+ const wordsB = topicWords(entries[j].topic);
24
+ const shared = wordsA.filter(w => wordsB.includes(w));
25
+ // Similar if: 2+ shared words, or one topic contains the other
26
+ const aContainsB = entries[i].topic.toLowerCase().includes(entries[j].topic.toLowerCase());
27
+ const bContainsA = entries[j].topic.toLowerCase().includes(entries[i].topic.toLowerCase());
28
+ if (shared.length >= 2 || aContainsB || bContainsA) {
29
+ group.push(entries[j]);
30
+ processed.add(j);
31
+ }
32
+ }
33
+ if (group.length > 1) {
34
+ processed.add(i);
35
+ groups.push({
36
+ entries: group,
37
+ reason: `Topics share keywords: "${entries[i].topic}" ↔ "${group[1].topic}"`,
38
+ });
39
+ }
40
+ }
41
+ return groups;
42
+ }
43
+ /** Find entries older than staleDays that aren't referenced by newer entries. */
44
+ export function findStaleEntries(entries, staleDays) {
45
+ const cutoff = Date.now() - staleDays * 86400000;
46
+ return entries.filter(entry => {
47
+ const entryTime = new Date(entry.date).getTime();
48
+ if (entryTime > cutoff)
49
+ return false;
50
+ // Skip protected — they're intentionally permanent
51
+ if (getEffectiveStatus(entry) === 'protected')
52
+ return false;
53
+ // Check if any newer entry references this topic
54
+ const referenced = entries.some(other => other !== entry &&
55
+ new Date(other.date).getTime() > entryTime &&
56
+ other.content.toLowerCase().includes(entry.topic.toLowerCase()));
57
+ return !referenced;
58
+ });
59
+ }
60
+ /** Find entries from different agents on the same topic with different content. */
61
+ export function findConflicts(entries) {
62
+ const byTopic = new Map();
63
+ for (const entry of entries) {
64
+ const key = entry.topic.toLowerCase();
65
+ if (!byTopic.has(key))
66
+ byTopic.set(key, []);
67
+ byTopic.get(key).push(entry);
68
+ }
69
+ const conflicts = [];
70
+ for (const [topic, group] of byTopic) {
71
+ if (group.length <= 1)
72
+ continue;
73
+ // Check if entries are from different agents with different content
74
+ const uniqueAgents = new Set(group.map(e => e.agent));
75
+ if (uniqueAgents.size <= 1)
76
+ continue;
77
+ const uniqueContent = new Set(group.map(e => e.content.trim().toLowerCase()));
78
+ if (uniqueContent.size <= 1)
79
+ continue;
80
+ conflicts.push({ topic: group[0].topic, entries: group });
81
+ }
82
+ return conflicts;
83
+ }
84
+ /** Get aggregate statistics about the memory. */
85
+ export function getMemoryStats(entries) {
86
+ const byCategory = {};
87
+ const byAgent = {};
88
+ let protectedCount = 0;
89
+ let proposalCount = 0;
90
+ let oldestDate = '';
91
+ let newestDate = '';
92
+ for (const entry of entries) {
93
+ const cat = entry.category ?? inferCategory(entry.tags, entry.topic);
94
+ byCategory[cat] = (byCategory[cat] ?? 0) + 1;
95
+ byAgent[entry.agent] = (byAgent[entry.agent] ?? 0) + 1;
96
+ const status = getEffectiveStatus(entry);
97
+ if (status === 'protected')
98
+ protectedCount++;
99
+ if (status === 'proposal' || status === 'awaiting_votes')
100
+ proposalCount++;
101
+ if (!oldestDate || entry.date < oldestDate)
102
+ oldestDate = entry.date;
103
+ if (!newestDate || entry.date > newestDate)
104
+ newestDate = entry.date;
105
+ }
106
+ return {
107
+ total: entries.length,
108
+ byCategory,
109
+ byAgent,
110
+ protectedCount,
111
+ proposalCount,
112
+ oldestDate,
113
+ newestDate,
114
+ };
115
+ }
116
+ /** Format health report as markdown. */
117
+ export function formatHealthReport(report) {
118
+ const lines = [];
119
+ lines.push('# Memory Health Report\n');
120
+ // Duplicates
121
+ if (report.duplicates.length > 0) {
122
+ lines.push(`## Potential Duplicates (${report.duplicates.length} groups)\n`);
123
+ for (const group of report.duplicates) {
124
+ const topics = group.entries.map(e => `"${e.topic}" (${e.agent}, ${e.date.slice(0, 10)})`);
125
+ lines.push(`- ${topics.join(' ↔ ')}`);
126
+ lines.push(` → Consider merging with write_memory\n`);
127
+ }
128
+ }
129
+ else {
130
+ lines.push('## Duplicates: None found ✓\n');
131
+ }
132
+ // Stale
133
+ if (report.stale.length > 0) {
134
+ lines.push(`## Stale Entries (${report.stale.length})\n`);
135
+ for (const entry of report.stale) {
136
+ const daysOld = Math.floor((Date.now() - new Date(entry.date).getTime()) / 86400000);
137
+ lines.push(`- "${entry.topic}" (${entry.agent}, ${daysOld} days old)`);
138
+ }
139
+ lines.push(`\n→ Review and update with write_memory, or leave if still relevant\n`);
140
+ }
141
+ else {
142
+ lines.push('## Stale Entries: None ✓\n');
143
+ }
144
+ // Conflicts
145
+ if (report.conflicts.length > 0) {
146
+ lines.push(`## Conflicts (${report.conflicts.length})\n`);
147
+ for (const conflict of report.conflicts) {
148
+ lines.push(`- "${conflict.topic}":`);
149
+ for (const entry of conflict.entries) {
150
+ lines.push(` - ${entry.agent}: ${entry.content.slice(0, 80).replace(/\n/g, ' ')}...`);
151
+ }
152
+ lines.push(` → Use discuss tool to resolve, then write_memory with status: "protected"\n`);
153
+ }
154
+ }
155
+ else {
156
+ lines.push('## Conflicts: None ✓\n');
157
+ }
158
+ // Stats
159
+ lines.push('## Statistics\n');
160
+ lines.push(`- Total entries: ${report.stats.total}`);
161
+ lines.push(`- Protected: ${report.stats.protectedCount}, Proposals: ${report.stats.proposalCount}`);
162
+ lines.push(`- By category: ${Object.entries(report.stats.byCategory).map(([k, v]) => `${k}(${v})`).join(', ')}`);
163
+ lines.push(`- By agent: ${Object.entries(report.stats.byAgent).map(([k, v]) => `${k}(${v})`).join(', ')}`);
164
+ if (report.stats.oldestDate) {
165
+ lines.push(`- Date range: ${report.stats.oldestDate.slice(0, 10)} → ${report.stats.newestDate.slice(0, 10)}`);
166
+ }
167
+ return lines.join('\n');
168
+ }
169
+ // ── Helpers ──────────────────────────────────────────────────────────────────
170
+ function topicWords(topic) {
171
+ return topic.toLowerCase().split(/[\s\-_:,./]+/).filter(w => w.length > 2);
172
+ }
173
+ //# sourceMappingURL=consolidator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consolidator.js","sourceRoot":"","sources":["../../src/memory/consolidator.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ export { scanForSecrets } from './secret-scanner.js';
3
3
  export { writeMemoryEntry } from './writer.js';
4
4
  export { getEffectiveStatus, checkProtection, validateContent, buildMemoryEntry, upsertEntry } from './write-utils.js';
5
5
  export { searchMemories } from './searcher.js';
6
- export { mergeMemories, formatMergedMemories } from './merge-view.js';
6
+ export { mergeMemories, formatMergedMemories, formatMemoryIndex } from './merge-view.js';
7
+ export { analyzeMemoryHealth, formatHealthReport } from './consolidator.js';
7
8
  export type * from './types.js';
8
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACvH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACtE,mBAAmB,YAAY,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACvH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5E,mBAAmB,YAAY,CAAC"}
@@ -3,5 +3,6 @@ export { scanForSecrets } from './secret-scanner.js';
3
3
  export { writeMemoryEntry } from './writer.js';
4
4
  export { getEffectiveStatus, checkProtection, validateContent, buildMemoryEntry, upsertEntry } from './write-utils.js';
5
5
  export { searchMemories } from './searcher.js';
6
- export { mergeMemories, formatMergedMemories } from './merge-view.js';
6
+ export { mergeMemories, formatMergedMemories, formatMemoryIndex } from './merge-view.js';
7
+ export { analyzeMemoryHealth, formatHealthReport } from './consolidator.js';
7
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACvH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/memory/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAAE,kBAAkB,EAAE,eAAe,EAAE,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AACvH,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzF,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC"}
@@ -4,6 +4,11 @@
4
4
  import type { AgentMemoryFile, MergedMemoryEntry, ReadMemoryOptions } from './types.js';
5
5
  /** Merge all agent memories into a single sorted list, with optional filtering. */
6
6
  export declare function mergeMemories(memories: AgentMemoryFile[], options?: ReadMemoryOptions): MergedMemoryEntry[];
7
- /** Format merged entries as a human-readable string for AI consumption. */
7
+ /**
8
+ * Format entries as a compact index grouped by category.
9
+ * Rules (conventions + protected decisions) are placed at the top.
10
+ */
11
+ export declare function formatMemoryIndex(entries: MergedMemoryEntry[], myAgentId?: string, myLastActive?: string): string;
12
+ /** Format merged entries as full detail view (for topic drill-down). */
8
13
  export declare function formatMergedMemories(entries: MergedMemoryEntry[], totalBeforeLimit?: number): string;
9
14
  //# sourceMappingURL=merge-view.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"merge-view.d.ts","sourceRoot":"","sources":["../../src/memory/merge-view.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGxF,mFAAmF;AACnF,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,eAAe,EAAE,EAC3B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,iBAAiB,EAAE,CAyCrB;AAsBD,2EAA2E;AAC3E,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,EAAE,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAmCpG"}
1
+ {"version":3,"file":"merge-view.d.ts","sourceRoot":"","sources":["../../src/memory/merge-view.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,eAAe,EAAE,iBAAiB,EAAkB,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGxG,mFAAmF;AACnF,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,eAAe,EAAE,EAC3B,OAAO,CAAC,EAAE,iBAAiB,GAC1B,iBAAiB,EAAE,CAmDrB;AAmCD;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,iBAAiB,EAAE,EAC5B,SAAS,CAAC,EAAE,MAAM,EAClB,YAAY,CAAC,EAAE,MAAM,GACpB,MAAM,CAiER;AAED,wEAAwE;AACxE,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,EAAE,EAAE,gBAAgB,CAAC,EAAE,MAAM,GAAG,MAAM,CAoCpG"}