@gitsense/gscb-git-tools 0.6.0 → 0.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/dist/cjs/common/logger.js +39 -14
- package/dist/cjs/common/logger.js.map +1 -1
- package/dist/cjs/importer/chat-manager/chat-manager.js +7 -7
- package/dist/cjs/importer/chat-manager/chat-manager.js.map +1 -1
- package/dist/cjs/importer/chat-manager/hierarchy-manager.js +10 -7
- package/dist/cjs/importer/chat-manager/hierarchy-manager.js.map +1 -1
- package/dist/cjs/importer/core/directory-processor.js +16 -9
- package/dist/cjs/importer/core/directory-processor.js.map +1 -1
- package/dist/cjs/importer/core/import-processor.js +70 -6
- package/dist/cjs/importer/core/import-processor.js.map +1 -1
- package/dist/cjs/importer/core/importer.js +26 -7
- package/dist/cjs/importer/core/importer.js.map +1 -1
- package/dist/cjs/importer/file-processor.js +72 -40
- package/dist/cjs/importer/file-processor.js.map +1 -1
- package/dist/cjs/importer/tree-processor.js +35 -8
- package/dist/cjs/importer/tree-processor.js.map +1 -1
- package/dist/esm/common/logger.js +39 -14
- package/dist/esm/common/logger.js.map +1 -1
- package/dist/esm/importer/chat-manager/chat-manager.js +7 -7
- package/dist/esm/importer/chat-manager/chat-manager.js.map +1 -1
- package/dist/esm/importer/chat-manager/hierarchy-manager.js +10 -7
- package/dist/esm/importer/chat-manager/hierarchy-manager.js.map +1 -1
- package/dist/esm/importer/core/directory-processor.js +16 -9
- package/dist/esm/importer/core/directory-processor.js.map +1 -1
- package/dist/esm/importer/core/import-processor.js +70 -6
- package/dist/esm/importer/core/import-processor.js.map +1 -1
- package/dist/esm/importer/core/importer.js +26 -7
- package/dist/esm/importer/core/importer.js.map +1 -1
- package/dist/esm/importer/file-processor.js +72 -40
- package/dist/esm/importer/file-processor.js.map +1 -1
- package/dist/esm/importer/tree-processor.js +35 -8
- package/dist/esm/importer/tree-processor.js.map +1 -1
- package/dist/index.d.ts +48 -26
- package/package.json +2 -2
|
@@ -10,13 +10,14 @@ var path__default = /*#__PURE__*/_interopDefault(path);
|
|
|
10
10
|
|
|
11
11
|
/*
|
|
12
12
|
* Component: File Processor
|
|
13
|
-
* Block-UUID:
|
|
14
|
-
* Parent-UUID:
|
|
15
|
-
* Version: 5.
|
|
16
|
-
* Description:
|
|
13
|
+
* Block-UUID: e6936ca9-9ce1-429c-b1c8-080f62c654f9
|
|
14
|
+
* Parent-UUID: b4e137b5-4954-4a9f-b3ef-c87d0a75efc9
|
|
15
|
+
* Version: 5.5.0
|
|
16
|
+
* Description: Fix double file read by returning token count from create/update methods
|
|
17
17
|
* Language: TypeScript
|
|
18
18
|
* Created-at: 2025-09-18T21:48:15.228Z
|
|
19
|
-
*
|
|
19
|
+
* Updated-at: 2026-05-13T15:00:00.000Z
|
|
20
|
+
* Authors: Claude 3.5 Sonnet (v3.0.0), Bard, together.ai - DeepSeek v3 (v3.3.0), together.ai - DeepSeek v3 (v4.0.0), together.ai - DeepSeek v3 (v5.0.0), Claude 3.7 Sonnet (v5.1.0), Qwen 3 Coder 480B - Cerebras (v5.2.0), Claude 4.0 Sonnet (v5.3.0), GLM-4.7 (v5.4.0), GLM-4.7 (v5.5.0)
|
|
20
21
|
*/
|
|
21
22
|
class FileProcessor {
|
|
22
23
|
dbClient;
|
|
@@ -46,26 +47,84 @@ class FileProcessor {
|
|
|
46
47
|
const wordCount = text.split(/\s+/).filter(Boolean).length;
|
|
47
48
|
return Math.ceil(wordCount * 1.33);
|
|
48
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Determines if a file should be skipped and returns the reason.
|
|
52
|
+
*/
|
|
53
|
+
async getSkipReason(filePath) {
|
|
54
|
+
const { skipPatterns, includePatterns, skipBinaryFiles, maxFileSize } = this.options;
|
|
55
|
+
// Check against skip patterns first (fastest check)
|
|
56
|
+
if (skipPatterns?.some(pattern => pattern.test(filePath))) {
|
|
57
|
+
return 'pattern';
|
|
58
|
+
}
|
|
59
|
+
// Check if file is binary (if skipBinaryFiles is enabled)
|
|
60
|
+
if (skipBinaryFiles) {
|
|
61
|
+
try {
|
|
62
|
+
const isBinary = await gscbUtils.FSUtils.isBinaryFile(filePath);
|
|
63
|
+
if (isBinary) {
|
|
64
|
+
return 'binary';
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
catch (error) {
|
|
68
|
+
this.logger.log(`Error checking if file '${filePath}' is binary: ${error instanceof Error ? error.message : String(error)}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Check against include patterns if specified
|
|
72
|
+
if (includePatterns?.length && !includePatterns.some(pattern => pattern.test(filePath))) {
|
|
73
|
+
return 'include_pattern';
|
|
74
|
+
}
|
|
75
|
+
// Check file size
|
|
76
|
+
if (maxFileSize) {
|
|
77
|
+
try {
|
|
78
|
+
const fileInfo = await this.gitRepo.getFileInfo(filePath);
|
|
79
|
+
if (fileInfo.size > maxFileSize) {
|
|
80
|
+
return 'max_size';
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
catch (error) {
|
|
84
|
+
// If we can't get file info, we probably can't process it anyway, so skip
|
|
85
|
+
return 'file_info_error';
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
return null;
|
|
89
|
+
}
|
|
49
90
|
/**
|
|
50
91
|
* Processes a file and returns its GitCommitInfo.
|
|
51
92
|
* If the file already exists in the database, it will update the existing chat.
|
|
93
|
+
* Returns null if the file was skipped.
|
|
52
94
|
*/
|
|
53
95
|
async processFile(filePath, parentChatId, orderWeight) {
|
|
54
96
|
try {
|
|
97
|
+
// Check if we should skip this file
|
|
98
|
+
const skipReason = await this.getSkipReason(filePath);
|
|
99
|
+
if (skipReason) {
|
|
100
|
+
this.logger.emit('file_skip', { path: filePath, reason: skipReason });
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
// Emit file start event
|
|
104
|
+
this.logger.emit('file_start', { path: filePath });
|
|
55
105
|
// Check if a chat for this file already exists
|
|
56
106
|
const fileName = path__default.default.basename(filePath);
|
|
57
107
|
const childChats = await this.dbClient.getChatsByParentId(parentChatId);
|
|
58
108
|
const existingFileChat = childChats.find(chat => chat.type === 'git-blob' &&
|
|
59
109
|
chat.name === fileName &&
|
|
60
110
|
chat.meta?.path === filePath);
|
|
111
|
+
let commitInfo;
|
|
112
|
+
let fileTokens;
|
|
61
113
|
if (existingFileChat) {
|
|
62
114
|
// Update existing file chat
|
|
63
|
-
|
|
115
|
+
const result = await this.updateExistingFile(existingFileChat.id, filePath);
|
|
116
|
+
commitInfo = result.commitInfo;
|
|
117
|
+
fileTokens = result.tokens;
|
|
64
118
|
}
|
|
65
119
|
else {
|
|
66
120
|
// Create new file chat
|
|
67
|
-
|
|
121
|
+
const result = await this.createNewFile(filePath, parentChatId, orderWeight);
|
|
122
|
+
commitInfo = result.commitInfo;
|
|
123
|
+
fileTokens = result.tokens;
|
|
68
124
|
}
|
|
125
|
+
// Emit file done event with the token count we already calculated
|
|
126
|
+
this.logger.emit('file_done', { path: filePath, tokens: fileTokens });
|
|
127
|
+
return commitInfo;
|
|
69
128
|
}
|
|
70
129
|
catch (error) {
|
|
71
130
|
throw new Error(`Failed to process file '${filePath}': ${error instanceof Error ? error.message : String(error)}`);
|
|
@@ -73,6 +132,7 @@ class FileProcessor {
|
|
|
73
132
|
}
|
|
74
133
|
/**
|
|
75
134
|
* Creates a new file chat.
|
|
135
|
+
* Returns both the commit info and the calculated token count.
|
|
76
136
|
*/
|
|
77
137
|
async createNewFile(filePath, parentChatId, orderWeight) {
|
|
78
138
|
const fileInfo = await this.gitRepo.getFileInfo(filePath);
|
|
@@ -118,10 +178,11 @@ class FileProcessor {
|
|
|
118
178
|
}
|
|
119
179
|
};
|
|
120
180
|
await this.chatManager.createChat(type, path__default.default.basename(filePath), parentChatId, this.repoGroupId, meta, content.toString(), orderWeight);
|
|
121
|
-
return commitInfo;
|
|
181
|
+
return { commitInfo, tokens: contentTokens };
|
|
122
182
|
}
|
|
123
183
|
/**
|
|
124
184
|
* Updates an existing file chat.
|
|
185
|
+
* Returns both the commit info and the calculated token count.
|
|
125
186
|
*/
|
|
126
187
|
async updateExistingFile(chatId, filePath) {
|
|
127
188
|
// Get the current file information
|
|
@@ -136,7 +197,8 @@ class FileProcessor {
|
|
|
136
197
|
// Skip update if the commit hash hasn't changed
|
|
137
198
|
if (oldMeta.commit?.hash === commitInfo.hash) {
|
|
138
199
|
this.logger.log(`Skipping update for file '${filePath}' (commit hash unchanged)`);
|
|
139
|
-
|
|
200
|
+
// Return 0 tokens since we didn't actually process the content
|
|
201
|
+
return { commitInfo, tokens: 0 };
|
|
140
202
|
}
|
|
141
203
|
// Estimate tokens for content and metadata
|
|
142
204
|
const contentTokens = this.estimateTokens(content.toString());
|
|
@@ -179,37 +241,7 @@ class FileProcessor {
|
|
|
179
241
|
await this.chatManager.updateMessage(mainMessage.id, {
|
|
180
242
|
message: gitBlobMessage
|
|
181
243
|
});
|
|
182
|
-
return commitInfo;
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Determines whether a file should be skipped based on the provided patterns.
|
|
186
|
-
*/
|
|
187
|
-
async shouldSkipFile(filePath) {
|
|
188
|
-
const { skipPatterns, includePatterns, skipBinaryFiles } = this.options;
|
|
189
|
-
// Check against skip patterns first (fastest check)
|
|
190
|
-
if (skipPatterns?.some(pattern => pattern.test(filePath))) {
|
|
191
|
-
this.logger.log(`Skipping file '${filePath}' (matched skip pattern)`);
|
|
192
|
-
return true;
|
|
193
|
-
}
|
|
194
|
-
// Check if file is binary (if skipBinaryFiles is enabled)
|
|
195
|
-
if (skipBinaryFiles) {
|
|
196
|
-
try {
|
|
197
|
-
const isBinary = await gscbUtils.FSUtils.isBinaryFile(filePath);
|
|
198
|
-
if (isBinary) {
|
|
199
|
-
this.logger.log(`Skipping binary file '${filePath}'`);
|
|
200
|
-
return true;
|
|
201
|
-
}
|
|
202
|
-
}
|
|
203
|
-
catch (error) {
|
|
204
|
-
this.logger.log(`Error checking if file '${filePath}' is binary: ${error instanceof Error ? error.message : String(error)}`);
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
// Check against include patterns if specified
|
|
208
|
-
if (includePatterns?.length && !includePatterns.some(pattern => pattern.test(filePath))) {
|
|
209
|
-
this.logger.log(`Skipping file '${filePath}' (did not match include pattern)`);
|
|
210
|
-
return true;
|
|
211
|
-
}
|
|
212
|
-
return false;
|
|
244
|
+
return { commitInfo, tokens: contentTokens };
|
|
213
245
|
}
|
|
214
246
|
}
|
|
215
247
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-processor.js","sources":["../../../src/importer/file-processor.ts"],"sourcesContent":[null],"names":["path","detectLanguage","getHighlightSyntax"
|
|
1
|
+
{"version":3,"file":"file-processor.js","sources":["../../../src/importer/file-processor.ts"],"sourcesContent":[null],"names":["FSUtils","path","detectLanguage","getHighlightSyntax"],"mappings":"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"}
|
|
@@ -10,13 +10,14 @@ var path__default = /*#__PURE__*/_interopDefault(path);
|
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* Component: Tree Processor
|
|
13
|
-
* Block-UUID:
|
|
14
|
-
* Parent-UUID:
|
|
15
|
-
* Version: 4.
|
|
16
|
-
* Description:
|
|
13
|
+
* Block-UUID: a3b2c07c-a9c7-446e-978e-fba599e6e584
|
|
14
|
+
* Parent-UUID: f14f5d7f-deb7-4610-bfc7-b7f99120de05
|
|
15
|
+
* Version: 4.4.0
|
|
16
|
+
* Description: Make countFiles public so it can be called by DirectoryProcessor
|
|
17
17
|
* Language: TypeScript
|
|
18
18
|
* Created-at: 2025-09-18T21:48:15.228Z
|
|
19
|
-
*
|
|
19
|
+
* Updated-at: 2026-05-13T15:45:00.000Z
|
|
20
|
+
* Authors: Claude 3.5 Sonnet (v3.0.0), Bard, Claude 3.5 Sonnet (v3.1.0), together.ai - DeepSeek v3 (v3.3.0), Claude 3.7 Sonnet (v3.4.0), together.ai - DeepSeek v3 (v4.0.0), Qwen 3 Coder 480B - Cerebras (v4.1.0), Claude 4.0 Sonnet (v4.2.0), GLM-4.7 (v4.3.0), GLM-4.7 (v4.4.0)
|
|
20
21
|
*/
|
|
21
22
|
class TreeProcessor {
|
|
22
23
|
gitRepo;
|
|
@@ -42,6 +43,12 @@ class TreeProcessor {
|
|
|
42
43
|
*/
|
|
43
44
|
async processFiles(rootChatId) {
|
|
44
45
|
try {
|
|
46
|
+
// Pre-scan to get the total file count for the progress bar
|
|
47
|
+
const totalFiles = await this.countFiles('');
|
|
48
|
+
this.logger.emit('scan_complete', {
|
|
49
|
+
total_files: totalFiles,
|
|
50
|
+
mode: 'full'
|
|
51
|
+
});
|
|
45
52
|
// Start processing from the root directory. Empty string is root.
|
|
46
53
|
await this.processDirectory('', rootChatId);
|
|
47
54
|
}
|
|
@@ -49,6 +56,27 @@ class TreeProcessor {
|
|
|
49
56
|
throw new Error(`Failed to process files: ${error instanceof Error ? error.message : String(error)}`);
|
|
50
57
|
}
|
|
51
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Recursively counts files that will be processed (not skipped).
|
|
61
|
+
* Made public to allow DirectoryProcessor to call it.
|
|
62
|
+
*/
|
|
63
|
+
async countFiles(dirPath) {
|
|
64
|
+
const entries = await this.gitRepo.listDirectory(dirPath);
|
|
65
|
+
let count = 0;
|
|
66
|
+
for (const entry of entries) {
|
|
67
|
+
if (entry.type === 'tree') {
|
|
68
|
+
count += await this.countFiles(dirPath + (dirPath === '' ? '' : '/') + entry.path);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
// Check if we would skip this file
|
|
72
|
+
const fullPath = dirPath + (dirPath === '' ? '' : '/') + entry.path;
|
|
73
|
+
if (!(await this.fileProcessor.getSkipReason(fullPath))) {
|
|
74
|
+
count++;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return count;
|
|
79
|
+
}
|
|
52
80
|
/**
|
|
53
81
|
* Recursively processes a directory and its contents.
|
|
54
82
|
* Returns the latest GitCommitInfo for the directory.
|
|
@@ -80,12 +108,11 @@ class TreeProcessor {
|
|
|
80
108
|
}
|
|
81
109
|
for (const file of files) {
|
|
82
110
|
const { path } = file;
|
|
83
|
-
if
|
|
84
|
-
continue;
|
|
85
|
-
orderWeight += 10;
|
|
111
|
+
// FileProcessor now handles skip checks internally and returns null if skipped
|
|
86
112
|
const fileCommit = await this.fileProcessor.processFile(dirPath + (dirPath === "" ? "" : "/") + path, dirChatId, orderWeight);
|
|
87
113
|
if (fileCommit)
|
|
88
114
|
childCommits.push(fileCommit);
|
|
115
|
+
orderWeight += 10;
|
|
89
116
|
}
|
|
90
117
|
// Determine the latest commit for the directory
|
|
91
118
|
const latestCommit = utils.Utils.getLatestCommit(childCommits);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tree-processor.js","sources":["../../../src/importer/tree-processor.ts"],"sourcesContent":[null],"names":["Utils","PathUtils","path"],"mappings":";;;;;;;;;;AAAA
|
|
1
|
+
{"version":3,"file":"tree-processor.js","sources":["../../../src/importer/tree-processor.ts"],"sourcesContent":[null],"names":["Utils","PathUtils","path"],"mappings":";;;;;;;;;;AAAA;;;;;;;;;;AAUG;MAcU,aAAa,CAAA;AAED,IAAA,OAAA;AACA,IAAA,WAAA;AACA,IAAA,aAAA;AACA,IAAA,SAAA;AACA,IAAA,OAAA;AACA,IAAA,OAAA;AACA,IAAA,WAAA;AACA,IAAA,MAAA;AARrB,IAAA,WAAA,CACqB,OAAmB,EACnB,WAAwB,EACxB,aAA4B,EAC5B,SAAiB,EACjB,OAAe,EACf,OAAgB,EAChB,WAAmB,EACnB,MAAc,EAAA;QAPd,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAa,CAAA,aAAA,GAAb,aAAa;QACb,IAAS,CAAA,SAAA,GAAT,SAAS;QACT,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAW,CAAA,WAAA,GAAX,WAAW;QACX,IAAM,CAAA,MAAA,GAAN,MAAM;;AAG3B;;AAEG;IACH,MAAM,YAAY,CAAC,UAAkB,EAAA;AACjC,QAAA,IAAI;;YAEA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;AAC5C,YAAA,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE;AAC9B,gBAAA,WAAW,EAAE,UAAU;AACvB,gBAAA,IAAI,EAAE;AACT,aAAA,CAAC;;YAGF,MAAM,IAAI,CAAC,gBAAgB,CAAC,EAAE,EAAE,UAAU,CAAC;;QAC7C,OAAO,KAAK,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,CAAA,yBAAA,EAA4B,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAE,CAAA,CAAC;;;AAI7G;;;AAGG;IACI,MAAM,UAAU,CAAC,OAAe,EAAA;QACnC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC;QACzD,IAAI,KAAK,GAAG,CAAC;AAEb,QAAA,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE;AACzB,YAAA,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE;gBACvB,KAAK,IAAI,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,IAAI,OAAO,KAAK,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC;;iBAC/E;;gBAEH,MAAM,QAAQ,GAAG,OAAO,IAAI,OAAO,KAAK,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,IAAI;AACnE,gBAAA,IAAI,EAAE,MAAM,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,EAAE;AACrD,oBAAA,KAAK,EAAE;;;;AAKnB,QAAA,OAAO,KAAK;;AAGhB;;;AAGG;IACK,MAAM,gBAAgB,CAC1B,OAAe,EACf,YAAoB,EACpB,UAAkB,EAAE,EAAA;AAEpB,QAAA,IAAI;;YAEA,IAAI,WAAW,GAAG,CAAC;;AAGnB,YAAA,MAAM,SAAS,GAAG,OAAO,KAAK;AAC1B,kBAAE;AACF,kBAAE,MAAM,IAAI,CAAC,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,CAAC;;YAGjF,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC;;YAGzD,MAAM,WAAW,GAAG;iBACf,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;AACrC,iBAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAEjD,MAAM,KAAK,GAAG;iBACT,MAAM,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM;AACrC,iBAAA,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;;YAGjD,MAAM,YAAY,GAAoB,EAAE;AAExC,YAAA,KAAK,MAAM,GAAG,IAAI,WAAW,EAAE;gBAC3B,WAAW,IAAI,EAAE;AAEjB,gBAAA,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAC3C,OAAO,IAAI,OAAO,KAAK,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,IAAI,EAChD,SAAS,EACT,GAAG,CAAC,GAAG,CACV;AACD,gBAAA,IAAK,WAAW;AAAG,oBAAA,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC;;AAGrD,YAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACtB,gBAAA,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI;;AAGrB,gBAAA,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,WAAW,CACnD,OAAO,IAAI,OAAO,KAAK,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,GAAG,IAAI,EAC5C,SAAS,EACT,WAAW,CACd;AAED,gBAAA,IAAK,UAAU;AAAG,oBAAA,YAAY,CAAC,IAAI,CAAC,UAAU,CAAC;gBAC/C,WAAW,IAAI,EAAE;;;YAIrB,MAAM,YAAY,GAAGA,WAAK,CAAC,eAAe,CAAC,YAAY,CAAC;AACxD,YAAA,MAAM,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC,SAAS,EAAE,OAAO,EAAE,YAAY,CAAC;AAEhF,YAAA,OAAO,YAAY;;QACrB,OAAO,KAAK,EAAE;YACZ,OAAO,CAAC,KAAK,EAAE;YACf,MAAM,IAAI,KAAK,CAAC,CAAgC,6BAAA,EAAA,OAAO,MAAM,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAE,CAAA,CAAC;;;AAI9H;;AAEG;IACH,MAAM,mBAAmB,CACrB,OAAe,EACf,YAAoB,EACpB,OAAe,EACf,WAAmB,EAAA;QAEnB,MAAM,cAAc,GAAGC,mBAAS,CAAC,SAAS,CAAC,OAAO,CAAC;QACnD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACpC,MAAM,IAAI,GAAG,UAAU;AAEvB,QAAA,MAAM,UAAU,GAAe;YAC3B,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,OAAO,EAAE,IAAI,CAAC;SACjB;AAED,QAAA,MAAM,IAAI,GAAgB;YACtB,IAAI;AACJ,YAAA,IAAI,EAAE,OAAO;AACb,YAAA,IAAI,EAAE,cAAc;AACpB,YAAA,IAAI,EAAEC,qBAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;AAC5B,YAAA,MAAM,EAAE,IAAI;AACZ,YAAA,MAAM,EAAE,IAAI;YACZ,UAAU;AACV,YAAA,MAAM,EAAE;AACJ,gBAAA,MAAM,EAAE,WAAW;AACnB,gBAAA,SAAS,EAAE,GAAG;AACd,gBAAA,UAAU,EAAE;AACf;SACJ;;AAGD,QAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,UAAU,CAC5C,IAAI,EACJA,qBAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EACtB,YAAY,EACZ,IAAI,CAAC,WAAW,EAChB,IAAI,EACJ,EAAE,EACF,WAAW,CACd;AAED,QAAA,OAAO,MAAM;;AAEpB;;;;"}
|
|
@@ -1,22 +1,42 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Component: Logger
|
|
3
|
-
* Block-UUID:
|
|
4
|
-
* Parent-UUID:
|
|
5
|
-
* Version: 1.0
|
|
6
|
-
* Purpose:
|
|
3
|
+
* Block-UUID: 7c6851c4-f157-4955-a840-11b6e8b9b513
|
|
4
|
+
* Parent-UUID: 7c3b5d3f-96bd-4626-b408-a3322720c1d3
|
|
5
|
+
* Version: 2.1.0
|
|
6
|
+
* Purpose: Ensure error messages always go to stderr, even in structured mode
|
|
7
7
|
* Language: TypeScript
|
|
8
8
|
* Created-at: 2025-03-12T18:06:11.373Z
|
|
9
|
-
*
|
|
9
|
+
* Updated-at: 2026-05-13T15:10:00.000Z
|
|
10
|
+
* Authors: OpenRouter - Gemini Flash 2.0 (v1.0.0), GLM-4.7 (v2.0.0), GLM-4.7 (v2.1.0)
|
|
10
11
|
*/
|
|
11
12
|
class Logger {
|
|
12
13
|
verbose;
|
|
13
|
-
|
|
14
|
+
structuredOutput;
|
|
15
|
+
constructor(verbose = false, structuredOutput = false) {
|
|
14
16
|
this.verbose = verbose;
|
|
17
|
+
this.structuredOutput = structuredOutput;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Emits a structured event to stdout.
|
|
21
|
+
* Only writes if structuredOutput is enabled.
|
|
22
|
+
*/
|
|
23
|
+
emit(type, data = {}) {
|
|
24
|
+
if (!this.structuredOutput)
|
|
25
|
+
return;
|
|
26
|
+
const event = {
|
|
27
|
+
type: type,
|
|
28
|
+
timestamp: new Date().toISOString(),
|
|
29
|
+
data
|
|
30
|
+
};
|
|
31
|
+
process.stdout.write(JSON.stringify(event) + '\n');
|
|
15
32
|
}
|
|
16
33
|
/**
|
|
17
34
|
* Logs messages to the console if verbose mode is enabled.
|
|
35
|
+
* Suppressed in structured mode to avoid polluting the NDJSON stream.
|
|
18
36
|
*/
|
|
19
37
|
log(message, details, isError = false) {
|
|
38
|
+
if (this.structuredOutput)
|
|
39
|
+
return;
|
|
20
40
|
if (this.verbose || isError) {
|
|
21
41
|
const timestamp = new Date().toISOString();
|
|
22
42
|
const logLevel = isError ? 'ERROR' : 'INFO';
|
|
@@ -38,10 +58,11 @@ class Logger {
|
|
|
38
58
|
}
|
|
39
59
|
/**
|
|
40
60
|
* Logs a debug message.
|
|
41
|
-
*
|
|
42
|
-
* @param details - Optional details to include in the log.
|
|
61
|
+
* Suppressed in structured mode.
|
|
43
62
|
*/
|
|
44
63
|
debug(message, details) {
|
|
64
|
+
if (this.structuredOutput)
|
|
65
|
+
return;
|
|
45
66
|
if (this.verbose) {
|
|
46
67
|
const timestamp = new Date().toISOString();
|
|
47
68
|
const fullMessage = `${timestamp} [DEBUG] ${message} ${details instanceof Error ? details.message : String(details)}`;
|
|
@@ -50,30 +71,34 @@ class Logger {
|
|
|
50
71
|
}
|
|
51
72
|
/**
|
|
52
73
|
* Logs an info message.
|
|
53
|
-
*
|
|
54
|
-
* @param details - Optional details to include in the log.
|
|
74
|
+
* Suppressed in structured mode.
|
|
55
75
|
*/
|
|
56
76
|
info(message, details) {
|
|
77
|
+
if (this.structuredOutput)
|
|
78
|
+
return;
|
|
57
79
|
const timestamp = new Date().toISOString();
|
|
58
80
|
const fullMessage = `${timestamp} [INFO] ${message} ${details instanceof Error ? details.message : String(details)}`;
|
|
59
81
|
console.log(fullMessage);
|
|
60
82
|
}
|
|
61
83
|
/**
|
|
62
84
|
* Logs a warning message.
|
|
63
|
-
*
|
|
64
|
-
* @param details - Optional details to include in the log.
|
|
85
|
+
* Suppressed in structured mode.
|
|
65
86
|
*/
|
|
66
87
|
warn(message, details) {
|
|
88
|
+
if (this.structuredOutput)
|
|
89
|
+
return;
|
|
67
90
|
const timestamp = new Date().toISOString();
|
|
68
91
|
const fullMessage = `${timestamp} [WARN] ${message} ${details instanceof Error ? details.message : String(details)}`;
|
|
69
92
|
console.warn(fullMessage);
|
|
70
93
|
}
|
|
71
94
|
/**
|
|
72
95
|
* Logs an error message.
|
|
73
|
-
*
|
|
74
|
-
*
|
|
96
|
+
* IMPORTANT: Always writes to stderr, even in structured mode.
|
|
97
|
+
* This ensures non-fatal errors (e.g., rollback failures) are visible for debugging.
|
|
75
98
|
*/
|
|
76
99
|
error(message, error) {
|
|
100
|
+
// Note: We do NOT check this.structuredOutput here.
|
|
101
|
+
// Errors should always go to stderr to ensure visibility.
|
|
77
102
|
const timestamp = new Date().toISOString();
|
|
78
103
|
let fullMessage = `${timestamp} [ERROR] ${message}`;
|
|
79
104
|
if (error) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sources":["../../../src/common/logger.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"logger.js","sources":["../../../src/common/logger.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -6,14 +6,14 @@ import { HierarchyManager } from './hierarchy-manager.js';
|
|
|
6
6
|
|
|
7
7
|
/*
|
|
8
8
|
* Component: Chat Manager
|
|
9
|
-
* Block-UUID:
|
|
10
|
-
* Parent-UUID:
|
|
11
|
-
* Version: 2.
|
|
12
|
-
* Description:
|
|
9
|
+
* Block-UUID: a403c00f-e9bb-484e-9fe7-5949891dcaea
|
|
10
|
+
* Parent-UUID: 7c963098-b2d2-439e-acf1-2682fe76ad1b
|
|
11
|
+
* Version: 2.3.0
|
|
12
|
+
* Description: Pass ChatManagerOptions to HierarchyManager to support displayRepoPath
|
|
13
13
|
* Language: TypeScript
|
|
14
14
|
* Created-at: 2025-03-15T02:19:00.075Z
|
|
15
|
-
* Updated-at:
|
|
16
|
-
* Authors: together.ai - DeepSeek v3 (v1.0.0), OpenRouter - Gemini Flash 2.0 (v1.1.0), together.ai - DeepSeek v3 (v2.0.0), Qwen 3 Coder 480B - Cerebras (v2.1.0), Qwen 3 Coder 480B - Cerebras (v2.2.0)
|
|
15
|
+
* Updated-at: 2026-05-13T20:00:00.000Z
|
|
16
|
+
* Authors: together.ai - DeepSeek v3 (v1.0.0), OpenRouter - Gemini Flash 2.0 (v1.1.0), together.ai - DeepSeek v3 (v2.0.0), Qwen 3 Coder 480B - Cerebras (v2.1.0), Qwen 3 Coder 480B - Cerebras (v2.2.0), GLM-4.7 (v2.3.0)
|
|
17
17
|
*/
|
|
18
18
|
class ChatManager {
|
|
19
19
|
dbClient;
|
|
@@ -42,7 +42,7 @@ class ChatManager {
|
|
|
42
42
|
this.groupManager = new GroupManager(dbClient, gitRepo, logger);
|
|
43
43
|
this.metadataManager = new MetadataManager(dbClient, logger, gitRepo, this);
|
|
44
44
|
this.chatCreator = new ChatCreator(dbClient, this.messageManager, logger);
|
|
45
|
-
this.hierarchyManager = new HierarchyManager(dbClient, gitRepo, this.chatCreator, this.groupManager, logger);
|
|
45
|
+
this.hierarchyManager = new HierarchyManager(dbClient, gitRepo, this.chatCreator, this.groupManager, logger, this.options);
|
|
46
46
|
}
|
|
47
47
|
/**
|
|
48
48
|
* Sets up the chat hierarchy for the repository.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chat-manager.js","sources":["../../../../src/importer/chat-manager/chat-manager.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;;;AAAA;;;;;;;;;;AAUG;MAoBU,WAAW,CAAA;AAQC,IAAA,QAAA;AACA,IAAA,OAAA;AACA,IAAA,SAAA;AACA,IAAA,QAAA;AACA,IAAA,GAAA;AACA,IAAA,OAAA;AACA,IAAA,OAAA;
|
|
1
|
+
{"version":3,"file":"chat-manager.js","sources":["../../../../src/importer/chat-manager/chat-manager.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -2,13 +2,14 @@ import { GROUP_TYPE_GIT_REPOS, GROUP_TYPE_GIT_REPO_OWNER, GROUP_TYPE_GIT_REPO, C
|
|
|
2
2
|
|
|
3
3
|
/**
|
|
4
4
|
* Component: Hierarchy Manager
|
|
5
|
-
* Block-UUID:
|
|
6
|
-
* Parent-UUID:
|
|
7
|
-
* Version: 1.
|
|
8
|
-
* Purpose: Handles chat hierarchy setup and management
|
|
5
|
+
* Block-UUID: 55b9ea97-d125-476d-bae9-2863d950677a
|
|
6
|
+
* Parent-UUID: 86f92ea3-236f-4496-ba2a-da9e860bf9ea
|
|
7
|
+
* Version: 1.1.0
|
|
8
|
+
* Purpose: Handles chat hierarchy setup and management, supports displayRepoPath override
|
|
9
9
|
* Language: TypeScript
|
|
10
10
|
* Created-at: 2025-03-15T02:12:20.075Z
|
|
11
|
-
*
|
|
11
|
+
* Updated-at: 2026-05-13T19:58:00.000Z
|
|
12
|
+
* Authors: together.ai - DeepSeek v3 (v1.0.0), GLM-4.7 (v1.1.0)
|
|
12
13
|
*/
|
|
13
14
|
class HierarchyManager {
|
|
14
15
|
dbClient;
|
|
@@ -16,12 +17,14 @@ class HierarchyManager {
|
|
|
16
17
|
chatCreator;
|
|
17
18
|
groupManager;
|
|
18
19
|
logger;
|
|
19
|
-
|
|
20
|
+
options;
|
|
21
|
+
constructor(dbClient, gitRepo, chatCreator, groupManager, logger, options = {}) {
|
|
20
22
|
this.dbClient = dbClient;
|
|
21
23
|
this.gitRepo = gitRepo;
|
|
22
24
|
this.chatCreator = chatCreator;
|
|
23
25
|
this.groupManager = groupManager;
|
|
24
26
|
this.logger = logger;
|
|
27
|
+
this.options = options;
|
|
25
28
|
}
|
|
26
29
|
/**
|
|
27
30
|
* Sets up the chat hierarchy for the repository.
|
|
@@ -84,7 +87,7 @@ class HierarchyManager {
|
|
|
84
87
|
type: CHAT_TYPE_GIT_REPO,
|
|
85
88
|
owner: repoOwner,
|
|
86
89
|
name: repoName,
|
|
87
|
-
path: repo.path
|
|
90
|
+
path: this.options.displayRepoPath || repo.path
|
|
88
91
|
};
|
|
89
92
|
if (existingChat) {
|
|
90
93
|
return existingChat.id;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hierarchy-manager.js","sources":["../../../../src/importer/chat-manager/hierarchy-manager.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA
|
|
1
|
+
{"version":3,"file":"hierarchy-manager.js","sources":["../../../../src/importer/chat-manager/hierarchy-manager.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -3,17 +3,17 @@ import { Utils } from './utils.js';
|
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Component: Directory Processor
|
|
6
|
-
* Block-UUID:
|
|
7
|
-
* Parent-UUID:
|
|
8
|
-
* Version: 8.
|
|
9
|
-
* Purpose:
|
|
6
|
+
* Block-UUID: 5b8e0c49-f2f2-404f-ab76-ce812e2e3496
|
|
7
|
+
* Parent-UUID: 8a9f5d7f-deb7-4610-bfc7-b7f99120de05
|
|
8
|
+
* Version: 8.2.0
|
|
9
|
+
* Purpose: Emit scan_complete event and remove redundant skip guard
|
|
10
10
|
* Language: TypeScript
|
|
11
11
|
* Created-at: 2025-03-15T05:58:33.811Z
|
|
12
|
-
* Updated-at:
|
|
12
|
+
* Updated-at: 2026-05-13T15:48:00.000Z
|
|
13
13
|
* Authors: Claude 3.5 Sonnet (v5.0.1), Bard, Claude 3.5 Sonnet (v6.0.0), Claude 3.7 Sonnet (v6.3.0),
|
|
14
14
|
* OpenRouter - Gemini Flash 2.0 (v6.4.0), OpenRouter - Gemini Flash 2.0 (v6.5.0),
|
|
15
15
|
* together.ai - DeepSeek v3 (v6.6.0), Claude 3.7 Sonnet (v6.7.0), together.ai - DeepSeek v3 (v6.8.0),
|
|
16
|
-
* together.ai - DeepSeek v3 (v7.0.0), together.ai - DeepSeek v3 (v8.0.0)
|
|
16
|
+
* together.ai - DeepSeek v3 (v7.0.0), together.ai - DeepSeek v3 (v8.0.0), GLM-4.7 (v8.1.0), GLM-4.7 (v8.2.0)
|
|
17
17
|
*/
|
|
18
18
|
class DirectoryProcessor {
|
|
19
19
|
dbClient;
|
|
@@ -44,6 +44,12 @@ class DirectoryProcessor {
|
|
|
44
44
|
*/
|
|
45
45
|
async processFiles(rootChatId) {
|
|
46
46
|
try {
|
|
47
|
+
// Pre-scan to get the total file count for the progress bar
|
|
48
|
+
const totalFiles = await this.treeProcessor.countFiles('');
|
|
49
|
+
this.logger.emit('scan_complete', {
|
|
50
|
+
total_files: totalFiles,
|
|
51
|
+
mode: 'full'
|
|
52
|
+
});
|
|
47
53
|
// Start processing from the root directory. Empty string is root.
|
|
48
54
|
return await this.processDirectory('', rootChatId);
|
|
49
55
|
}
|
|
@@ -64,7 +70,7 @@ class DirectoryProcessor {
|
|
|
64
70
|
const normalizedPath = this.normalizePath(entry.path);
|
|
65
71
|
// Skip files that match skip patterns if they're being added or modified
|
|
66
72
|
if (entry.entryType === 'file' && entry.changeType !== 'delete' &&
|
|
67
|
-
await this.fileProcessor.
|
|
73
|
+
await this.fileProcessor.getSkipReason(normalizedPath)) {
|
|
68
74
|
this.logger.log(`Skipping file: ${normalizedPath}`);
|
|
69
75
|
continue;
|
|
70
76
|
}
|
|
@@ -148,8 +154,9 @@ class DirectoryProcessor {
|
|
|
148
154
|
}
|
|
149
155
|
for (const file of files) {
|
|
150
156
|
const { path } = file;
|
|
151
|
-
|
|
152
|
-
|
|
157
|
+
// Skip check removed: FileProcessor.processFile handles this and emits file_skip events.
|
|
158
|
+
// if (await this.fileProcessor.getSkipReason(path))
|
|
159
|
+
// continue;
|
|
153
160
|
orderWeight += 10;
|
|
154
161
|
const fileCommit = await this.fileProcessor.processFile(dirPath + (dirPath === '' ? '' : '/') + path, dirChatId, orderWeight);
|
|
155
162
|
if (fileCommit)
|