@cloudcli-ai/cloudcli 1.29.5 → 1.30.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 (179) hide show
  1. package/README.de.md +1 -1
  2. package/README.ja.md +1 -1
  3. package/README.ko.md +1 -1
  4. package/README.md +1 -1
  5. package/README.ru.md +1 -1
  6. package/README.tr.md +252 -0
  7. package/README.zh-CN.md +1 -1
  8. package/dist/assets/index-DI22MZMb.css +32 -0
  9. package/dist/assets/index-RX-W_g_Q.js +1262 -0
  10. package/dist/index.html +2 -2
  11. package/dist-server/server/claude-sdk.js +13 -8
  12. package/dist-server/server/claude-sdk.js.map +1 -1
  13. package/dist-server/server/cursor-cli.js +7 -7
  14. package/dist-server/server/cursor-cli.js.map +1 -1
  15. package/dist-server/server/gemini-cli.js +5 -5
  16. package/dist-server/server/gemini-cli.js.map +1 -1
  17. package/dist-server/server/gemini-response-handler.js +2 -2
  18. package/dist-server/server/gemini-response-handler.js.map +1 -1
  19. package/dist-server/server/index.js +27 -25
  20. package/dist-server/server/index.js.map +1 -1
  21. package/dist-server/server/modules/providers/list/claude/claude-auth.provider.js +103 -0
  22. package/dist-server/server/modules/providers/list/claude/claude-auth.provider.js.map +1 -0
  23. package/dist-server/server/modules/providers/list/claude/claude-mcp.provider.js +103 -0
  24. package/dist-server/server/modules/providers/list/claude/claude-mcp.provider.js.map +1 -0
  25. package/dist-server/server/modules/providers/list/claude/claude-sessions.provider.js +266 -0
  26. package/dist-server/server/modules/providers/list/claude/claude-sessions.provider.js.map +1 -0
  27. package/dist-server/server/modules/providers/list/claude/claude.provider.js +13 -0
  28. package/dist-server/server/modules/providers/list/claude/claude.provider.js.map +1 -0
  29. package/dist-server/server/modules/providers/list/codex/codex-auth.provider.js +84 -0
  30. package/dist-server/server/modules/providers/list/codex/codex-auth.provider.js.map +1 -0
  31. package/dist-server/server/modules/providers/list/codex/codex-mcp.provider.js +107 -0
  32. package/dist-server/server/modules/providers/list/codex/codex-mcp.provider.js.map +1 -0
  33. package/dist-server/server/modules/providers/list/codex/codex-sessions.provider.js +282 -0
  34. package/dist-server/server/modules/providers/list/codex/codex-sessions.provider.js.map +1 -0
  35. package/dist-server/server/modules/providers/list/codex/codex.provider.js +13 -0
  36. package/dist-server/server/modules/providers/list/codex/codex.provider.js.map +1 -0
  37. package/dist-server/server/modules/providers/list/cursor/cursor-auth.provider.js +118 -0
  38. package/dist-server/server/modules/providers/list/cursor/cursor-auth.provider.js.map +1 -0
  39. package/dist-server/server/modules/providers/list/cursor/cursor-mcp.provider.js +80 -0
  40. package/dist-server/server/modules/providers/list/cursor/cursor-mcp.provider.js.map +1 -0
  41. package/dist-server/server/modules/providers/list/cursor/cursor-sessions.provider.js +369 -0
  42. package/dist-server/server/modules/providers/list/cursor/cursor-sessions.provider.js.map +1 -0
  43. package/dist-server/server/modules/providers/list/cursor/cursor.provider.js +13 -0
  44. package/dist-server/server/modules/providers/list/cursor/cursor.provider.js.map +1 -0
  45. package/dist-server/server/modules/providers/list/gemini/gemini-auth.provider.js +131 -0
  46. package/dist-server/server/modules/providers/list/gemini/gemini-auth.provider.js.map +1 -0
  47. package/dist-server/server/modules/providers/list/gemini/gemini-mcp.provider.js +82 -0
  48. package/dist-server/server/modules/providers/list/gemini/gemini-mcp.provider.js.map +1 -0
  49. package/dist-server/server/modules/providers/list/gemini/gemini-sessions.provider.js +207 -0
  50. package/dist-server/server/modules/providers/list/gemini/gemini-sessions.provider.js.map +1 -0
  51. package/dist-server/server/modules/providers/list/gemini/gemini.provider.js +13 -0
  52. package/dist-server/server/modules/providers/list/gemini/gemini.provider.js.map +1 -0
  53. package/dist-server/server/modules/providers/provider.registry.js +31 -0
  54. package/dist-server/server/modules/providers/provider.registry.js.map +1 -0
  55. package/dist-server/server/modules/providers/provider.routes.js +159 -0
  56. package/dist-server/server/modules/providers/provider.routes.js.map +1 -0
  57. package/dist-server/server/modules/providers/services/mcp.service.js +69 -0
  58. package/dist-server/server/modules/providers/services/mcp.service.js.map +1 -0
  59. package/dist-server/server/modules/providers/services/provider-auth.service.js +25 -0
  60. package/dist-server/server/modules/providers/services/provider-auth.service.js.map +1 -0
  61. package/dist-server/server/modules/providers/services/sessions.service.js +29 -0
  62. package/dist-server/server/modules/providers/services/sessions.service.js.map +1 -0
  63. package/dist-server/server/modules/providers/shared/base/abstract.provider.js +14 -0
  64. package/dist-server/server/modules/providers/shared/base/abstract.provider.js.map +1 -0
  65. package/dist-server/server/modules/providers/shared/mcp/mcp.provider.js +102 -0
  66. package/dist-server/server/modules/providers/shared/mcp/mcp.provider.js.map +1 -0
  67. package/dist-server/server/modules/providers/tests/mcp.test.js +250 -0
  68. package/dist-server/server/modules/providers/tests/mcp.test.js.map +1 -0
  69. package/dist-server/server/openai-codex.js +5 -5
  70. package/dist-server/server/openai-codex.js.map +1 -1
  71. package/dist-server/server/routes/codex.js +2 -278
  72. package/dist-server/server/routes/codex.js.map +1 -1
  73. package/dist-server/server/routes/commands.js +0 -44
  74. package/dist-server/server/routes/commands.js.map +1 -1
  75. package/dist-server/server/routes/cursor.js +9 -489
  76. package/dist-server/server/routes/cursor.js.map +1 -1
  77. package/dist-server/server/routes/mcp-utils.js +1 -18
  78. package/dist-server/server/routes/mcp-utils.js.map +1 -1
  79. package/dist-server/server/routes/messages.js +6 -6
  80. package/dist-server/server/routes/messages.js.map +1 -1
  81. package/dist-server/server/routes/settings.js +10 -0
  82. package/dist-server/server/routes/settings.js.map +1 -1
  83. package/dist-server/server/routes/taskmaster.js +0 -459
  84. package/dist-server/server/routes/taskmaster.js.map +1 -1
  85. package/dist-server/server/shared/interfaces.js +2 -0
  86. package/dist-server/server/shared/interfaces.js.map +1 -0
  87. package/dist-server/server/shared/types.js +3 -0
  88. package/dist-server/server/shared/types.js.map +1 -0
  89. package/dist-server/server/shared/utils.js +150 -0
  90. package/dist-server/server/shared/utils.js.map +1 -0
  91. package/dist-server/server/utils/mcp-detector.js +0 -49
  92. package/dist-server/server/utils/mcp-detector.js.map +1 -1
  93. package/dist-server/shared/modelConstants.js +1 -0
  94. package/dist-server/shared/modelConstants.js.map +1 -1
  95. package/package.json +5 -2
  96. package/server/claude-sdk.js +14 -8
  97. package/server/cursor-cli.js +7 -7
  98. package/server/gemini-cli.js +5 -5
  99. package/server/gemini-response-handler.js +2 -2
  100. package/server/index.js +33 -29
  101. package/server/modules/providers/list/claude/claude-auth.provider.ts +123 -0
  102. package/server/modules/providers/list/claude/claude-mcp.provider.ts +135 -0
  103. package/server/modules/providers/list/claude/claude-sessions.provider.ts +306 -0
  104. package/server/modules/providers/list/claude/claude.provider.ts +15 -0
  105. package/server/modules/providers/list/codex/codex-auth.provider.ts +100 -0
  106. package/server/modules/providers/list/codex/codex-mcp.provider.ts +135 -0
  107. package/server/modules/providers/list/codex/codex-sessions.provider.ts +319 -0
  108. package/server/modules/providers/list/codex/codex.provider.ts +15 -0
  109. package/server/modules/providers/list/cursor/cursor-auth.provider.ts +143 -0
  110. package/server/modules/providers/list/cursor/cursor-mcp.provider.ts +108 -0
  111. package/server/modules/providers/list/cursor/cursor-sessions.provider.ts +421 -0
  112. package/server/modules/providers/list/cursor/cursor.provider.ts +15 -0
  113. package/server/modules/providers/list/gemini/gemini-auth.provider.ts +151 -0
  114. package/server/modules/providers/list/gemini/gemini-mcp.provider.ts +110 -0
  115. package/server/modules/providers/list/gemini/gemini-sessions.provider.ts +227 -0
  116. package/server/modules/providers/list/gemini/gemini.provider.ts +15 -0
  117. package/server/modules/providers/provider.registry.ts +36 -0
  118. package/server/modules/providers/provider.routes.ts +217 -0
  119. package/server/modules/providers/services/mcp.service.ts +94 -0
  120. package/server/modules/providers/services/provider-auth.service.ts +26 -0
  121. package/server/modules/providers/services/sessions.service.ts +45 -0
  122. package/server/modules/providers/shared/base/abstract.provider.ts +20 -0
  123. package/server/modules/providers/shared/mcp/mcp.provider.ts +151 -0
  124. package/server/modules/providers/tests/mcp.test.ts +293 -0
  125. package/server/openai-codex.js +5 -5
  126. package/server/routes/codex.js +2 -312
  127. package/server/routes/commands.js +0 -49
  128. package/server/routes/cursor.js +15 -527
  129. package/server/routes/mcp-utils.js +2 -19
  130. package/server/routes/messages.js +6 -6
  131. package/server/routes/settings.js +10 -0
  132. package/server/routes/taskmaster.js +0 -492
  133. package/server/shared/interfaces.ts +54 -0
  134. package/server/shared/types.ts +172 -0
  135. package/server/shared/utils.ts +193 -0
  136. package/server/tsconfig.json +6 -3
  137. package/server/utils/mcp-detector.js +0 -51
  138. package/shared/modelConstants.js +1 -0
  139. package/dist/assets/index-BBAE1OJ_.css +0 -32
  140. package/dist/assets/index-Ci1GOyV7.js +0 -1262
  141. package/dist-server/server/providers/claude/adapter.js +0 -266
  142. package/dist-server/server/providers/claude/adapter.js.map +0 -1
  143. package/dist-server/server/providers/claude/status.js +0 -121
  144. package/dist-server/server/providers/claude/status.js.map +0 -1
  145. package/dist-server/server/providers/codex/adapter.js +0 -232
  146. package/dist-server/server/providers/codex/adapter.js.map +0 -1
  147. package/dist-server/server/providers/codex/status.js +0 -70
  148. package/dist-server/server/providers/codex/status.js.map +0 -1
  149. package/dist-server/server/providers/cursor/adapter.js +0 -342
  150. package/dist-server/server/providers/cursor/adapter.js.map +0 -1
  151. package/dist-server/server/providers/cursor/status.js +0 -118
  152. package/dist-server/server/providers/cursor/status.js.map +0 -1
  153. package/dist-server/server/providers/gemini/adapter.js +0 -174
  154. package/dist-server/server/providers/gemini/adapter.js.map +0 -1
  155. package/dist-server/server/providers/gemini/status.js +0 -104
  156. package/dist-server/server/providers/gemini/status.js.map +0 -1
  157. package/dist-server/server/providers/registry.js +0 -58
  158. package/dist-server/server/providers/registry.js.map +0 -1
  159. package/dist-server/server/providers/types.js +0 -117
  160. package/dist-server/server/providers/types.js.map +0 -1
  161. package/dist-server/server/providers/utils.js +0 -28
  162. package/dist-server/server/providers/utils.js.map +0 -1
  163. package/dist-server/server/routes/cli-auth.js +0 -25
  164. package/dist-server/server/routes/cli-auth.js.map +0 -1
  165. package/dist-server/server/routes/mcp.js +0 -480
  166. package/dist-server/server/routes/mcp.js.map +0 -1
  167. package/server/providers/claude/adapter.js +0 -278
  168. package/server/providers/claude/status.js +0 -136
  169. package/server/providers/codex/adapter.js +0 -248
  170. package/server/providers/codex/status.js +0 -78
  171. package/server/providers/cursor/adapter.js +0 -348
  172. package/server/providers/cursor/status.js +0 -128
  173. package/server/providers/gemini/adapter.js +0 -186
  174. package/server/providers/gemini/status.js +0 -111
  175. package/server/providers/registry.js +0 -67
  176. package/server/providers/types.js +0 -132
  177. package/server/providers/utils.js +0 -29
  178. package/server/routes/cli-auth.js +0 -27
  179. package/server/routes/mcp.js +0 -552
@@ -2,12 +2,9 @@ import express from 'express';
2
2
  import { promises as fs } from 'fs';
3
3
  import path from 'path';
4
4
  import os from 'os';
5
- import Database from 'better-sqlite3';
6
- import crypto from 'crypto';
7
5
  import { CURSOR_MODELS } from '../../shared/modelConstants.js';
8
- import { applyCustomSessionNames } from '../database/db.js';
9
6
  const router = express.Router();
10
- // GET /api/cursor/config - Read Cursor CLI configuration
7
+ // GET /api/cursor/config - Read Cursor CLI configuration.
11
8
  router.get('/config', async (req, res) => {
12
9
  try {
13
10
  const configPath = path.join(os.homedir(), '.cursor', 'cli-config.json');
@@ -16,28 +13,27 @@ router.get('/config', async (req, res) => {
16
13
  const config = JSON.parse(configContent);
17
14
  res.json({
18
15
  success: true,
19
- config: config,
20
- path: configPath
16
+ config,
17
+ path: configPath,
21
18
  });
22
19
  }
23
20
  catch (error) {
24
- // Config doesn't exist or is invalid
21
+ // Config doesn't exist or is invalid, so return the UI default shape.
25
22
  console.log('Cursor config not found or invalid:', error.message);
26
- // Return default config
27
23
  res.json({
28
24
  success: true,
29
25
  config: {
30
26
  version: 1,
31
27
  model: {
32
28
  modelId: CURSOR_MODELS.DEFAULT,
33
- displayName: "GPT-5"
29
+ displayName: 'GPT-5',
34
30
  },
35
31
  permissions: {
36
32
  allow: [],
37
- deny: []
38
- }
33
+ deny: [],
34
+ },
39
35
  },
40
- isDefault: true
36
+ isDefault: true,
41
37
  });
42
38
  }
43
39
  }
@@ -45,483 +41,7 @@ router.get('/config', async (req, res) => {
45
41
  console.error('Error reading Cursor config:', error);
46
42
  res.status(500).json({
47
43
  error: 'Failed to read Cursor configuration',
48
- details: error.message
49
- });
50
- }
51
- });
52
- // POST /api/cursor/config - Update Cursor CLI configuration
53
- router.post('/config', async (req, res) => {
54
- try {
55
- const { permissions, model } = req.body;
56
- const configPath = path.join(os.homedir(), '.cursor', 'cli-config.json');
57
- // Read existing config or create default
58
- let config = {
59
- version: 1,
60
- editor: {
61
- vimMode: false
62
- },
63
- hasChangedDefaultModel: false,
64
- privacyCache: {
65
- ghostMode: false,
66
- privacyMode: 3,
67
- updatedAt: Date.now()
68
- }
69
- };
70
- try {
71
- const existing = await fs.readFile(configPath, 'utf8');
72
- config = JSON.parse(existing);
73
- }
74
- catch (error) {
75
- // Config doesn't exist, use defaults
76
- console.log('Creating new Cursor config');
77
- }
78
- // Update permissions if provided
79
- if (permissions) {
80
- config.permissions = {
81
- allow: permissions.allow || [],
82
- deny: permissions.deny || []
83
- };
84
- }
85
- // Update model if provided
86
- if (model) {
87
- config.model = model;
88
- config.hasChangedDefaultModel = true;
89
- }
90
- // Ensure directory exists
91
- const configDir = path.dirname(configPath);
92
- await fs.mkdir(configDir, { recursive: true });
93
- // Write updated config
94
- await fs.writeFile(configPath, JSON.stringify(config, null, 2));
95
- res.json({
96
- success: true,
97
- config: config,
98
- message: 'Cursor configuration updated successfully'
99
- });
100
- }
101
- catch (error) {
102
- console.error('Error updating Cursor config:', error);
103
- res.status(500).json({
104
- error: 'Failed to update Cursor configuration',
105
- details: error.message
106
- });
107
- }
108
- });
109
- // GET /api/cursor/mcp - Read Cursor MCP servers configuration
110
- router.get('/mcp', async (req, res) => {
111
- try {
112
- const mcpPath = path.join(os.homedir(), '.cursor', 'mcp.json');
113
- try {
114
- const mcpContent = await fs.readFile(mcpPath, 'utf8');
115
- const mcpConfig = JSON.parse(mcpContent);
116
- // Convert to UI-friendly format
117
- const servers = [];
118
- if (mcpConfig.mcpServers && typeof mcpConfig.mcpServers === 'object') {
119
- for (const [name, config] of Object.entries(mcpConfig.mcpServers)) {
120
- const server = {
121
- id: name,
122
- name: name,
123
- type: 'stdio',
124
- scope: 'cursor',
125
- config: {},
126
- raw: config
127
- };
128
- // Determine transport type and extract config
129
- if (config.command) {
130
- server.type = 'stdio';
131
- server.config.command = config.command;
132
- server.config.args = config.args || [];
133
- server.config.env = config.env || {};
134
- }
135
- else if (config.url) {
136
- server.type = config.transport || 'http';
137
- server.config.url = config.url;
138
- server.config.headers = config.headers || {};
139
- }
140
- servers.push(server);
141
- }
142
- }
143
- res.json({
144
- success: true,
145
- servers: servers,
146
- path: mcpPath
147
- });
148
- }
149
- catch (error) {
150
- // MCP config doesn't exist
151
- console.log('Cursor MCP config not found:', error.message);
152
- res.json({
153
- success: true,
154
- servers: [],
155
- isDefault: true
156
- });
157
- }
158
- }
159
- catch (error) {
160
- console.error('Error reading Cursor MCP config:', error);
161
- res.status(500).json({
162
- error: 'Failed to read Cursor MCP configuration',
163
- details: error.message
164
- });
165
- }
166
- });
167
- // POST /api/cursor/mcp/add - Add MCP server to Cursor configuration
168
- router.post('/mcp/add', async (req, res) => {
169
- try {
170
- const { name, type = 'stdio', command, args = [], url, headers = {}, env = {} } = req.body;
171
- const mcpPath = path.join(os.homedir(), '.cursor', 'mcp.json');
172
- console.log(`➕ Adding MCP server to Cursor config: ${name}`);
173
- // Read existing config or create new
174
- let mcpConfig = { mcpServers: {} };
175
- try {
176
- const existing = await fs.readFile(mcpPath, 'utf8');
177
- mcpConfig = JSON.parse(existing);
178
- if (!mcpConfig.mcpServers) {
179
- mcpConfig.mcpServers = {};
180
- }
181
- }
182
- catch (error) {
183
- console.log('Creating new Cursor MCP config');
184
- }
185
- // Build server config based on type
186
- let serverConfig = {};
187
- if (type === 'stdio') {
188
- serverConfig = {
189
- command: command,
190
- args: args,
191
- env: env
192
- };
193
- }
194
- else if (type === 'http' || type === 'sse') {
195
- serverConfig = {
196
- url: url,
197
- transport: type,
198
- headers: headers
199
- };
200
- }
201
- // Add server to config
202
- mcpConfig.mcpServers[name] = serverConfig;
203
- // Ensure directory exists
204
- const mcpDir = path.dirname(mcpPath);
205
- await fs.mkdir(mcpDir, { recursive: true });
206
- // Write updated config
207
- await fs.writeFile(mcpPath, JSON.stringify(mcpConfig, null, 2));
208
- res.json({
209
- success: true,
210
- message: `MCP server "${name}" added to Cursor configuration`,
211
- config: mcpConfig
212
- });
213
- }
214
- catch (error) {
215
- console.error('Error adding MCP server to Cursor:', error);
216
- res.status(500).json({
217
- error: 'Failed to add MCP server',
218
- details: error.message
219
- });
220
- }
221
- });
222
- // DELETE /api/cursor/mcp/:name - Remove MCP server from Cursor configuration
223
- router.delete('/mcp/:name', async (req, res) => {
224
- try {
225
- const { name } = req.params;
226
- const mcpPath = path.join(os.homedir(), '.cursor', 'mcp.json');
227
- console.log(`🗑️ Removing MCP server from Cursor config: ${name}`);
228
- // Read existing config
229
- let mcpConfig = { mcpServers: {} };
230
- try {
231
- const existing = await fs.readFile(mcpPath, 'utf8');
232
- mcpConfig = JSON.parse(existing);
233
- }
234
- catch (error) {
235
- return res.status(404).json({
236
- error: 'Cursor MCP configuration not found'
237
- });
238
- }
239
- // Check if server exists
240
- if (!mcpConfig.mcpServers || !mcpConfig.mcpServers[name]) {
241
- return res.status(404).json({
242
- error: `MCP server "${name}" not found in Cursor configuration`
243
- });
244
- }
245
- // Remove server from config
246
- delete mcpConfig.mcpServers[name];
247
- // Write updated config
248
- await fs.writeFile(mcpPath, JSON.stringify(mcpConfig, null, 2));
249
- res.json({
250
- success: true,
251
- message: `MCP server "${name}" removed from Cursor configuration`,
252
- config: mcpConfig
253
- });
254
- }
255
- catch (error) {
256
- console.error('Error removing MCP server from Cursor:', error);
257
- res.status(500).json({
258
- error: 'Failed to remove MCP server',
259
- details: error.message
260
- });
261
- }
262
- });
263
- // POST /api/cursor/mcp/add-json - Add MCP server using JSON format
264
- router.post('/mcp/add-json', async (req, res) => {
265
- try {
266
- const { name, jsonConfig } = req.body;
267
- const mcpPath = path.join(os.homedir(), '.cursor', 'mcp.json');
268
- console.log(`➕ Adding MCP server to Cursor config via JSON: ${name}`);
269
- // Validate and parse JSON config
270
- let parsedConfig;
271
- try {
272
- parsedConfig = typeof jsonConfig === 'string' ? JSON.parse(jsonConfig) : jsonConfig;
273
- }
274
- catch (parseError) {
275
- return res.status(400).json({
276
- error: 'Invalid JSON configuration',
277
- details: parseError.message
278
- });
279
- }
280
- // Read existing config or create new
281
- let mcpConfig = { mcpServers: {} };
282
- try {
283
- const existing = await fs.readFile(mcpPath, 'utf8');
284
- mcpConfig = JSON.parse(existing);
285
- if (!mcpConfig.mcpServers) {
286
- mcpConfig.mcpServers = {};
287
- }
288
- }
289
- catch (error) {
290
- console.log('Creating new Cursor MCP config');
291
- }
292
- // Add server to config
293
- mcpConfig.mcpServers[name] = parsedConfig;
294
- // Ensure directory exists
295
- const mcpDir = path.dirname(mcpPath);
296
- await fs.mkdir(mcpDir, { recursive: true });
297
- // Write updated config
298
- await fs.writeFile(mcpPath, JSON.stringify(mcpConfig, null, 2));
299
- res.json({
300
- success: true,
301
- message: `MCP server "${name}" added to Cursor configuration via JSON`,
302
- config: mcpConfig
303
- });
304
- }
305
- catch (error) {
306
- console.error('Error adding MCP server to Cursor via JSON:', error);
307
- res.status(500).json({
308
- error: 'Failed to add MCP server',
309
- details: error.message
310
- });
311
- }
312
- });
313
- // GET /api/cursor/sessions - Get Cursor sessions from SQLite database
314
- router.get('/sessions', async (req, res) => {
315
- try {
316
- const { projectPath } = req.query;
317
- // Calculate cwdID hash for the project path (Cursor uses MD5 hash)
318
- const cwdId = crypto.createHash('md5').update(projectPath || process.cwd()).digest('hex');
319
- const cursorChatsPath = path.join(os.homedir(), '.cursor', 'chats', cwdId);
320
- // Check if the directory exists
321
- try {
322
- await fs.access(cursorChatsPath);
323
- }
324
- catch (error) {
325
- // No sessions for this project
326
- return res.json({
327
- success: true,
328
- sessions: [],
329
- cwdId: cwdId,
330
- path: cursorChatsPath
331
- });
332
- }
333
- // List all session directories
334
- const sessionDirs = await fs.readdir(cursorChatsPath);
335
- const sessions = [];
336
- for (const sessionId of sessionDirs) {
337
- const sessionPath = path.join(cursorChatsPath, sessionId);
338
- const storeDbPath = path.join(sessionPath, 'store.db');
339
- let dbStatMtimeMs = null;
340
- try {
341
- // Check if store.db exists
342
- await fs.access(storeDbPath);
343
- // Capture store.db mtime as a reliable fallback timestamp (last activity)
344
- try {
345
- const stat = await fs.stat(storeDbPath);
346
- dbStatMtimeMs = stat.mtimeMs;
347
- }
348
- catch (_) { }
349
- // Open SQLite database
350
- const db = new Database(storeDbPath, { readonly: true, fileMustExist: true });
351
- // Get metadata from meta table
352
- const metaRows = db.prepare('SELECT key, value FROM meta').all();
353
- let sessionData = {
354
- id: sessionId,
355
- name: 'Untitled Session',
356
- createdAt: null,
357
- mode: null,
358
- projectPath: projectPath,
359
- lastMessage: null,
360
- messageCount: 0
361
- };
362
- // Parse meta table entries
363
- for (const row of metaRows) {
364
- if (row.value) {
365
- try {
366
- // Try to decode as hex-encoded JSON
367
- const hexMatch = row.value.toString().match(/^[0-9a-fA-F]+$/);
368
- if (hexMatch) {
369
- const jsonStr = Buffer.from(row.value, 'hex').toString('utf8');
370
- const data = JSON.parse(jsonStr);
371
- if (row.key === 'agent') {
372
- sessionData.name = data.name || sessionData.name;
373
- // Normalize createdAt to ISO string in milliseconds
374
- let createdAt = data.createdAt;
375
- if (typeof createdAt === 'number') {
376
- if (createdAt < 1e12) {
377
- createdAt = createdAt * 1000; // seconds -> ms
378
- }
379
- sessionData.createdAt = new Date(createdAt).toISOString();
380
- }
381
- else if (typeof createdAt === 'string') {
382
- const n = Number(createdAt);
383
- if (!Number.isNaN(n)) {
384
- const ms = n < 1e12 ? n * 1000 : n;
385
- sessionData.createdAt = new Date(ms).toISOString();
386
- }
387
- else {
388
- // Assume it's already an ISO/date string
389
- const d = new Date(createdAt);
390
- sessionData.createdAt = isNaN(d.getTime()) ? null : d.toISOString();
391
- }
392
- }
393
- else {
394
- sessionData.createdAt = sessionData.createdAt || null;
395
- }
396
- sessionData.mode = data.mode;
397
- sessionData.agentId = data.agentId;
398
- sessionData.latestRootBlobId = data.latestRootBlobId;
399
- }
400
- }
401
- else {
402
- // If not hex, use raw value for simple keys
403
- if (row.key === 'name') {
404
- sessionData.name = row.value.toString();
405
- }
406
- }
407
- }
408
- catch (e) {
409
- console.log(`Could not parse meta value for key ${row.key}:`, e.message);
410
- }
411
- }
412
- }
413
- // Get message count from JSON blobs only (actual messages, not DAG structure)
414
- try {
415
- const blobCount = db.prepare(`SELECT COUNT(*) as count FROM blobs WHERE substr(data, 1, 1) = X'7B'`).get();
416
- sessionData.messageCount = blobCount.count;
417
- // Get the most recent JSON blob for preview (actual message, not DAG structure)
418
- const lastBlob = db.prepare(`SELECT data FROM blobs WHERE substr(data, 1, 1) = X'7B' ORDER BY rowid DESC LIMIT 1`).get();
419
- if (lastBlob && lastBlob.data) {
420
- try {
421
- // Try to extract readable preview from blob (may contain binary with embedded JSON)
422
- const raw = lastBlob.data.toString('utf8');
423
- let preview = '';
424
- // Attempt direct JSON parse
425
- try {
426
- const parsed = JSON.parse(raw);
427
- if (parsed?.content) {
428
- if (Array.isArray(parsed.content)) {
429
- const firstText = parsed.content.find(p => p?.type === 'text' && p.text)?.text || '';
430
- preview = firstText;
431
- }
432
- else if (typeof parsed.content === 'string') {
433
- preview = parsed.content;
434
- }
435
- }
436
- }
437
- catch (_) { }
438
- if (!preview) {
439
- // Strip non-printable and try to find JSON chunk
440
- const cleaned = raw.replace(/[^\x09\x0A\x0D\x20-\x7E]/g, '');
441
- const s = cleaned;
442
- const start = s.indexOf('{');
443
- const end = s.lastIndexOf('}');
444
- if (start !== -1 && end > start) {
445
- const jsonStr = s.slice(start, end + 1);
446
- try {
447
- const parsed = JSON.parse(jsonStr);
448
- if (parsed?.content) {
449
- if (Array.isArray(parsed.content)) {
450
- const firstText = parsed.content.find(p => p?.type === 'text' && p.text)?.text || '';
451
- preview = firstText;
452
- }
453
- else if (typeof parsed.content === 'string') {
454
- preview = parsed.content;
455
- }
456
- }
457
- }
458
- catch (_) {
459
- preview = s;
460
- }
461
- }
462
- else {
463
- preview = s;
464
- }
465
- }
466
- if (preview && preview.length > 0) {
467
- sessionData.lastMessage = preview.substring(0, 100) + (preview.length > 100 ? '...' : '');
468
- }
469
- }
470
- catch (e) {
471
- console.log('Could not parse blob data:', e.message);
472
- }
473
- }
474
- }
475
- catch (e) {
476
- console.log('Could not read blobs:', e.message);
477
- }
478
- db.close();
479
- // Finalize createdAt: use parsed meta value when valid, else fall back to store.db mtime
480
- if (!sessionData.createdAt) {
481
- if (dbStatMtimeMs && Number.isFinite(dbStatMtimeMs)) {
482
- sessionData.createdAt = new Date(dbStatMtimeMs).toISOString();
483
- }
484
- }
485
- sessions.push(sessionData);
486
- }
487
- catch (error) {
488
- console.log(`Could not read session ${sessionId}:`, error.message);
489
- }
490
- }
491
- // Fallback: ensure createdAt is a valid ISO string (use session directory mtime as last resort)
492
- for (const s of sessions) {
493
- if (!s.createdAt) {
494
- try {
495
- const sessionDir = path.join(cursorChatsPath, s.id);
496
- const st = await fs.stat(sessionDir);
497
- s.createdAt = new Date(st.mtimeMs).toISOString();
498
- }
499
- catch {
500
- s.createdAt = new Date().toISOString();
501
- }
502
- }
503
- }
504
- // Sort sessions by creation date (newest first)
505
- sessions.sort((a, b) => {
506
- if (!a.createdAt)
507
- return 1;
508
- if (!b.createdAt)
509
- return -1;
510
- return new Date(b.createdAt) - new Date(a.createdAt);
511
- });
512
- applyCustomSessionNames(sessions, 'cursor');
513
- res.json({
514
- success: true,
515
- sessions: sessions,
516
- cwdId: cwdId,
517
- path: cursorChatsPath
518
- });
519
- }
520
- catch (error) {
521
- console.error('Error reading Cursor sessions:', error);
522
- res.status(500).json({
523
- error: 'Failed to read Cursor sessions',
524
- details: error.message
44
+ details: error.message,
525
45
  });
526
46
  }
527
47
  });
@@ -1 +1 @@
1
- {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../server/routes/cursor.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../../server/routes/cursor.js"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAC;AAE/D,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AAEhC,0DAA0D;AAC1D,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IACvC,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,iBAAiB,CAAC,CAAC;QAEzE,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;YAC5D,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;YAEzC,GAAG,CAAC,IAAI,CAAC;gBACP,OAAO,EAAE,IAAI;gBACb,MAAM;gBACN,IAAI,EAAE,UAAU;aACjB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,sEAAsE;YACtE,OAAO,CAAC,GAAG,CAAC,qCAAqC,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;YAElE,GAAG,CAAC,IAAI,CAAC;gBACP,OAAO,EAAE,IAAI;gBACb,MAAM,EAAE;oBACN,OAAO,EAAE,CAAC;oBACV,KAAK,EAAE;wBACL,OAAO,EAAE,aAAa,CAAC,OAAO;wBAC9B,WAAW,EAAE,OAAO;qBACrB;oBACD,WAAW,EAAE;wBACX,KAAK,EAAE,EAAE;wBACT,IAAI,EAAE,EAAE;qBACT;iBACF;gBACD,SAAS,EAAE,IAAI;aAChB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACrD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACnB,KAAK,EAAE,qCAAqC;YAC5C,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
@@ -6,7 +6,7 @@
6
6
  * These endpoints expose centralized MCP detection functionality.
7
7
  */
8
8
  import express from 'express';
9
- import { detectTaskMasterMCPServer, getAllMCPServers } from '../utils/mcp-detector.js';
9
+ import { detectTaskMasterMCPServer } from '../utils/mcp-detector.js';
10
10
  const router = express.Router();
11
11
  /**
12
12
  * GET /api/mcp-utils/taskmaster-server
@@ -25,22 +25,5 @@ router.get('/taskmaster-server', async (req, res) => {
25
25
  });
26
26
  }
27
27
  });
28
- /**
29
- * GET /api/mcp-utils/all-servers
30
- * Get all configured MCP servers
31
- */
32
- router.get('/all-servers', async (req, res) => {
33
- try {
34
- const result = await getAllMCPServers();
35
- res.json(result);
36
- }
37
- catch (error) {
38
- console.error('MCP servers detection error:', error);
39
- res.status(500).json({
40
- error: 'Failed to get MCP servers',
41
- message: error.message
42
- });
43
- }
44
- });
45
28
  export default router;
46
29
  //# sourceMappingURL=mcp-utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-utils.js","sourceRoot":"","sources":["../../../server/routes/mcp-utils.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,yBAAyB,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAEvF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AAEhC;;;GAGG;AACH,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IAChD,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,yBAAyB,EAAE,CAAC;QACjD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QACxD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACjB,KAAK,EAAE,wCAAwC;YAC/C,OAAO,EAAE,KAAK,CAAC,OAAO;SACzB,CAAC,CAAC;IACP,CAAC;AACL,CAAC,CAAC,CAAC;AAEH;;;GAGG;AACH,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IAC1C,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;QACxC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;QACrD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACjB,KAAK,EAAE,2BAA2B;YAClC,OAAO,EAAE,KAAK,CAAC,OAAO;SACzB,CAAC,CAAC;IACP,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"mcp-utils.js","sourceRoot":"","sources":["../../../server/routes/mcp-utils.js"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AAErE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AAEhC;;;GAGG;AACH,MAAM,CAAC,GAAG,CAAC,oBAAoB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IAChD,IAAI,CAAC;QACD,MAAM,MAAM,GAAG,MAAM,yBAAyB,EAAE,CAAC;QACjD,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACrB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,iCAAiC,EAAE,KAAK,CAAC,CAAC;QACxD,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YACjB,KAAK,EAAE,wCAAwC;YAC/C,OAAO,EAAE,KAAK,CAAC,OAAO;SACzB,CAAC,CAAC;IACP,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
@@ -9,7 +9,7 @@
9
9
  * @module routes/messages
10
10
  */
11
11
  import express from 'express';
12
- import { getProvider, getAllProviders } from '../providers/registry.js';
12
+ import { sessionsService } from '../modules/providers/services/sessions.service.js';
13
13
  const router = express.Router();
14
14
  /**
15
15
  * GET /api/sessions/:sessionId/messages
@@ -26,7 +26,7 @@ const router = express.Router();
26
26
  router.get('/:sessionId/messages', async (req, res) => {
27
27
  try {
28
28
  const { sessionId } = req.params;
29
- const provider = req.query.provider || 'claude';
29
+ const provider = String(req.query.provider || 'claude').trim().toLowerCase();
30
30
  const projectName = req.query.projectName || '';
31
31
  const projectPath = req.query.projectPath || '';
32
32
  const limitParam = req.query.limit;
@@ -34,12 +34,12 @@ router.get('/:sessionId/messages', async (req, res) => {
34
34
  ? parseInt(limitParam, 10)
35
35
  : null;
36
36
  const offset = parseInt(req.query.offset || '0', 10);
37
- const adapter = getProvider(provider);
38
- if (!adapter) {
39
- const available = getAllProviders().join(', ');
37
+ const availableProviders = sessionsService.listProviderIds();
38
+ if (!availableProviders.includes(provider)) {
39
+ const available = availableProviders.join(', ');
40
40
  return res.status(400).json({ error: `Unknown provider: ${provider}. Available: ${available}` });
41
41
  }
42
- const result = await adapter.fetchHistory(sessionId, {
42
+ const result = await sessionsService.fetchHistory(provider, sessionId, {
43
43
  projectName,
44
44
  projectPath,
45
45
  limit,
@@ -1 +1 @@
1
- {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../server/routes/messages.js"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAExE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AAEhC;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IACpD,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QACjC,MAAM,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC;QAChD,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;QAChD,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;QAChD,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;QACnC,MAAM,KAAK,GAAG,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,EAAE;YAChF,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC;YAC1B,CAAC,CAAC,IAAI,CAAC;QACT,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QAErD,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/C,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qBAAqB,QAAQ,gBAAgB,SAAS,EAAE,EAAE,CAAC,CAAC;QACnG,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,YAAY,CAAC,SAAS,EAAE;YACnD,WAAW;YACX,WAAW;YACX,KAAK;YACL,MAAM;SACP,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;QACzD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,CAAC;IACrE,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../server/routes/messages.js"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,OAAO,MAAM,SAAS,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,mDAAmD,CAAC;AAEpF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AAEhC;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,GAAG,CAAC,sBAAsB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IACpD,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QACjC,MAAM,QAAQ,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,IAAI,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QAC7E,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;QAChD,MAAM,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAC;QAChD,MAAM,UAAU,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC;QACnC,MAAM,KAAK,GAAG,UAAU,KAAK,SAAS,IAAI,UAAU,KAAK,IAAI,IAAI,UAAU,KAAK,EAAE;YAChF,CAAC,CAAC,QAAQ,CAAC,UAAU,EAAE,EAAE,CAAC;YAC1B,CAAC,CAAC,IAAI,CAAC;QACT,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,IAAI,GAAG,EAAE,EAAE,CAAC,CAAC;QAErD,MAAM,kBAAkB,GAAG,eAAe,CAAC,eAAe,EAAE,CAAC;QAC7D,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC3C,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAChD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,qBAAqB,QAAQ,gBAAgB,SAAS,EAAE,EAAE,CAAC,CAAC;QACnG,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,YAAY,CAAC,QAAQ,EAAE,SAAS,EAAE;YACrE,WAAW;YACX,WAAW;YACX,KAAK;YACL,MAAM;SACP,CAAC,CAAC;QAEH,OAAO,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,KAAK,CAAC,CAAC;QACzD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,0BAA0B,EAAE,CAAC,CAAC;IACrE,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}