@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.
Files changed (88) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +354 -0
  3. package/dist/.tsbuildinfo +1 -0
  4. package/dist/context.d.ts +276 -0
  5. package/dist/context.d.ts.map +1 -0
  6. package/dist/context.js +1177 -0
  7. package/dist/context.js.map +1 -0
  8. package/dist/embedding/base-embedding.d.ts +51 -0
  9. package/dist/embedding/base-embedding.d.ts.map +1 -0
  10. package/dist/embedding/base-embedding.js +36 -0
  11. package/dist/embedding/base-embedding.js.map +1 -0
  12. package/dist/embedding/gemini-embedding.d.ts +53 -0
  13. package/dist/embedding/gemini-embedding.d.ts.map +1 -0
  14. package/dist/embedding/gemini-embedding.js +154 -0
  15. package/dist/embedding/gemini-embedding.js.map +1 -0
  16. package/dist/embedding/index.d.ts +6 -0
  17. package/dist/embedding/index.d.ts.map +1 -0
  18. package/dist/embedding/index.js +24 -0
  19. package/dist/embedding/index.js.map +1 -0
  20. package/dist/embedding/ollama-embedding.d.ts +55 -0
  21. package/dist/embedding/ollama-embedding.d.ts.map +1 -0
  22. package/dist/embedding/ollama-embedding.js +193 -0
  23. package/dist/embedding/ollama-embedding.js.map +1 -0
  24. package/dist/embedding/openai-embedding.d.ts +36 -0
  25. package/dist/embedding/openai-embedding.d.ts.map +1 -0
  26. package/dist/embedding/openai-embedding.js +161 -0
  27. package/dist/embedding/openai-embedding.js.map +1 -0
  28. package/dist/embedding/voyageai-embedding.d.ts +44 -0
  29. package/dist/embedding/voyageai-embedding.d.ts.map +1 -0
  30. package/dist/embedding/voyageai-embedding.js +227 -0
  31. package/dist/embedding/voyageai-embedding.js.map +1 -0
  32. package/dist/index.d.ts +8 -0
  33. package/dist/index.d.ts.map +1 -0
  34. package/dist/index.js +24 -0
  35. package/dist/index.js.map +1 -0
  36. package/dist/splitter/ast-splitter.d.ts +22 -0
  37. package/dist/splitter/ast-splitter.d.ts.map +1 -0
  38. package/dist/splitter/ast-splitter.js +308 -0
  39. package/dist/splitter/ast-splitter.js.map +1 -0
  40. package/dist/splitter/index.d.ts +41 -0
  41. package/dist/splitter/index.d.ts.map +1 -0
  42. package/dist/splitter/index.js +27 -0
  43. package/dist/splitter/index.js.map +1 -0
  44. package/dist/splitter/langchain-splitter.d.ts +13 -0
  45. package/dist/splitter/langchain-splitter.d.ts.map +1 -0
  46. package/dist/splitter/langchain-splitter.js +118 -0
  47. package/dist/splitter/langchain-splitter.js.map +1 -0
  48. package/dist/sync/merkle.d.ts +30 -0
  49. package/dist/sync/merkle.d.ts.map +1 -0
  50. package/dist/sync/merkle.js +112 -0
  51. package/dist/sync/merkle.js.map +1 -0
  52. package/dist/sync/synchronizer.d.ts +30 -0
  53. package/dist/sync/synchronizer.d.ts.map +1 -0
  54. package/dist/sync/synchronizer.js +347 -0
  55. package/dist/sync/synchronizer.js.map +1 -0
  56. package/dist/types.d.ts +14 -0
  57. package/dist/types.d.ts.map +1 -0
  58. package/dist/types.js +3 -0
  59. package/dist/types.js.map +1 -0
  60. package/dist/utils/env-manager.d.ts +19 -0
  61. package/dist/utils/env-manager.d.ts.map +1 -0
  62. package/dist/utils/env-manager.js +125 -0
  63. package/dist/utils/env-manager.js.map +1 -0
  64. package/dist/utils/index.d.ts +2 -0
  65. package/dist/utils/index.d.ts.map +1 -0
  66. package/dist/utils/index.js +7 -0
  67. package/dist/utils/index.js.map +1 -0
  68. package/dist/vectordb/index.d.ts +5 -0
  69. package/dist/vectordb/index.d.ts.map +1 -0
  70. package/dist/vectordb/index.js +14 -0
  71. package/dist/vectordb/index.js.map +1 -0
  72. package/dist/vectordb/milvus-restful-vectordb.d.ts +75 -0
  73. package/dist/vectordb/milvus-restful-vectordb.d.ts.map +1 -0
  74. package/dist/vectordb/milvus-restful-vectordb.js +728 -0
  75. package/dist/vectordb/milvus-restful-vectordb.js.map +1 -0
  76. package/dist/vectordb/milvus-vectordb.d.ts +60 -0
  77. package/dist/vectordb/milvus-vectordb.d.ts.map +1 -0
  78. package/dist/vectordb/milvus-vectordb.js +662 -0
  79. package/dist/vectordb/milvus-vectordb.js.map +1 -0
  80. package/dist/vectordb/types.d.ts +120 -0
  81. package/dist/vectordb/types.d.ts.map +1 -0
  82. package/dist/vectordb/types.js +9 -0
  83. package/dist/vectordb/types.js.map +1 -0
  84. package/dist/vectordb/zilliz-utils.d.ts +135 -0
  85. package/dist/vectordb/zilliz-utils.d.ts.map +1 -0
  86. package/dist/vectordb/zilliz-utils.js +197 -0
  87. package/dist/vectordb/zilliz-utils.js.map +1 -0
  88. 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"}