cccmemory 1.8.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/LICENSE +21 -0
- package/README.md +349 -0
- package/dist/ConversationMemory.d.ts +231 -0
- package/dist/ConversationMemory.d.ts.map +1 -0
- package/dist/ConversationMemory.js +357 -0
- package/dist/ConversationMemory.js.map +1 -0
- package/dist/cache/QueryCache.d.ts +215 -0
- package/dist/cache/QueryCache.d.ts.map +1 -0
- package/dist/cache/QueryCache.js +294 -0
- package/dist/cache/QueryCache.js.map +1 -0
- package/dist/cli/commands.d.ts +9 -0
- package/dist/cli/commands.d.ts.map +1 -0
- package/dist/cli/commands.js +954 -0
- package/dist/cli/commands.js.map +1 -0
- package/dist/cli/help.d.ts +16 -0
- package/dist/cli/help.d.ts.map +1 -0
- package/dist/cli/help.js +361 -0
- package/dist/cli/help.js.map +1 -0
- package/dist/cli/index.d.ts +30 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +111 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/context/ContextInjector.d.ts +38 -0
- package/dist/context/ContextInjector.d.ts.map +1 -0
- package/dist/context/ContextInjector.js +235 -0
- package/dist/context/ContextInjector.js.map +1 -0
- package/dist/documentation/CodeAnalyzer.d.ts +29 -0
- package/dist/documentation/CodeAnalyzer.d.ts.map +1 -0
- package/dist/documentation/CodeAnalyzer.js +122 -0
- package/dist/documentation/CodeAnalyzer.js.map +1 -0
- package/dist/documentation/ConversationAnalyzer.d.ts +19 -0
- package/dist/documentation/ConversationAnalyzer.d.ts.map +1 -0
- package/dist/documentation/ConversationAnalyzer.js +157 -0
- package/dist/documentation/ConversationAnalyzer.js.map +1 -0
- package/dist/documentation/CrossReferencer.d.ts +67 -0
- package/dist/documentation/CrossReferencer.d.ts.map +1 -0
- package/dist/documentation/CrossReferencer.js +247 -0
- package/dist/documentation/CrossReferencer.js.map +1 -0
- package/dist/documentation/DocumentationGenerator.d.ts +22 -0
- package/dist/documentation/DocumentationGenerator.d.ts.map +1 -0
- package/dist/documentation/DocumentationGenerator.js +57 -0
- package/dist/documentation/DocumentationGenerator.js.map +1 -0
- package/dist/documentation/MarkdownFormatter.d.ts +26 -0
- package/dist/documentation/MarkdownFormatter.d.ts.map +1 -0
- package/dist/documentation/MarkdownFormatter.js +301 -0
- package/dist/documentation/MarkdownFormatter.js.map +1 -0
- package/dist/documentation/types.d.ts +176 -0
- package/dist/documentation/types.d.ts.map +1 -0
- package/dist/documentation/types.js +5 -0
- package/dist/documentation/types.js.map +1 -0
- package/dist/embeddings/ConfigManager.d.ts +46 -0
- package/dist/embeddings/ConfigManager.d.ts.map +1 -0
- package/dist/embeddings/ConfigManager.js +177 -0
- package/dist/embeddings/ConfigManager.js.map +1 -0
- package/dist/embeddings/EmbeddingConfig.d.ts +39 -0
- package/dist/embeddings/EmbeddingConfig.d.ts.map +1 -0
- package/dist/embeddings/EmbeddingConfig.js +132 -0
- package/dist/embeddings/EmbeddingConfig.js.map +1 -0
- package/dist/embeddings/EmbeddingGenerator.d.ts +51 -0
- package/dist/embeddings/EmbeddingGenerator.d.ts.map +1 -0
- package/dist/embeddings/EmbeddingGenerator.js +157 -0
- package/dist/embeddings/EmbeddingGenerator.js.map +1 -0
- package/dist/embeddings/EmbeddingProvider.d.ts +34 -0
- package/dist/embeddings/EmbeddingProvider.d.ts.map +1 -0
- package/dist/embeddings/EmbeddingProvider.js +6 -0
- package/dist/embeddings/EmbeddingProvider.js.map +1 -0
- package/dist/embeddings/ModelRegistry.d.ts +48 -0
- package/dist/embeddings/ModelRegistry.d.ts.map +1 -0
- package/dist/embeddings/ModelRegistry.js +170 -0
- package/dist/embeddings/ModelRegistry.js.map +1 -0
- package/dist/embeddings/VectorStore.d.ts +114 -0
- package/dist/embeddings/VectorStore.d.ts.map +1 -0
- package/dist/embeddings/VectorStore.js +393 -0
- package/dist/embeddings/VectorStore.js.map +1 -0
- package/dist/embeddings/providers/OllamaEmbeddings.d.ts +38 -0
- package/dist/embeddings/providers/OllamaEmbeddings.d.ts.map +1 -0
- package/dist/embeddings/providers/OllamaEmbeddings.js +125 -0
- package/dist/embeddings/providers/OllamaEmbeddings.js.map +1 -0
- package/dist/embeddings/providers/OpenAIEmbeddings.d.ts +40 -0
- package/dist/embeddings/providers/OpenAIEmbeddings.d.ts.map +1 -0
- package/dist/embeddings/providers/OpenAIEmbeddings.js +129 -0
- package/dist/embeddings/providers/OpenAIEmbeddings.js.map +1 -0
- package/dist/embeddings/providers/TransformersEmbeddings.d.ts +38 -0
- package/dist/embeddings/providers/TransformersEmbeddings.d.ts.map +1 -0
- package/dist/embeddings/providers/TransformersEmbeddings.js +115 -0
- package/dist/embeddings/providers/TransformersEmbeddings.js.map +1 -0
- package/dist/handoff/SessionHandoffStore.d.ts +80 -0
- package/dist/handoff/SessionHandoffStore.d.ts.map +1 -0
- package/dist/handoff/SessionHandoffStore.js +314 -0
- package/dist/handoff/SessionHandoffStore.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +115 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp-server.d.ts +27 -0
- package/dist/mcp-server.d.ts.map +1 -0
- package/dist/mcp-server.js +157 -0
- package/dist/mcp-server.js.map +1 -0
- package/dist/memory/WorkingMemoryStore.d.ts +83 -0
- package/dist/memory/WorkingMemoryStore.d.ts.map +1 -0
- package/dist/memory/WorkingMemoryStore.js +318 -0
- package/dist/memory/WorkingMemoryStore.js.map +1 -0
- package/dist/memory/types.d.ts +192 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +8 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/parsers/CodexConversationParser.d.ts +51 -0
- package/dist/parsers/CodexConversationParser.d.ts.map +1 -0
- package/dist/parsers/CodexConversationParser.js +301 -0
- package/dist/parsers/CodexConversationParser.js.map +1 -0
- package/dist/parsers/ConversationParser.d.ts +286 -0
- package/dist/parsers/ConversationParser.d.ts.map +1 -0
- package/dist/parsers/ConversationParser.js +795 -0
- package/dist/parsers/ConversationParser.js.map +1 -0
- package/dist/parsers/DecisionExtractor.d.ts +144 -0
- package/dist/parsers/DecisionExtractor.d.ts.map +1 -0
- package/dist/parsers/DecisionExtractor.js +434 -0
- package/dist/parsers/DecisionExtractor.js.map +1 -0
- package/dist/parsers/GitIntegrator.d.ts +156 -0
- package/dist/parsers/GitIntegrator.d.ts.map +1 -0
- package/dist/parsers/GitIntegrator.js +348 -0
- package/dist/parsers/GitIntegrator.js.map +1 -0
- package/dist/parsers/MistakeExtractor.d.ts +151 -0
- package/dist/parsers/MistakeExtractor.d.ts.map +1 -0
- package/dist/parsers/MistakeExtractor.js +460 -0
- package/dist/parsers/MistakeExtractor.js.map +1 -0
- package/dist/parsers/RequirementsExtractor.d.ts +166 -0
- package/dist/parsers/RequirementsExtractor.d.ts.map +1 -0
- package/dist/parsers/RequirementsExtractor.js +338 -0
- package/dist/parsers/RequirementsExtractor.js.map +1 -0
- package/dist/realtime/ConversationWatcher.d.ts +87 -0
- package/dist/realtime/ConversationWatcher.d.ts.map +1 -0
- package/dist/realtime/ConversationWatcher.js +204 -0
- package/dist/realtime/ConversationWatcher.js.map +1 -0
- package/dist/realtime/IncrementalParser.d.ts +83 -0
- package/dist/realtime/IncrementalParser.d.ts.map +1 -0
- package/dist/realtime/IncrementalParser.js +232 -0
- package/dist/realtime/IncrementalParser.js.map +1 -0
- package/dist/realtime/LiveExtractor.d.ts +72 -0
- package/dist/realtime/LiveExtractor.d.ts.map +1 -0
- package/dist/realtime/LiveExtractor.js +288 -0
- package/dist/realtime/LiveExtractor.js.map +1 -0
- package/dist/search/SemanticSearch.d.ts +121 -0
- package/dist/search/SemanticSearch.d.ts.map +1 -0
- package/dist/search/SemanticSearch.js +823 -0
- package/dist/search/SemanticSearch.js.map +1 -0
- package/dist/storage/BackupManager.d.ts +58 -0
- package/dist/storage/BackupManager.d.ts.map +1 -0
- package/dist/storage/BackupManager.js +223 -0
- package/dist/storage/BackupManager.js.map +1 -0
- package/dist/storage/ConversationStorage.d.ts +341 -0
- package/dist/storage/ConversationStorage.d.ts.map +1 -0
- package/dist/storage/ConversationStorage.js +792 -0
- package/dist/storage/ConversationStorage.js.map +1 -0
- package/dist/storage/DeletionService.d.ts +70 -0
- package/dist/storage/DeletionService.d.ts.map +1 -0
- package/dist/storage/DeletionService.js +253 -0
- package/dist/storage/DeletionService.js.map +1 -0
- package/dist/storage/GlobalIndex.d.ts +133 -0
- package/dist/storage/GlobalIndex.d.ts.map +1 -0
- package/dist/storage/GlobalIndex.js +310 -0
- package/dist/storage/GlobalIndex.js.map +1 -0
- package/dist/storage/SQLiteManager.d.ts +114 -0
- package/dist/storage/SQLiteManager.d.ts.map +1 -0
- package/dist/storage/SQLiteManager.js +636 -0
- package/dist/storage/SQLiteManager.js.map +1 -0
- package/dist/storage/migrations.d.ts +54 -0
- package/dist/storage/migrations.d.ts.map +1 -0
- package/dist/storage/migrations.js +285 -0
- package/dist/storage/migrations.js.map +1 -0
- package/dist/storage/schema.sql +436 -0
- package/dist/tools/ToolDefinitions.d.ts +946 -0
- package/dist/tools/ToolDefinitions.d.ts.map +1 -0
- package/dist/tools/ToolDefinitions.js +937 -0
- package/dist/tools/ToolDefinitions.js.map +1 -0
- package/dist/tools/ToolHandlers.d.ts +791 -0
- package/dist/tools/ToolHandlers.d.ts.map +1 -0
- package/dist/tools/ToolHandlers.js +3262 -0
- package/dist/tools/ToolHandlers.js.map +1 -0
- package/dist/types/ToolTypes.d.ts +824 -0
- package/dist/types/ToolTypes.d.ts.map +1 -0
- package/dist/types/ToolTypes.js +6 -0
- package/dist/types/ToolTypes.js.map +1 -0
- package/dist/utils/Logger.d.ts +70 -0
- package/dist/utils/Logger.d.ts.map +1 -0
- package/dist/utils/Logger.js +131 -0
- package/dist/utils/Logger.js.map +1 -0
- package/dist/utils/McpConfig.d.ts +54 -0
- package/dist/utils/McpConfig.d.ts.map +1 -0
- package/dist/utils/McpConfig.js +136 -0
- package/dist/utils/McpConfig.js.map +1 -0
- package/dist/utils/ProjectMigration.d.ts +82 -0
- package/dist/utils/ProjectMigration.d.ts.map +1 -0
- package/dist/utils/ProjectMigration.js +416 -0
- package/dist/utils/ProjectMigration.js.map +1 -0
- package/dist/utils/constants.d.ts +75 -0
- package/dist/utils/constants.d.ts.map +1 -0
- package/dist/utils/constants.js +105 -0
- package/dist/utils/constants.js.map +1 -0
- package/dist/utils/safeJson.d.ts +37 -0
- package/dist/utils/safeJson.d.ts.map +1 -0
- package/dist/utils/safeJson.js +48 -0
- package/dist/utils/safeJson.js.map +1 -0
- package/dist/utils/sanitization.d.ts +45 -0
- package/dist/utils/sanitization.d.ts.map +1 -0
- package/dist/utils/sanitization.js +153 -0
- package/dist/utils/sanitization.js.map +1 -0
- package/dist/utils/worktree.d.ts +15 -0
- package/dist/utils/worktree.d.ts.map +1 -0
- package/dist/utils/worktree.js +86 -0
- package/dist/utils/worktree.js.map +1 -0
- package/package.json +98 -0
- package/scripts/changelog-check.sh +62 -0
- package/scripts/check-node.js +17 -0
- package/scripts/dev-config.js +56 -0
- package/scripts/postinstall.js +117 -0
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI Embeddings Provider
|
|
3
|
+
* Uses OpenAI API for high-quality embeddings
|
|
4
|
+
*/
|
|
5
|
+
import { getModelDimensions } from "../ModelRegistry.js";
|
|
6
|
+
export class OpenAIEmbeddings {
|
|
7
|
+
client = null;
|
|
8
|
+
model;
|
|
9
|
+
dimensions;
|
|
10
|
+
apiKey;
|
|
11
|
+
available = false;
|
|
12
|
+
initializationError = null;
|
|
13
|
+
constructor(apiKey, model = "text-embedding-3-small", dimensions) {
|
|
14
|
+
this.apiKey = apiKey;
|
|
15
|
+
this.model = model;
|
|
16
|
+
this.dimensions = dimensions || this.getDefaultDimensions(model);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Initialize OpenAI client
|
|
20
|
+
*/
|
|
21
|
+
async initialize() {
|
|
22
|
+
try {
|
|
23
|
+
if (!this.apiKey) {
|
|
24
|
+
throw new Error("OpenAI API key required. Set OPENAI_API_KEY environment variable.");
|
|
25
|
+
}
|
|
26
|
+
// Dynamic import of OpenAI SDK (optional dependency)
|
|
27
|
+
const { default: OpenAI } = await import("openai");
|
|
28
|
+
this.client = new OpenAI({
|
|
29
|
+
apiKey: this.apiKey,
|
|
30
|
+
});
|
|
31
|
+
// Test the API key with a small request
|
|
32
|
+
await this.client.embeddings.create({
|
|
33
|
+
model: this.model,
|
|
34
|
+
input: "test",
|
|
35
|
+
});
|
|
36
|
+
this.available = true;
|
|
37
|
+
console.error(`✓ OpenAI embeddings ready (${this.model})`);
|
|
38
|
+
}
|
|
39
|
+
catch (error) {
|
|
40
|
+
this.initializationError = error;
|
|
41
|
+
this.available = false;
|
|
42
|
+
if (error.message.includes("Cannot find module")) {
|
|
43
|
+
console.error("⚠️ OpenAI SDK not installed");
|
|
44
|
+
console.error(" Install with: npm install openai");
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
console.error("⚠️ OpenAI initialization failed:", error.message);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Check if embeddings are available
|
|
53
|
+
*/
|
|
54
|
+
isAvailable() {
|
|
55
|
+
return this.available;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Generate embedding for a single text
|
|
59
|
+
*/
|
|
60
|
+
async embed(text) {
|
|
61
|
+
if (!this.available || !this.client) {
|
|
62
|
+
throw new Error(`OpenAI embeddings not available: ${this.initializationError?.message || "Not initialized"}`);
|
|
63
|
+
}
|
|
64
|
+
try {
|
|
65
|
+
const response = await this.client.embeddings.create({
|
|
66
|
+
model: this.model,
|
|
67
|
+
input: text,
|
|
68
|
+
});
|
|
69
|
+
return new Float32Array(response.data[0].embedding);
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
console.error("Error generating embedding with OpenAI:", error);
|
|
73
|
+
throw error;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Generate embeddings for multiple texts (batched)
|
|
78
|
+
* OpenAI supports batch requests natively
|
|
79
|
+
*/
|
|
80
|
+
async embedBatch(texts, batchSize = 100) {
|
|
81
|
+
if (!this.available || !this.client) {
|
|
82
|
+
throw new Error("OpenAI embeddings not initialized");
|
|
83
|
+
}
|
|
84
|
+
const embeddings = [];
|
|
85
|
+
// OpenAI allows up to 2048 inputs per request, but we use smaller batches for reliability
|
|
86
|
+
for (let i = 0; i < texts.length; i += batchSize) {
|
|
87
|
+
const batch = texts.slice(i, i + batchSize);
|
|
88
|
+
console.error(`Generating embeddings for batch ${Math.floor(i / batchSize) + 1}/${Math.ceil(texts.length / batchSize)} (OpenAI)`);
|
|
89
|
+
try {
|
|
90
|
+
const response = await this.client.embeddings.create({
|
|
91
|
+
model: this.model,
|
|
92
|
+
input: batch,
|
|
93
|
+
});
|
|
94
|
+
// Convert all embeddings in the batch
|
|
95
|
+
const batchEmbeddings = response.data.map((item) => new Float32Array(item.embedding));
|
|
96
|
+
embeddings.push(...batchEmbeddings);
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
console.error("Error in batch embedding:", error);
|
|
100
|
+
throw error;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
return embeddings;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Get model information
|
|
107
|
+
*/
|
|
108
|
+
getModelInfo() {
|
|
109
|
+
return {
|
|
110
|
+
provider: "openai",
|
|
111
|
+
model: this.model,
|
|
112
|
+
dimensions: this.dimensions,
|
|
113
|
+
available: this.available,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Get default dimensions for OpenAI models using ModelRegistry
|
|
118
|
+
*/
|
|
119
|
+
getDefaultDimensions(model) {
|
|
120
|
+
// Try to get dimensions from ModelRegistry
|
|
121
|
+
const dimensions = getModelDimensions(model);
|
|
122
|
+
if (dimensions) {
|
|
123
|
+
return dimensions;
|
|
124
|
+
}
|
|
125
|
+
// Default to 1536 if unknown (most common for OpenAI models)
|
|
126
|
+
return 1536;
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=OpenAIEmbeddings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAIEmbeddings.js","sourceRoot":"","sources":["../../../src/embeddings/providers/OpenAIEmbeddings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transformers.js Embeddings Provider
|
|
3
|
+
* Uses @xenova/transformers for local, offline embeddings
|
|
4
|
+
*/
|
|
5
|
+
import type { EmbeddingProvider, ModelInfo } from "../EmbeddingProvider.js";
|
|
6
|
+
export declare class TransformersEmbeddings implements EmbeddingProvider {
|
|
7
|
+
private pipeline;
|
|
8
|
+
private model;
|
|
9
|
+
private dimensions;
|
|
10
|
+
private available;
|
|
11
|
+
private initializationError;
|
|
12
|
+
constructor(model?: string, dimensions?: number);
|
|
13
|
+
/**
|
|
14
|
+
* Initialize the embedding pipeline
|
|
15
|
+
*/
|
|
16
|
+
initialize(): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Check if embeddings are available
|
|
19
|
+
*/
|
|
20
|
+
isAvailable(): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Generate embedding for text
|
|
23
|
+
*/
|
|
24
|
+
embed(text: string): Promise<Float32Array>;
|
|
25
|
+
/**
|
|
26
|
+
* Generate embeddings for multiple texts (batched)
|
|
27
|
+
*/
|
|
28
|
+
embedBatch(texts: string[], batchSize?: number): Promise<Float32Array[]>;
|
|
29
|
+
/**
|
|
30
|
+
* Get model information
|
|
31
|
+
*/
|
|
32
|
+
getModelInfo(): ModelInfo;
|
|
33
|
+
/**
|
|
34
|
+
* Get default dimensions for common transformer models using ModelRegistry
|
|
35
|
+
*/
|
|
36
|
+
private getDefaultDimensions;
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=TransformersEmbeddings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransformersEmbeddings.d.ts","sourceRoot":"","sources":["../../../src/embeddings/providers/TransformersEmbeddings.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAM5E,qBAAa,sBAAuB,YAAW,iBAAiB;IAC9D,OAAO,CAAC,QAAQ,CAA2B;IAC3C,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,mBAAmB,CAAsB;gBAErC,KAAK,GAAE,MAAkC,EAAE,UAAU,CAAC,EAAE,MAAM;IAK1E;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IA2BjC;;OAEG;IACH,WAAW,IAAI,OAAO;IAItB;;OAEG;IACG,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IA4BhD;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,SAAS,GAAE,MAAW,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAyBlF;;OAEG;IACH,YAAY,IAAI,SAAS;IASzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;CAU7B"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Transformers.js Embeddings Provider
|
|
3
|
+
* Uses @xenova/transformers for local, offline embeddings
|
|
4
|
+
*/
|
|
5
|
+
import { getModelDimensions } from "../ModelRegistry.js";
|
|
6
|
+
export class TransformersEmbeddings {
|
|
7
|
+
pipeline = null;
|
|
8
|
+
model;
|
|
9
|
+
dimensions;
|
|
10
|
+
available = false;
|
|
11
|
+
initializationError = null;
|
|
12
|
+
constructor(model = "Xenova/all-MiniLM-L6-v2", dimensions) {
|
|
13
|
+
this.model = model;
|
|
14
|
+
this.dimensions = dimensions || this.getDefaultDimensions(model);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Initialize the embedding pipeline
|
|
18
|
+
*/
|
|
19
|
+
async initialize() {
|
|
20
|
+
if (this.available) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
try {
|
|
24
|
+
// Try to import @xenova/transformers
|
|
25
|
+
const { pipeline } = await import("@xenova/transformers");
|
|
26
|
+
console.error(`Loading embedding model: ${this.model}...`);
|
|
27
|
+
this.pipeline = (await pipeline("feature-extraction", this.model));
|
|
28
|
+
this.available = true;
|
|
29
|
+
console.error(`✓ Transformers.js embeddings ready (${this.model})`);
|
|
30
|
+
}
|
|
31
|
+
catch (error) {
|
|
32
|
+
this.initializationError = error;
|
|
33
|
+
this.available = false;
|
|
34
|
+
if (error.message.includes("Cannot find module")) {
|
|
35
|
+
console.error("⚠️ @xenova/transformers not installed");
|
|
36
|
+
console.error(" Install with: npm install @xenova/transformers");
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
console.error("⚠️ Could not load embedding model:", error.message);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Check if embeddings are available
|
|
45
|
+
*/
|
|
46
|
+
isAvailable() {
|
|
47
|
+
return this.available && this.pipeline !== null;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Generate embedding for text
|
|
51
|
+
*/
|
|
52
|
+
async embed(text) {
|
|
53
|
+
if (!this.isAvailable()) {
|
|
54
|
+
throw new Error(`Transformers embeddings not available: ${this.initializationError?.message || "Not initialized"}`);
|
|
55
|
+
}
|
|
56
|
+
if (!this.pipeline) {
|
|
57
|
+
throw new Error("Pipeline not initialized");
|
|
58
|
+
}
|
|
59
|
+
try {
|
|
60
|
+
// Generate embedding
|
|
61
|
+
const output = await this.pipeline(text, {
|
|
62
|
+
pooling: "mean",
|
|
63
|
+
normalize: true,
|
|
64
|
+
});
|
|
65
|
+
// Extract the embedding array
|
|
66
|
+
const embedding = output.data;
|
|
67
|
+
return new Float32Array(embedding);
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
console.error("Error generating embedding:", error);
|
|
71
|
+
throw error;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Generate embeddings for multiple texts (batched)
|
|
76
|
+
*/
|
|
77
|
+
async embedBatch(texts, batchSize = 32) {
|
|
78
|
+
if (!this.isAvailable()) {
|
|
79
|
+
throw new Error("Transformers embeddings not initialized");
|
|
80
|
+
}
|
|
81
|
+
const embeddings = [];
|
|
82
|
+
// Process in batches
|
|
83
|
+
for (let i = 0; i < texts.length; i += batchSize) {
|
|
84
|
+
const batch = texts.slice(i, i + batchSize);
|
|
85
|
+
console.error(`Generating embeddings for batch ${Math.floor(i / batchSize) + 1}/${Math.ceil(texts.length / batchSize)} (Transformers.js)`);
|
|
86
|
+
const batchEmbeddings = await Promise.all(batch.map((text) => this.embed(text)));
|
|
87
|
+
embeddings.push(...batchEmbeddings);
|
|
88
|
+
}
|
|
89
|
+
return embeddings;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Get model information
|
|
93
|
+
*/
|
|
94
|
+
getModelInfo() {
|
|
95
|
+
return {
|
|
96
|
+
provider: "transformers",
|
|
97
|
+
model: this.model,
|
|
98
|
+
dimensions: this.dimensions,
|
|
99
|
+
available: this.available,
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Get default dimensions for common transformer models using ModelRegistry
|
|
104
|
+
*/
|
|
105
|
+
getDefaultDimensions(model) {
|
|
106
|
+
// Try to get dimensions from ModelRegistry
|
|
107
|
+
const dimensions = getModelDimensions(model);
|
|
108
|
+
if (dimensions) {
|
|
109
|
+
return dimensions;
|
|
110
|
+
}
|
|
111
|
+
// Default to 384 if unknown (most common for small models)
|
|
112
|
+
return 384;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=TransformersEmbeddings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TransformersEmbeddings.js","sourceRoot":"","sources":["../../../src/embeddings/providers/TransformersEmbeddings.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session Handoff Store
|
|
3
|
+
*
|
|
4
|
+
* Manages session handoff documents for transferring context between
|
|
5
|
+
* conversations when context fills up or when explicitly requested.
|
|
6
|
+
*/
|
|
7
|
+
import type { Database } from "better-sqlite3";
|
|
8
|
+
import type { SessionHandoff } from "../memory/types.js";
|
|
9
|
+
/**
|
|
10
|
+
* Options for creating a handoff
|
|
11
|
+
*/
|
|
12
|
+
export interface PrepareHandoffOptions {
|
|
13
|
+
sessionId?: string;
|
|
14
|
+
projectPath: string;
|
|
15
|
+
include?: Array<"decisions" | "files" | "tasks" | "memory">;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Options for resuming from a handoff
|
|
19
|
+
*/
|
|
20
|
+
export interface ResumeHandoffOptions {
|
|
21
|
+
handoffId?: string;
|
|
22
|
+
projectPath: string;
|
|
23
|
+
newSessionId?: string;
|
|
24
|
+
injectContext?: boolean;
|
|
25
|
+
}
|
|
26
|
+
export declare class SessionHandoffStore {
|
|
27
|
+
private db;
|
|
28
|
+
constructor(db: Database);
|
|
29
|
+
/**
|
|
30
|
+
* Prepare a handoff document from the current session
|
|
31
|
+
*/
|
|
32
|
+
prepareHandoff(options: PrepareHandoffOptions): SessionHandoff;
|
|
33
|
+
/**
|
|
34
|
+
* Resume from a handoff in a new session
|
|
35
|
+
*/
|
|
36
|
+
resumeFromHandoff(options: ResumeHandoffOptions): SessionHandoff | null;
|
|
37
|
+
/**
|
|
38
|
+
* List available handoffs for a project
|
|
39
|
+
*/
|
|
40
|
+
listHandoffs(projectPath: string, options?: {
|
|
41
|
+
limit?: number;
|
|
42
|
+
includeResumed?: boolean;
|
|
43
|
+
}): Array<{
|
|
44
|
+
id: string;
|
|
45
|
+
fromSessionId: string;
|
|
46
|
+
createdAt: number;
|
|
47
|
+
resumedBy?: string;
|
|
48
|
+
resumedAt?: number;
|
|
49
|
+
summary: string;
|
|
50
|
+
}>;
|
|
51
|
+
/**
|
|
52
|
+
* Get a specific handoff by ID
|
|
53
|
+
*/
|
|
54
|
+
getHandoff(handoffId: string): SessionHandoff | null;
|
|
55
|
+
/**
|
|
56
|
+
* Delete a handoff by ID
|
|
57
|
+
*/
|
|
58
|
+
deleteHandoff(handoffId: string): boolean;
|
|
59
|
+
/**
|
|
60
|
+
* Get recent decisions from the database
|
|
61
|
+
*/
|
|
62
|
+
private getRecentDecisions;
|
|
63
|
+
/**
|
|
64
|
+
* Get recent file activity from tool uses
|
|
65
|
+
*/
|
|
66
|
+
private getActiveFiles;
|
|
67
|
+
/**
|
|
68
|
+
* Get pending tasks from working memory
|
|
69
|
+
*/
|
|
70
|
+
private getPendingTasks;
|
|
71
|
+
/**
|
|
72
|
+
* Infer task status from tags
|
|
73
|
+
*/
|
|
74
|
+
private inferTaskStatus;
|
|
75
|
+
/**
|
|
76
|
+
* Generate a context summary from handoff data
|
|
77
|
+
*/
|
|
78
|
+
private generateContextSummary;
|
|
79
|
+
}
|
|
80
|
+
//# sourceMappingURL=SessionHandoffStore.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SessionHandoffStore.d.ts","sourceRoot":"","sources":["../../src/handoff/SessionHandoffStore.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC/C,OAAO,KAAK,EACV,cAAc,EAMf,MAAM,oBAAoB,CAAC;AAG5B;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,KAAK,CAAC,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,QAAQ,CAAC,CAAC;CAC7D;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAaD,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,EAAE,CAAW;gBAET,EAAE,EAAE,QAAQ;IAIxB;;OAEG;IACH,cAAc,CAAC,OAAO,EAAE,qBAAqB,GAAG,cAAc;IA6D9D;;OAEG;IACH,iBAAiB,CAAC,OAAO,EAAE,oBAAoB,GAAG,cAAc,GAAG,IAAI;IAkEvE;;OAEG;IACH,YAAY,CACV,WAAW,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAA;KAAE,GACrD,KAAK,CAAC;QACP,EAAE,EAAE,MAAM,CAAC;QACX,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IAyBF;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAsBpD;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAQzC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAqC1B;;OAEG;IACH,OAAO,CAAC,cAAc;IA8DtB;;OAEG;IACH,OAAO,CAAC,eAAe;IAkBvB;;OAEG;IACH,OAAO,CAAC,eAAe;IAUvB;;OAEG;IACH,OAAO,CAAC,sBAAsB;CA+B/B"}
|