@mcampa/ai-context-core 0.0.1-beta.c518c19
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 +354 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/context.d.ts +276 -0
- package/dist/context.d.ts.map +1 -0
- package/dist/context.js +1177 -0
- package/dist/context.js.map +1 -0
- package/dist/embedding/base-embedding.d.ts +51 -0
- package/dist/embedding/base-embedding.d.ts.map +1 -0
- package/dist/embedding/base-embedding.js +36 -0
- package/dist/embedding/base-embedding.js.map +1 -0
- package/dist/embedding/gemini-embedding.d.ts +53 -0
- package/dist/embedding/gemini-embedding.d.ts.map +1 -0
- package/dist/embedding/gemini-embedding.js +154 -0
- package/dist/embedding/gemini-embedding.js.map +1 -0
- package/dist/embedding/index.d.ts +6 -0
- package/dist/embedding/index.d.ts.map +1 -0
- package/dist/embedding/index.js +24 -0
- package/dist/embedding/index.js.map +1 -0
- package/dist/embedding/ollama-embedding.d.ts +55 -0
- package/dist/embedding/ollama-embedding.d.ts.map +1 -0
- package/dist/embedding/ollama-embedding.js +193 -0
- package/dist/embedding/ollama-embedding.js.map +1 -0
- package/dist/embedding/openai-embedding.d.ts +36 -0
- package/dist/embedding/openai-embedding.d.ts.map +1 -0
- package/dist/embedding/openai-embedding.js +161 -0
- package/dist/embedding/openai-embedding.js.map +1 -0
- package/dist/embedding/voyageai-embedding.d.ts +44 -0
- package/dist/embedding/voyageai-embedding.d.ts.map +1 -0
- package/dist/embedding/voyageai-embedding.js +227 -0
- package/dist/embedding/voyageai-embedding.js.map +1 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +24 -0
- package/dist/index.js.map +1 -0
- package/dist/splitter/ast-splitter.d.ts +22 -0
- package/dist/splitter/ast-splitter.d.ts.map +1 -0
- package/dist/splitter/ast-splitter.js +308 -0
- package/dist/splitter/ast-splitter.js.map +1 -0
- package/dist/splitter/index.d.ts +41 -0
- package/dist/splitter/index.d.ts.map +1 -0
- package/dist/splitter/index.js +27 -0
- package/dist/splitter/index.js.map +1 -0
- package/dist/splitter/langchain-splitter.d.ts +13 -0
- package/dist/splitter/langchain-splitter.d.ts.map +1 -0
- package/dist/splitter/langchain-splitter.js +118 -0
- package/dist/splitter/langchain-splitter.js.map +1 -0
- package/dist/sync/merkle.d.ts +30 -0
- package/dist/sync/merkle.d.ts.map +1 -0
- package/dist/sync/merkle.js +112 -0
- package/dist/sync/merkle.js.map +1 -0
- package/dist/sync/synchronizer.d.ts +30 -0
- package/dist/sync/synchronizer.d.ts.map +1 -0
- package/dist/sync/synchronizer.js +347 -0
- package/dist/sync/synchronizer.js.map +1 -0
- package/dist/types.d.ts +14 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/env-manager.d.ts +19 -0
- package/dist/utils/env-manager.d.ts.map +1 -0
- package/dist/utils/env-manager.js +125 -0
- package/dist/utils/env-manager.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +7 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/vectordb/index.d.ts +5 -0
- package/dist/vectordb/index.d.ts.map +1 -0
- package/dist/vectordb/index.js +14 -0
- package/dist/vectordb/index.js.map +1 -0
- package/dist/vectordb/milvus-restful-vectordb.d.ts +75 -0
- package/dist/vectordb/milvus-restful-vectordb.d.ts.map +1 -0
- package/dist/vectordb/milvus-restful-vectordb.js +728 -0
- package/dist/vectordb/milvus-restful-vectordb.js.map +1 -0
- package/dist/vectordb/milvus-vectordb.d.ts +60 -0
- package/dist/vectordb/milvus-vectordb.d.ts.map +1 -0
- package/dist/vectordb/milvus-vectordb.js +662 -0
- package/dist/vectordb/milvus-vectordb.js.map +1 -0
- package/dist/vectordb/types.d.ts +120 -0
- package/dist/vectordb/types.d.ts.map +1 -0
- package/dist/vectordb/types.js +9 -0
- package/dist/vectordb/types.js.map +1 -0
- package/dist/vectordb/zilliz-utils.d.ts +135 -0
- package/dist/vectordb/zilliz-utils.d.ts.map +1 -0
- package/dist/vectordb/zilliz-utils.js +197 -0
- package/dist/vectordb/zilliz-utils.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/splitter/index.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,SAAS;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE;QACR,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAGD,oBAAY,YAAY;IACtB,SAAS,cAAc;IACvB,GAAG,QAAQ;CACZ;AAGD,MAAM,WAAW,cAAc;IAC7B,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,QAAQ;IACvB;;;;;;OAMG;IACH,KAAK,CACH,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;IAExB;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAEtC;;;OAGG;IACH,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;CAC7C;AAGD,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.SplitterType = void 0;
|
|
18
|
+
// Splitter type enumeration
|
|
19
|
+
var SplitterType;
|
|
20
|
+
(function (SplitterType) {
|
|
21
|
+
SplitterType["LANGCHAIN"] = "langchain";
|
|
22
|
+
SplitterType["AST"] = "ast";
|
|
23
|
+
})(SplitterType || (exports.SplitterType = SplitterType = {}));
|
|
24
|
+
// Implementation class exports
|
|
25
|
+
__exportStar(require("./langchain-splitter"), exports);
|
|
26
|
+
__exportStar(require("./ast-splitter"), exports);
|
|
27
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/splitter/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAWA,4BAA4B;AAC5B,IAAY,YAGX;AAHD,WAAY,YAAY;IACtB,uCAAuB,CAAA;IACvB,2BAAW,CAAA;AACb,CAAC,EAHW,YAAY,4BAAZ,YAAY,QAGvB;AAoCD,+BAA+B;AAC/B,uDAAqC;AACrC,iDAA+B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { Splitter, CodeChunk } from "./index";
|
|
2
|
+
export declare class LangChainCodeSplitter implements Splitter {
|
|
3
|
+
private chunkSize;
|
|
4
|
+
private chunkOverlap;
|
|
5
|
+
constructor(chunkSize?: number, chunkOverlap?: number);
|
|
6
|
+
split(code: string, language: string, filePath?: string): Promise<CodeChunk[]>;
|
|
7
|
+
setChunkSize(chunkSize: number): void;
|
|
8
|
+
setChunkOverlap(chunkOverlap: number): void;
|
|
9
|
+
private mapLanguage;
|
|
10
|
+
private fallbackSplit;
|
|
11
|
+
private estimateLines;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=langchain-splitter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"langchain-splitter.d.ts","sourceRoot":"","sources":["../../src/splitter/langchain-splitter.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAqB9C,qBAAa,qBAAsB,YAAW,QAAQ;IACpD,OAAO,CAAC,SAAS,CAAgB;IACjC,OAAO,CAAC,YAAY,CAAe;gBAEvB,SAAS,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM;IAK/C,KAAK,CACT,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAAC,SAAS,EAAE,CAAC;IAwCvB,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;IAIrC,eAAe,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI;IAI3C,OAAO,CAAC,WAAW;YA4BL,aAAa;IA2B3B,OAAO,CAAC,aAAa;CAoBtB"}
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.LangChainCodeSplitter = void 0;
|
|
4
|
+
const text_splitter_1 = require("langchain/text_splitter");
|
|
5
|
+
class LangChainCodeSplitter {
|
|
6
|
+
constructor(chunkSize, chunkOverlap) {
|
|
7
|
+
this.chunkSize = 1000;
|
|
8
|
+
this.chunkOverlap = 200;
|
|
9
|
+
if (chunkSize)
|
|
10
|
+
this.chunkSize = chunkSize;
|
|
11
|
+
if (chunkOverlap)
|
|
12
|
+
this.chunkOverlap = chunkOverlap;
|
|
13
|
+
}
|
|
14
|
+
async split(code, language, filePath) {
|
|
15
|
+
try {
|
|
16
|
+
// Create language-specific splitter
|
|
17
|
+
const mappedLanguage = this.mapLanguage(language);
|
|
18
|
+
if (mappedLanguage) {
|
|
19
|
+
const splitter = text_splitter_1.RecursiveCharacterTextSplitter.fromLanguage(mappedLanguage, {
|
|
20
|
+
chunkSize: this.chunkSize,
|
|
21
|
+
chunkOverlap: this.chunkOverlap,
|
|
22
|
+
});
|
|
23
|
+
// Split code
|
|
24
|
+
const documents = await splitter.createDocuments([code]);
|
|
25
|
+
// Convert to CodeChunk format
|
|
26
|
+
return documents.map((doc, _index) => {
|
|
27
|
+
const lines = doc.metadata?.loc?.lines || { from: 1, to: 1 };
|
|
28
|
+
return {
|
|
29
|
+
content: doc.pageContent,
|
|
30
|
+
metadata: {
|
|
31
|
+
startLine: lines.from,
|
|
32
|
+
endLine: lines.to,
|
|
33
|
+
language,
|
|
34
|
+
filePath,
|
|
35
|
+
},
|
|
36
|
+
};
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
// If language is not supported, use generic splitter directly
|
|
41
|
+
return this.fallbackSplit(code, language, filePath);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
console.error("[LangChainSplitter] ❌ Error splitting code:", error);
|
|
46
|
+
// If specific language splitting fails, use generic splitter
|
|
47
|
+
return this.fallbackSplit(code, language, filePath);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
setChunkSize(chunkSize) {
|
|
51
|
+
this.chunkSize = chunkSize;
|
|
52
|
+
}
|
|
53
|
+
setChunkOverlap(chunkOverlap) {
|
|
54
|
+
this.chunkOverlap = chunkOverlap;
|
|
55
|
+
}
|
|
56
|
+
mapLanguage(language) {
|
|
57
|
+
// Map common language names to LangChain supported formats
|
|
58
|
+
const languageMap = {
|
|
59
|
+
javascript: "js",
|
|
60
|
+
typescript: "js",
|
|
61
|
+
python: "python",
|
|
62
|
+
java: "java",
|
|
63
|
+
cpp: "cpp",
|
|
64
|
+
"c++": "cpp",
|
|
65
|
+
c: "cpp",
|
|
66
|
+
go: "go",
|
|
67
|
+
rust: "rust",
|
|
68
|
+
php: "php",
|
|
69
|
+
ruby: "ruby",
|
|
70
|
+
swift: "swift",
|
|
71
|
+
scala: "scala",
|
|
72
|
+
html: "html",
|
|
73
|
+
markdown: "markdown",
|
|
74
|
+
md: "markdown",
|
|
75
|
+
latex: "latex",
|
|
76
|
+
tex: "latex",
|
|
77
|
+
solidity: "sol",
|
|
78
|
+
sol: "sol",
|
|
79
|
+
};
|
|
80
|
+
return languageMap[language.toLowerCase()] || null;
|
|
81
|
+
}
|
|
82
|
+
async fallbackSplit(code, language, filePath) {
|
|
83
|
+
// Generic splitter as fallback
|
|
84
|
+
const splitter = new text_splitter_1.RecursiveCharacterTextSplitter({
|
|
85
|
+
chunkSize: this.chunkSize,
|
|
86
|
+
chunkOverlap: this.chunkOverlap,
|
|
87
|
+
});
|
|
88
|
+
const documents = await splitter.createDocuments([code]);
|
|
89
|
+
return documents.map((doc, _index) => {
|
|
90
|
+
const lines = this.estimateLines(doc.pageContent, code);
|
|
91
|
+
return {
|
|
92
|
+
content: doc.pageContent,
|
|
93
|
+
metadata: {
|
|
94
|
+
startLine: lines.start,
|
|
95
|
+
endLine: lines.end,
|
|
96
|
+
language,
|
|
97
|
+
filePath,
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
estimateLines(chunk, originalCode) {
|
|
103
|
+
// Simple line number estimation
|
|
104
|
+
const _codeLines = originalCode.split("\n");
|
|
105
|
+
const chunkLines = chunk.split("\n");
|
|
106
|
+
// Find chunk position in original code
|
|
107
|
+
const chunkStart = originalCode.indexOf(chunk);
|
|
108
|
+
if (chunkStart === -1) {
|
|
109
|
+
return { start: 1, end: chunkLines.length };
|
|
110
|
+
}
|
|
111
|
+
const beforeChunk = originalCode.substring(0, chunkStart);
|
|
112
|
+
const startLine = beforeChunk.split("\n").length;
|
|
113
|
+
const endLine = startLine + chunkLines.length - 1;
|
|
114
|
+
return { start: startLine, end: endLine };
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
exports.LangChainCodeSplitter = LangChainCodeSplitter;
|
|
118
|
+
//# sourceMappingURL=langchain-splitter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"langchain-splitter.js","sourceRoot":"","sources":["../../src/splitter/langchain-splitter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export interface MerkleDAGNode {
|
|
2
|
+
id: string;
|
|
3
|
+
hash: string;
|
|
4
|
+
data: string;
|
|
5
|
+
parents: string[];
|
|
6
|
+
children: string[];
|
|
7
|
+
}
|
|
8
|
+
export interface SerializedMerkleDAG {
|
|
9
|
+
nodes: [string, MerkleDAGNode][];
|
|
10
|
+
rootIds: string[];
|
|
11
|
+
}
|
|
12
|
+
export declare class MerkleDAG {
|
|
13
|
+
nodes: Map<string, MerkleDAGNode>;
|
|
14
|
+
rootIds: string[];
|
|
15
|
+
constructor();
|
|
16
|
+
private hash;
|
|
17
|
+
addNode(data: string, parentId?: string): string;
|
|
18
|
+
getNode(nodeId: string): MerkleDAGNode | undefined;
|
|
19
|
+
getAllNodes(): MerkleDAGNode[];
|
|
20
|
+
getRootNodes(): MerkleDAGNode[];
|
|
21
|
+
getLeafNodes(): MerkleDAGNode[];
|
|
22
|
+
serialize(): SerializedMerkleDAG;
|
|
23
|
+
static deserialize(data: SerializedMerkleDAG): MerkleDAG;
|
|
24
|
+
static compare(dag1: MerkleDAG, dag2: MerkleDAG): {
|
|
25
|
+
added: string[];
|
|
26
|
+
removed: string[];
|
|
27
|
+
modified: string[];
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=merkle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merkle.d.ts","sourceRoot":"","sources":["../../src/sync/merkle.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,mBAAmB;IAClC,KAAK,EAAE,CAAC,MAAM,EAAE,aAAa,CAAC,EAAE,CAAC;IACjC,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB;AAED,qBAAa,SAAS;IACpB,KAAK,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAClC,OAAO,EAAE,MAAM,EAAE,CAAC;;IAOlB,OAAO,CAAC,IAAI;IAIL,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM;IA2BhD,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIlD,WAAW,IAAI,aAAa,EAAE;IAI9B,YAAY,IAAI,aAAa,EAAE;IAI/B,YAAY,IAAI,aAAa,EAAE;IAM/B,SAAS,IAAI,mBAAmB;WAOzB,WAAW,CAAC,IAAI,EAAE,mBAAmB,GAAG,SAAS;WAOjD,OAAO,CACnB,IAAI,EAAE,SAAS,EACf,IAAI,EAAE,SAAS,GACd;QAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;KAAE;CAsB9D"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.MerkleDAG = void 0;
|
|
37
|
+
const crypto = __importStar(require("crypto"));
|
|
38
|
+
class MerkleDAG {
|
|
39
|
+
constructor() {
|
|
40
|
+
this.nodes = new Map();
|
|
41
|
+
this.rootIds = [];
|
|
42
|
+
}
|
|
43
|
+
hash(data) {
|
|
44
|
+
return crypto.createHash("sha256").update(data).digest("hex");
|
|
45
|
+
}
|
|
46
|
+
addNode(data, parentId) {
|
|
47
|
+
const nodeId = this.hash(data);
|
|
48
|
+
const node = {
|
|
49
|
+
id: nodeId,
|
|
50
|
+
hash: nodeId,
|
|
51
|
+
data,
|
|
52
|
+
parents: [],
|
|
53
|
+
children: [],
|
|
54
|
+
};
|
|
55
|
+
// If there's a parent, create the relationship
|
|
56
|
+
if (parentId) {
|
|
57
|
+
const parentNode = this.nodes.get(parentId);
|
|
58
|
+
if (parentNode) {
|
|
59
|
+
node.parents.push(parentId);
|
|
60
|
+
parentNode.children.push(nodeId);
|
|
61
|
+
this.nodes.set(parentId, parentNode);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
// If no parent, it's a root node
|
|
66
|
+
this.rootIds.push(nodeId);
|
|
67
|
+
}
|
|
68
|
+
this.nodes.set(nodeId, node);
|
|
69
|
+
return nodeId;
|
|
70
|
+
}
|
|
71
|
+
getNode(nodeId) {
|
|
72
|
+
return this.nodes.get(nodeId);
|
|
73
|
+
}
|
|
74
|
+
getAllNodes() {
|
|
75
|
+
return Array.from(this.nodes.values());
|
|
76
|
+
}
|
|
77
|
+
getRootNodes() {
|
|
78
|
+
return this.rootIds.map((id) => this.nodes.get(id)).filter(Boolean);
|
|
79
|
+
}
|
|
80
|
+
getLeafNodes() {
|
|
81
|
+
return Array.from(this.nodes.values()).filter((node) => node.children.length === 0);
|
|
82
|
+
}
|
|
83
|
+
serialize() {
|
|
84
|
+
return {
|
|
85
|
+
nodes: Array.from(this.nodes.entries()),
|
|
86
|
+
rootIds: this.rootIds,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
static deserialize(data) {
|
|
90
|
+
const dag = new MerkleDAG();
|
|
91
|
+
dag.nodes = new Map(data.nodes);
|
|
92
|
+
dag.rootIds = data.rootIds;
|
|
93
|
+
return dag;
|
|
94
|
+
}
|
|
95
|
+
static compare(dag1, dag2) {
|
|
96
|
+
const nodes1 = new Map(Array.from(dag1.getAllNodes()).map((n) => [n.id, n]));
|
|
97
|
+
const nodes2 = new Map(Array.from(dag2.getAllNodes()).map((n) => [n.id, n]));
|
|
98
|
+
const added = Array.from(nodes2.keys()).filter((k) => !nodes1.has(k));
|
|
99
|
+
const removed = Array.from(nodes1.keys()).filter((k) => !nodes2.has(k));
|
|
100
|
+
// For modified, we'll check if the data has changed for nodes that exist in both
|
|
101
|
+
const modified = [];
|
|
102
|
+
for (const [id, node1] of Array.from(nodes1.entries())) {
|
|
103
|
+
const node2 = nodes2.get(id);
|
|
104
|
+
if (node2 && node1.data !== node2.data) {
|
|
105
|
+
modified.push(id);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return { added, removed, modified };
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
exports.MerkleDAG = MerkleDAG;
|
|
112
|
+
//# sourceMappingURL=merkle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"merkle.js","sourceRoot":"","sources":["../../src/sync/merkle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
export declare class FileSynchronizer {
|
|
2
|
+
private fileHashes;
|
|
3
|
+
private merkleDAG;
|
|
4
|
+
private rootDir;
|
|
5
|
+
private snapshotPath;
|
|
6
|
+
private ignorePatterns;
|
|
7
|
+
constructor(rootDir: string, ignorePatterns?: string[]);
|
|
8
|
+
private getSnapshotPath;
|
|
9
|
+
private hashFile;
|
|
10
|
+
private generateFileHashes;
|
|
11
|
+
private shouldIgnore;
|
|
12
|
+
private matchPattern;
|
|
13
|
+
private simpleGlobMatch;
|
|
14
|
+
private buildMerkleDAG;
|
|
15
|
+
initialize(): Promise<void>;
|
|
16
|
+
checkForChanges(): Promise<{
|
|
17
|
+
added: string[];
|
|
18
|
+
removed: string[];
|
|
19
|
+
modified: string[];
|
|
20
|
+
}>;
|
|
21
|
+
private compareStates;
|
|
22
|
+
getFileHash(filePath: string): string | undefined;
|
|
23
|
+
private saveSnapshot;
|
|
24
|
+
private loadSnapshot;
|
|
25
|
+
/**
|
|
26
|
+
* Delete snapshot file for a given codebase path
|
|
27
|
+
*/
|
|
28
|
+
static deleteSnapshot(codebasePath: string): Promise<void>;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=synchronizer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"synchronizer.d.ts","sourceRoot":"","sources":["../../src/sync/synchronizer.ts"],"names":[],"mappings":"AAMA,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,UAAU,CAAsB;IACxC,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,cAAc,CAAW;gBAErB,OAAO,EAAE,MAAM,EAAE,cAAc,GAAE,MAAM,EAAO;IAQ1D,OAAO,CAAC,eAAe;YAUT,QAAQ;YAUR,kBAAkB;IA8DhC,OAAO,CAAC,YAAY;IA+DpB,OAAO,CAAC,YAAY;IAqCpB,OAAO,CAAC,eAAe;IAYvB,OAAO,CAAC,cAAc;IAsBT,UAAU;IASV,eAAe,IAAI,OAAO,CAAC;QACtC,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,QAAQ,EAAE,MAAM,EAAE,CAAC;KACpB,CAAC;IAoCF,OAAO,CAAC,aAAa;IA6Bd,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS;YAI1C,YAAY;YAmBZ,YAAY;IAgC1B;;OAEG;WACU,cAAc,CAAC,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;CA2BjE"}
|