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,110 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Embedding Service
|
|
3
|
+
*
|
|
4
|
+
* Generates embeddings using OpenAI or Gemini APIs.
|
|
5
|
+
*/
|
|
6
|
+
// =============================================================================
|
|
7
|
+
// EMBEDDING SERVICE
|
|
8
|
+
// =============================================================================
|
|
9
|
+
export class EmbeddingService {
|
|
10
|
+
config;
|
|
11
|
+
constructor(config) {
|
|
12
|
+
this.config = {
|
|
13
|
+
providers: config?.providers ?? ['openai', 'gemini'],
|
|
14
|
+
openaiApiKey: config?.openaiApiKey ?? process.env.OPENAI_API_KEY,
|
|
15
|
+
geminiApiKey: config?.geminiApiKey ?? process.env.GEMINI_API_KEY,
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Generate embedding for text
|
|
20
|
+
*/
|
|
21
|
+
async embed(text) {
|
|
22
|
+
for (const provider of this.config.providers) {
|
|
23
|
+
try {
|
|
24
|
+
if (provider === 'openai' && this.config.openaiApiKey) {
|
|
25
|
+
return await this.embedWithOpenAI(text);
|
|
26
|
+
}
|
|
27
|
+
if (provider === 'gemini' && this.config.geminiApiKey) {
|
|
28
|
+
return await this.embedWithGemini(text);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
console.warn(`[EmbeddingService] ${provider} failed:`, error);
|
|
33
|
+
// Try next provider
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
throw new Error('No embedding provider available');
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Generate embeddings for multiple texts
|
|
40
|
+
*/
|
|
41
|
+
async embedBatch(texts) {
|
|
42
|
+
// Process in parallel with rate limiting
|
|
43
|
+
const batchSize = 5;
|
|
44
|
+
const results = [];
|
|
45
|
+
for (let i = 0; i < texts.length; i += batchSize) {
|
|
46
|
+
const batch = texts.slice(i, i + batchSize);
|
|
47
|
+
const embeddings = await Promise.all(batch.map(t => this.embed(t)));
|
|
48
|
+
results.push(...embeddings);
|
|
49
|
+
// Rate limit delay
|
|
50
|
+
if (i + batchSize < texts.length) {
|
|
51
|
+
await new Promise(r => setTimeout(r, 200));
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return results;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* OpenAI embedding
|
|
58
|
+
*/
|
|
59
|
+
async embedWithOpenAI(text) {
|
|
60
|
+
const response = await fetch('https://api.openai.com/v1/embeddings', {
|
|
61
|
+
method: 'POST',
|
|
62
|
+
headers: {
|
|
63
|
+
'Content-Type': 'application/json',
|
|
64
|
+
'Authorization': `Bearer ${this.config.openaiApiKey}`
|
|
65
|
+
},
|
|
66
|
+
body: JSON.stringify({
|
|
67
|
+
model: 'text-embedding-3-small',
|
|
68
|
+
input: text.slice(0, 8000 * 4),
|
|
69
|
+
encoding_format: 'float'
|
|
70
|
+
})
|
|
71
|
+
});
|
|
72
|
+
if (!response.ok) {
|
|
73
|
+
const error = await response.json();
|
|
74
|
+
throw new Error(`OpenAI API error: ${JSON.stringify(error)}`);
|
|
75
|
+
}
|
|
76
|
+
const data = await response.json();
|
|
77
|
+
return data.data[0]?.embedding ?? [];
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Gemini embedding
|
|
81
|
+
*/
|
|
82
|
+
async embedWithGemini(text) {
|
|
83
|
+
const response = await fetch(`https://generativelanguage.googleapis.com/v1/models/text-embedding-004:embedContent?key=${this.config.geminiApiKey}`, {
|
|
84
|
+
method: 'POST',
|
|
85
|
+
headers: { 'Content-Type': 'application/json' },
|
|
86
|
+
body: JSON.stringify({
|
|
87
|
+
content: { parts: [{ text: text.slice(0, 10000) }] }
|
|
88
|
+
})
|
|
89
|
+
});
|
|
90
|
+
if (!response.ok) {
|
|
91
|
+
const error = await response.json();
|
|
92
|
+
throw new Error(`Gemini API error: ${JSON.stringify(error)}`);
|
|
93
|
+
}
|
|
94
|
+
const data = await response.json();
|
|
95
|
+
return data.embedding.values;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Get current provider info
|
|
99
|
+
*/
|
|
100
|
+
getProviderInfo() {
|
|
101
|
+
if (this.config.openaiApiKey) {
|
|
102
|
+
return { provider: 'openai', dimension: 1536 };
|
|
103
|
+
}
|
|
104
|
+
if (this.config.geminiApiKey) {
|
|
105
|
+
return { provider: 'gemini', dimension: 768 };
|
|
106
|
+
}
|
|
107
|
+
throw new Error('No provider configured');
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=embeddings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../../src/registry/embeddings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registry Generator
|
|
3
|
+
*
|
|
4
|
+
* Parses CLAUDE.md and other documentation files to create
|
|
5
|
+
* an embedding registry for semantic knowledge retrieval.
|
|
6
|
+
*/
|
|
7
|
+
import type { EmbeddingRegistry } from '../types/index.js';
|
|
8
|
+
export interface RegistryGeneratorConfig {
|
|
9
|
+
/** Files to parse for knowledge sections */
|
|
10
|
+
sourceFiles: string[];
|
|
11
|
+
/** Output path for registry.json */
|
|
12
|
+
outputPath: string;
|
|
13
|
+
/** Minimum section length to include */
|
|
14
|
+
minSectionLength: number;
|
|
15
|
+
/** Maximum section length before splitting */
|
|
16
|
+
maxSectionLength: number;
|
|
17
|
+
}
|
|
18
|
+
export declare class RegistryGenerator {
|
|
19
|
+
private config;
|
|
20
|
+
private embeddingService;
|
|
21
|
+
private projectRoot;
|
|
22
|
+
constructor(config?: Partial<RegistryGeneratorConfig>);
|
|
23
|
+
/**
|
|
24
|
+
* Initialize with project root
|
|
25
|
+
*/
|
|
26
|
+
init(projectRoot?: string): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Generate the embedding registry
|
|
29
|
+
*/
|
|
30
|
+
generate(): Promise<EmbeddingRegistry>;
|
|
31
|
+
/**
|
|
32
|
+
* Find all source files matching patterns
|
|
33
|
+
*/
|
|
34
|
+
private findSourceFiles;
|
|
35
|
+
/**
|
|
36
|
+
* Update registry with new sections (incremental)
|
|
37
|
+
*/
|
|
38
|
+
update(newFilePaths: string[]): Promise<EmbeddingRegistry>;
|
|
39
|
+
}
|
|
40
|
+
export declare function runRegistryGenerator(): Promise<void>;
|
|
41
|
+
//# sourceMappingURL=generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/registry/generator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EAAoB,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAQ5E,MAAM,WAAW,uBAAuB;IACtC,4CAA4C;IAC5C,WAAW,EAAE,MAAM,EAAE,CAAA;IACrB,oCAAoC;IACpC,UAAU,EAAE,MAAM,CAAA;IAClB,wCAAwC;IACxC,gBAAgB,EAAE,MAAM,CAAA;IACxB,8CAA8C;IAC9C,gBAAgB,EAAE,MAAM,CAAA;CACzB;AAoMD,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,MAAM,CAAyB;IACvC,OAAO,CAAC,gBAAgB,CAAkB;IAC1C,OAAO,CAAC,WAAW,CAAsB;gBAE7B,MAAM,CAAC,EAAE,OAAO,CAAC,uBAAuB,CAAC;IAKrD;;OAEG;IACG,IAAI,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI/C;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,iBAAiB,CAAC;IAmF5C;;OAEG;YACW,eAAe;IAgB7B;;OAEG;IACG,MAAM,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC;CA4DjE;AAMD,wBAAsB,oBAAoB,IAAI,OAAO,CAAC,IAAI,CAAC,CAG1D"}
|
|
@@ -0,0 +1,323 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Registry Generator
|
|
3
|
+
*
|
|
4
|
+
* Parses CLAUDE.md and other documentation files to create
|
|
5
|
+
* an embedding registry for semantic knowledge retrieval.
|
|
6
|
+
*/
|
|
7
|
+
import fs from 'fs/promises';
|
|
8
|
+
import path from 'path';
|
|
9
|
+
import matter from 'gray-matter';
|
|
10
|
+
import { EmbeddingService } from './embeddings.js';
|
|
11
|
+
import { getProjectRoot } from '../utils/paths.js';
|
|
12
|
+
const DEFAULT_CONFIG = {
|
|
13
|
+
sourceFiles: [
|
|
14
|
+
'CLAUDE.md',
|
|
15
|
+
'.claude/context/*.md',
|
|
16
|
+
'.ai-skills/**/*.md',
|
|
17
|
+
'docs/*.md',
|
|
18
|
+
],
|
|
19
|
+
outputPath: '.claude/knowledge/registry.json',
|
|
20
|
+
minSectionLength: 100,
|
|
21
|
+
maxSectionLength: 2000,
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Parse a markdown file into sections
|
|
25
|
+
*/
|
|
26
|
+
async function parseMarkdownFile(filePath, config) {
|
|
27
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
28
|
+
const { data: frontmatter, content: body } = matter(content);
|
|
29
|
+
const sections = [];
|
|
30
|
+
const lines = body.split('\n');
|
|
31
|
+
let currentSection = null;
|
|
32
|
+
let currentContent = [];
|
|
33
|
+
for (const line of lines) {
|
|
34
|
+
// Detect headers
|
|
35
|
+
const h1Match = line.match(/^#\s+(.+)$/);
|
|
36
|
+
const h2Match = line.match(/^##\s+(.+)$/);
|
|
37
|
+
const h3Match = line.match(/^###\s+(.+)$/);
|
|
38
|
+
if (h1Match || h2Match || h3Match) {
|
|
39
|
+
// Save previous section
|
|
40
|
+
if (currentSection && currentContent.length > 0) {
|
|
41
|
+
const content = currentContent.join('\n').trim();
|
|
42
|
+
if (content.length >= config.minSectionLength) {
|
|
43
|
+
sections.push({
|
|
44
|
+
...currentSection,
|
|
45
|
+
content,
|
|
46
|
+
description: extractDescription(content),
|
|
47
|
+
keywords: extractKeywords(content),
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
// Start new section
|
|
52
|
+
const title = (h1Match?.[1] ?? h2Match?.[1] ?? h3Match?.[1]);
|
|
53
|
+
const id = titleToId(title);
|
|
54
|
+
currentSection = {
|
|
55
|
+
id,
|
|
56
|
+
title,
|
|
57
|
+
criticality: detectCriticality(title, content),
|
|
58
|
+
path: filePath,
|
|
59
|
+
};
|
|
60
|
+
currentContent = [];
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
currentContent.push(line);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Don't forget last section
|
|
67
|
+
if (currentSection && currentContent.length > 0) {
|
|
68
|
+
const content = currentContent.join('\n').trim();
|
|
69
|
+
if (content.length >= config.minSectionLength) {
|
|
70
|
+
sections.push({
|
|
71
|
+
...currentSection,
|
|
72
|
+
content,
|
|
73
|
+
description: extractDescription(content),
|
|
74
|
+
keywords: extractKeywords(content),
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return sections;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Convert title to slug ID
|
|
82
|
+
*/
|
|
83
|
+
function titleToId(title) {
|
|
84
|
+
return title
|
|
85
|
+
.toLowerCase()
|
|
86
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
87
|
+
.replace(/^-|-$/g, '');
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Extract first meaningful sentence as description
|
|
91
|
+
*/
|
|
92
|
+
function extractDescription(content) {
|
|
93
|
+
// Find first sentence or first 200 chars
|
|
94
|
+
const firstLine = content.split('\n').find(l => l.trim() && !l.startsWith('-'));
|
|
95
|
+
if (!firstLine)
|
|
96
|
+
return content.slice(0, 200);
|
|
97
|
+
const sentence = firstLine.match(/^[^.!?]+[.!?]/);
|
|
98
|
+
return (sentence?.[0] ?? firstLine).slice(0, 200);
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Extract keywords from content
|
|
102
|
+
*/
|
|
103
|
+
function extractKeywords(content) {
|
|
104
|
+
const keywords = new Set();
|
|
105
|
+
// Extract code blocks identifiers
|
|
106
|
+
const codeMatches = content.matchAll(/```(\w+)/g);
|
|
107
|
+
for (const match of codeMatches) {
|
|
108
|
+
keywords.add(match[1].toLowerCase());
|
|
109
|
+
}
|
|
110
|
+
// Extract bold/emphasis words
|
|
111
|
+
const boldMatches = content.matchAll(/\*\*([^*]+)\*\*/g);
|
|
112
|
+
for (const match of boldMatches) {
|
|
113
|
+
const word = match[1].toLowerCase().trim();
|
|
114
|
+
if (word.length >= 3 && word.length <= 30) {
|
|
115
|
+
keywords.add(word);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// Extract capitalized terms (likely important)
|
|
119
|
+
const capMatches = content.matchAll(/\b([A-Z][a-z]+(?:[A-Z][a-z]+)+)\b/g);
|
|
120
|
+
for (const match of capMatches) {
|
|
121
|
+
keywords.add(match[1].toLowerCase());
|
|
122
|
+
}
|
|
123
|
+
return Array.from(keywords).slice(0, 10);
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Detect criticality based on content
|
|
127
|
+
*/
|
|
128
|
+
function detectCriticality(title, content) {
|
|
129
|
+
const text = `${title} ${content}`.toLowerCase();
|
|
130
|
+
// Critical patterns
|
|
131
|
+
if (text.includes('critical') ||
|
|
132
|
+
text.includes('never') ||
|
|
133
|
+
text.includes('must not') ||
|
|
134
|
+
text.includes('security') ||
|
|
135
|
+
text.includes('finance') ||
|
|
136
|
+
text.includes('dual-write')) {
|
|
137
|
+
return 'CRITICAL';
|
|
138
|
+
}
|
|
139
|
+
// High patterns
|
|
140
|
+
if (text.includes('important') ||
|
|
141
|
+
text.includes('required') ||
|
|
142
|
+
text.includes('always') ||
|
|
143
|
+
text.includes('schema') ||
|
|
144
|
+
text.includes('database')) {
|
|
145
|
+
return 'HIGH';
|
|
146
|
+
}
|
|
147
|
+
// Medium patterns
|
|
148
|
+
if (text.includes('should') ||
|
|
149
|
+
text.includes('recommend') ||
|
|
150
|
+
text.includes('prefer')) {
|
|
151
|
+
return 'MEDIUM';
|
|
152
|
+
}
|
|
153
|
+
return 'LOW';
|
|
154
|
+
}
|
|
155
|
+
// =============================================================================
|
|
156
|
+
// REGISTRY GENERATOR CLASS
|
|
157
|
+
// =============================================================================
|
|
158
|
+
export class RegistryGenerator {
|
|
159
|
+
config;
|
|
160
|
+
embeddingService;
|
|
161
|
+
projectRoot = null;
|
|
162
|
+
constructor(config) {
|
|
163
|
+
this.config = { ...DEFAULT_CONFIG, ...config };
|
|
164
|
+
this.embeddingService = new EmbeddingService();
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Initialize with project root
|
|
168
|
+
*/
|
|
169
|
+
async init(projectRoot) {
|
|
170
|
+
this.projectRoot = projectRoot ?? await getProjectRoot();
|
|
171
|
+
}
|
|
172
|
+
/**
|
|
173
|
+
* Generate the embedding registry
|
|
174
|
+
*/
|
|
175
|
+
async generate() {
|
|
176
|
+
if (!this.projectRoot) {
|
|
177
|
+
await this.init();
|
|
178
|
+
}
|
|
179
|
+
const projectRoot = this.projectRoot;
|
|
180
|
+
console.log('📚 Generating knowledge registry...');
|
|
181
|
+
console.log(` Project: ${projectRoot}`);
|
|
182
|
+
// 1. Find all source files
|
|
183
|
+
const files = await this.findSourceFiles(projectRoot);
|
|
184
|
+
console.log(` Found ${files.length} source files`);
|
|
185
|
+
// 2. Parse sections from all files
|
|
186
|
+
const allSections = [];
|
|
187
|
+
for (const file of files) {
|
|
188
|
+
try {
|
|
189
|
+
const sections = await parseMarkdownFile(file, this.config);
|
|
190
|
+
allSections.push(...sections);
|
|
191
|
+
console.log(` Parsed ${sections.length} sections from ${path.basename(file)}`);
|
|
192
|
+
}
|
|
193
|
+
catch (error) {
|
|
194
|
+
console.warn(` Warning: Could not parse ${file}:`, error);
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
console.log(` Total sections: ${allSections.length}`);
|
|
198
|
+
// 3. Generate embeddings
|
|
199
|
+
console.log(' Generating embeddings...');
|
|
200
|
+
const providerInfo = this.embeddingService.getProviderInfo();
|
|
201
|
+
const embeddingSections = [];
|
|
202
|
+
for (let i = 0; i < allSections.length; i++) {
|
|
203
|
+
const section = allSections[i];
|
|
204
|
+
// Combine title, description, and content for embedding
|
|
205
|
+
const textToEmbed = `${section.title}\n\n${section.description}\n\n${section.content}`;
|
|
206
|
+
try {
|
|
207
|
+
const embedding = await this.embeddingService.embed(textToEmbed);
|
|
208
|
+
embeddingSections.push({
|
|
209
|
+
id: section.id,
|
|
210
|
+
title: section.title,
|
|
211
|
+
description: section.description,
|
|
212
|
+
keywords: section.keywords,
|
|
213
|
+
embedding,
|
|
214
|
+
path: section.path,
|
|
215
|
+
tokens: Math.ceil(textToEmbed.length / 4), // Rough estimate
|
|
216
|
+
criticality: section.criticality,
|
|
217
|
+
});
|
|
218
|
+
if ((i + 1) % 10 === 0) {
|
|
219
|
+
console.log(` Embedded ${i + 1}/${allSections.length} sections`);
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
catch (error) {
|
|
223
|
+
console.warn(` Warning: Could not embed section "${section.title}":`, error);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
// 4. Create registry
|
|
227
|
+
const registry = {
|
|
228
|
+
version: '1.0.0',
|
|
229
|
+
model: `${providerInfo.provider}/text-embedding`,
|
|
230
|
+
dimension: providerInfo.dimension,
|
|
231
|
+
generatedAt: new Date().toISOString(),
|
|
232
|
+
sections: embeddingSections,
|
|
233
|
+
};
|
|
234
|
+
// 5. Save registry
|
|
235
|
+
const outputPath = path.join(projectRoot, this.config.outputPath);
|
|
236
|
+
await fs.mkdir(path.dirname(outputPath), { recursive: true });
|
|
237
|
+
await fs.writeFile(outputPath, JSON.stringify(registry, null, 2));
|
|
238
|
+
console.log(`✅ Registry saved to ${outputPath}`);
|
|
239
|
+
console.log(` Sections: ${embeddingSections.length}`);
|
|
240
|
+
console.log(` Critical: ${embeddingSections.filter(s => s.criticality === 'CRITICAL').length}`);
|
|
241
|
+
return registry;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Find all source files matching patterns
|
|
245
|
+
*/
|
|
246
|
+
async findSourceFiles(projectRoot) {
|
|
247
|
+
const { glob } = await import('glob');
|
|
248
|
+
const files = [];
|
|
249
|
+
for (const pattern of this.config.sourceFiles) {
|
|
250
|
+
const matches = await glob(pattern, {
|
|
251
|
+
cwd: projectRoot,
|
|
252
|
+
absolute: true,
|
|
253
|
+
nodir: true,
|
|
254
|
+
});
|
|
255
|
+
files.push(...matches);
|
|
256
|
+
}
|
|
257
|
+
return [...new Set(files)];
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Update registry with new sections (incremental)
|
|
261
|
+
*/
|
|
262
|
+
async update(newFilePaths) {
|
|
263
|
+
if (!this.projectRoot) {
|
|
264
|
+
await this.init();
|
|
265
|
+
}
|
|
266
|
+
// Load existing registry
|
|
267
|
+
const registryPath = path.join(this.projectRoot, this.config.outputPath);
|
|
268
|
+
let existingRegistry;
|
|
269
|
+
try {
|
|
270
|
+
const content = await fs.readFile(registryPath, 'utf-8');
|
|
271
|
+
existingRegistry = JSON.parse(content);
|
|
272
|
+
}
|
|
273
|
+
catch {
|
|
274
|
+
// No existing registry, generate from scratch
|
|
275
|
+
return this.generate();
|
|
276
|
+
}
|
|
277
|
+
// Parse new files
|
|
278
|
+
for (const filePath of newFilePaths) {
|
|
279
|
+
const sections = await parseMarkdownFile(filePath, this.config);
|
|
280
|
+
for (const section of sections) {
|
|
281
|
+
// Check if section already exists
|
|
282
|
+
const existingIndex = existingRegistry.sections.findIndex(s => s.id === section.id && s.path === section.path);
|
|
283
|
+
const textToEmbed = `${section.title}\n\n${section.description}\n\n${section.content}`;
|
|
284
|
+
const embedding = await this.embeddingService.embed(textToEmbed);
|
|
285
|
+
const providerInfo = this.embeddingService.getProviderInfo();
|
|
286
|
+
const newSection = {
|
|
287
|
+
id: section.id,
|
|
288
|
+
title: section.title,
|
|
289
|
+
description: section.description,
|
|
290
|
+
keywords: section.keywords,
|
|
291
|
+
embedding,
|
|
292
|
+
path: section.path,
|
|
293
|
+
tokens: Math.ceil(textToEmbed.length / 4),
|
|
294
|
+
criticality: section.criticality,
|
|
295
|
+
};
|
|
296
|
+
if (existingIndex >= 0) {
|
|
297
|
+
// Update existing
|
|
298
|
+
existingRegistry.sections[existingIndex] = newSection;
|
|
299
|
+
}
|
|
300
|
+
else {
|
|
301
|
+
// Add new
|
|
302
|
+
existingRegistry.sections.push(newSection);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
// Update metadata
|
|
307
|
+
existingRegistry.generatedAt = new Date().toISOString();
|
|
308
|
+
// Save
|
|
309
|
+
await fs.writeFile(registryPath, JSON.stringify(existingRegistry, null, 2));
|
|
310
|
+
return existingRegistry;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
// =============================================================================
|
|
314
|
+
// STANDALONE EXECUTION
|
|
315
|
+
// =============================================================================
|
|
316
|
+
export async function runRegistryGenerator() {
|
|
317
|
+
const generator = new RegistryGenerator();
|
|
318
|
+
await generator.generate();
|
|
319
|
+
}
|
|
320
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
321
|
+
runRegistryGenerator().catch(console.error);
|
|
322
|
+
}
|
|
323
|
+
//# sourceMappingURL=generator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/registry/generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAAE,KAAK,sBAAsB,EAAE,MAAM,iBAAiB,CAAA;AAC/E,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,KAAK,uBAAuB,EAAE,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/registry/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,gBAAgB,EAA+B,MAAM,iBAAiB,CAAA;AAC/E,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAgC,MAAM,gBAAgB,CAAA"}
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IdeaCollector Service
|
|
3
|
+
*
|
|
4
|
+
* Collects and manages ideas and improvements generated during work sessions.
|
|
5
|
+
* Integrates with TaskTracker to associate ideas with tasks.
|
|
6
|
+
*/
|
|
7
|
+
import type { DevSystem, TaskIdea, TaskImprovement } from '../types/index.js';
|
|
8
|
+
export interface IdeaInput {
|
|
9
|
+
title: string;
|
|
10
|
+
description: string;
|
|
11
|
+
priority?: 'high' | 'medium' | 'low';
|
|
12
|
+
category?: 'feature' | 'refactor' | 'bug' | 'optimization' | 'documentation';
|
|
13
|
+
relatedFiles?: string[];
|
|
14
|
+
taskId?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface ImprovementInput {
|
|
17
|
+
title: string;
|
|
18
|
+
description: string;
|
|
19
|
+
type?: 'code_quality' | 'performance' | 'security' | 'ux' | 'architecture';
|
|
20
|
+
effort?: 'small' | 'medium' | 'large';
|
|
21
|
+
taskId?: string;
|
|
22
|
+
suggestedBy?: 'ai' | 'user' | 'pattern_detection';
|
|
23
|
+
}
|
|
24
|
+
export interface IdeaStats {
|
|
25
|
+
totalIdeas: number;
|
|
26
|
+
byCategory: Record<string, number>;
|
|
27
|
+
byPriority: Record<string, number>;
|
|
28
|
+
recent: TaskIdea[];
|
|
29
|
+
}
|
|
30
|
+
export interface ImprovementStats {
|
|
31
|
+
totalImprovements: number;
|
|
32
|
+
byType: Record<string, number>;
|
|
33
|
+
byEffort: Record<string, number>;
|
|
34
|
+
recent: TaskImprovement[];
|
|
35
|
+
}
|
|
36
|
+
export declare class IdeaCollector {
|
|
37
|
+
private client;
|
|
38
|
+
private system;
|
|
39
|
+
constructor(system: DevSystem);
|
|
40
|
+
/**
|
|
41
|
+
* Create a new idea (standalone, not attached to task)
|
|
42
|
+
*/
|
|
43
|
+
createIdea(input: IdeaInput): Promise<string>;
|
|
44
|
+
/**
|
|
45
|
+
* Get all ideas (standalone and from tasks)
|
|
46
|
+
*/
|
|
47
|
+
getAllIdeas(options?: {
|
|
48
|
+
category?: TaskIdea['category'];
|
|
49
|
+
priority?: TaskIdea['priority'];
|
|
50
|
+
limit?: number;
|
|
51
|
+
}): Promise<TaskIdea[]>;
|
|
52
|
+
/**
|
|
53
|
+
* Get idea statistics
|
|
54
|
+
*/
|
|
55
|
+
getIdeaStats(): Promise<IdeaStats>;
|
|
56
|
+
/**
|
|
57
|
+
* Mark idea as implemented/done
|
|
58
|
+
*/
|
|
59
|
+
completeIdea(ideaId: string): Promise<void>;
|
|
60
|
+
/**
|
|
61
|
+
* Create a new improvement (standalone)
|
|
62
|
+
*/
|
|
63
|
+
createImprovement(input: ImprovementInput): Promise<string>;
|
|
64
|
+
/**
|
|
65
|
+
* Get all improvements
|
|
66
|
+
*/
|
|
67
|
+
getAllImprovements(options?: {
|
|
68
|
+
type?: TaskImprovement['type'];
|
|
69
|
+
effort?: TaskImprovement['effort'];
|
|
70
|
+
limit?: number;
|
|
71
|
+
}): Promise<TaskImprovement[]>;
|
|
72
|
+
/**
|
|
73
|
+
* Get improvement statistics
|
|
74
|
+
*/
|
|
75
|
+
getImprovementStats(): Promise<ImprovementStats>;
|
|
76
|
+
/**
|
|
77
|
+
* Mark improvement as implemented
|
|
78
|
+
*/
|
|
79
|
+
completeImprovement(improvementId: string): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Quick capture from AI analysis (auto-categorizes)
|
|
82
|
+
*/
|
|
83
|
+
quickCapture(text: string, context?: {
|
|
84
|
+
taskId?: string;
|
|
85
|
+
files?: string[];
|
|
86
|
+
}): Promise<{
|
|
87
|
+
ideaId?: string;
|
|
88
|
+
improvementId?: string;
|
|
89
|
+
}>;
|
|
90
|
+
/**
|
|
91
|
+
* Export all ideas and improvements as markdown
|
|
92
|
+
*/
|
|
93
|
+
exportMarkdown(): Promise<string>;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Get or create IdeaCollector instance
|
|
97
|
+
*/
|
|
98
|
+
export declare function getIdeaCollector(system: DevSystem): IdeaCollector;
|
|
99
|
+
/**
|
|
100
|
+
* Create fresh IdeaCollector instance
|
|
101
|
+
*/
|
|
102
|
+
export declare function createIdeaCollector(system: DevSystem): IdeaCollector;
|
|
103
|
+
//# sourceMappingURL=IdeaCollector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"IdeaCollector.d.ts","sourceRoot":"","sources":["../../src/services/IdeaCollector.ts"],"names":[],"mappings":"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"}
|