mirror of
https://github.com/diegosouzapw/OmniRoute.git
synced 2026-07-26 09:52:11 +03:00
fix(antigravity): sanitize Claude Cloud Code payloads (#2090)
Integrated into release/v3.8.0
This commit is contained in:
@@ -27,6 +27,7 @@ import {
|
||||
shouldStripCloudCodeThinking,
|
||||
stripCloudCodeThinkingConfig,
|
||||
} from "../services/cloudCodeThinking.ts";
|
||||
import { buildGeminiTools } from "../translator/helpers/geminiToolsSanitizer.ts";
|
||||
import {
|
||||
deriveAntigravityMachineId,
|
||||
generateAntigravityRequestId,
|
||||
@@ -322,6 +323,44 @@ function applyAntigravityGenerationDefaults(request: Record<string, unknown>): v
|
||||
request.generationConfig = generationConfig;
|
||||
}
|
||||
|
||||
function asRecord(value: unknown): Record<string, unknown> | null {
|
||||
return value && typeof value === "object" && !Array.isArray(value)
|
||||
? (value as Record<string, unknown>)
|
||||
: null;
|
||||
}
|
||||
|
||||
function sanitizeAntigravityGeminiRequest(
|
||||
request: Record<string, unknown>
|
||||
): Record<string, unknown> {
|
||||
const clean: Record<string, unknown> = {};
|
||||
|
||||
if (Array.isArray(request.contents)) {
|
||||
clean.contents = request.contents;
|
||||
}
|
||||
|
||||
if (asRecord(request.systemInstruction)) {
|
||||
clean.systemInstruction = request.systemInstruction;
|
||||
}
|
||||
|
||||
clean.generationConfig = asRecord(request.generationConfig)
|
||||
? { ...(request.generationConfig as Record<string, unknown>) }
|
||||
: {};
|
||||
|
||||
const geminiTools = buildGeminiTools(request.tools);
|
||||
if (geminiTools) {
|
||||
clean.tools = geminiTools;
|
||||
clean.toolConfig = { functionCallingConfig: { mode: "VALIDATED" } };
|
||||
} else if (asRecord(request.toolConfig)) {
|
||||
clean.toolConfig = request.toolConfig;
|
||||
}
|
||||
|
||||
if (typeof request.sessionId === "string") {
|
||||
clean.sessionId = request.sessionId;
|
||||
}
|
||||
|
||||
return clean;
|
||||
}
|
||||
|
||||
export class AntigravityExecutor extends BaseExecutor {
|
||||
constructor() {
|
||||
super("antigravity", PROVIDERS.antigravity);
|
||||
@@ -424,7 +463,7 @@ export class AntigravityExecutor extends BaseExecutor {
|
||||
}
|
||||
}
|
||||
|
||||
const transformedRequest = {
|
||||
const rawTransformedRequest = {
|
||||
...normalizedBody.request,
|
||||
...(contents.length > 0 && { contents }),
|
||||
sessionId: getAntigravitySessionId(credentials, normalizedBody.request?.sessionId),
|
||||
@@ -435,13 +474,9 @@ export class AntigravityExecutor extends BaseExecutor {
|
||||
: normalizedBody.request?.toolConfig,
|
||||
};
|
||||
|
||||
if (isClaude) {
|
||||
delete transformedRequest.messages;
|
||||
delete transformedRequest.system;
|
||||
delete transformedRequest.max_tokens;
|
||||
delete transformedRequest.stream;
|
||||
delete transformedRequest.temperature;
|
||||
}
|
||||
const transformedRequest = isClaude
|
||||
? sanitizeAntigravityGeminiRequest(rawTransformedRequest)
|
||||
: rawTransformedRequest;
|
||||
|
||||
// Obfuscate sensitive client names in user content (e.g. "OpenCode", "Cursor")
|
||||
const requestContents = transformedRequest.contents;
|
||||
|
||||
Reference in New Issue
Block a user