cmp-memory-system 1.0.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 (161) hide show
  1. package/README.md +541 -0
  2. package/dist/analytics/index.d.ts +5 -0
  3. package/dist/analytics/index.d.ts.map +1 -0
  4. package/dist/analytics/index.js +5 -0
  5. package/dist/analytics/index.js.map +1 -0
  6. package/dist/analytics/tracker.d.ts +107 -0
  7. package/dist/analytics/tracker.d.ts.map +1 -0
  8. package/dist/analytics/tracker.js +333 -0
  9. package/dist/analytics/tracker.js.map +1 -0
  10. package/dist/auto-improve/eslint-generator.d.ts +36 -0
  11. package/dist/auto-improve/eslint-generator.d.ts.map +1 -0
  12. package/dist/auto-improve/eslint-generator.js +280 -0
  13. package/dist/auto-improve/eslint-generator.js.map +1 -0
  14. package/dist/auto-improve/index.d.ts +6 -0
  15. package/dist/auto-improve/index.d.ts.map +1 -0
  16. package/dist/auto-improve/index.js +6 -0
  17. package/dist/auto-improve/index.js.map +1 -0
  18. package/dist/auto-improve/pattern-detector.d.ts +92 -0
  19. package/dist/auto-improve/pattern-detector.d.ts.map +1 -0
  20. package/dist/auto-improve/pattern-detector.js +231 -0
  21. package/dist/auto-improve/pattern-detector.js.map +1 -0
  22. package/dist/cli/index.d.ts +16 -0
  23. package/dist/cli/index.d.ts.map +1 -0
  24. package/dist/cli/index.js +636 -0
  25. package/dist/cli/index.js.map +1 -0
  26. package/dist/dashboard/index.d.ts +6 -0
  27. package/dist/dashboard/index.d.ts.map +1 -0
  28. package/dist/dashboard/index.js +6 -0
  29. package/dist/dashboard/index.js.map +1 -0
  30. package/dist/dashboard/server.d.ts +15 -0
  31. package/dist/dashboard/server.d.ts.map +1 -0
  32. package/dist/dashboard/server.js +373 -0
  33. package/dist/dashboard/server.js.map +1 -0
  34. package/dist/dashboard/ui.d.ts +9 -0
  35. package/dist/dashboard/ui.d.ts.map +1 -0
  36. package/dist/dashboard/ui.js +530 -0
  37. package/dist/dashboard/ui.js.map +1 -0
  38. package/dist/db/client.d.ts +66 -0
  39. package/dist/db/client.d.ts.map +1 -0
  40. package/dist/db/client.js +159 -0
  41. package/dist/db/client.js.map +1 -0
  42. package/dist/db/drizzle-client.d.ts +302 -0
  43. package/dist/db/drizzle-client.d.ts.map +1 -0
  44. package/dist/db/drizzle-client.js +404 -0
  45. package/dist/db/drizzle-client.js.map +1 -0
  46. package/dist/db/index.d.ts +5 -0
  47. package/dist/db/index.d.ts.map +1 -0
  48. package/dist/db/index.js +5 -0
  49. package/dist/db/index.js.map +1 -0
  50. package/dist/feedback/collector.d.ts +74 -0
  51. package/dist/feedback/collector.d.ts.map +1 -0
  52. package/dist/feedback/collector.js +231 -0
  53. package/dist/feedback/collector.js.map +1 -0
  54. package/dist/feedback/index.d.ts +5 -0
  55. package/dist/feedback/index.d.ts.map +1 -0
  56. package/dist/feedback/index.js +5 -0
  57. package/dist/feedback/index.js.map +1 -0
  58. package/dist/hooks/index.d.ts +8 -0
  59. package/dist/hooks/index.d.ts.map +1 -0
  60. package/dist/hooks/index.js +8 -0
  61. package/dist/hooks/index.js.map +1 -0
  62. package/dist/hooks/memory-checkpoint.d.ts +43 -0
  63. package/dist/hooks/memory-checkpoint.d.ts.map +1 -0
  64. package/dist/hooks/memory-checkpoint.js +257 -0
  65. package/dist/hooks/memory-checkpoint.js.map +1 -0
  66. package/dist/hooks/post-tool-use.d.ts +61 -0
  67. package/dist/hooks/post-tool-use.d.ts.map +1 -0
  68. package/dist/hooks/post-tool-use.js +262 -0
  69. package/dist/hooks/post-tool-use.js.map +1 -0
  70. package/dist/hooks/pre-tool-use.d.ts +34 -0
  71. package/dist/hooks/pre-tool-use.d.ts.map +1 -0
  72. package/dist/hooks/pre-tool-use.js +358 -0
  73. package/dist/hooks/pre-tool-use.js.map +1 -0
  74. package/dist/hooks/session-start.d.ts +38 -0
  75. package/dist/hooks/session-start.d.ts.map +1 -0
  76. package/dist/hooks/session-start.js +274 -0
  77. package/dist/hooks/session-start.js.map +1 -0
  78. package/dist/index.d.ts +29 -0
  79. package/dist/index.d.ts.map +1 -0
  80. package/dist/index.js +39 -0
  81. package/dist/index.js.map +1 -0
  82. package/dist/mcp/index.d.ts +5 -0
  83. package/dist/mcp/index.d.ts.map +1 -0
  84. package/dist/mcp/index.js +5 -0
  85. package/dist/mcp/index.js.map +1 -0
  86. package/dist/mcp/server.d.ts +42 -0
  87. package/dist/mcp/server.d.ts.map +1 -0
  88. package/dist/mcp/server.js +599 -0
  89. package/dist/mcp/server.js.map +1 -0
  90. package/dist/registry/embeddings.d.ts +38 -0
  91. package/dist/registry/embeddings.d.ts.map +1 -0
  92. package/dist/registry/embeddings.js +110 -0
  93. package/dist/registry/embeddings.js.map +1 -0
  94. package/dist/registry/generator.d.ts +41 -0
  95. package/dist/registry/generator.d.ts.map +1 -0
  96. package/dist/registry/generator.js +323 -0
  97. package/dist/registry/generator.js.map +1 -0
  98. package/dist/registry/index.d.ts +6 -0
  99. package/dist/registry/index.d.ts.map +1 -0
  100. package/dist/registry/index.js +6 -0
  101. package/dist/registry/index.js.map +1 -0
  102. package/dist/services/IdeaCollector.d.ts +103 -0
  103. package/dist/services/IdeaCollector.d.ts.map +1 -0
  104. package/dist/services/IdeaCollector.js +371 -0
  105. package/dist/services/IdeaCollector.js.map +1 -0
  106. package/dist/services/TaskTracker.d.ts +89 -0
  107. package/dist/services/TaskTracker.d.ts.map +1 -0
  108. package/dist/services/TaskTracker.js +324 -0
  109. package/dist/services/TaskTracker.js.map +1 -0
  110. package/dist/services/WorkPlanManager.d.ts +107 -0
  111. package/dist/services/WorkPlanManager.d.ts.map +1 -0
  112. package/dist/services/WorkPlanManager.js +440 -0
  113. package/dist/services/WorkPlanManager.js.map +1 -0
  114. package/dist/services/auto-inject.d.ts +77 -0
  115. package/dist/services/auto-inject.d.ts.map +1 -0
  116. package/dist/services/auto-inject.js +289 -0
  117. package/dist/services/auto-inject.js.map +1 -0
  118. package/dist/services/auto-tag.d.ts +61 -0
  119. package/dist/services/auto-tag.d.ts.map +1 -0
  120. package/dist/services/auto-tag.js +203 -0
  121. package/dist/services/auto-tag.js.map +1 -0
  122. package/dist/services/cross-project-sync.d.ts +76 -0
  123. package/dist/services/cross-project-sync.d.ts.map +1 -0
  124. package/dist/services/cross-project-sync.js +235 -0
  125. package/dist/services/cross-project-sync.js.map +1 -0
  126. package/dist/services/index.d.ts +15 -0
  127. package/dist/services/index.d.ts.map +1 -0
  128. package/dist/services/index.js +18 -0
  129. package/dist/services/index.js.map +1 -0
  130. package/dist/services/memory-consolidation.d.ts +77 -0
  131. package/dist/services/memory-consolidation.d.ts.map +1 -0
  132. package/dist/services/memory-consolidation.js +298 -0
  133. package/dist/services/memory-consolidation.js.map +1 -0
  134. package/dist/services/semantic-search.d.ts +93 -0
  135. package/dist/services/semantic-search.d.ts.map +1 -0
  136. package/dist/services/semantic-search.js +278 -0
  137. package/dist/services/semantic-search.js.map +1 -0
  138. package/dist/services/weekly-digest.d.ts +105 -0
  139. package/dist/services/weekly-digest.d.ts.map +1 -0
  140. package/dist/services/weekly-digest.js +292 -0
  141. package/dist/services/weekly-digest.js.map +1 -0
  142. package/dist/types/index.d.ts +274 -0
  143. package/dist/types/index.d.ts.map +1 -0
  144. package/dist/types/index.js +84 -0
  145. package/dist/types/index.js.map +1 -0
  146. package/dist/utils/config.d.ts +21 -0
  147. package/dist/utils/config.d.ts.map +1 -0
  148. package/dist/utils/config.js +89 -0
  149. package/dist/utils/config.js.map +1 -0
  150. package/dist/utils/index.d.ts +6 -0
  151. package/dist/utils/index.d.ts.map +1 -0
  152. package/dist/utils/index.js +6 -0
  153. package/dist/utils/index.js.map +1 -0
  154. package/dist/utils/paths.d.ts +28 -0
  155. package/dist/utils/paths.d.ts.map +1 -0
  156. package/dist/utils/paths.js +80 -0
  157. package/dist/utils/paths.js.map +1 -0
  158. package/package.json +89 -0
  159. package/templates/memory-config.json +82 -0
  160. package/templates/memory-config.schema.json +212 -0
  161. package/templates/settings.json +58 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,gFAAgF;AAChF,qBAAqB;AACrB,gFAAgF;AAEhF,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,UAAU,EAAE,YAAY;IACxB,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,WAAW;IACtB,MAAM,EAAE,QAAQ;IAChB,cAAc,EAAE,gBAAgB;IAChC,aAAa,EAAE,eAAe;CACtB,CAAA;AAIV,gFAAgF;AAChF,aAAa;AACb,gFAAgF;AAEhF,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,WAAW;IACtB,aAAa,EAAE,eAAe;IAC9B,cAAc,EAAE,gBAAgB;IAChC,OAAO,EAAE,SAAS;IAClB,gBAAgB,EAAE,kBAAkB;CAC5B,CAAA;AAIV,gFAAgF;AAChF,gBAAgB;AAChB,gFAAgF;AAEhF,MAAM,CAAC,MAAM,UAAU,GAAG;IACxB,IAAI,EAAE,MAAM;IACZ,WAAW,EAAE,aAAa;IAC1B,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,MAAM,EAAE,QAAQ;IAChB,QAAQ,EAAE,UAAU;IACpB,QAAQ,EAAE,UAAU;IACpB,SAAS,EAAE,WAAW;CACd,CAAA;AAIV,gFAAgF;AAChF,kBAAkB;AAClB,gFAAgF;AAEhF,MAAM,CAAC,MAAM,YAAY,GAAG;IAC1B,QAAQ,EAAE,UAAU;IACpB,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,GAAG,EAAE,KAAK;CACF,CAAA;AAiRV,gFAAgF;AAChF,eAAe;AACf,gFAAgF;AAEhF;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,OAAuC;IACrE,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IACzB,OAAO,OAAmC,CAAA;AAC5C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAuC;IACtE,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IACzB,OAAO,OAAoC,CAAA;AAC7C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAa;IAEb,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IAC9B,OAAO,IAAI,CAAC,OAAuC,CAAA;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAa;IAC7C,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAA;IAC9B,OAAO,IAAI,CAAC,OAAoC,CAAA;AAClD,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Configuration utilities
3
+ */
4
+ import type { MemoryConfig, DevSystem } from '../types/index.js';
5
+ /**
6
+ * Default configuration
7
+ */
8
+ export declare function getDefaultConfig(system: DevSystem): MemoryConfig;
9
+ /**
10
+ * Load configuration from project
11
+ */
12
+ export declare function loadConfig(projectRoot: string): Promise<MemoryConfig>;
13
+ /**
14
+ * Save configuration to project
15
+ */
16
+ export declare function saveConfig(projectRoot: string, config: MemoryConfig): Promise<void>;
17
+ /**
18
+ * Validate configuration
19
+ */
20
+ export declare function validateConfig(config: unknown): config is MemoryConfig;
21
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAc,MAAM,mBAAmB,CAAA;AAI5E;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,YAAY,CAsChE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC,CAe3E;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,IAAI,CAAC,CAWf;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,YAAY,CAWtE"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Configuration utilities
3
+ */
4
+ import fs from 'fs/promises';
5
+ import path from 'path';
6
+ const CONFIG_FILE = '.claude/memory-config.json';
7
+ /**
8
+ * Default configuration
9
+ */
10
+ export function getDefaultConfig(system) {
11
+ return {
12
+ system,
13
+ projectName: 'Unknown Project',
14
+ domains: [],
15
+ guards: {
16
+ enabled: true,
17
+ rules: []
18
+ },
19
+ embedding: {
20
+ enabled: true,
21
+ threshold: 0.60,
22
+ maxSections: 3,
23
+ prioritizeCritical: true,
24
+ providers: ['openai', 'gemini']
25
+ },
26
+ checkpoint: {
27
+ enabled: true,
28
+ minLinesChanged: 20,
29
+ criticalPaths: ['src/server/schema/**', 'src/server/api/**'],
30
+ excludePaths: ['**/*.test.ts', '**/*.d.ts'],
31
+ autoTagging: true,
32
+ patternDetection: true
33
+ },
34
+ autoImprovement: {
35
+ enabled: true,
36
+ violationThreshold: 3,
37
+ generateEslintRules: true,
38
+ createMemoryEntries: true,
39
+ updateClaudeMd: false
40
+ },
41
+ sessionContext: {
42
+ loadMemoriesOnStart: true,
43
+ maxMemoriesLoaded: 5,
44
+ cacheTimeout: 3600,
45
+ showAvailableCommands: true
46
+ }
47
+ };
48
+ }
49
+ /**
50
+ * Load configuration from project
51
+ */
52
+ export async function loadConfig(projectRoot) {
53
+ const configPath = path.join(projectRoot, CONFIG_FILE);
54
+ try {
55
+ const content = await fs.readFile(configPath, 'utf-8');
56
+ const parsed = JSON.parse(content);
57
+ return parsed;
58
+ }
59
+ catch (error) {
60
+ if (error.code === 'ENOENT') {
61
+ // Return default config if not found
62
+ console.warn(`Config not found at ${configPath}, using defaults`);
63
+ return getDefaultConfig('SWARMSCALE');
64
+ }
65
+ throw error;
66
+ }
67
+ }
68
+ /**
69
+ * Save configuration to project
70
+ */
71
+ export async function saveConfig(projectRoot, config) {
72
+ const configPath = path.join(projectRoot, CONFIG_FILE);
73
+ // Ensure directory exists
74
+ await fs.mkdir(path.dirname(configPath), { recursive: true });
75
+ await fs.writeFile(configPath, JSON.stringify(config, null, 2), 'utf-8');
76
+ }
77
+ /**
78
+ * Validate configuration
79
+ */
80
+ export function validateConfig(config) {
81
+ if (!config || typeof config !== 'object')
82
+ return false;
83
+ const c = config;
84
+ return (typeof c.system === 'string' &&
85
+ Array.isArray(c.domains) &&
86
+ typeof c.guards === 'object' &&
87
+ typeof c.embedding === 'object');
88
+ }
89
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/utils/config.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,aAAa,CAAA;AAC5B,OAAO,IAAI,MAAM,MAAM,CAAA;AAGvB,MAAM,WAAW,GAAG,4BAA4B,CAAA;AAEhD;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAiB;IAChD,OAAO;QACL,MAAM;QACN,WAAW,EAAE,iBAAiB;QAC9B,OAAO,EAAE,EAAE;QACX,MAAM,EAAE;YACN,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,EAAE;SACV;QACD,SAAS,EAAE;YACT,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,IAAI;YACf,WAAW,EAAE,CAAC;YACd,kBAAkB,EAAE,IAAI;YACxB,SAAS,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;SAChC;QACD,UAAU,EAAE;YACV,OAAO,EAAE,IAAI;YACb,eAAe,EAAE,EAAE;YACnB,aAAa,EAAE,CAAC,sBAAsB,EAAE,mBAAmB,CAAC;YAC5D,YAAY,EAAE,CAAC,cAAc,EAAE,WAAW,CAAC;YAC3C,WAAW,EAAE,IAAI;YACjB,gBAAgB,EAAE,IAAI;SACvB;QACD,eAAe,EAAE;YACf,OAAO,EAAE,IAAI;YACb,kBAAkB,EAAE,CAAC;YACrB,mBAAmB,EAAE,IAAI;YACzB,mBAAmB,EAAE,IAAI;YACzB,cAAc,EAAE,KAAK;SACtB;QACD,cAAc,EAAE;YACd,mBAAmB,EAAE,IAAI;YACzB,iBAAiB,EAAE,CAAC;YACpB,YAAY,EAAE,IAAI;YAClB,qBAAqB,EAAE,IAAI;SAC5B;KACF,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,WAAmB;IAClD,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;IAEtD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC,CAAA;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAiB,CAAA;QAClD,OAAO,MAAM,CAAA;IACf,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACvD,qCAAqC;YACrC,OAAO,CAAC,IAAI,CAAC,uBAAuB,UAAU,kBAAkB,CAAC,CAAA;YACjE,OAAO,gBAAgB,CAAC,YAAyB,CAAC,CAAA;QACpD,CAAC;QACD,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,WAAmB,EACnB,MAAoB;IAEpB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAA;IAEtD,0BAA0B;IAC1B,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAE7D,MAAM,EAAE,CAAC,SAAS,CAChB,UAAU,EACV,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,EAC/B,OAAO,CACR,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,MAAe;IAC5C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAEvD,MAAM,CAAC,GAAG,MAAiC,CAAA;IAE3C,OAAO,CACL,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;QAC5B,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;QACxB,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;QAC5B,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ,CAChC,CAAA;AACH,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Utils module exports
3
+ */
4
+ export { loadConfig, saveConfig, validateConfig, getDefaultConfig } from './config.js';
5
+ export { getProjectRoot, resolveProjectPath, getClaudeDir, getHooksDir, getKnowledgeDir, matchesPattern } from './paths.js';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,UAAU,EACV,UAAU,EACV,cAAc,EACd,gBAAgB,EACjB,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,eAAe,EACf,cAAc,EACf,MAAM,YAAY,CAAA"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Utils module exports
3
+ */
4
+ export { loadConfig, saveConfig, validateConfig, getDefaultConfig } from './config.js';
5
+ export { getProjectRoot, resolveProjectPath, getClaudeDir, getHooksDir, getKnowledgeDir, matchesPattern } from './paths.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACL,UAAU,EACV,UAAU,EACV,cAAc,EACd,gBAAgB,EACjB,MAAM,aAAa,CAAA;AAEpB,OAAO,EACL,cAAc,EACd,kBAAkB,EAClB,YAAY,EACZ,WAAW,EACX,eAAe,EACf,cAAc,EACf,MAAM,YAAY,CAAA"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Path utilities
3
+ */
4
+ /**
5
+ * Find project root by looking for package.json or .git
6
+ */
7
+ export declare function getProjectRoot(startDir?: string): Promise<string>;
8
+ /**
9
+ * Resolve a path relative to project root
10
+ */
11
+ export declare function resolveProjectPath(projectRoot: string, relativePath: string): string;
12
+ /**
13
+ * Get .claude directory path
14
+ */
15
+ export declare function getClaudeDir(projectRoot: string): string;
16
+ /**
17
+ * Get hooks directory path
18
+ */
19
+ export declare function getHooksDir(projectRoot: string): string;
20
+ /**
21
+ * Get knowledge directory path
22
+ */
23
+ export declare function getKnowledgeDir(projectRoot: string): string;
24
+ /**
25
+ * Check if path matches any glob pattern
26
+ */
27
+ export declare function matchesPattern(filePath: string, patterns: string[]): boolean;
28
+ //# sourceMappingURL=paths.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH;;GAEG;AACH,wBAAsB,cAAc,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAuBvE;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAEpF;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAEvD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAS5E"}
@@ -0,0 +1,80 @@
1
+ /**
2
+ * Path utilities
3
+ */
4
+ import fs from 'fs/promises';
5
+ import path from 'path';
6
+ /**
7
+ * Find project root by looking for package.json or .git
8
+ */
9
+ export async function getProjectRoot(startDir) {
10
+ let currentDir = startDir || process.cwd();
11
+ while (currentDir !== path.parse(currentDir).root) {
12
+ // Check for package.json
13
+ try {
14
+ await fs.access(path.join(currentDir, 'package.json'));
15
+ return currentDir;
16
+ }
17
+ catch {
18
+ // Check for .git
19
+ try {
20
+ await fs.access(path.join(currentDir, '.git'));
21
+ return currentDir;
22
+ }
23
+ catch {
24
+ // Continue searching
25
+ }
26
+ }
27
+ currentDir = path.dirname(currentDir);
28
+ }
29
+ // Fallback to current directory
30
+ return process.cwd();
31
+ }
32
+ /**
33
+ * Resolve a path relative to project root
34
+ */
35
+ export function resolveProjectPath(projectRoot, relativePath) {
36
+ return path.resolve(projectRoot, relativePath);
37
+ }
38
+ /**
39
+ * Get .claude directory path
40
+ */
41
+ export function getClaudeDir(projectRoot) {
42
+ return path.join(projectRoot, '.claude');
43
+ }
44
+ /**
45
+ * Get hooks directory path
46
+ */
47
+ export function getHooksDir(projectRoot) {
48
+ return path.join(projectRoot, '.claude', 'hooks');
49
+ }
50
+ /**
51
+ * Get knowledge directory path
52
+ */
53
+ export function getKnowledgeDir(projectRoot) {
54
+ return path.join(projectRoot, '.claude', 'knowledge');
55
+ }
56
+ /**
57
+ * Check if path matches any glob pattern
58
+ */
59
+ export function matchesPattern(filePath, patterns) {
60
+ // Simple glob matching (supports ** and *)
61
+ for (const pattern of patterns) {
62
+ const regex = globToRegex(pattern);
63
+ if (regex.test(filePath)) {
64
+ return true;
65
+ }
66
+ }
67
+ return false;
68
+ }
69
+ /**
70
+ * Convert glob pattern to regex
71
+ */
72
+ function globToRegex(glob) {
73
+ const escaped = glob
74
+ .replace(/[.+^${}()|[\]\\]/g, '\\$&')
75
+ .replace(/\*\*/g, '{{GLOBSTAR}}')
76
+ .replace(/\*/g, '[^/]*')
77
+ .replace(/{{GLOBSTAR}}/g, '.*');
78
+ return new RegExp(`^${escaped}$`);
79
+ }
80
+ //# sourceMappingURL=paths.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"paths.js","sourceRoot":"","sources":["../../src/utils/paths.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,MAAM,aAAa,CAAA;AAC5B,OAAO,IAAI,MAAM,MAAM,CAAA;AAEvB;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,QAAiB;IACpD,IAAI,UAAU,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,EAAE,CAAA;IAE1C,OAAO,UAAU,KAAK,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,EAAE,CAAC;QAClD,yBAAyB;QACzB,IAAI,CAAC;YACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC,CAAA;YACtD,OAAO,UAAU,CAAA;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,iBAAiB;YACjB,IAAI,CAAC;gBACH,MAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA;gBAC9C,OAAO,UAAU,CAAA;YACnB,CAAC;YAAC,MAAM,CAAC;gBACP,qBAAqB;YACvB,CAAC;QACH,CAAC;QAED,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;IACvC,CAAC;IAED,gCAAgC;IAChC,OAAO,OAAO,CAAC,GAAG,EAAE,CAAA;AACtB,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,WAAmB,EAAE,YAAoB;IAC1E,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,YAAY,CAAC,CAAA;AAChD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,YAAY,CAAC,WAAmB;IAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,CAAC,CAAA;AAC1C,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,WAAW,CAAC,WAAmB;IAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,CAAC,CAAA;AACnD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,eAAe,CAAC,WAAmB;IACjD,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,CAAA;AACvD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,QAAgB,EAAE,QAAkB;IACjE,2CAA2C;IAC3C,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;QAClC,IAAI,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,OAAO,IAAI,CAAA;QACb,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;GAEG;AACH,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,OAAO,GAAG,IAAI;SACjB,OAAO,CAAC,mBAAmB,EAAE,MAAM,CAAC;SACpC,OAAO,CAAC,OAAO,EAAE,cAAc,CAAC;SAChC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC;SACvB,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,CAAA;IAEjC,OAAO,IAAI,MAAM,CAAC,IAAI,OAAO,GAAG,CAAC,CAAA;AACnC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,89 @@
1
+ {
2
+ "name": "cmp-memory-system",
3
+ "version": "1.0.0",
4
+ "type": "module",
5
+ "description": "Unified memory & workflow system for Claude Code projects",
6
+ "main": "dist/index.js",
7
+ "types": "dist/index.d.ts",
8
+ "bin": {
9
+ "cmp-memory": "dist/cli/index.js"
10
+ },
11
+ "scripts": {
12
+ "build": "tsc",
13
+ "dev": "tsc --watch",
14
+ "test": "vitest",
15
+ "lint": "eslint src/**/*.ts",
16
+ "prepublishOnly": "npm run build"
17
+ },
18
+ "keywords": [
19
+ "claude",
20
+ "ai",
21
+ "memory",
22
+ "workflow",
23
+ "hooks",
24
+ "task-tracking"
25
+ ],
26
+ "author": "Carlos Martin Pavon",
27
+ "license": "MIT",
28
+ "repository": {
29
+ "type": "git",
30
+ "url": "git+https://github.com/carlosmartinpavon/carlosmartinpavon.git",
31
+ "directory": "packages/cmp-memory-system"
32
+ },
33
+ "homepage": "https://github.com/carlosmartinpavon/carlosmartinpavon/tree/main/packages/cmp-memory-system",
34
+ "bugs": {
35
+ "url": "https://github.com/carlosmartinpavon/carlosmartinpavon/issues"
36
+ },
37
+ "publishConfig": {
38
+ "access": "public"
39
+ },
40
+ "engines": {
41
+ "node": ">=18.0.0"
42
+ },
43
+ "dependencies": {
44
+ "@modelcontextprotocol/sdk": "^0.5.0",
45
+ "chalk": "^5.3.0",
46
+ "commander": "^12.0.0",
47
+ "cors": "^2.8.5",
48
+ "dotenv": "^17.2.3",
49
+ "drizzle-orm": ">=0.30.0",
50
+ "express": "^4.18.2",
51
+ "glob": "^10.3.10",
52
+ "gray-matter": "^4.0.3",
53
+ "mysql2": ">=3.0.0",
54
+ "open": "^10.0.0",
55
+ "ulid": "^2.3.0"
56
+ },
57
+ "peerDependencies": {
58
+ "drizzle-orm": ">=0.30.0",
59
+ "mysql2": ">=3.0.0"
60
+ },
61
+ "devDependencies": {
62
+ "@types/cors": "^2.8.17",
63
+ "@types/express": "^4.17.21",
64
+ "@types/node": "^20.11.0",
65
+ "@typescript-eslint/eslint-plugin": "^6.19.0",
66
+ "@typescript-eslint/parser": "^6.19.0",
67
+ "eslint": "^8.56.0",
68
+ "typescript": "^5.3.3",
69
+ "vitest": "^1.2.0"
70
+ },
71
+ "files": [
72
+ "dist",
73
+ "templates",
74
+ "README.md"
75
+ ],
76
+ "exports": {
77
+ ".": {
78
+ "import": "./dist/index.js",
79
+ "types": "./dist/index.d.ts"
80
+ },
81
+ "./hooks": {
82
+ "import": "./dist/hooks/index.js",
83
+ "types": "./dist/hooks/index.d.ts"
84
+ },
85
+ "./cli": {
86
+ "import": "./dist/cli/index.js"
87
+ }
88
+ }
89
+ }
@@ -0,0 +1,82 @@
1
+ {
2
+ "$schema": "./memory-config.schema.json",
3
+ "system": "SWARMSCALE",
4
+ "projectName": "SwarmScale",
5
+ "description": "AI-powered marketing agency platform",
6
+ "domains": [
7
+ "video-studio",
8
+ "avatars",
9
+ "content-ideas",
10
+ "campaigns",
11
+ "knowledge-base",
12
+ "social-media",
13
+ "ai-services",
14
+ "infrastructure"
15
+ ],
16
+ "guards": {
17
+ "enabled": true,
18
+ "rules": [
19
+ {
20
+ "id": "schema-protection",
21
+ "type": "block",
22
+ "filePattern": "src/server/schema/auth.ts",
23
+ "contentTrigger": ".*",
24
+ "message": "PANEL_* tables are READ-ONLY. Do not modify auth.ts.",
25
+ "allowOverride": false
26
+ },
27
+ {
28
+ "id": "dev-items-filter",
29
+ "type": "warn",
30
+ "filePattern": "**/*.ts",
31
+ "contentTrigger": "from\\(devItems\\)(?!.*\\.where.*system)",
32
+ "message": "Always filter DEV_Items by system='SWARMSCALE'",
33
+ "allowOverride": true
34
+ },
35
+ {
36
+ "id": "marketing-tables-only",
37
+ "type": "warn",
38
+ "filePattern": "src/server/schema/*.ts",
39
+ "contentTrigger": "mysqlTable\\(['\"](?!MARKETING_)",
40
+ "excludeFiles": ["marketing.ts", "dev.ts", "index.ts"],
41
+ "message": "SwarmScale only owns MARKETING_* tables",
42
+ "allowOverride": true
43
+ }
44
+ ]
45
+ },
46
+ "embedding": {
47
+ "enabled": true,
48
+ "threshold": 0.60,
49
+ "maxSections": 3,
50
+ "prioritizeCritical": true,
51
+ "providers": ["openai", "gemini"]
52
+ },
53
+ "checkpoint": {
54
+ "enabled": true,
55
+ "minLinesChanged": 20,
56
+ "criticalPaths": [
57
+ "src/server/schema/**",
58
+ "src/server/api/routers/**"
59
+ ],
60
+ "excludePaths": [
61
+ "**/*.test.ts",
62
+ "**/*.spec.ts",
63
+ "**/*.d.ts",
64
+ "**/node_modules/**"
65
+ ],
66
+ "autoTagging": true,
67
+ "patternDetection": true
68
+ },
69
+ "autoImprovement": {
70
+ "enabled": true,
71
+ "violationThreshold": 3,
72
+ "generateEslintRules": true,
73
+ "createMemoryEntries": true,
74
+ "updateClaudeMd": false
75
+ },
76
+ "sessionContext": {
77
+ "loadMemoriesOnStart": true,
78
+ "maxMemoriesLoaded": 5,
79
+ "cacheTimeout": 3600,
80
+ "showAvailableCommands": true
81
+ }
82
+ }
@@ -0,0 +1,212 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "title": "MetaNautical Memory Configuration",
4
+ "description": "Configuration schema for the MetaNautical Memory Plugin",
5
+ "type": "object",
6
+ "required": ["system", "domains"],
7
+ "properties": {
8
+ "system": {
9
+ "type": "string",
10
+ "description": "System identifier for data isolation (e.g., SWARMSCALE, PANEL)",
11
+ "enum": ["SWARMSCALE", "PANEL", "ECOSYSTEM", "ELLIOT", "CONNECTA_HOTEL", "CONNECTA_CREW", "EASYCHARTER", "EASYYACHTS", "GMB", "CLIENT"]
12
+ },
13
+ "projectName": {
14
+ "type": "string",
15
+ "description": "Human-readable project name"
16
+ },
17
+ "description": {
18
+ "type": "string",
19
+ "description": "Brief project description"
20
+ },
21
+ "domains": {
22
+ "type": "array",
23
+ "description": "List of domain/module identifiers for this project",
24
+ "items": {
25
+ "type": "string"
26
+ }
27
+ },
28
+ "guards": {
29
+ "type": "object",
30
+ "description": "Pre-tool guard configuration",
31
+ "properties": {
32
+ "enabled": {
33
+ "type": "boolean",
34
+ "default": true
35
+ },
36
+ "rules": {
37
+ "type": "array",
38
+ "items": {
39
+ "type": "object",
40
+ "required": ["id", "type", "filePattern", "message"],
41
+ "properties": {
42
+ "id": {
43
+ "type": "string",
44
+ "description": "Unique rule identifier"
45
+ },
46
+ "type": {
47
+ "type": "string",
48
+ "enum": ["block", "warn", "suggest"],
49
+ "description": "Action type: block stops operation, warn allows with message, suggest shows optional advice"
50
+ },
51
+ "filePattern": {
52
+ "type": "string",
53
+ "description": "Glob pattern for matching files"
54
+ },
55
+ "contentTrigger": {
56
+ "type": "string",
57
+ "description": "Regex pattern for matching content"
58
+ },
59
+ "excludeFiles": {
60
+ "type": "array",
61
+ "items": { "type": "string" },
62
+ "description": "Files to exclude from this rule"
63
+ },
64
+ "message": {
65
+ "type": "string",
66
+ "description": "Message to display when rule triggers"
67
+ },
68
+ "allowOverride": {
69
+ "type": "boolean",
70
+ "default": false,
71
+ "description": "Whether @guard-ignore comment can bypass this rule"
72
+ }
73
+ }
74
+ }
75
+ }
76
+ }
77
+ },
78
+ "embedding": {
79
+ "type": "object",
80
+ "description": "Embedding-based progressive disclosure configuration",
81
+ "properties": {
82
+ "enabled": {
83
+ "type": "boolean",
84
+ "default": true
85
+ },
86
+ "threshold": {
87
+ "type": "number",
88
+ "minimum": 0,
89
+ "maximum": 1,
90
+ "default": 0.60,
91
+ "description": "Minimum similarity threshold for section matching"
92
+ },
93
+ "maxSections": {
94
+ "type": "integer",
95
+ "minimum": 1,
96
+ "maximum": 10,
97
+ "default": 3,
98
+ "description": "Maximum number of sections to inject"
99
+ },
100
+ "prioritizeCritical": {
101
+ "type": "boolean",
102
+ "default": true,
103
+ "description": "Whether to prioritize CRITICAL sections over similarity"
104
+ },
105
+ "providers": {
106
+ "type": "array",
107
+ "items": {
108
+ "type": "string",
109
+ "enum": ["openai", "gemini"]
110
+ },
111
+ "description": "Embedding providers in order of preference"
112
+ }
113
+ }
114
+ },
115
+ "checkpoint": {
116
+ "type": "object",
117
+ "description": "Memory checkpoint configuration",
118
+ "properties": {
119
+ "enabled": {
120
+ "type": "boolean",
121
+ "default": true
122
+ },
123
+ "minLinesChanged": {
124
+ "type": "integer",
125
+ "minimum": 1,
126
+ "default": 20,
127
+ "description": "Minimum lines changed to trigger checkpoint"
128
+ },
129
+ "criticalPaths": {
130
+ "type": "array",
131
+ "items": { "type": "string" },
132
+ "description": "Glob patterns for critical paths that always trigger checkpoint"
133
+ },
134
+ "excludePaths": {
135
+ "type": "array",
136
+ "items": { "type": "string" },
137
+ "description": "Glob patterns for paths to exclude from checkpoints"
138
+ },
139
+ "autoTagging": {
140
+ "type": "boolean",
141
+ "default": true,
142
+ "description": "Automatically tag checkpoints based on content"
143
+ },
144
+ "patternDetection": {
145
+ "type": "boolean",
146
+ "default": true,
147
+ "description": "Enable pattern detection for auto-improvement"
148
+ }
149
+ }
150
+ },
151
+ "autoImprovement": {
152
+ "type": "object",
153
+ "description": "Auto-improvement system configuration",
154
+ "properties": {
155
+ "enabled": {
156
+ "type": "boolean",
157
+ "default": true
158
+ },
159
+ "violationThreshold": {
160
+ "type": "integer",
161
+ "minimum": 1,
162
+ "default": 3,
163
+ "description": "Number of violations before auto-improvement triggers"
164
+ },
165
+ "generateEslintRules": {
166
+ "type": "boolean",
167
+ "default": true,
168
+ "description": "Automatically generate ESLint rules for repeated violations"
169
+ },
170
+ "createMemoryEntries": {
171
+ "type": "boolean",
172
+ "default": true,
173
+ "description": "Create memory entries for patterns"
174
+ },
175
+ "updateClaudeMd": {
176
+ "type": "boolean",
177
+ "default": false,
178
+ "description": "Automatically update CLAUDE.md with new rules"
179
+ }
180
+ }
181
+ },
182
+ "sessionContext": {
183
+ "type": "object",
184
+ "description": "Session start context configuration",
185
+ "properties": {
186
+ "loadMemoriesOnStart": {
187
+ "type": "boolean",
188
+ "default": true,
189
+ "description": "Load relevant memories at session start"
190
+ },
191
+ "maxMemoriesLoaded": {
192
+ "type": "integer",
193
+ "minimum": 0,
194
+ "maximum": 20,
195
+ "default": 5,
196
+ "description": "Maximum memories to load per session"
197
+ },
198
+ "cacheTimeout": {
199
+ "type": "integer",
200
+ "minimum": 0,
201
+ "default": 3600,
202
+ "description": "Cache timeout in seconds"
203
+ },
204
+ "showAvailableCommands": {
205
+ "type": "boolean",
206
+ "default": true,
207
+ "description": "Show available commands at session start"
208
+ }
209
+ }
210
+ }
211
+ }
212
+ }