cmp-standards 2.6.0 → 2.8.0-alpha

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 (129) hide show
  1. package/README.md +633 -633
  2. package/dist/cache/EmbeddingCache.d.ts +109 -0
  3. package/dist/cache/EmbeddingCache.d.ts.map +1 -0
  4. package/dist/cache/EmbeddingCache.js +239 -0
  5. package/dist/cache/EmbeddingCache.js.map +1 -0
  6. package/dist/cache/index.d.ts +6 -0
  7. package/dist/cache/index.d.ts.map +1 -0
  8. package/dist/cache/index.js +6 -0
  9. package/dist/cache/index.js.map +1 -0
  10. package/dist/db/turso-client.js +11 -11
  11. package/dist/eslint/rules/no-async-useeffect.js +6 -6
  12. package/dist/events/EventBus.d.ts +87 -0
  13. package/dist/events/EventBus.d.ts.map +1 -0
  14. package/dist/events/EventBus.js +200 -0
  15. package/dist/events/EventBus.js.map +1 -0
  16. package/dist/events/index.d.ts +7 -0
  17. package/dist/events/index.d.ts.map +1 -0
  18. package/dist/events/index.js +9 -0
  19. package/dist/events/index.js.map +1 -0
  20. package/dist/events/types.d.ts +989 -0
  21. package/dist/events/types.d.ts.map +1 -0
  22. package/dist/events/types.js +136 -0
  23. package/dist/events/types.js.map +1 -0
  24. package/dist/experts/ConsensusEngine.d.ts +57 -0
  25. package/dist/experts/ConsensusEngine.d.ts.map +1 -0
  26. package/dist/experts/ConsensusEngine.js +146 -0
  27. package/dist/experts/ConsensusEngine.js.map +1 -0
  28. package/dist/experts/ExpertPanelService.d.ts +84 -0
  29. package/dist/experts/ExpertPanelService.d.ts.map +1 -0
  30. package/dist/experts/ExpertPanelService.js +204 -0
  31. package/dist/experts/ExpertPanelService.js.map +1 -0
  32. package/dist/experts/ExpertRouter.d.ts +68 -0
  33. package/dist/experts/ExpertRouter.d.ts.map +1 -0
  34. package/dist/experts/ExpertRouter.js +374 -0
  35. package/dist/experts/ExpertRouter.js.map +1 -0
  36. package/dist/experts/VoteCollector.d.ts +58 -0
  37. package/dist/experts/VoteCollector.d.ts.map +1 -0
  38. package/dist/experts/VoteCollector.js +146 -0
  39. package/dist/experts/VoteCollector.js.map +1 -0
  40. package/dist/experts/index.d.ts +9 -0
  41. package/dist/experts/index.d.ts.map +1 -0
  42. package/dist/experts/index.js +13 -0
  43. package/dist/experts/index.js.map +1 -0
  44. package/dist/hooks/cloud-pre-tool-use.js +20 -20
  45. package/dist/hooks/expert-review.d.ts +74 -0
  46. package/dist/hooks/expert-review.d.ts.map +1 -0
  47. package/dist/hooks/expert-review.js +220 -0
  48. package/dist/hooks/expert-review.js.map +1 -0
  49. package/dist/hooks/index.d.ts +1 -0
  50. package/dist/hooks/index.d.ts.map +1 -1
  51. package/dist/hooks/index.js +2 -0
  52. package/dist/hooks/index.js.map +1 -1
  53. package/dist/index.d.ts +13 -0
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +22 -0
  56. package/dist/index.js.map +1 -1
  57. package/dist/performance/Debouncer.d.ts +91 -0
  58. package/dist/performance/Debouncer.d.ts.map +1 -0
  59. package/dist/performance/Debouncer.js +198 -0
  60. package/dist/performance/Debouncer.js.map +1 -0
  61. package/dist/performance/MemoryDecay.d.ts +82 -0
  62. package/dist/performance/MemoryDecay.d.ts.map +1 -0
  63. package/dist/performance/MemoryDecay.js +153 -0
  64. package/dist/performance/MemoryDecay.js.map +1 -0
  65. package/dist/performance/index.d.ts +7 -0
  66. package/dist/performance/index.d.ts.map +1 -0
  67. package/dist/performance/index.js +9 -0
  68. package/dist/performance/index.js.map +1 -0
  69. package/dist/schema/expert-types.d.ts +395 -0
  70. package/dist/schema/expert-types.d.ts.map +1 -0
  71. package/dist/schema/expert-types.js +250 -0
  72. package/dist/schema/expert-types.js.map +1 -0
  73. package/dist/schema/plans.d.ts +16 -16
  74. package/dist/schema/tracking.d.ts +90 -90
  75. package/dist/services/ContextGenerator.js +7 -7
  76. package/dist/services/ProjectScaffold.js +76 -76
  77. package/dist/services/context-injector.d.ts +6 -0
  78. package/dist/services/context-injector.d.ts.map +1 -1
  79. package/dist/services/context-injector.js +43 -3
  80. package/dist/services/context-injector.js.map +1 -1
  81. package/dist/services/memory-router.d.ts +25 -1
  82. package/dist/services/memory-router.d.ts.map +1 -1
  83. package/dist/services/memory-router.js +176 -32
  84. package/dist/services/memory-router.js.map +1 -1
  85. package/dist/services/pattern-tracker.d.ts +5 -1
  86. package/dist/services/pattern-tracker.d.ts.map +1 -1
  87. package/dist/services/pattern-tracker.js +114 -36
  88. package/dist/services/pattern-tracker.js.map +1 -1
  89. package/dist/services/semantic-search.js +2 -2
  90. package/dist/types/index.d.ts +329 -4
  91. package/dist/types/index.d.ts.map +1 -1
  92. package/dist/types/index.js +186 -9
  93. package/dist/types/index.js.map +1 -1
  94. package/package.json +105 -100
  95. package/standards/README.md +50 -50
  96. package/standards/experts/expert-routing.md +215 -215
  97. package/standards/general/code-quality.md +86 -86
  98. package/standards/general/memory-usage.md +205 -205
  99. package/standards/general/sync-workflow.md +235 -235
  100. package/standards/general/workflow.md +82 -82
  101. package/standards/hooks/mandatory-tracking.md +446 -446
  102. package/standards/infrastructure/cloud-database.md +287 -287
  103. package/standards/mcp/server-design.md +243 -243
  104. package/standards/mcp/tool-patterns.md +354 -354
  105. package/standards/skills/skill-structure.md +286 -286
  106. package/standards/skills/workflow-design.md +323 -323
  107. package/standards/tools/tool-design.md +297 -297
  108. package/templates/agents/architecture-expert.md +61 -61
  109. package/templates/agents/database-expert.md +62 -62
  110. package/templates/agents/documentation-expert.md +57 -57
  111. package/templates/agents/memory-expert.md +88 -88
  112. package/templates/agents/performance-expert.md +61 -61
  113. package/templates/agents/security-expert.md +59 -59
  114. package/templates/agents/ux-expert.md +63 -63
  115. package/templates/agents/worker.md +75 -75
  116. package/templates/ai-skills/SKILL_TEMPLATE.md +55 -55
  117. package/templates/claude-settings.json +72 -72
  118. package/templates/commands/experts.md +138 -138
  119. package/templates/hooks/README.md +158 -158
  120. package/templates/hooks/project.config.json.template +77 -77
  121. package/templates/hooks/settings.local.json.template +57 -57
  122. package/templates/memory-config.json +56 -56
  123. package/templates/memory-config.schema.json +212 -212
  124. package/templates/settings.json +58 -58
  125. package/templates/skills/continue.md +205 -205
  126. package/templates/workflows/business-improvement.md +264 -264
  127. package/templates/workflows/expert-review.md +153 -153
  128. package/templates/workflows/internal-app.md +245 -245
  129. package/templates/workflows/sync-docs.md +187 -187
@@ -248,19 +248,19 @@ export class ProjectScaffold {
248
248
  generateClaudeMd(scan, options) {
249
249
  const system = options.system.toUpperCase();
250
250
  const projectName = options.projectName || scan.name;
251
- let content = `# CLAUDE.md - ${projectName}
252
-
253
- > **System**: ${system}
254
- > **Generated**: ${new Date().toISOString().split('T')[0]}
255
-
256
- ---
257
-
258
- ## Project Overview
259
-
260
- ${projectName} is part of the **MetaNautical Group** ecosystem.
261
-
262
- ### Tech Stack
263
-
251
+ let content = `# CLAUDE.md - ${projectName}
252
+
253
+ > **System**: ${system}
254
+ > **Generated**: ${new Date().toISOString().split('T')[0]}
255
+
256
+ ---
257
+
258
+ ## Project Overview
259
+
260
+ ${projectName} is part of the **MetaNautical Group** ecosystem.
261
+
262
+ ### Tech Stack
263
+
264
264
  `;
265
265
  // Framework
266
266
  if (scan.framework.name !== 'unknown') {
@@ -294,33 +294,33 @@ ${projectName} is part of the **MetaNautical Group** ecosystem.
294
294
  if (scan.api.type !== 'none') {
295
295
  content += `- **API**: ${scan.api.type.toUpperCase()}\n`;
296
296
  }
297
- content += `
298
- ---
299
-
300
- ## Core Rules (Non-Negotiable)
301
-
302
- ### Code Quality
303
- - NO \`any\`/\`unknown\` types - use proper typing
304
- - NO ESLint disable comments without justification
305
- - **Never Assume**: Verify files/constants exist before using
306
-
307
- ### Security
308
- - All inputs must be validated with Zod
309
- - Use \`protectedProcedure\` for authenticated routes
310
- - Never expose sensitive data in responses
311
-
312
- ---
313
-
314
- ## Structure
315
-
316
- \`\`\`
317
- ${scan.name}/
318
- ├── .claude/ # Claude Code configuration
319
- │ ├── agents/ # AI expert agents
320
- │ ├── commands/ # Slash commands (/experts, etc.)
321
- │ ├── hooks/ # Session hooks
322
- │ └── project.config.json
323
- ├── .ai-skills/ # Project-specific knowledge
297
+ content += `
298
+ ---
299
+
300
+ ## Core Rules (Non-Negotiable)
301
+
302
+ ### Code Quality
303
+ - NO \`any\`/\`unknown\` types - use proper typing
304
+ - NO ESLint disable comments without justification
305
+ - **Never Assume**: Verify files/constants exist before using
306
+
307
+ ### Security
308
+ - All inputs must be validated with Zod
309
+ - Use \`protectedProcedure\` for authenticated routes
310
+ - Never expose sensitive data in responses
311
+
312
+ ---
313
+
314
+ ## Structure
315
+
316
+ \`\`\`
317
+ ${scan.name}/
318
+ ├── .claude/ # Claude Code configuration
319
+ │ ├── agents/ # AI expert agents
320
+ │ ├── commands/ # Slash commands (/experts, etc.)
321
+ │ ├── hooks/ # Session hooks
322
+ │ └── project.config.json
323
+ ├── .ai-skills/ # Project-specific knowledge
324
324
  `;
325
325
  if (scan.structure.srcDir) {
326
326
  content += `├── src/\n`;
@@ -331,42 +331,42 @@ ${scan.name}/
331
331
  content += `│ ├── server/\n`;
332
332
  }
333
333
  }
334
- content += `└── CLAUDE.md # This file
335
- \`\`\`
336
-
337
- ---
338
-
339
- ## Commands
340
-
341
- ### Development
342
- \`\`\`bash
343
- npm run dev # Start dev server
344
- npm run build # Production build
345
- npm run lint # ESLint check
346
- npm run typecheck # TypeScript check
347
- \`\`\`
348
-
349
- ### Memory System
350
- \`\`\`bash
351
- cmp-memory status # Check memory system health
352
- cmp-memory validate # Validate project structure
353
- cmp-memory sync # Sync experts/hooks from npm
354
- \`\`\`
355
-
356
- ---
357
-
358
- ## Expert Review
359
-
360
- Use \`/experts\` for code review:
361
-
362
- \`\`\`bash
363
- /experts src/path/to/file.ts # Review specific file
364
- /experts src/server/api/ # Review directory
365
- \`\`\`
366
-
367
- ---
368
-
369
- *Part of MetaNautical Group ecosystem*
334
+ content += `└── CLAUDE.md # This file
335
+ \`\`\`
336
+
337
+ ---
338
+
339
+ ## Commands
340
+
341
+ ### Development
342
+ \`\`\`bash
343
+ npm run dev # Start dev server
344
+ npm run build # Production build
345
+ npm run lint # ESLint check
346
+ npm run typecheck # TypeScript check
347
+ \`\`\`
348
+
349
+ ### Memory System
350
+ \`\`\`bash
351
+ cmp-memory status # Check memory system health
352
+ cmp-memory validate # Validate project structure
353
+ cmp-memory sync # Sync experts/hooks from npm
354
+ \`\`\`
355
+
356
+ ---
357
+
358
+ ## Expert Review
359
+
360
+ Use \`/experts\` for code review:
361
+
362
+ \`\`\`bash
363
+ /experts src/path/to/file.ts # Review specific file
364
+ /experts src/server/api/ # Review directory
365
+ \`\`\`
366
+
367
+ ---
368
+
369
+ *Part of MetaNautical Group ecosystem*
370
370
  `;
371
371
  return content;
372
372
  }
@@ -96,6 +96,12 @@ declare class ContextInjectorService {
96
96
  private getPendingImprovementsCount;
97
97
  private checkHealth;
98
98
  private getSkillsForDomain;
99
+ /**
100
+ * Find similar completed tasks using semantic search
101
+ *
102
+ * Uses vector embeddings to find tasks with similar descriptions,
103
+ * helping inform approach based on past successful implementations.
104
+ */
99
105
  private getSimilarCompletedTasks;
100
106
  private generateApproachSuggestion;
101
107
  private formatTimeAgo;
@@ -1 +1 @@
1
- {"version":3,"file":"context-injector.d.ts","sourceRoot":"","sources":["../../src/services/context-injector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-injector.d.ts","sourceRoot":"","sources":["../../src/services/context-injector.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,7 @@
10
10
  */
11
11
  import { memoryRouter } from './memory-router.js';
12
12
  import { cloud } from '../db/cloud.js';
13
+ import { upstash } from '../db/upstash-client.js';
13
14
  import { loadConfig } from '../utils/config.js';
14
15
  // =============================================================================
15
16
  // Skill Registry
@@ -320,9 +321,48 @@ class ContextInjectorService {
320
321
  return DOMAIN_SKILLS.default;
321
322
  return DOMAIN_SKILLS[domain] || DOMAIN_SKILLS.default;
322
323
  }
323
- async getSimilarCompletedTasks(_description, _system) {
324
- // TODO: Implement semantic search for tasks
325
- return [];
324
+ /**
325
+ * Find similar completed tasks using semantic search
326
+ *
327
+ * Uses vector embeddings to find tasks with similar descriptions,
328
+ * helping inform approach based on past successful implementations.
329
+ */
330
+ async getSimilarCompletedTasks(description, system) {
331
+ try {
332
+ // Search for similar tasks using vector search
333
+ const results = await upstash.searchVectors(description, {
334
+ topK: 5,
335
+ filter: `system = "${system}" AND type = "task"`,
336
+ includeMetadata: true
337
+ });
338
+ // Filter to completed tasks with good similarity
339
+ const similarTasks = [];
340
+ for (const result of results) {
341
+ if (result.score < 0.6)
342
+ continue; // Minimum similarity threshold
343
+ const metadata = result.metadata;
344
+ if (!metadata)
345
+ continue;
346
+ // Check if task is completed
347
+ const status = metadata.status;
348
+ if (status !== 'completed' && status !== 'done')
349
+ continue;
350
+ similarTasks.push({
351
+ id: result.id,
352
+ title: metadata.title || 'Untitled Task',
353
+ status: status,
354
+ progress: metadata.progress || 'Completed',
355
+ lastActivity: this.formatTimeAgo(metadata.completedAt ||
356
+ metadata.updatedAt ||
357
+ new Date().toISOString())
358
+ });
359
+ }
360
+ return similarTasks.slice(0, 3); // Return top 3 similar tasks
361
+ }
362
+ catch (error) {
363
+ console.warn('[ContextInjector] Semantic task search failed:', error);
364
+ return [];
365
+ }
326
366
  }
327
367
  generateApproachSuggestion(memories) {
328
368
  if (memories.length === 0)
@@ -1 +1 @@
1
- {"version":3,"file":"context-injector.js","sourceRoot":"","sources":["../../src/services/context-injector.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context-injector.js","sourceRoot":"","sources":["../../src/services/context-injector.ts"],"names":[],"mappings":"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"}
@@ -80,8 +80,32 @@ declare class MemoryRouterService {
80
80
  /**
81
81
  * Sync claude-mem observations to DEV_Items
82
82
  * Call this periodically or on session start
83
+ *
84
+ * @param system - Target DevSystem for the memories
85
+ * @param options - Sync options
86
+ * @returns Number of observations synced
83
87
  */
84
- syncFromClaudeMem(_system: DevSystem): Promise<number>;
88
+ syncFromClaudeMem(system: DevSystem, options?: {
89
+ project?: string;
90
+ sinceEpoch?: number;
91
+ limit?: number;
92
+ }): Promise<{
93
+ synced: number;
94
+ skipped: number;
95
+ errors: number;
96
+ }>;
97
+ /**
98
+ * Get existing claude-mem synced IDs to avoid duplicates
99
+ */
100
+ private getExistingClaudeMemIds;
101
+ /**
102
+ * Map observation type to priority
103
+ */
104
+ private mapObsTypeToPriority;
105
+ /**
106
+ * Detect domain from file paths
107
+ */
108
+ private detectDomainFromFiles;
85
109
  private searchTurso;
86
110
  private searchVector;
87
111
  private searchRedis;
@@ -1 +1 @@
1
- {"version":3,"file":"memory-router.d.ts","sourceRoot":"","sources":["../../src/services/memory-router.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,KAAK,EAAiB,SAAS,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAA;AAMjF,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAA;IACV,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,YAAY,CAAA;IACnD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,EAAE,MAAM,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,SAAS,CAAA;IACjB,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,aAAa,EAAE,CAAA;IACzB,OAAO,EAAE;QACP,KAAK,EAAE,MAAM,CAAA;QACb,MAAM,EAAE,MAAM,CAAA;QACd,KAAK,EAAE,MAAM,CAAA;KACd,CAAA;IACD,IAAI,EAAE,MAAM,CAAA;CACb;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,SAAS,CAAA;IACjB,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAA;IACf,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ,GAAG,YAAY,CAAA;IAC/D,QAAQ,CAAC,EAAE,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAA;IACjD,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAA;CACxB;AAMD,cAAM,mBAAmB;IACvB,OAAO,CAAC,WAAW,CAAQ;IAE3B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAM3B;;OAEG;IACG,MAAM,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAyD3D;;OAEG;IACG,KAAK,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC;IA0CnD;;OAEG;IACG,WAAW,CACf,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,MAAM,EACd,KAAK,SAAI,GACR,OAAO,CAAC,aAAa,EAAE,CAAC;IAsB3B;;OAEG;IACG,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAiCjF;;OAEG;IACG,SAAS,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,SAAK,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;IAqBxE;;OAEG;IACG,oBAAoB,CAAC,MAAM,EAAE,SAAS,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC;IA+BxE;;;OAGG;IACG,iBAAiB,CAAC,OAAO,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;YAW9C,WAAW;YA+CX,YAAY;YA8BZ,WAAW;YAoBX,YAAY;YAWZ,aAAa;YAwBb,YAAY;IA+B1B;;OAEG;IACH,OAAO,CAAC,kBAAkB;CAsB3B;AAMD,eAAO,MAAM,YAAY,qBAA4B,CAAA;AACrD,eAAe,YAAY,CAAA"}
1
+ {"version":3,"file":"memory-router.d.ts","sourceRoot":"","sources":["../../src/services/memory-router.ts"],"names":[],"mappings":"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"}
@@ -10,6 +10,9 @@
10
10
  import { cloud } from '../db/cloud.js';
11
11
  import { upstash } from '../db/upstash-client.js';
12
12
  import { turso } from '../db/turso-client.js';
13
+ import { homedir } from 'os';
14
+ import { join } from 'path';
15
+ import { existsSync } from 'fs';
13
16
  // =============================================================================
14
17
  // Memory Router Implementation
15
18
  // =============================================================================
@@ -113,11 +116,11 @@ class MemoryRouterService {
113
116
  try {
114
117
  const db = turso.getClient();
115
118
  const result = await db.execute({
116
- sql: `SELECT * FROM items
117
- WHERE system = ? AND type = 'memory'
118
- AND json_extract(content, '$.domain') = ?
119
- AND status != 'archived'
120
- ORDER BY updated_at DESC
119
+ sql: `SELECT * FROM items
120
+ WHERE system = ? AND type = 'memory'
121
+ AND json_extract(content, '$.domain') = ?
122
+ AND status != 'archived'
123
+ ORDER BY updated_at DESC
121
124
  LIMIT ?`,
122
125
  args: [system, domain, limit]
123
126
  });
@@ -135,16 +138,16 @@ class MemoryRouterService {
135
138
  await this.init();
136
139
  try {
137
140
  const db = turso.getClient();
138
- let sql = `
139
- SELECT * FROM items
140
- WHERE system = ? AND type = 'memory'
141
- AND status = 'active'
142
- AND (
143
- json_extract(content, '$.title') LIKE '%gotcha%'
144
- OR json_extract(content, '$.title') LIKE '%bug%'
145
- OR json_extract(content, '$.title') LIKE '%issue%'
146
- OR json_extract(content, '$.title') LIKE '%warning%'
147
- )
141
+ let sql = `
142
+ SELECT * FROM items
143
+ WHERE system = ? AND type = 'memory'
144
+ AND status = 'active'
145
+ AND (
146
+ json_extract(content, '$.title') LIKE '%gotcha%'
147
+ OR json_extract(content, '$.title') LIKE '%bug%'
148
+ OR json_extract(content, '$.title') LIKE '%issue%'
149
+ OR json_extract(content, '$.title') LIKE '%warning%'
150
+ )
148
151
  `;
149
152
  const args = [system];
150
153
  if (domain) {
@@ -168,10 +171,10 @@ class MemoryRouterService {
168
171
  try {
169
172
  const db = turso.getClient();
170
173
  const result = await db.execute({
171
- sql: `SELECT * FROM items
172
- WHERE system = ? AND type = 'memory'
173
- AND status != 'archived'
174
- ORDER BY updated_at DESC
174
+ sql: `SELECT * FROM items
175
+ WHERE system = ? AND type = 'memory'
176
+ AND status != 'archived'
177
+ ORDER BY updated_at DESC
175
178
  LIMIT ?`,
176
179
  args: [system, limit]
177
180
  });
@@ -190,9 +193,9 @@ class MemoryRouterService {
190
193
  try {
191
194
  const db = turso.getClient();
192
195
  const result = await db.execute({
193
- sql: `SELECT * FROM items
194
- WHERE system = ? AND type = 'pattern'
195
- AND status = 'triggered'
196
+ sql: `SELECT * FROM items
197
+ WHERE system = ? AND type = 'pattern'
198
+ AND status = 'triggered'
196
199
  ORDER BY updated_at DESC`,
197
200
  args: [system]
198
201
  });
@@ -218,12 +221,153 @@ class MemoryRouterService {
218
221
  /**
219
222
  * Sync claude-mem observations to DEV_Items
220
223
  * Call this periodically or on session start
224
+ *
225
+ * @param system - Target DevSystem for the memories
226
+ * @param options - Sync options
227
+ * @returns Number of observations synced
221
228
  */
222
- async syncFromClaudeMem(_system) {
223
- // This would integrate with claude-mem MCP
224
- // For now, return 0 as placeholder
225
- // TODO: Implement claude-mem integration
226
- return 0;
229
+ async syncFromClaudeMem(system, options) {
230
+ const result = { synced: 0, skipped: 0, errors: 0 };
231
+ // Find claude-mem database
232
+ const claudeMemDbPath = join(homedir(), '.claude-mem', 'claude-mem.db');
233
+ if (!existsSync(claudeMemDbPath)) {
234
+ console.warn('[MemoryRouter] claude-mem database not found at:', claudeMemDbPath);
235
+ return result;
236
+ }
237
+ try {
238
+ // Dynamic import of better-sqlite3 (may not be available)
239
+ const Database = await import('better-sqlite3').then(m => m.default).catch(() => null);
240
+ if (!Database) {
241
+ console.warn('[MemoryRouter] better-sqlite3 not available, cannot sync claude-mem');
242
+ return result;
243
+ }
244
+ const db = new Database(claudeMemDbPath, { readonly: true });
245
+ // Build query
246
+ const sinceEpoch = options?.sinceEpoch || (Date.now() - 7 * 24 * 60 * 60 * 1000); // Default: last 7 days
247
+ const limit = options?.limit || 100;
248
+ let sql = `
249
+ SELECT id, sdk_session_id, project, type, title, subtitle,
250
+ narrative, facts, concepts, files_read, files_modified,
251
+ created_at, created_at_epoch
252
+ FROM observations
253
+ WHERE created_at_epoch > ?
254
+ `;
255
+ const args = [sinceEpoch];
256
+ if (options?.project) {
257
+ sql += ` AND project = ?`;
258
+ args.push(options.project);
259
+ }
260
+ sql += ` ORDER BY created_at_epoch DESC LIMIT ?`;
261
+ args.push(limit);
262
+ const observations = db.prepare(sql).all(...args);
263
+ db.close();
264
+ // Get existing synced IDs to avoid duplicates
265
+ const existingIds = await this.getExistingClaudeMemIds(system);
266
+ // Sync each observation
267
+ for (const obs of observations) {
268
+ const syncId = `claudemem_${obs.id}`;
269
+ if (existingIds.has(syncId)) {
270
+ result.skipped++;
271
+ continue;
272
+ }
273
+ try {
274
+ // Map claude-mem type to our priority
275
+ const priority = this.mapObsTypeToPriority(obs.type);
276
+ // Build body from narrative + facts
277
+ const bodyParts = [];
278
+ if (obs.narrative)
279
+ bodyParts.push(obs.narrative);
280
+ if (obs.facts)
281
+ bodyParts.push(`\n\n**Facts:**\n${obs.facts}`);
282
+ if (obs.concepts)
283
+ bodyParts.push(`\n\n**Concepts:** ${obs.concepts}`);
284
+ const body = bodyParts.join('') || obs.subtitle || 'No details';
285
+ // Extract domain from files
286
+ const domain = this.detectDomainFromFiles(obs.files_modified || obs.files_read);
287
+ // Build related files array
288
+ const relatedFiles = [];
289
+ if (obs.files_modified) {
290
+ try {
291
+ const files = JSON.parse(obs.files_modified);
292
+ if (Array.isArray(files))
293
+ relatedFiles.push(...files);
294
+ }
295
+ catch {
296
+ relatedFiles.push(...obs.files_modified.split(',').map(f => f.trim()));
297
+ }
298
+ }
299
+ await this.write({
300
+ system,
301
+ title: obs.title || `[${obs.type}] ${obs.subtitle || 'Observation'}`,
302
+ body,
303
+ domain,
304
+ tags: ['claude-mem', obs.type, `session:${obs.sdk_session_id}`],
305
+ source: 'claude',
306
+ priority,
307
+ sessionId: obs.sdk_session_id,
308
+ relatedFiles
309
+ });
310
+ result.synced++;
311
+ }
312
+ catch (error) {
313
+ console.error(`[MemoryRouter] Failed to sync observation ${obs.id}:`, error);
314
+ result.errors++;
315
+ }
316
+ }
317
+ console.log(`[MemoryRouter] Claude-mem sync complete: ${result.synced} synced, ${result.skipped} skipped, ${result.errors} errors`);
318
+ return result;
319
+ }
320
+ catch (error) {
321
+ console.error('[MemoryRouter] Claude-mem sync failed:', error);
322
+ return result;
323
+ }
324
+ }
325
+ /**
326
+ * Get existing claude-mem synced IDs to avoid duplicates
327
+ */
328
+ async getExistingClaudeMemIds(system) {
329
+ try {
330
+ const db = turso.getClient();
331
+ const result = await db.execute({
332
+ sql: `SELECT id FROM items
333
+ WHERE system = ? AND type = 'memory'
334
+ AND id LIKE 'claudemem_%'`,
335
+ args: [system]
336
+ });
337
+ return new Set(result.rows.map(r => r.id));
338
+ }
339
+ catch {
340
+ return new Set();
341
+ }
342
+ }
343
+ /**
344
+ * Map observation type to priority
345
+ */
346
+ mapObsTypeToPriority(type) {
347
+ switch (type) {
348
+ case 'decision': return 'high';
349
+ case 'bugfix': return 'high';
350
+ case 'feature': return 'medium';
351
+ case 'refactor': return 'low';
352
+ case 'discovery': return 'medium';
353
+ case 'change': return 'low';
354
+ default: return 'medium';
355
+ }
356
+ }
357
+ /**
358
+ * Detect domain from file paths
359
+ */
360
+ detectDomainFromFiles(filesJson) {
361
+ if (!filesJson)
362
+ return undefined;
363
+ const domains = ['finances', 'reserves', 'crew', 'boats', 'marketing', 'dev', 'company'];
364
+ const filesLower = filesJson.toLowerCase();
365
+ for (const domain of domains) {
366
+ if (filesLower.includes(domain) || filesLower.includes(`/${domain}/`)) {
367
+ return domain;
368
+ }
369
+ }
370
+ return undefined;
227
371
  }
228
372
  // =============================================================================
229
373
  // Private Backend Methods
@@ -239,11 +383,11 @@ class MemoryRouterService {
239
383
  for (const term of searchTerms) {
240
384
  args.push(`%${term}%`, `%${term}%`);
241
385
  }
242
- let sql = `
243
- SELECT * FROM items
244
- WHERE system = ? AND type = 'memory'
245
- AND status != 'archived'
246
- AND (${likeConditions})
386
+ let sql = `
387
+ SELECT * FROM items
388
+ WHERE system = ? AND type = 'memory'
389
+ AND status != 'archived'
390
+ AND (${likeConditions})
247
391
  `;
248
392
  if (domain) {
249
393
  sql += ` AND json_extract(content, '$.domain') = ?`;