@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.
Files changed (75) hide show
  1. package/dist/cjs/common/logger.js +97 -0
  2. package/dist/cjs/common/logger.js.map +1 -0
  3. package/dist/cjs/common/metadata-manager.js +196 -0
  4. package/dist/cjs/common/metadata-manager.js.map +1 -0
  5. package/dist/cjs/importer/chat-manager/chat-creator.js +90 -0
  6. package/dist/cjs/importer/chat-manager/chat-creator.js.map +1 -0
  7. package/dist/cjs/importer/chat-manager/chat-manager.js +179 -0
  8. package/dist/cjs/importer/chat-manager/chat-manager.js.map +1 -0
  9. package/dist/cjs/importer/chat-manager/constants.js +66 -0
  10. package/dist/cjs/importer/chat-manager/constants.js.map +1 -0
  11. package/dist/cjs/importer/chat-manager/group-manager.js +56 -0
  12. package/dist/cjs/importer/chat-manager/group-manager.js.map +1 -0
  13. package/dist/cjs/importer/chat-manager/hierarchy-manager.js +115 -0
  14. package/dist/cjs/importer/chat-manager/hierarchy-manager.js.map +1 -0
  15. package/dist/cjs/importer/chat-manager/message-manager.js +126 -0
  16. package/dist/cjs/importer/chat-manager/message-manager.js.map +1 -0
  17. package/dist/cjs/importer/constants.js +30 -0
  18. package/dist/cjs/importer/constants.js.map +1 -0
  19. package/dist/cjs/importer/core/directory-processor.js +343 -0
  20. package/dist/cjs/importer/core/directory-processor.js.map +1 -0
  21. package/dist/cjs/importer/core/error-handler.js +64 -0
  22. package/dist/cjs/importer/core/error-handler.js.map +1 -0
  23. package/dist/cjs/importer/core/import-processor.js +167 -0
  24. package/dist/cjs/importer/core/import-processor.js.map +1 -0
  25. package/dist/cjs/importer/core/importer.js +135 -0
  26. package/dist/cjs/importer/core/importer.js.map +1 -0
  27. package/dist/cjs/importer/core/utils.js +66 -0
  28. package/dist/cjs/importer/core/utils.js.map +1 -0
  29. package/dist/cjs/importer/file-processor.js +199 -0
  30. package/dist/cjs/importer/file-processor.js.map +1 -0
  31. package/dist/cjs/importer/language-utils.js +286 -0
  32. package/dist/cjs/importer/language-utils.js.map +1 -0
  33. package/dist/cjs/importer/tree-processor.js +119 -0
  34. package/dist/cjs/importer/tree-processor.js.map +1 -0
  35. package/dist/cjs/index.js +12 -0
  36. package/dist/cjs/index.js.map +1 -0
  37. package/dist/cjs/package.json +3 -0
  38. package/dist/esm/common/logger.js +95 -0
  39. package/dist/esm/common/logger.js.map +1 -0
  40. package/dist/esm/common/metadata-manager.js +194 -0
  41. package/dist/esm/common/metadata-manager.js.map +1 -0
  42. package/dist/esm/importer/chat-manager/chat-creator.js +88 -0
  43. package/dist/esm/importer/chat-manager/chat-creator.js.map +1 -0
  44. package/dist/esm/importer/chat-manager/chat-manager.js +177 -0
  45. package/dist/esm/importer/chat-manager/chat-manager.js.map +1 -0
  46. package/dist/esm/importer/chat-manager/constants.js +48 -0
  47. package/dist/esm/importer/chat-manager/constants.js.map +1 -0
  48. package/dist/esm/importer/chat-manager/group-manager.js +54 -0
  49. package/dist/esm/importer/chat-manager/group-manager.js.map +1 -0
  50. package/dist/esm/importer/chat-manager/hierarchy-manager.js +113 -0
  51. package/dist/esm/importer/chat-manager/hierarchy-manager.js.map +1 -0
  52. package/dist/esm/importer/chat-manager/message-manager.js +124 -0
  53. package/dist/esm/importer/chat-manager/message-manager.js.map +1 -0
  54. package/dist/esm/importer/constants.js +28 -0
  55. package/dist/esm/importer/constants.js.map +1 -0
  56. package/dist/esm/importer/core/directory-processor.js +337 -0
  57. package/dist/esm/importer/core/directory-processor.js.map +1 -0
  58. package/dist/esm/importer/core/error-handler.js +62 -0
  59. package/dist/esm/importer/core/error-handler.js.map +1 -0
  60. package/dist/esm/importer/core/import-processor.js +165 -0
  61. package/dist/esm/importer/core/import-processor.js.map +1 -0
  62. package/dist/esm/importer/core/importer.js +133 -0
  63. package/dist/esm/importer/core/importer.js.map +1 -0
  64. package/dist/esm/importer/core/utils.js +64 -0
  65. package/dist/esm/importer/core/utils.js.map +1 -0
  66. package/dist/esm/importer/file-processor.js +193 -0
  67. package/dist/esm/importer/file-processor.js.map +1 -0
  68. package/dist/esm/importer/language-utils.js +279 -0
  69. package/dist/esm/importer/language-utils.js.map +1 -0
  70. package/dist/esm/importer/tree-processor.js +113 -0
  71. package/dist/esm/importer/tree-processor.js.map +1 -0
  72. package/dist/esm/index.js +4 -0
  73. package/dist/esm/index.js.map +1 -0
  74. package/dist/index.d.ts +215 -0
  75. 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;;;;"}