liuw15 commited on
Commit
f5e9acd
·
1 Parent(s): feee929
Files changed (2) hide show
  1. src/utils/utils.js +34 -28
  2. test/test-get-ip.js +17 -9
src/utils/utils.js CHANGED
@@ -39,7 +39,7 @@ function extractImagesFromContent(content) {
39
 
40
  return result;
41
  }
42
- function handleUserMessage(extracted, antigravityMessages){
43
  antigravityMessages.push({
44
  role: "user",
45
  parts: [
@@ -50,11 +50,11 @@ function handleUserMessage(extracted, antigravityMessages){
50
  ]
51
  })
52
  }
53
- function handleAssistantMessage(message, antigravityMessages){
54
  const lastMessage = antigravityMessages[antigravityMessages.length - 1];
55
  const hasToolCalls = message.tool_calls && message.tool_calls.length > 0;
56
  const hasContent = message.content && message.content.trim() !== '';
57
-
58
  const antigravityTools = hasToolCalls ? message.tool_calls.map(toolCall => ({
59
  functionCall: {
60
  id: toolCall.id,
@@ -64,21 +64,21 @@ function handleAssistantMessage(message, antigravityMessages){
64
  }
65
  }
66
  })) : [];
67
-
68
- if (lastMessage?.role === "model" && hasToolCalls && !hasContent){
69
  lastMessage.parts.push(...antigravityTools)
70
- }else{
71
  const parts = [];
72
  if (hasContent) parts.push({ text: message.content });
73
  parts.push(...antigravityTools);
74
-
75
  antigravityMessages.push({
76
  role: "model",
77
  parts
78
  })
79
  }
80
  }
81
- function handleToolCall(message, antigravityMessages){
82
  // 从之前的 model 消息中找到对应的 functionCall name
83
  let functionName = '';
84
  for (let i = antigravityMessages.length - 1; i >= 0; i--) {
@@ -93,7 +93,7 @@ function handleToolCall(message, antigravityMessages){
93
  if (functionName) break;
94
  }
95
  }
96
-
97
  const lastMessage = antigravityMessages[antigravityMessages.length - 1];
98
  const functionResponse = {
99
  functionResponse: {
@@ -104,7 +104,7 @@ function handleToolCall(message, antigravityMessages){
104
  }
105
  }
106
  };
107
-
108
  // 如果上一条消息是 user 且包含 functionResponse,则合并
109
  if (lastMessage?.role === "user" && lastMessage.parts.some(p => p.functionResponse)) {
110
  lastMessage.parts.push(functionResponse);
@@ -115,7 +115,7 @@ function handleToolCall(message, antigravityMessages){
115
  });
116
  }
117
  }
118
- function openaiMessageToAntigravity(openaiMessages){
119
  const antigravityMessages = [];
120
  for (const message of openaiMessages) {
121
  if (message.role === "user" || message.role === "system") {
@@ -127,10 +127,10 @@ function openaiMessageToAntigravity(openaiMessages){
127
  handleToolCall(message, antigravityMessages);
128
  }
129
  }
130
-
131
  return antigravityMessages;
132
  }
133
- function generateGenerationConfig(parameters, enableThinking, actualModelName){
134
  const generationConfig = {
135
  topP: parameters.top_p ?? config.defaults.top_p,
136
  topK: parameters.top_k ?? config.defaults.top_k,
@@ -149,14 +149,14 @@ function generateGenerationConfig(parameters, enableThinking, actualModelName){
149
  thinkingBudget: enableThinking ? 1024 : 0
150
  }
151
  }
152
- if (enableThinking && actualModelName.includes("claude")){
153
  delete generationConfig.topP;
154
  }
155
  return generationConfig
156
  }
157
- function convertOpenAIToolsToAntigravity(openaiTools){
158
  if (!openaiTools || openaiTools.length === 0) return [];
159
- return openaiTools.map((tool)=>{
160
  delete tool.function.parameters.$schema;
161
  return {
162
  functionDeclarations: [
@@ -169,16 +169,16 @@ function convertOpenAIToolsToAntigravity(openaiTools){
169
  }
170
  })
171
  }
172
- function generateRequestBody(openaiMessages,modelName,parameters,openaiTools,token){
173
-
174
- const enableThinking = modelName.endsWith('-thinking') ||
175
- modelName === 'gemini-2.5-pro' ||
176
  modelName.startsWith('gemini-3-pro-') ||
177
  modelName === "rev19-uic3-1p" ||
178
  modelName === "gpt-oss-120b-medium"
179
  const actualModelName = modelName.endsWith('-thinking') ? modelName.slice(0, -9) : modelName;
180
-
181
- return{
182
  project: token.projectId,
183
  requestId: generateRequestId(),
184
  request: {
@@ -200,18 +200,24 @@ function generateRequestBody(openaiMessages,modelName,parameters,openaiTools,tok
200
  userAgent: "antigravity"
201
  }
202
  }
203
- function getDefaultIp(){
204
  const interfaces = os.networkInterfaces();
205
- if (interfaces.WLAN){
206
- for (const inter of interfaces.WLAN){
207
- if (inter.family === 'IPv4' && !inter.internal){
208
- return inter.address;
 
 
 
 
 
 
209
  }
210
  }
211
  }
212
  return '127.0.0.1';
213
  }
214
- export{
215
  generateRequestId,
216
  generateRequestBody,
217
  getDefaultIp
 
39
 
40
  return result;
41
  }
42
+ function handleUserMessage(extracted, antigravityMessages) {
43
  antigravityMessages.push({
44
  role: "user",
45
  parts: [
 
50
  ]
51
  })
52
  }
53
+ function handleAssistantMessage(message, antigravityMessages) {
54
  const lastMessage = antigravityMessages[antigravityMessages.length - 1];
55
  const hasToolCalls = message.tool_calls && message.tool_calls.length > 0;
56
  const hasContent = message.content && message.content.trim() !== '';
57
+
58
  const antigravityTools = hasToolCalls ? message.tool_calls.map(toolCall => ({
59
  functionCall: {
60
  id: toolCall.id,
 
64
  }
65
  }
66
  })) : [];
67
+
68
+ if (lastMessage?.role === "model" && hasToolCalls && !hasContent) {
69
  lastMessage.parts.push(...antigravityTools)
70
+ } else {
71
  const parts = [];
72
  if (hasContent) parts.push({ text: message.content });
73
  parts.push(...antigravityTools);
74
+
75
  antigravityMessages.push({
76
  role: "model",
77
  parts
78
  })
79
  }
80
  }
81
+ function handleToolCall(message, antigravityMessages) {
82
  // 从之前的 model 消息中找到对应的 functionCall name
83
  let functionName = '';
84
  for (let i = antigravityMessages.length - 1; i >= 0; i--) {
 
93
  if (functionName) break;
94
  }
95
  }
96
+
97
  const lastMessage = antigravityMessages[antigravityMessages.length - 1];
98
  const functionResponse = {
99
  functionResponse: {
 
104
  }
105
  }
106
  };
107
+
108
  // 如果上一条消息是 user 且包含 functionResponse,则合并
109
  if (lastMessage?.role === "user" && lastMessage.parts.some(p => p.functionResponse)) {
110
  lastMessage.parts.push(functionResponse);
 
115
  });
116
  }
117
  }
118
+ function openaiMessageToAntigravity(openaiMessages) {
119
  const antigravityMessages = [];
120
  for (const message of openaiMessages) {
121
  if (message.role === "user" || message.role === "system") {
 
127
  handleToolCall(message, antigravityMessages);
128
  }
129
  }
130
+
131
  return antigravityMessages;
132
  }
133
+ function generateGenerationConfig(parameters, enableThinking, actualModelName) {
134
  const generationConfig = {
135
  topP: parameters.top_p ?? config.defaults.top_p,
136
  topK: parameters.top_k ?? config.defaults.top_k,
 
149
  thinkingBudget: enableThinking ? 1024 : 0
150
  }
151
  }
152
+ if (enableThinking && actualModelName.includes("claude")) {
153
  delete generationConfig.topP;
154
  }
155
  return generationConfig
156
  }
157
+ function convertOpenAIToolsToAntigravity(openaiTools) {
158
  if (!openaiTools || openaiTools.length === 0) return [];
159
+ return openaiTools.map((tool) => {
160
  delete tool.function.parameters.$schema;
161
  return {
162
  functionDeclarations: [
 
169
  }
170
  })
171
  }
172
+ function generateRequestBody(openaiMessages, modelName, parameters, openaiTools, token) {
173
+
174
+ const enableThinking = modelName.endsWith('-thinking') ||
175
+ modelName === 'gemini-2.5-pro' ||
176
  modelName.startsWith('gemini-3-pro-') ||
177
  modelName === "rev19-uic3-1p" ||
178
  modelName === "gpt-oss-120b-medium"
179
  const actualModelName = modelName.endsWith('-thinking') ? modelName.slice(0, -9) : modelName;
180
+
181
+ return {
182
  project: token.projectId,
183
  requestId: generateRequestId(),
184
  request: {
 
200
  userAgent: "antigravity"
201
  }
202
  }
203
+ function getDefaultIp() {
204
  const interfaces = os.networkInterfaces();
205
+ if (interfaces.WLAN) {
206
+ for (const inter of interfaces.WLAN) {
207
+ if (inter.family === 'IPv4' && !inter.internal) {
208
+ return inter.address;
209
+ }
210
+ }
211
+ } else if (interfaces.wlan2) {
212
+ for (const inter of interfaces.wlan2) {
213
+ if (inter.family === 'IPv4' && !inter.internal) {
214
+ return inter.address;
215
  }
216
  }
217
  }
218
  return '127.0.0.1';
219
  }
220
+ export {
221
  generateRequestId,
222
  generateRequestBody,
223
  getDefaultIp
test/test-get-ip.js CHANGED
@@ -1,13 +1,21 @@
1
  import os from 'os';
2
- function getLocalIp(){
3
- const interfaces = os.networkInterfaces();
4
- if (interfaces.WLAN){
5
- for (const inter of interfaces.WLAN){
6
- if (inter.family === 'IPv4' && !inter.internal){
7
- return inter.address;
8
- }
9
- }
 
 
 
 
 
 
10
  }
11
  return '127.0.0.1';
 
12
  }
13
- console.log(getLocalIp());
 
 
1
  import os from 'os';
2
+ function getLocalIp() {
3
+ const interfaces = os.networkInterfaces();
4
+ console.log(JSON.stringify(interfaces, null, 2))
5
+ if (interfaces.WLAN) {
6
+ for (const inter of interfaces.WLAN) {
7
+ if (inter.family === 'IPv4' && !inter.internal) {
8
+ return inter.address;
9
+ }
10
+ }
11
+ } else if (interfaces.wlan2) {
12
+ for (const inter of interfaces.wlan2) {
13
+ if (inter.family === 'IPv4' && !inter.internal) {
14
+ return inter.address;
15
+ }
16
  }
17
  return '127.0.0.1';
18
+ }
19
  }
20
+
21
+ console.log(getLocalIp());