@gitsense/gscb-git-tools 0.2.0 → 0.3.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 +97 -0
- package/dist/cjs/common/logger.js.map +1 -0
- package/dist/cjs/common/metadata-manager.js +196 -0
- package/dist/cjs/common/metadata-manager.js.map +1 -0
- package/dist/cjs/importer/chat-manager/chat-creator.js +90 -0
- package/dist/cjs/importer/chat-manager/chat-creator.js.map +1 -0
- package/dist/cjs/importer/chat-manager/chat-manager.js +179 -0
- package/dist/cjs/importer/chat-manager/chat-manager.js.map +1 -0
- package/dist/cjs/importer/chat-manager/constants.js +66 -0
- package/dist/cjs/importer/chat-manager/constants.js.map +1 -0
- package/dist/cjs/importer/chat-manager/group-manager.js +56 -0
- package/dist/cjs/importer/chat-manager/group-manager.js.map +1 -0
- package/dist/cjs/importer/chat-manager/hierarchy-manager.js +115 -0
- package/dist/cjs/importer/chat-manager/hierarchy-manager.js.map +1 -0
- package/dist/cjs/importer/chat-manager/message-manager.js +126 -0
- package/dist/cjs/importer/chat-manager/message-manager.js.map +1 -0
- package/dist/cjs/importer/constants.js +30 -0
- package/dist/cjs/importer/constants.js.map +1 -0
- package/dist/cjs/importer/core/directory-processor.js +343 -0
- package/dist/cjs/importer/core/directory-processor.js.map +1 -0
- package/dist/cjs/importer/core/error-handler.js +64 -0
- package/dist/cjs/importer/core/error-handler.js.map +1 -0
- package/dist/cjs/importer/core/import-processor.js +167 -0
- package/dist/cjs/importer/core/import-processor.js.map +1 -0
- package/dist/cjs/importer/core/importer.js +135 -0
- package/dist/cjs/importer/core/importer.js.map +1 -0
- package/dist/cjs/importer/core/utils.js +66 -0
- package/dist/cjs/importer/core/utils.js.map +1 -0
- package/dist/cjs/importer/file-processor.js +199 -0
- package/dist/cjs/importer/file-processor.js.map +1 -0
- package/dist/cjs/importer/language-utils.js +286 -0
- package/dist/cjs/importer/language-utils.js.map +1 -0
- package/dist/cjs/importer/tree-processor.js +119 -0
- package/dist/cjs/importer/tree-processor.js.map +1 -0
- package/dist/cjs/index.js +12 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/esm/common/logger.js +95 -0
- package/dist/esm/common/logger.js.map +1 -0
- package/dist/esm/common/metadata-manager.js +194 -0
- package/dist/esm/common/metadata-manager.js.map +1 -0
- package/dist/esm/importer/chat-manager/chat-creator.js +88 -0
- package/dist/esm/importer/chat-manager/chat-creator.js.map +1 -0
- package/dist/esm/importer/chat-manager/chat-manager.js +177 -0
- package/dist/esm/importer/chat-manager/chat-manager.js.map +1 -0
- package/dist/esm/importer/chat-manager/constants.js +48 -0
- package/dist/esm/importer/chat-manager/constants.js.map +1 -0
- package/dist/esm/importer/chat-manager/group-manager.js +54 -0
- package/dist/esm/importer/chat-manager/group-manager.js.map +1 -0
- package/dist/esm/importer/chat-manager/hierarchy-manager.js +113 -0
- package/dist/esm/importer/chat-manager/hierarchy-manager.js.map +1 -0
- package/dist/esm/importer/chat-manager/message-manager.js +124 -0
- package/dist/esm/importer/chat-manager/message-manager.js.map +1 -0
- package/dist/esm/importer/constants.js +28 -0
- package/dist/esm/importer/constants.js.map +1 -0
- package/dist/esm/importer/core/directory-processor.js +337 -0
- package/dist/esm/importer/core/directory-processor.js.map +1 -0
- package/dist/esm/importer/core/error-handler.js +62 -0
- package/dist/esm/importer/core/error-handler.js.map +1 -0
- package/dist/esm/importer/core/import-processor.js +165 -0
- package/dist/esm/importer/core/import-processor.js.map +1 -0
- package/dist/esm/importer/core/importer.js +133 -0
- package/dist/esm/importer/core/importer.js.map +1 -0
- package/dist/esm/importer/core/utils.js +64 -0
- package/dist/esm/importer/core/utils.js.map +1 -0
- package/dist/esm/importer/file-processor.js +193 -0
- package/dist/esm/importer/file-processor.js.map +1 -0
- package/dist/esm/importer/language-utils.js +279 -0
- package/dist/esm/importer/language-utils.js.map +1 -0
- package/dist/esm/importer/tree-processor.js +113 -0
- package/dist/esm/importer/tree-processor.js.map +1 -0
- package/dist/esm/index.js +4 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/index.d.ts +215 -0
- package/package.json +1 -1
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Component: Atomic Metadata Update
|
|
3
|
+
* Block-UUID: 2fb51bba-6caf-4ae7-b937-3b2b468435fa
|
|
4
|
+
* Parent-UUID: 1e2f3a4b-5c6d-7e8f-9a0b-1c2d3e4f5a6b
|
|
5
|
+
* Version: 2.1.0
|
|
6
|
+
* Purpose: Updates chat metadata atomically with transaction awareness
|
|
7
|
+
* Language: TypeScript
|
|
8
|
+
* Created-at: 2025-03-17T02:36:22.165Z
|
|
9
|
+
* Authors: together.ai - DeepSeek v3 (v1.0.0), together.ai - DeepSeek v3 (v1.1.0), together.ai - DeepSeek v3 (v2.0.0), Claude 3.7 Sonnet (v2.1.0)
|
|
10
|
+
*/
|
|
11
|
+
class MetadataManager {
|
|
12
|
+
dbClient;
|
|
13
|
+
logger;
|
|
14
|
+
gitRepo;
|
|
15
|
+
chatManager;
|
|
16
|
+
constructor(dbClient, logger, gitRepo, chatManager) {
|
|
17
|
+
this.dbClient = dbClient;
|
|
18
|
+
this.logger = logger;
|
|
19
|
+
this.gitRepo = gitRepo;
|
|
20
|
+
this.chatManager = chatManager;
|
|
21
|
+
}
|
|
22
|
+
// ====================
|
|
23
|
+
// Core Metadata Methods
|
|
24
|
+
// ====================
|
|
25
|
+
/**
|
|
26
|
+
* Validates metadata before updates.
|
|
27
|
+
*/
|
|
28
|
+
validateMetadata(meta) {
|
|
29
|
+
if (!meta.type)
|
|
30
|
+
throw new Error('Metadata type is required');
|
|
31
|
+
if (!meta.status)
|
|
32
|
+
throw new Error('Metadata status is required');
|
|
33
|
+
if (!meta.importStartedAt)
|
|
34
|
+
throw new Error('Import start time is required');
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Updates chat metadata atomically.
|
|
38
|
+
*/
|
|
39
|
+
async updateChatMetadata(chatId, updates) {
|
|
40
|
+
if (!this.chatManager)
|
|
41
|
+
throw new Error('Chat manager not defined. Unable to update metadata atomically.');
|
|
42
|
+
try {
|
|
43
|
+
// Get the current metadata
|
|
44
|
+
const chat = await this.dbClient.getChatById(chatId);
|
|
45
|
+
if (!chat)
|
|
46
|
+
throw new Error(`Chat with ID ${chatId} not found`);
|
|
47
|
+
// Merge updates with existing metadata
|
|
48
|
+
const updatedMeta = { ...chat.meta, ...updates };
|
|
49
|
+
this.validateMetadata(updatedMeta);
|
|
50
|
+
// Update chat metadata
|
|
51
|
+
await this.dbClient.updateChatMeta(chatId, updatedMeta);
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
throw new Error(`Failed to update metadata atomically: ${error instanceof Error ? error.message : String(error)}`);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Rolls back metadata updates if an error occurs.
|
|
59
|
+
*/
|
|
60
|
+
async rollbackMetadata(chatId, originalMeta) {
|
|
61
|
+
if (!this.chatManager)
|
|
62
|
+
throw new Error('Chat manager not defined. Unable to rollback metadata.');
|
|
63
|
+
try {
|
|
64
|
+
await this.dbClient.updateChatMeta(chatId, originalMeta);
|
|
65
|
+
const metaMessage = await this.chatManager.getMessageByChatIdAndType(chatId, 'chat-meta');
|
|
66
|
+
await this.dbClient.updateMessage(metaMessage.id, {
|
|
67
|
+
message: JSON.stringify(originalMeta, null, 2)
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
this.logger.error(`Failed to rollback metadata for chat ${chatId}: ${error instanceof Error ? error.message : String(error)}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// ====================
|
|
75
|
+
// Import Lifecycle Methods
|
|
76
|
+
// ====================
|
|
77
|
+
/**
|
|
78
|
+
* Marks a chat as starting an import.
|
|
79
|
+
*/
|
|
80
|
+
async markImportStarted(chatId, ref) {
|
|
81
|
+
const now = new Date().toISOString();
|
|
82
|
+
const updates = {
|
|
83
|
+
status: 'importing',
|
|
84
|
+
importStartedAt: now,
|
|
85
|
+
};
|
|
86
|
+
if (ref) {
|
|
87
|
+
if (!this.gitRepo)
|
|
88
|
+
throw new Error("No Git repo defined. Unable to resolve ref.");
|
|
89
|
+
const hash = await this.gitRepo.resolveRef(ref);
|
|
90
|
+
const commit = await this.gitRepo.getCommitInfo(hash);
|
|
91
|
+
updates.commit = commit;
|
|
92
|
+
}
|
|
93
|
+
await this.updateChatMetadata(chatId, updates);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Marks a chat as finished importing. For now, commitInfo is not used and will
|
|
97
|
+
* mostly be removed in future versions
|
|
98
|
+
*/
|
|
99
|
+
async markImportFinished(chatId, commitInfo) {
|
|
100
|
+
const now = new Date().toISOString();
|
|
101
|
+
const updates = {
|
|
102
|
+
status: 'imported',
|
|
103
|
+
importFinishedAt: now,
|
|
104
|
+
};
|
|
105
|
+
await this.updateChatMetadata(chatId, updates);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Marks a chat as failed to import.
|
|
109
|
+
*/
|
|
110
|
+
async markImportFailed(chatId, error) {
|
|
111
|
+
const now = new Date().toISOString();
|
|
112
|
+
const updates = {
|
|
113
|
+
status: 'import-failed',
|
|
114
|
+
importFinishedAt: now,
|
|
115
|
+
error: error.message
|
|
116
|
+
};
|
|
117
|
+
await this.updateChatMetadata(chatId, updates);
|
|
118
|
+
}
|
|
119
|
+
// ====================
|
|
120
|
+
// File and Directory Methods
|
|
121
|
+
// ====================
|
|
122
|
+
/**
|
|
123
|
+
* Updates metadata for a file chat.
|
|
124
|
+
*/
|
|
125
|
+
async updateFileMetadata(chatId, filePath, commitInfo) {
|
|
126
|
+
const now = new Date().toISOString();
|
|
127
|
+
const updates = {
|
|
128
|
+
path: filePath,
|
|
129
|
+
commit: commitInfo,
|
|
130
|
+
status: 'imported',
|
|
131
|
+
importFinishedAt: now
|
|
132
|
+
};
|
|
133
|
+
await this.updateChatMetadata(chatId, updates);
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Updates metadata for a directory chat.
|
|
137
|
+
*/
|
|
138
|
+
async updateDirectoryMetadata(chatId, path, commitInfo) {
|
|
139
|
+
const now = new Date().toISOString();
|
|
140
|
+
const updates = {
|
|
141
|
+
status: 'imported',
|
|
142
|
+
importFinishedAt: now
|
|
143
|
+
};
|
|
144
|
+
if (commitInfo && path !== '.' && path !== '')
|
|
145
|
+
updates.commit = commitInfo;
|
|
146
|
+
await this.updateChatMetadata(chatId, updates);
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Marks a file as deleted.
|
|
150
|
+
*/
|
|
151
|
+
async markFileAsDeleted(chatId, filePath) {
|
|
152
|
+
const now = new Date().toISOString();
|
|
153
|
+
const updates = {
|
|
154
|
+
status: 'deleted',
|
|
155
|
+
deletedAt: now
|
|
156
|
+
};
|
|
157
|
+
await this.updateChatMetadata(chatId, updates);
|
|
158
|
+
}
|
|
159
|
+
/**
|
|
160
|
+
* Marks a directory as deleted.
|
|
161
|
+
*/
|
|
162
|
+
async markDirectoryAsDeleted(chatId, dirPath) {
|
|
163
|
+
const now = new Date().toISOString();
|
|
164
|
+
const updates = {
|
|
165
|
+
status: 'deleted',
|
|
166
|
+
deletedAt: now
|
|
167
|
+
};
|
|
168
|
+
await this.updateChatMetadata(chatId, updates);
|
|
169
|
+
}
|
|
170
|
+
// ====================
|
|
171
|
+
// History Methods
|
|
172
|
+
// ====================
|
|
173
|
+
/**
|
|
174
|
+
* Adds an entry to the chat history.
|
|
175
|
+
*/
|
|
176
|
+
async addHistoryEntry(chatId, entry) {
|
|
177
|
+
if (!this.chatManager)
|
|
178
|
+
throw new Error('Chat manager not defined. Unable to add history entry.');
|
|
179
|
+
try {
|
|
180
|
+
const historyMessage = await this.chatManager.getMessageByChatIdAndType(chatId, 'chat-history');
|
|
181
|
+
const history = JSON.parse(historyMessage.message || '[]');
|
|
182
|
+
history.push(entry);
|
|
183
|
+
await this.dbClient.updateMessage(historyMessage.id, {
|
|
184
|
+
message: JSON.stringify(history, null, 2)
|
|
185
|
+
});
|
|
186
|
+
}
|
|
187
|
+
catch (error) {
|
|
188
|
+
this.logger.error(`Failed to add history entry for chat ${chatId}: ${error instanceof Error ? error.message : String(error)}`);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
export { MetadataManager };
|
|
194
|
+
//# sourceMappingURL=metadata-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"metadata-manager.js","sources":["../../../src/common/metadata-manager.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import { DEFAULT_IS_DEFAULT_NAME, DEFAULT_MODEL, CHAT_OWNER_SYSTEM, CHAT_VISIBILITY_PUBLIC } from './constants.js';
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Component: Chat Creator
|
|
5
|
+
* Block-UUID: 3c4d5e6f-7a8b-9c0d-1e2f-3a4b5c6d7e8f
|
|
6
|
+
* Parent-UUID: N/A
|
|
7
|
+
* Version: 1.0.0
|
|
8
|
+
* Purpose: Handles chat creation and updates
|
|
9
|
+
* Language: TypeScript
|
|
10
|
+
* Created-at: 2025-03-15T02:11:40.075Z
|
|
11
|
+
* Authors: together.ai - DeepSeek v3 (v1.0.0)
|
|
12
|
+
*/
|
|
13
|
+
class ChatCreator {
|
|
14
|
+
dbClient;
|
|
15
|
+
messageManager;
|
|
16
|
+
logger;
|
|
17
|
+
askGitReposPromptId = null;
|
|
18
|
+
constructor(dbClient, messageManager, logger) {
|
|
19
|
+
this.dbClient = dbClient;
|
|
20
|
+
this.messageManager = messageManager;
|
|
21
|
+
this.logger = logger;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Creates a new chat with the specified parameters and adds the required messages.
|
|
25
|
+
*/
|
|
26
|
+
async createChat(type, name, parentId, groupId, meta, mainMessage = '', orderWeight) {
|
|
27
|
+
try {
|
|
28
|
+
// Ensure the default prompt exists
|
|
29
|
+
if (this.askGitReposPromptId === null)
|
|
30
|
+
this.askGitReposPromptId = await this.ensureAskGitReposPrompt();
|
|
31
|
+
const chatData = {
|
|
32
|
+
type,
|
|
33
|
+
visibility: CHAT_VISIBILITY_PUBLIC,
|
|
34
|
+
owner: CHAT_OWNER_SYSTEM,
|
|
35
|
+
name,
|
|
36
|
+
parentId,
|
|
37
|
+
groupId,
|
|
38
|
+
promptId: this.askGitReposPromptId,
|
|
39
|
+
mainModel: DEFAULT_MODEL,
|
|
40
|
+
pinned: null,
|
|
41
|
+
protected: 0,
|
|
42
|
+
orderWeight,
|
|
43
|
+
forkedFromMsgId: null,
|
|
44
|
+
meta,
|
|
45
|
+
isDefaultName: DEFAULT_IS_DEFAULT_NAME
|
|
46
|
+
};
|
|
47
|
+
const chatId = await this.dbClient.createChat(chatData);
|
|
48
|
+
// Create the three required messages
|
|
49
|
+
const systemId = await this.messageManager.createSystemMessage(chatId);
|
|
50
|
+
//const tinyOverviewId = await this.messageManager.createTinyOverviewMessage(chatId, systemId);
|
|
51
|
+
//const shortOverviewId = await this.messageManager.createShortOverviewMessage(chatId, tinyOverviewId);
|
|
52
|
+
//const longOverviewId = await this.messageManager.createLongOverviewMessage(chatId, shortOverviewId);
|
|
53
|
+
const mainId = await this.messageManager.createMainMessage(chatId, systemId, type, mainMessage);
|
|
54
|
+
const metaId = await this.messageManager.createChatMetaMessage(chatId, mainId);
|
|
55
|
+
return chatId;
|
|
56
|
+
}
|
|
57
|
+
catch (error) {
|
|
58
|
+
throw new Error(`Failed to create chat '${name}': ${error instanceof Error ? error.message : String(error)}`);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Ensures the default prompt exists and returns its ID.
|
|
63
|
+
*/
|
|
64
|
+
async ensureAskGitReposPrompt() {
|
|
65
|
+
this.logger.log("Ensuring Ask Git Repos prompt exists");
|
|
66
|
+
try {
|
|
67
|
+
const value = 'Ask Git Repos';
|
|
68
|
+
const hash = this.dbClient.generatePromptHash(value);
|
|
69
|
+
const prompt = await this.dbClient.getPromptByHash(hash);
|
|
70
|
+
if (prompt) {
|
|
71
|
+
return prompt.id;
|
|
72
|
+
}
|
|
73
|
+
// Create the askGitRepos prompt
|
|
74
|
+
return await this.dbClient.createPrompt({
|
|
75
|
+
type: 'system',
|
|
76
|
+
name: value,
|
|
77
|
+
prompt: value,
|
|
78
|
+
meta: null
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
catch (error) {
|
|
82
|
+
throw new Error(`Failed to ensure ask Git prompt: ${error instanceof Error ? error.message : String(error)}`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
|
|
87
|
+
export { ChatCreator };
|
|
88
|
+
//# sourceMappingURL=chat-creator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-creator.js","sources":["../../../../src/importer/chat-manager/chat-creator.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;;;;;;;;AASG;MAiBU,WAAW,CAAA;AAIC,IAAA,QAAA;AACA,IAAA,cAAA;AACA,IAAA,MAAA;IALb,mBAAmB,GAAkB,IAAI;AAEjD,IAAA,WAAA,CACqB,QAAwB,EACxB,cAA8B,EAC9B,MAAc,EAAA;QAFd,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAc,CAAA,cAAA,GAAd,cAAc;QACd,IAAM,CAAA,MAAA,GAAN,MAAM;;AAG3B;;AAEG;AACH,IAAA,MAAM,UAAU,CACZ,IAAc,EACd,IAAY,EACZ,QAAgB,EAChB,OAAe,EACf,IAAS,EACT,WAAsB,GAAA,EAAE,EACpB,WAAoB,EAAA;AAExB,QAAA,IAAI;;AAEA,YAAA,IAAK,IAAI,CAAC,mBAAmB,KAAK,IAAI;gBAClC,IAAI,CAAC,mBAAmB,GAAG,MAAM,IAAI,CAAC,uBAAuB,EAAE;AAEnE,YAAA,MAAM,QAAQ,GAAyE;gBACnF,IAAI;AACJ,gBAAA,UAAU,EAAE,sBAAsB;AAClC,gBAAA,KAAK,EAAE,iBAAiB;gBACxB,IAAI;gBACJ,QAAQ;gBACR,OAAO;gBACP,QAAQ,EAAE,IAAI,CAAC,mBAAmB;AAClC,gBAAA,SAAS,EAAE,aAAa;AACxB,gBAAA,MAAM,EAAE,IAAI;AACZ,gBAAA,SAAS,EAAE,CAAC;gBACZ,WAAW;AACX,gBAAA,eAAe,EAAE,IAAI;gBACrB,IAAI;AACJ,gBAAA,aAAa,EAAE;aAClB;YAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC;;YAGvD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,mBAAmB,CAAC,MAAM,CAAC;;;;AAItE,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAmB,EAAE,WAAW,CAAC;AAC9G,YAAA,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,qBAAqB,CAAC,MAAM,EAAE,MAAM,CAAC;AAC9E,YAAA,OAAO,MAAM;;QACf,OAAO,KAAK,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,CAA0B,uBAAA,EAAA,IAAI,MAAM,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAE,CAAA,CAAC;;;AAIrH;;AAEG;AACH,IAAA,MAAM,uBAAuB,GAAA;AACzB,QAAA,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sCAAsC,CAAC;AAEvD,QAAA,IAAI;YACA,MAAM,KAAK,GAAG,eAAe;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,kBAAkB,CAAC,KAAK,CAAC;YACpD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,IAAI,CAAC;YAExD,IAAI,MAAM,EAAE;gBACR,OAAO,MAAM,CAAC,EAAG;;;AAIrB,YAAA,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC;AACpC,gBAAA,IAAI,EAAE,QAAQ;AACd,gBAAA,IAAI,EAAE,KAAK;AACX,gBAAA,MAAM,EAAE,KAAK;AACb,gBAAA,IAAI,EAAE;AACT,aAAA,CAAC;;QACJ,OAAO,KAAK,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,CAAA,iCAAA,EAAoC,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAE,CAAA,CAAC;;;AAGxH;;;;"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { ChatCreator } from './chat-creator.js';
|
|
2
|
+
import { GroupManager } from './group-manager.js';
|
|
3
|
+
import { MessageManager } from './message-manager.js';
|
|
4
|
+
import { MetadataManager } from '../../common/metadata-manager.js';
|
|
5
|
+
import { HierarchyManager } from './hierarchy-manager.js';
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Component: Chat Manager
|
|
9
|
+
* Block-UUID: 7f9a0b1c-2d3e-4f5a-8b9c-0d1e2f3a4b5c
|
|
10
|
+
* Parent-UUID: 5e6f7a8b-9c0d-1e2f-3a4b-5c6d7e8f9a0b
|
|
11
|
+
* Version: 2.0.0
|
|
12
|
+
* Purpose: Core class for managing chats, groups, and messages, with proxy methods for other managers
|
|
13
|
+
* Language: TypeScript
|
|
14
|
+
* Created-at: 2025-03-15T02:19:00.075Z
|
|
15
|
+
* Updated-at: 2025-03-16T06:45:00.075Z
|
|
16
|
+
* Authors: together.ai - DeepSeek v3 (v1.0.0), OpenRouter - Gemini Flash 2.0 (v1.1.0), together.ai - DeepSeek v3 (v2.0.0)
|
|
17
|
+
*/
|
|
18
|
+
class ChatManager {
|
|
19
|
+
dbClient;
|
|
20
|
+
gitRepo;
|
|
21
|
+
repoOwner;
|
|
22
|
+
repoName;
|
|
23
|
+
ref;
|
|
24
|
+
refType;
|
|
25
|
+
options;
|
|
26
|
+
logger;
|
|
27
|
+
chatCreator;
|
|
28
|
+
groupManager;
|
|
29
|
+
messageManager;
|
|
30
|
+
metadataManager;
|
|
31
|
+
hierarchyManager;
|
|
32
|
+
constructor(dbClient, gitRepo, repoOwner, repoName, ref, refType, options = {}, logger) {
|
|
33
|
+
this.dbClient = dbClient;
|
|
34
|
+
this.gitRepo = gitRepo;
|
|
35
|
+
this.repoOwner = repoOwner;
|
|
36
|
+
this.repoName = repoName;
|
|
37
|
+
this.ref = ref;
|
|
38
|
+
this.refType = refType;
|
|
39
|
+
this.options = options;
|
|
40
|
+
this.logger = logger;
|
|
41
|
+
this.messageManager = new MessageManager(dbClient, logger);
|
|
42
|
+
this.groupManager = new GroupManager(dbClient, gitRepo, logger);
|
|
43
|
+
this.metadataManager = new MetadataManager(dbClient, logger, gitRepo, this);
|
|
44
|
+
this.chatCreator = new ChatCreator(dbClient, this.messageManager, logger);
|
|
45
|
+
this.hierarchyManager = new HierarchyManager(dbClient, gitRepo, this.chatCreator, this.groupManager, logger);
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Sets up the chat hierarchy for the repository.
|
|
49
|
+
* Creates or updates groups and chats for `git-repos`, `git-repo-owner`, `git-repo`, and `git-ref`.
|
|
50
|
+
* Returns the ID of the `git-ref` chat.
|
|
51
|
+
*/
|
|
52
|
+
async setupChatHierarchy() {
|
|
53
|
+
return this.hierarchyManager.setupChatHierarchy(this.repoOwner, this.repoName, this.ref, this.refType);
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Ensures the existence of a "git-repos" chat.
|
|
57
|
+
* This method can be used independently of the GitImporter to create the chat if it doesn't exist.
|
|
58
|
+
* @returns The ID of the "git-repos" chat
|
|
59
|
+
*/
|
|
60
|
+
async ensureGitReposChat() {
|
|
61
|
+
try {
|
|
62
|
+
// Ensure the default prompt exists
|
|
63
|
+
const askGitReposPromptId = await this.chatCreator.ensureAskGitReposPrompt();
|
|
64
|
+
// Create or update the "git-repos" group
|
|
65
|
+
const reposGroupId = await this.groupManager.createOrUpdateGroup('git-repos', 'git-repos');
|
|
66
|
+
// Create or update the "git-repos" chat
|
|
67
|
+
const reposChatId = await this.hierarchyManager.createOrUpdateReposChat(reposGroupId);
|
|
68
|
+
return reposChatId;
|
|
69
|
+
}
|
|
70
|
+
catch (error) {
|
|
71
|
+
throw new Error(`Failed to ensure "git-repos" chat exists: ${error instanceof Error ? error.message : String(error)}`);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
// ====================
|
|
75
|
+
// Proxy Methods for MetadataManager
|
|
76
|
+
// ====================
|
|
77
|
+
/**
|
|
78
|
+
* Marks a chat as starting an import.
|
|
79
|
+
*/
|
|
80
|
+
async markImportStarted(chatId) {
|
|
81
|
+
return this.metadataManager.markImportStarted(chatId);
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Marks a chat as finished importing.
|
|
85
|
+
*/
|
|
86
|
+
async markImportFinished(chatId, commitInfo) {
|
|
87
|
+
return this.metadataManager.markImportFinished(chatId, commitInfo);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Marks a chat as failed to import.
|
|
91
|
+
*/
|
|
92
|
+
async markImportFailed(chatId, error) {
|
|
93
|
+
return this.metadataManager.markImportFailed(chatId, error);
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Updates metadata for a file chat.
|
|
97
|
+
*/
|
|
98
|
+
async updateFileMetadata(chatId, filePath, commitInfo) {
|
|
99
|
+
return this.metadataManager.updateFileMetadata(chatId, filePath, commitInfo);
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Updates metadata for a directory chat.
|
|
103
|
+
*/
|
|
104
|
+
async updateDirectoryMetadata(chatId, path, commitInfo) {
|
|
105
|
+
return this.metadataManager.updateDirectoryMetadata(chatId, path, commitInfo);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Marks a file as deleted.
|
|
109
|
+
*/
|
|
110
|
+
async markFileAsDeleted(chatId, filePath) {
|
|
111
|
+
return this.metadataManager.markFileAsDeleted(chatId, filePath);
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Marks a directory as deleted.
|
|
115
|
+
*/
|
|
116
|
+
async markDirectoryAsDeleted(chatId, dirPath) {
|
|
117
|
+
return this.metadataManager.markDirectoryAsDeleted(chatId, dirPath);
|
|
118
|
+
}
|
|
119
|
+
// ====================
|
|
120
|
+
// Proxy Methods for MessageManager
|
|
121
|
+
// ====================
|
|
122
|
+
async createSystemMessage(chatId) {
|
|
123
|
+
return this.messageManager.createSystemMessage(chatId);
|
|
124
|
+
}
|
|
125
|
+
//async createShortOverviewMessage(chatId: number, parentId: number): Promise<number> {
|
|
126
|
+
// return this.messageManager.createShortOverviewMessage(chatId, parentId);
|
|
127
|
+
//}
|
|
128
|
+
//async createLongOverviewMessage(chatId: number, parentId: number): Promise<number> {
|
|
129
|
+
// return this.messageManager.createLongOverviewMessage(chatId, parentId);
|
|
130
|
+
//}
|
|
131
|
+
async createMainMessage(chatId, parentId, chatType, message) {
|
|
132
|
+
return this.messageManager.createMainMessage(chatId, parentId, chatType, message);
|
|
133
|
+
}
|
|
134
|
+
async createChatMetaMessage(chatId, parentId) {
|
|
135
|
+
return this.messageManager.createChatMetaMessage(chatId, parentId);
|
|
136
|
+
}
|
|
137
|
+
// Commenting out for now
|
|
138
|
+
//async createChatHistoryMessage(chatId: number, parentId: number, history: any): Promise<number> {
|
|
139
|
+
// return this.messageManager.createChatHistoryMessage(chatId, parentId, history);
|
|
140
|
+
//}
|
|
141
|
+
async getMessageById(messageId) {
|
|
142
|
+
return this.messageManager.getMessageById(messageId);
|
|
143
|
+
}
|
|
144
|
+
async getMessageByChatIdAndType(chatId, type) {
|
|
145
|
+
return this.messageManager.getMessageByChatIdAndType(chatId, type);
|
|
146
|
+
}
|
|
147
|
+
async updateMessage(messageId, updates) {
|
|
148
|
+
return this.messageManager.updateMessage(messageId, updates);
|
|
149
|
+
}
|
|
150
|
+
// ====================
|
|
151
|
+
// Proxy Methods for ChatCreator
|
|
152
|
+
// ====================
|
|
153
|
+
async createChat(type, name, parentId, groupId, meta, mainMessage = '', orderWeight) {
|
|
154
|
+
return this.chatCreator.createChat(type, name, parentId, groupId, meta, mainMessage, orderWeight);
|
|
155
|
+
}
|
|
156
|
+
// ====================
|
|
157
|
+
// Proxy Methods for GroupManager
|
|
158
|
+
// ====================
|
|
159
|
+
async createOrUpdateGroup(type, name) {
|
|
160
|
+
return this.groupManager.createOrUpdateGroup(type, name);
|
|
161
|
+
}
|
|
162
|
+
async getChatById(chatId) {
|
|
163
|
+
try {
|
|
164
|
+
const chat = await this.dbClient.getChatById(chatId);
|
|
165
|
+
if (!chat) {
|
|
166
|
+
throw new Error(`Chat with ID ${chatId} not found`);
|
|
167
|
+
}
|
|
168
|
+
return chat;
|
|
169
|
+
}
|
|
170
|
+
catch (error) {
|
|
171
|
+
throw new Error(`Failed to retrieve chat ${chatId}: ${error instanceof Error ? error.message : String(error)}`);
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
export { ChatManager };
|
|
177
|
+
//# sourceMappingURL=chat-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-manager.js","sources":["../../../../src/importer/chat-manager/chat-manager.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Component: Chat Manager Constants
|
|
3
|
+
* Block-UUID: 8a3b9c2d-4e5f-6a7b-8c9d-0e1f2a3b4c5d
|
|
4
|
+
* Parent-UUID: N/A
|
|
5
|
+
* Version: 1.0.0
|
|
6
|
+
* Purpose: Shared constants for the Chat Manager module
|
|
7
|
+
* Language: TypeScript
|
|
8
|
+
* Created-at: 2025-03-15T02:06:30.618Z
|
|
9
|
+
* Authors: together.ai - DeepSeek v3 (v1.0.0)
|
|
10
|
+
*/
|
|
11
|
+
/**
|
|
12
|
+
* Chat types
|
|
13
|
+
*/
|
|
14
|
+
const CHAT_TYPE_GIT_REPOS = 'git-repos';
|
|
15
|
+
const CHAT_TYPE_GIT_REPO_OWNER = 'git-repo-owner';
|
|
16
|
+
const CHAT_TYPE_GIT_REPO = 'git-repo';
|
|
17
|
+
const CHAT_TYPE_GIT_REF = 'git-ref';
|
|
18
|
+
/**
|
|
19
|
+
* Chat names
|
|
20
|
+
*/
|
|
21
|
+
const CHAT_NAME_GIT_REPOS = 'Repositories';
|
|
22
|
+
const CHAT_NAME_GIT_REPO_OWNER = (owner) => `${owner}`;
|
|
23
|
+
const CHAT_NAME_GIT_REF = (ref, refType) => `${ref}`;
|
|
24
|
+
/**
|
|
25
|
+
* Message types
|
|
26
|
+
*/
|
|
27
|
+
const MESSAGE_TYPE_REGULAR = 'regular';
|
|
28
|
+
const MESSAGE_TYPE_CHAT_META = 'chat-meta';
|
|
29
|
+
/**
|
|
30
|
+
* Group types
|
|
31
|
+
*/
|
|
32
|
+
const GROUP_TYPE_GIT_REPOS = 'git-repos';
|
|
33
|
+
const GROUP_TYPE_GIT_REPO_OWNER = 'git-repo-owner';
|
|
34
|
+
const GROUP_TYPE_GIT_REPO = 'git-repo';
|
|
35
|
+
/**
|
|
36
|
+
* Default values
|
|
37
|
+
*/
|
|
38
|
+
const DEFAULT_MODEL = 'GitSense Notes';
|
|
39
|
+
const DEFAULT_TEMPERATURE = 0;
|
|
40
|
+
const DEFAULT_IS_DEFAULT_NAME = 1;
|
|
41
|
+
/**
|
|
42
|
+
* Visibility and ownership
|
|
43
|
+
*/
|
|
44
|
+
const CHAT_VISIBILITY_PUBLIC = 'public';
|
|
45
|
+
const CHAT_OWNER_SYSTEM = 'system';
|
|
46
|
+
|
|
47
|
+
export { CHAT_NAME_GIT_REF, CHAT_NAME_GIT_REPOS, CHAT_NAME_GIT_REPO_OWNER, CHAT_OWNER_SYSTEM, CHAT_TYPE_GIT_REF, CHAT_TYPE_GIT_REPO, CHAT_TYPE_GIT_REPOS, CHAT_TYPE_GIT_REPO_OWNER, CHAT_VISIBILITY_PUBLIC, DEFAULT_IS_DEFAULT_NAME, DEFAULT_MODEL, DEFAULT_TEMPERATURE, GROUP_TYPE_GIT_REPO, GROUP_TYPE_GIT_REPOS, GROUP_TYPE_GIT_REPO_OWNER, MESSAGE_TYPE_CHAT_META, MESSAGE_TYPE_REGULAR };
|
|
48
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sources":["../../../../src/importer/chat-manager/constants.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;;;;AASG;AAGH;;AAEG;AACI,MAAM,mBAAmB,GAAG;AAC5B,MAAM,wBAAwB,GAAG;AACjC,MAAM,kBAAkB,GAAG;AAC3B,MAAM,iBAAiB,GAAG;AAOjC;;AAEG;AACI,MAAM,mBAAmB,GAAG;AAC5B,MAAM,wBAAwB,GAAG,CAAC,KAAa,KAAK,CAAA,EAAG,KAAK,CAAA;AAE5D,MAAM,iBAAiB,GAAG,CAAC,GAAW,EAAE,OAAe,KAAK,CAAG,EAAA,GAAG;AAEzE;;AAEG;AACI,MAAM,oBAAoB,GAAG;AAC7B,MAAM,sBAAsB,GAAG;AAEtC;;AAEG;AACI,MAAM,oBAAoB,GAAG;AAC7B,MAAM,yBAAyB,GAAG;AAClC,MAAM,mBAAmB,GAAG;AAEnC;;AAEG;AACI,MAAM,aAAa,GAAG;AACtB,MAAM,mBAAmB,GAAG;AAC5B,MAAM,uBAAuB,GAAG;AAEvC;;AAEG;AACI,MAAM,sBAAsB,GAAG;AAC/B,MAAM,iBAAiB,GAAG;;;;"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Component: Group Manager
|
|
3
|
+
* Block-UUID: 1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d
|
|
4
|
+
* Parent-UUID: N/A
|
|
5
|
+
* Version: 1.0.0
|
|
6
|
+
* Purpose: Handles group creation and updates
|
|
7
|
+
* Language: TypeScript
|
|
8
|
+
* Created-at: 2025-03-15T02:09:59.275Z
|
|
9
|
+
* Authors: together.ai - DeepSeek v3 (v1.0.0)
|
|
10
|
+
*/
|
|
11
|
+
class GroupManager {
|
|
12
|
+
dbClient;
|
|
13
|
+
gitRepo;
|
|
14
|
+
logger;
|
|
15
|
+
constructor(dbClient, gitRepo, logger) {
|
|
16
|
+
this.dbClient = dbClient;
|
|
17
|
+
this.gitRepo = gitRepo;
|
|
18
|
+
this.logger = logger;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Creates or updates a group. Full name example "facebook/react".
|
|
22
|
+
*/
|
|
23
|
+
async createOrUpdateGroup(type, fullName) {
|
|
24
|
+
try {
|
|
25
|
+
const existingGroup = await this.dbClient.getGroupByName(fullName);
|
|
26
|
+
if (existingGroup) {
|
|
27
|
+
return existingGroup.id;
|
|
28
|
+
}
|
|
29
|
+
const meta = this.gitRepo ? await this.gitRepo.getInfo() : null;
|
|
30
|
+
return await this.dbClient.createGroup({
|
|
31
|
+
type,
|
|
32
|
+
name: fullName,
|
|
33
|
+
meta
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
catch (error) {
|
|
37
|
+
throw new Error(`Failed to create or update group '${fullName}': ${error instanceof Error ? error.message : String(error)}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Retrieves a group by its full name.
|
|
42
|
+
*/
|
|
43
|
+
async getGroupByFullName(fullName) {
|
|
44
|
+
try {
|
|
45
|
+
return await this.dbClient.getGroupByName(fullName) || null;
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
throw new Error(`Failed to retrieve group '${fullName}': ${error instanceof Error ? error.message : String(error)}`);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
export { GroupManager };
|
|
54
|
+
//# sourceMappingURL=group-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"group-manager.js","sources":["../../../../src/importer/chat-manager/group-manager.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;;;;;;;;AASG;MAQU,YAAY,CAAA;AAEA,IAAA,QAAA;AACA,IAAA,OAAA;AACA,IAAA,MAAA;AAHrB,IAAA,WAAA,CACqB,QAAwB,EACxB,OAAmB,EACnB,MAAc,EAAA;QAFd,IAAQ,CAAA,QAAA,GAAR,QAAQ;QACR,IAAO,CAAA,OAAA,GAAP,OAAO;QACP,IAAM,CAAA,MAAA,GAAN,MAAM;;AAG3B;;AAEG;AACH,IAAA,MAAM,mBAAmB,CAAC,IAAe,EAAE,QAAgB,EAAA;AACvD,QAAA,IAAI;YACA,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC;YAElE,IAAI,aAAa,EAAE;gBACf,OAAO,aAAa,CAAC,EAAG;;AAG5B,YAAA,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,IAAI;AAE/D,YAAA,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC;gBACnC,IAAI;AACJ,gBAAA,IAAI,EAAE,QAAQ;gBACd;AACH,aAAA,CAAC;;QACJ,OAAO,KAAK,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,CAAqC,kCAAA,EAAA,QAAQ,MAAM,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAE,CAAA,CAAC;;;AAIpI;;AAEG;IACH,MAAM,kBAAkB,CAAC,QAAgB,EAAA;AACrC,QAAA,IAAI;YACA,OAAO,MAAM,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,IAAI;;QAC7D,OAAO,KAAK,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,CAA6B,0BAAA,EAAA,QAAQ,MAAM,KAAK,YAAY,KAAK,GAAG,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,CAAE,CAAA,CAAC;;;AAG/H;;;;"}
|