link0518 commited on
Commit
f783f84
·
1 Parent(s): 82ecee3
Files changed (2) hide show
  1. src/server/index.js +4 -1
  2. src/utils/utils.js +39 -3
src/server/index.js CHANGED
@@ -148,7 +148,10 @@ app.post('/v1/chat/completions', async (req, res) => {
148
  stream = false;
149
  }
150
 
151
- const requestBody = generateRequestBody(messages, model, params, tools);
 
 
 
152
 
153
 
154
  if (stream) {
 
148
  stream = false;
149
  }
150
 
151
+ const authHeader = req.headers.authorization;
152
+ const apiKey = authHeader?.startsWith('Bearer ') ? authHeader.slice(7) : authHeader;
153
+
154
+ const requestBody = generateRequestBody(messages, model, params, tools, apiKey);
155
 
156
 
157
  if (stream) {
src/utils/utils.js CHANGED
@@ -201,7 +201,39 @@ function convertOpenAIToolsToAntigravity(openaiTools) {
201
  }
202
  })
203
  }
204
- function generateRequestBody(openaiMessages, modelName, parameters, openaiTools) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
205
  const enableThinking = modelName.endsWith('-thinking') ||
206
  modelName === 'gemini-2.5-pro' ||
207
  modelName === 'gemini-2.5-pro-image' ||
@@ -210,8 +242,12 @@ function generateRequestBody(openaiMessages, modelName, parameters, openaiTools)
210
  modelName === "gpt-oss-120b-medium"
211
  const actualModelName = modelName.endsWith('-thinking') ? modelName.slice(0, -9) : modelName;
212
 
 
 
 
 
213
  return {
214
- project: generateProjectId(),
215
  requestId: generateRequestId(),
216
  request: {
217
  contents: openaiMessageToAntigravity(openaiMessages),
@@ -226,7 +262,7 @@ function generateRequestBody(openaiMessages, modelName, parameters, openaiTools)
226
  }
227
  },
228
  generationConfig: generateGenerationConfig(parameters, enableThinking, actualModelName),
229
- sessionId: generateSessionId()
230
  },
231
  model: actualModelName,
232
  userAgent: "antigravity"
 
201
  }
202
  })
203
  }
204
+ const idCache = new Map();
205
+ const SESSION_ID_DURATION = 60 * 60 * 1000; // 1 hour
206
+ const PROJECT_ID_DURATION = 12 * 60 * 60 * 1000; // 12 hours
207
+
208
+ function getCachedIds(apiKey) {
209
+ const now = Date.now();
210
+ let cache = idCache.get(apiKey);
211
+
212
+ if (!cache) {
213
+ cache = {
214
+ projectId: generateProjectId(),
215
+ projectExpiry: now + PROJECT_ID_DURATION,
216
+ sessionId: generateSessionId(),
217
+ sessionExpiry: now + SESSION_ID_DURATION
218
+ };
219
+ idCache.set(apiKey, cache);
220
+ return cache;
221
+ }
222
+
223
+ if (now > cache.projectExpiry) {
224
+ cache.projectId = generateProjectId();
225
+ cache.projectExpiry = now + PROJECT_ID_DURATION;
226
+ }
227
+
228
+ if (now > cache.sessionExpiry) {
229
+ cache.sessionId = generateSessionId();
230
+ cache.sessionExpiry = now + SESSION_ID_DURATION;
231
+ }
232
+
233
+ return cache;
234
+ }
235
+
236
+ function generateRequestBody(openaiMessages, modelName, parameters, openaiTools, apiKey) {
237
  const enableThinking = modelName.endsWith('-thinking') ||
238
  modelName === 'gemini-2.5-pro' ||
239
  modelName === 'gemini-2.5-pro-image' ||
 
242
  modelName === "gpt-oss-120b-medium"
243
  const actualModelName = modelName.endsWith('-thinking') ? modelName.slice(0, -9) : modelName;
244
 
245
+ // Use a default key if none provided (though it should be provided by the server)
246
+ const cacheKey = apiKey || 'default';
247
+ const { projectId, sessionId } = getCachedIds(cacheKey);
248
+
249
  return {
250
+ project: projectId,
251
  requestId: generateRequestId(),
252
  request: {
253
  contents: openaiMessageToAntigravity(openaiMessages),
 
262
  }
263
  },
264
  generationConfig: generateGenerationConfig(parameters, enableThinking, actualModelName),
265
+ sessionId: sessionId
266
  },
267
  model: actualModelName,
268
  userAgent: "antigravity"