@pixelbyte-software/pixcode 1.53.28 → 1.54.1

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/assets/{index-BBDYzJ7B.js → index-CLO8YURv.js} +148 -148
  2. package/dist/index.html +1 -1
  3. package/dist-server/server/claude-sdk.js +6 -0
  4. package/dist-server/server/claude-sdk.js.map +1 -1
  5. package/dist-server/server/cli.js +67 -0
  6. package/dist-server/server/cli.js.map +1 -1
  7. package/dist-server/server/index.js +278 -54
  8. package/dist-server/server/index.js.map +1 -1
  9. package/dist-server/server/middleware/account-lockout.js +101 -0
  10. package/dist-server/server/middleware/account-lockout.js.map +1 -0
  11. package/dist-server/server/middleware/auth.js +71 -9
  12. package/dist-server/server/middleware/auth.js.map +1 -1
  13. package/dist-server/server/middleware/rate-limiter.js +62 -0
  14. package/dist-server/server/middleware/rate-limiter.js.map +1 -0
  15. package/dist-server/server/routes/agent.js +3 -4
  16. package/dist-server/server/routes/agent.js.map +1 -1
  17. package/dist-server/server/routes/auth.js +75 -13
  18. package/dist-server/server/routes/auth.js.map +1 -1
  19. package/dist-server/server/routes/codex.js +1 -1
  20. package/dist-server/server/routes/codex.js.map +1 -1
  21. package/dist-server/server/routes/diagnostics.js +6 -3
  22. package/dist-server/server/routes/diagnostics.js.map +1 -1
  23. package/dist-server/server/routes/gemini.js +1 -1
  24. package/dist-server/server/routes/gemini.js.map +1 -1
  25. package/dist-server/server/routes/git.js +9 -9
  26. package/dist-server/server/routes/git.js.map +1 -1
  27. package/dist-server/server/routes/live-view.js +2 -2
  28. package/dist-server/server/routes/live-view.js.map +1 -1
  29. package/dist-server/server/routes/plugins.js +12 -12
  30. package/dist-server/server/routes/plugins.js.map +1 -1
  31. package/dist-server/server/routes/projects.js +2 -2
  32. package/dist-server/server/routes/projects.js.map +1 -1
  33. package/dist-server/server/routes/qwen.js +1 -1
  34. package/dist-server/server/routes/qwen.js.map +1 -1
  35. package/dist-server/server/routes/remote.js +1 -1
  36. package/dist-server/server/routes/remote.js.map +1 -1
  37. package/dist-server/server/routes/webhooks.js +1 -1
  38. package/dist-server/server/routes/webhooks.js.map +1 -1
  39. package/dist-server/server/services/startup-update.js +31 -6
  40. package/dist-server/server/services/startup-update.js.map +1 -1
  41. package/dist-server/server/services/telegram/bot.js +6 -4
  42. package/dist-server/server/services/telegram/bot.js.map +1 -1
  43. package/dist-server/server/setup-wizard.js +246 -0
  44. package/dist-server/server/setup-wizard.js.map +1 -0
  45. package/dist-server/server/utils/plugin-loader.js +3 -0
  46. package/dist-server/server/utils/plugin-loader.js.map +1 -1
  47. package/dist-server/server/utils/port-access.js +25 -8
  48. package/dist-server/server/utils/port-access.js.map +1 -1
  49. package/dist-server/server/utils/security-log.js +89 -0
  50. package/dist-server/server/utils/security-log.js.map +1 -0
  51. package/package.json +1 -1
  52. package/server/claude-sdk.js +7 -0
  53. package/server/cli.js +67 -0
  54. package/server/index.js +287 -55
  55. package/server/middleware/account-lockout.js +112 -0
  56. package/server/middleware/auth.js +72 -9
  57. package/server/middleware/rate-limiter.js +82 -0
  58. package/server/routes/agent.js +3 -4
  59. package/server/routes/auth.js +86 -13
  60. package/server/routes/codex.js +1 -1
  61. package/server/routes/diagnostics.js +6 -3
  62. package/server/routes/gemini.js +1 -1
  63. package/server/routes/git.js +9 -9
  64. package/server/routes/live-view.js +2 -2
  65. package/server/routes/plugins.js +12 -12
  66. package/server/routes/projects.js +2 -2
  67. package/server/routes/qwen.js +1 -1
  68. package/server/routes/remote.js +1 -1
  69. package/server/routes/webhooks.js +1 -1
  70. package/server/services/startup-update.js +31 -6
  71. package/server/services/telegram/bot.js +6 -4
  72. package/server/setup-wizard.js +263 -0
  73. package/server/utils/plugin-loader.js +4 -0
  74. package/server/utils/port-access.js +26 -8
  75. package/server/utils/security-log.js +84 -0
@@ -1,11 +1,10 @@
1
1
  import express from 'express';
2
- // bcryptjs is a pure-JS drop-in (same hash/compare API, same output format)
3
- // — switching from native `bcrypt` here eliminated one C++ compile from
4
- // the install path. Existing $2a$/$2b$ hashes in the DB remain valid;
5
- // bcryptjs recognizes both prefixes so logins work across the swap.
6
2
  import bcrypt from 'bcryptjs';
7
3
  import { userDb, db } from '../database/db.js';
8
4
  import { generateToken, authenticateToken, requireAdmin } from '../middleware/auth.js';
5
+ import { authRateLimiter } from '../middleware/rate-limiter.js';
6
+ import { checkAccountLockout, recordFailedLogin, recordSuccessfulLogin, validatePasswordPolicy, validateUsername, } from '../middleware/account-lockout.js';
7
+ import { securityLog, getClientIp } from '../utils/security-log.js';
9
8
  import { consumeQrLoginToken, createQrLoginToken, getQrLoginSettings, saveQrLoginSettings, } from '../services/qr-login.js';
10
9
  import { getPublicRemoteConnectionConfig, saveRemoteConnectionConfig, } from '../services/remote-connection.js';
11
10
  const router = express.Router();
@@ -36,7 +35,10 @@ router.get('/status', async (req, res) => {
36
35
  router.get('/connection-mode', (req, res) => {
37
36
  res.json({ success: true, connection: getPublicRemoteConnectionConfig() });
38
37
  });
39
- router.put('/connection-mode', (req, res) => {
38
+ // Changing the connection mode is a state-changing operation that must
39
+ // require authentication. Without auth, any unauthenticated caller could
40
+ // redirect the app to a malicious remote server.
41
+ router.put('/connection-mode', authenticateToken, requireAdmin, (req, res) => {
40
42
  try {
41
43
  res.json({ success: true, connection: saveRemoteConnectionConfig(req.body || {}) });
42
44
  }
@@ -55,7 +57,7 @@ router.put('/qr-login/settings', authenticateToken, requireAdmin, (req, res) =>
55
57
  res.status(400).json({ success: false, error: error.message });
56
58
  }
57
59
  });
58
- router.post('/qr-login/token', authenticateToken, requireAdmin, (req, res) => {
60
+ router.post('/qr-login/token', authenticateToken, requireAdmin, authRateLimiter, (req, res) => {
59
61
  try {
60
62
  const baseUrl = typeof req.body?.baseUrl === 'string' && req.body.baseUrl.trim()
61
63
  ? req.body.baseUrl.trim()
@@ -67,11 +69,16 @@ router.post('/qr-login/token', authenticateToken, requireAdmin, (req, res) => {
67
69
  res.status(status).json({ success: false, error: error.message });
68
70
  }
69
71
  });
70
- router.post('/qr-login', (req, res) => {
72
+ router.post('/qr-login', authRateLimiter, (req, res) => {
71
73
  try {
72
74
  const user = consumeQrLoginToken(req.body?.token);
73
75
  const token = generateToken(user);
74
76
  userDb.updateLastLogin(user.id);
77
+ securityLog('qr_login_success', {
78
+ ip: getClientIp(req),
79
+ userId: user.id,
80
+ username: user.username,
81
+ });
75
82
  res.json({
76
83
  success: true,
77
84
  user: publicUser(user),
@@ -80,19 +87,29 @@ router.post('/qr-login', (req, res) => {
80
87
  }
81
88
  catch (error) {
82
89
  const status = error?.code === 'QR_LOGIN_DISABLED' ? 409 : 401;
90
+ securityLog('qr_login_failed', {
91
+ ip: getClientIp(req),
92
+ reason: error?.code || 'unknown',
93
+ });
83
94
  res.status(status).json({ success: false, error: error.message });
84
95
  }
85
96
  });
86
97
  // User registration (setup) - only allowed if no users exist
87
- router.post('/register', async (req, res) => {
98
+ router.post('/register', authRateLimiter, async (req, res) => {
88
99
  try {
89
100
  const { username, password } = req.body;
101
+ const clientIp = getClientIp(req);
90
102
  // Validate input
91
103
  if (!username || !password) {
92
104
  return res.status(400).json({ error: 'Username and password are required' });
93
105
  }
94
- if (username.length < 3 || password.length < 6) {
95
- return res.status(400).json({ error: 'Username must be at least 3 characters, password at least 6 characters' });
106
+ const usernameValidation = validateUsername(username);
107
+ if (!usernameValidation.valid) {
108
+ return res.status(400).json({ error: usernameValidation.error });
109
+ }
110
+ const passwordValidation = validatePasswordPolicy(password);
111
+ if (!passwordValidation.valid) {
112
+ return res.status(400).json({ error: passwordValidation.error });
96
113
  }
97
114
  // Use a transaction to prevent race conditions
98
115
  db.prepare('BEGIN').run();
@@ -113,6 +130,11 @@ router.post('/register', async (req, res) => {
113
130
  db.prepare('COMMIT').run();
114
131
  // Update last login (non-fatal, outside transaction)
115
132
  userDb.updateLastLogin(user.id);
133
+ securityLog('user_registered', {
134
+ ip: clientIp,
135
+ userId: user.id,
136
+ username: user.username,
137
+ });
116
138
  res.json({
117
139
  success: true,
118
140
  user: publicUser(user),
@@ -135,27 +157,64 @@ router.post('/register', async (req, res) => {
135
157
  }
136
158
  });
137
159
  // User login
138
- router.post('/login', async (req, res) => {
160
+ router.post('/login', authRateLimiter, async (req, res) => {
139
161
  try {
140
162
  const { username, password } = req.body;
163
+ const clientIp = getClientIp(req);
141
164
  // Validate input
142
165
  if (!username || !password) {
143
166
  return res.status(400).json({ error: 'Username and password are required' });
144
167
  }
168
+ // Check account lockout before attempting login
169
+ const lockoutStatus = checkAccountLockout(String(username), clientIp);
170
+ if (lockoutStatus.locked) {
171
+ securityLog('login_blocked_locked', {
172
+ ip: clientIp,
173
+ username,
174
+ reason: 'Account locked due to failed attempts',
175
+ });
176
+ return res.status(423).json({ error: lockoutStatus.message });
177
+ }
145
178
  // Get user from database
146
179
  const user = userDb.getUserByUsername(username);
147
180
  if (!user) {
181
+ const failResult = recordFailedLogin(String(username), clientIp);
182
+ securityLog('login_failed', {
183
+ ip: clientIp,
184
+ username,
185
+ reason: 'User not found',
186
+ });
187
+ if (failResult.locked) {
188
+ return res.status(423).json({ error: failResult.message });
189
+ }
148
190
  return res.status(401).json({ error: 'Invalid username or password' });
149
191
  }
150
192
  // Verify password
151
193
  const isValidPassword = await bcrypt.compare(password, user.password_hash);
152
194
  if (!isValidPassword) {
195
+ const failResult = recordFailedLogin(String(username), clientIp);
196
+ securityLog('login_failed', {
197
+ ip: clientIp,
198
+ username,
199
+ userId: user.id,
200
+ reason: 'Invalid password',
201
+ });
202
+ if (failResult.locked) {
203
+ return res.status(423).json({ error: failResult.message });
204
+ }
153
205
  return res.status(401).json({ error: 'Invalid username or password' });
154
206
  }
207
+ // Clear failed attempts on successful login
208
+ recordSuccessfulLogin(String(username), clientIp);
155
209
  // Generate token
156
210
  const token = generateToken(user);
157
211
  // Update last login
158
212
  userDb.updateLastLogin(user.id);
213
+ securityLog('login_success', {
214
+ ip: clientIp,
215
+ userId: user.id,
216
+ username: user.username,
217
+ });
159
218
  res.json({
160
219
  success: true,
161
220
  user: publicUser(user),
@@ -175,8 +234,11 @@ router.get('/user', authenticateToken, (req, res) => {
175
234
  });
176
235
  // Logout (client-side token removal, but this endpoint can be used for logging)
177
236
  router.post('/logout', authenticateToken, (req, res) => {
178
- // In a simple JWT system, logout is mainly client-side
179
- // This endpoint exists for consistency and potential future logging
237
+ securityLog('user_logout', {
238
+ ip: getClientIp(req),
239
+ userId: req.user?.id,
240
+ username: req.user?.username,
241
+ });
180
242
  res.json({ success: true, message: 'Logged out successfully' });
181
243
  });
182
244
  export default router;
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../server/routes/auth.js"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../server/routes/auth.js"],"names":[],"mappings":"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"}
@@ -11,7 +11,7 @@ router.delete('/sessions/:sessionId', async (req, res) => {
11
11
  }
12
12
  catch (error) {
13
13
  console.error(`Error deleting Codex session ${req.params.sessionId}:`, error);
14
- res.status(500).json({ success: false, error: error.message });
14
+ res.status(500).json({ success: false, error: "Internal server error" });
15
15
  }
16
16
  });
17
17
  export default router;
@@ -1 +1 @@
1
- {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../server/routes/codex.js"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AAEhC,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IACvD,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QACjC,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACpC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC9C,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"codex.js","sourceRoot":"","sources":["../../../server/routes/codex.js"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AAEhC,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IACvD,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QACjC,MAAM,kBAAkB,CAAC,SAAS,CAAC,CAAC;QACpC,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC9C,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,gCAAgC,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;QAC9E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;IAC3E,CAAC;AACH,CAAC,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
@@ -1,5 +1,6 @@
1
1
  import express from 'express';
2
2
  import { collectDiagnostics } from '../services/diagnostics.js';
3
+ import { requireAdmin } from '../middleware/auth.js';
3
4
  const router = express.Router();
4
5
  function buildDiagnostics(req) {
5
6
  return collectDiagnostics({
@@ -12,10 +13,12 @@ function buildDiagnostics(req) {
12
13
  cache: req.app.locals.diagnosticsCache || {},
13
14
  });
14
15
  }
15
- router.get('/', (req, res) => {
16
+ // Diagnostics expose internal system state (active sessions, errors,
17
+ // provider health) — restrict to admins to prevent information leakage.
18
+ router.get('/', requireAdmin, (req, res) => {
16
19
  res.json(buildDiagnostics(req));
17
20
  });
18
- router.post('/refresh', (req, res) => {
21
+ router.post('/refresh', requireAdmin, (req, res) => {
19
22
  req.app.locals.diagnosticsCache = {
20
23
  ...(req.app.locals.diagnosticsCache || {}),
21
24
  diagnosticsUpdatedAt: new Date().toISOString(),
@@ -23,7 +26,7 @@ router.post('/refresh', (req, res) => {
23
26
  };
24
27
  res.json(buildDiagnostics(req));
25
28
  });
26
- router.get('/bundle', (req, res) => {
29
+ router.get('/bundle', requireAdmin, (req, res) => {
27
30
  const diagnostics = buildDiagnostics(req);
28
31
  res.json({
29
32
  generatedAt: diagnostics.timestamp,
@@ -1 +1 @@
1
- {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../server/routes/diagnostics.js"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEhE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AAEhC,SAAS,gBAAgB,CAAC,GAAG;IAC3B,OAAO,kBAAkB,CAAC;QACxB,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW;QACvC,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa;QAC3C,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG;QACvB,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE;QAC3C,YAAY,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE;QAC/C,cAAc,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE;QACnD,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE;KAC7C,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IAC3B,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACnC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,GAAG;QAChC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC;QAC1C,oBAAoB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC9C,aAAa,EAAE,IAAI;KACpB,CAAC;IACF,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACjC,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC1C,GAAG,CAAC,IAAI,CAAC;QACP,WAAW,EAAE,WAAW,CAAC,SAAS;QAClC,QAAQ,EAAE,IAAI;QACd,WAAW;KACZ,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../../server/routes/diagnostics.js"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAErD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AAEhC,SAAS,gBAAgB,CAAC,GAAG;IAC3B,OAAO,kBAAkB,CAAC;QACxB,WAAW,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,WAAW;QACvC,aAAa,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,aAAa;QAC3C,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG;QACvB,UAAU,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE;QAC3C,YAAY,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,YAAY,IAAI,EAAE;QAC/C,cAAc,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,cAAc,IAAI,EAAE;QACnD,KAAK,EAAE,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE;KAC7C,CAAC,CAAC;AACL,CAAC;AAED,qEAAqE;AACrE,wEAAwE;AACxE,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACzC,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACjD,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,GAAG;QAChC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,gBAAgB,IAAI,EAAE,CAAC;QAC1C,oBAAoB,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC9C,aAAa,EAAE,IAAI;KACpB,CAAC;IACF,GAAG,CAAC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC;AAClC,CAAC,CAAC,CAAC;AAEH,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IAC/C,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAC1C,GAAG,CAAC,IAAI,CAAC;QACP,WAAW,EAAE,WAAW,CAAC,SAAS;QAClC,QAAQ,EAAE,IAAI;QACd,WAAW;KACZ,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
@@ -14,7 +14,7 @@ router.delete('/sessions/:sessionId', async (req, res) => {
14
14
  }
15
15
  catch (error) {
16
16
  console.error(`Error deleting Gemini session ${req.params.sessionId}:`, error);
17
- res.status(500).json({ success: false, error: error.message });
17
+ res.status(500).json({ success: false, error: "Internal server error" });
18
18
  }
19
19
  });
20
20
  export default router;
@@ -1 +1 @@
1
- {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../server/routes/gemini.js"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AAEhC,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IACrD,IAAI,CAAC;QACD,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAEjC,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5F,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC,CAAC;QACxF,CAAC;QAED,MAAM,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC9C,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC/C,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,iCAAiC,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;QAC/E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACnE,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../../server/routes/gemini.js"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,cAAc,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;AAEhC,MAAM,CAAC,MAAM,CAAC,sBAAsB,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;IACrD,IAAI,CAAC;QACD,MAAM,EAAE,SAAS,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;QAEjC,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YAC5F,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,2BAA2B,EAAE,CAAC,CAAC;QACxF,CAAC;QAED,MAAM,cAAc,CAAC,aAAa,CAAC,SAAS,CAAC,CAAC;QAC9C,cAAc,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAC/C,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;IAChC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,OAAO,CAAC,KAAK,CAAC,iCAAiC,GAAG,CAAC,MAAM,CAAC,SAAS,GAAG,EAAE,KAAK,CAAC,CAAC;QAC/E,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,uBAAuB,EAAE,CAAC,CAAC;IAC7E,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,eAAe,MAAM,CAAC"}
@@ -752,7 +752,7 @@ router.post('/initial-commit', async (req, res) => {
752
752
  details: 'No files found in the repository. Add some files first.'
753
753
  });
754
754
  }
755
- res.status(500).json({ error: error.message });
755
+ res.status(500).json({ error: "Internal server error" });
756
756
  }
757
757
  });
758
758
  // Commit changes
@@ -777,7 +777,7 @@ router.post('/commit', async (req, res) => {
777
777
  }
778
778
  catch (error) {
779
779
  console.error('Git commit error:', error);
780
- res.status(500).json({ error: error.message });
780
+ res.status(500).json({ error: "Internal server error" });
781
781
  }
782
782
  });
783
783
  // Revert latest local commit (keeps changes staged)
@@ -819,7 +819,7 @@ router.post('/revert-local-commit', async (req, res) => {
819
819
  }
820
820
  catch (error) {
821
821
  console.error('Git revert local commit error:', error);
822
- res.status(500).json({ error: error.message });
822
+ res.status(500).json({ error: "Internal server error" });
823
823
  }
824
824
  });
825
825
  // Get list of branches
@@ -872,7 +872,7 @@ router.post('/checkout', async (req, res) => {
872
872
  }
873
873
  catch (error) {
874
874
  console.error('Git checkout error:', error);
875
- res.status(500).json({ error: error.message });
875
+ res.status(500).json({ error: "Internal server error" });
876
876
  }
877
877
  });
878
878
  // Create new branch
@@ -890,7 +890,7 @@ router.post('/create-branch', async (req, res) => {
890
890
  }
891
891
  catch (error) {
892
892
  console.error('Git create branch error:', error);
893
- res.status(500).json({ error: error.message });
893
+ res.status(500).json({ error: "Internal server error" });
894
894
  }
895
895
  });
896
896
  // Delete a local branch
@@ -912,7 +912,7 @@ router.post('/delete-branch', async (req, res) => {
912
912
  }
913
913
  catch (error) {
914
914
  console.error('Git delete branch error:', error);
915
- res.status(500).json({ error: error.message });
915
+ res.status(500).json({ error: "Internal server error" });
916
916
  }
917
917
  });
918
918
  // Get recent commits
@@ -1038,7 +1038,7 @@ router.post('/generate-commit-message', async (req, res) => {
1038
1038
  }
1039
1039
  catch (error) {
1040
1040
  console.error('Generate commit message error:', error);
1041
- res.status(500).json({ error: error.message });
1041
+ res.status(500).json({ error: "Internal server error" });
1042
1042
  }
1043
1043
  });
1044
1044
  /**
@@ -1513,7 +1513,7 @@ router.post('/discard', async (req, res) => {
1513
1513
  }
1514
1514
  catch (error) {
1515
1515
  console.error('Git discard error:', error);
1516
- res.status(500).json({ error: error.message });
1516
+ res.status(500).json({ error: "Internal server error" });
1517
1517
  }
1518
1518
  });
1519
1519
  // Delete untracked file
@@ -1550,7 +1550,7 @@ router.post('/delete-untracked', async (req, res) => {
1550
1550
  }
1551
1551
  catch (error) {
1552
1552
  console.error('Git delete untracked error:', error);
1553
- res.status(500).json({ error: error.message });
1553
+ res.status(500).json({ error: "Internal server error" });
1554
1554
  }
1555
1555
  });
1556
1556
  export default router;