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.
- package/README.md +541 -0
- package/dist/analytics/index.d.ts +5 -0
- package/dist/analytics/index.d.ts.map +1 -0
- package/dist/analytics/index.js +5 -0
- package/dist/analytics/index.js.map +1 -0
- package/dist/analytics/tracker.d.ts +107 -0
- package/dist/analytics/tracker.d.ts.map +1 -0
- package/dist/analytics/tracker.js +333 -0
- package/dist/analytics/tracker.js.map +1 -0
- package/dist/auto-improve/eslint-generator.d.ts +36 -0
- package/dist/auto-improve/eslint-generator.d.ts.map +1 -0
- package/dist/auto-improve/eslint-generator.js +280 -0
- package/dist/auto-improve/eslint-generator.js.map +1 -0
- package/dist/auto-improve/index.d.ts +6 -0
- package/dist/auto-improve/index.d.ts.map +1 -0
- package/dist/auto-improve/index.js +6 -0
- package/dist/auto-improve/index.js.map +1 -0
- package/dist/auto-improve/pattern-detector.d.ts +92 -0
- package/dist/auto-improve/pattern-detector.d.ts.map +1 -0
- package/dist/auto-improve/pattern-detector.js +231 -0
- package/dist/auto-improve/pattern-detector.js.map +1 -0
- package/dist/cli/index.d.ts +16 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +636 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/dashboard/index.d.ts +6 -0
- package/dist/dashboard/index.d.ts.map +1 -0
- package/dist/dashboard/index.js +6 -0
- package/dist/dashboard/index.js.map +1 -0
- package/dist/dashboard/server.d.ts +15 -0
- package/dist/dashboard/server.d.ts.map +1 -0
- package/dist/dashboard/server.js +373 -0
- package/dist/dashboard/server.js.map +1 -0
- package/dist/dashboard/ui.d.ts +9 -0
- package/dist/dashboard/ui.d.ts.map +1 -0
- package/dist/dashboard/ui.js +530 -0
- package/dist/dashboard/ui.js.map +1 -0
- package/dist/db/client.d.ts +66 -0
- package/dist/db/client.d.ts.map +1 -0
- package/dist/db/client.js +159 -0
- package/dist/db/client.js.map +1 -0
- package/dist/db/drizzle-client.d.ts +302 -0
- package/dist/db/drizzle-client.d.ts.map +1 -0
- package/dist/db/drizzle-client.js +404 -0
- package/dist/db/drizzle-client.js.map +1 -0
- package/dist/db/index.d.ts +5 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +5 -0
- package/dist/db/index.js.map +1 -0
- package/dist/feedback/collector.d.ts +74 -0
- package/dist/feedback/collector.d.ts.map +1 -0
- package/dist/feedback/collector.js +231 -0
- package/dist/feedback/collector.js.map +1 -0
- package/dist/feedback/index.d.ts +5 -0
- package/dist/feedback/index.d.ts.map +1 -0
- package/dist/feedback/index.js +5 -0
- package/dist/feedback/index.js.map +1 -0
- package/dist/hooks/index.d.ts +8 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +8 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/memory-checkpoint.d.ts +43 -0
- package/dist/hooks/memory-checkpoint.d.ts.map +1 -0
- package/dist/hooks/memory-checkpoint.js +257 -0
- package/dist/hooks/memory-checkpoint.js.map +1 -0
- package/dist/hooks/post-tool-use.d.ts +61 -0
- package/dist/hooks/post-tool-use.d.ts.map +1 -0
- package/dist/hooks/post-tool-use.js +262 -0
- package/dist/hooks/post-tool-use.js.map +1 -0
- package/dist/hooks/pre-tool-use.d.ts +34 -0
- package/dist/hooks/pre-tool-use.d.ts.map +1 -0
- package/dist/hooks/pre-tool-use.js +358 -0
- package/dist/hooks/pre-tool-use.js.map +1 -0
- package/dist/hooks/session-start.d.ts +38 -0
- package/dist/hooks/session-start.d.ts.map +1 -0
- package/dist/hooks/session-start.js +274 -0
- package/dist/hooks/session-start.js.map +1 -0
- package/dist/index.d.ts +29 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +39 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/index.d.ts +5 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +5 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/server.d.ts +42 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +599 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/registry/embeddings.d.ts +38 -0
- package/dist/registry/embeddings.d.ts.map +1 -0
- package/dist/registry/embeddings.js +110 -0
- package/dist/registry/embeddings.js.map +1 -0
- package/dist/registry/generator.d.ts +41 -0
- package/dist/registry/generator.d.ts.map +1 -0
- package/dist/registry/generator.js +323 -0
- package/dist/registry/generator.js.map +1 -0
- package/dist/registry/index.d.ts +6 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +6 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/services/IdeaCollector.d.ts +103 -0
- package/dist/services/IdeaCollector.d.ts.map +1 -0
- package/dist/services/IdeaCollector.js +371 -0
- package/dist/services/IdeaCollector.js.map +1 -0
- package/dist/services/TaskTracker.d.ts +89 -0
- package/dist/services/TaskTracker.d.ts.map +1 -0
- package/dist/services/TaskTracker.js +324 -0
- package/dist/services/TaskTracker.js.map +1 -0
- package/dist/services/WorkPlanManager.d.ts +107 -0
- package/dist/services/WorkPlanManager.d.ts.map +1 -0
- package/dist/services/WorkPlanManager.js +440 -0
- package/dist/services/WorkPlanManager.js.map +1 -0
- package/dist/services/auto-inject.d.ts +77 -0
- package/dist/services/auto-inject.d.ts.map +1 -0
- package/dist/services/auto-inject.js +289 -0
- package/dist/services/auto-inject.js.map +1 -0
- package/dist/services/auto-tag.d.ts +61 -0
- package/dist/services/auto-tag.d.ts.map +1 -0
- package/dist/services/auto-tag.js +203 -0
- package/dist/services/auto-tag.js.map +1 -0
- package/dist/services/cross-project-sync.d.ts +76 -0
- package/dist/services/cross-project-sync.d.ts.map +1 -0
- package/dist/services/cross-project-sync.js +235 -0
- package/dist/services/cross-project-sync.js.map +1 -0
- package/dist/services/index.d.ts +15 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +18 -0
- package/dist/services/index.js.map +1 -0
- package/dist/services/memory-consolidation.d.ts +77 -0
- package/dist/services/memory-consolidation.d.ts.map +1 -0
- package/dist/services/memory-consolidation.js +298 -0
- package/dist/services/memory-consolidation.js.map +1 -0
- package/dist/services/semantic-search.d.ts +93 -0
- package/dist/services/semantic-search.d.ts.map +1 -0
- package/dist/services/semantic-search.js +278 -0
- package/dist/services/semantic-search.js.map +1 -0
- package/dist/services/weekly-digest.d.ts +105 -0
- package/dist/services/weekly-digest.d.ts.map +1 -0
- package/dist/services/weekly-digest.js +292 -0
- package/dist/services/weekly-digest.js.map +1 -0
- package/dist/types/index.d.ts +274 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +84 -0
- package/dist/types/index.js.map +1 -0
- package/dist/utils/config.d.ts +21 -0
- package/dist/utils/config.d.ts.map +1 -0
- package/dist/utils/config.js +89 -0
- package/dist/utils/config.js.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/paths.d.ts +28 -0
- package/dist/utils/paths.d.ts.map +1 -0
- package/dist/utils/paths.js +80 -0
- package/dist/utils/paths.js.map +1 -0
- package/package.json +89 -0
- package/templates/memory-config.json +82 -0
- package/templates/memory-config.schema.json +212 -0
- 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
|
+
}
|