diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 88b9c41..b952496 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -16,8 +16,8 @@ android { applicationId = "com.rainy.token" minSdk = 31 targetSdk = 35 - versionCode = 16 - versionName = "1.6.6" + versionCode = 17 + versionName = "1.6.7" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" vectorDrawables { diff --git a/app/src/main/java/com/rainy/token/data/proxy/TraeChatProxy.kt b/app/src/main/java/com/rainy/token/data/proxy/TraeChatProxy.kt index 8f3f8af..c5a718d 100644 --- a/app/src/main/java/com/rainy/token/data/proxy/TraeChatProxy.kt +++ b/app/src/main/java/com/rainy/token/data/proxy/TraeChatProxy.kt @@ -51,9 +51,9 @@ class TraeChatProxy @Inject constructor( ProviderRegion.valueOf(credential.region.uppercase()) }.getOrNull() val base = if (effectiveRegion == ProviderRegion.INTL) { - "https://grow-normal.trae.ai" + "https://a0ai-api-sg.byteintlapi.com" } else { - "https://api.trae.cn" + "https://trae-api-cn.mchost.guru" } val upstreamBody = buildUpstreamBody(requestBody, credential) val requestId = UUID.randomUUID().toString() @@ -63,19 +63,24 @@ class TraeChatProxy @Inject constructor( .url(base + "/api/agent/v3/llm_utils_chat") .addHeader("Content-Type", "application/json") .addHeader("Accept", "text/event-stream") - .addHeader("Authorization", "Cloud-IDE-JWT $jwt") + .addHeader("Authorization", "Cloud-IDE-JWT jwt") .addHeader("X-Cloudide-Token", jwt) .addHeader("x-uid", credential.userId ?: "") + .addHeader("x-app-id", "6eefa01c-1036-4c7e-9ca5-d891f63bfcd8") .addHeader("x-device-id", credential.deviceId ?: credential.checkinDeviceId ?: "") .addHeader("x-machine-id", credential.deviceId ?: credential.checkinDeviceId ?: "") .addHeader("x-request-id", requestId) - .addHeader("x-app-id", "trae") - .addHeader("x-ide-version", "1.0.0") - .addHeader("x-ide-version-code", "1000000") + .addHeader("x-ide-version", "3.3.67") + .addHeader("x-ide-version-code", "20260401") .addHeader("x-ide-version-type", "stable") - .addHeader("x-os-version", "Android") - .addHeader("x-system-type", "Android") - .addHeader("User-Agent", "RainyToken/1.0") + .addHeader("x-device-cpu", "AMD") + .addHeader("x-device-brand", "83DG") + .addHeader("x-device-type", "windows") + .addHeader("x-ide-token", jwt) + .addHeader("x-os-version", "Windows 10") + .addHeader("x-system-type", "Windows") + .addHeader("Connection", "keep-alive") + .addHeader("User-Agent", "") .post(upstreamBody.toRequestBody("application/json".toMediaType())) val response = try { @@ -117,19 +122,24 @@ class TraeChatProxy @Inject constructor( .url(base + "/api/agent/v3/llm_utils_chat") .addHeader("Content-Type", "application/json") .addHeader("Accept", "text/event-stream") - .addHeader("Authorization", "Cloud-IDE-JWT $jwt") + .addHeader("Authorization", "Cloud-IDE-JWT jwt") .addHeader("X-Cloudide-Token", jwt) .addHeader("x-uid", credential.userId ?: "") + .addHeader("x-app-id", "6eefa01c-1036-4c7e-9ca5-d891f63bfcd8") .addHeader("x-device-id", credential.deviceId ?: credential.checkinDeviceId ?: "") .addHeader("x-machine-id", credential.deviceId ?: credential.checkinDeviceId ?: "") .addHeader("x-request-id", requestId) - .addHeader("x-app-id", "trae") - .addHeader("x-ide-version", "1.0.0") - .addHeader("x-ide-version-code", "1000000") + .addHeader("x-ide-version", "3.3.67") + .addHeader("x-ide-version-code", "20260401") .addHeader("x-ide-version-type", "stable") - .addHeader("x-os-version", "Android") - .addHeader("x-system-type", "Android") - .addHeader("User-Agent", "RainyToken/1.0") + .addHeader("x-device-cpu", "AMD") + .addHeader("x-device-brand", "83DG") + .addHeader("x-device-type", "windows") + .addHeader("x-ide-token", jwt) + .addHeader("x-os-version", "Windows 10") + .addHeader("x-system-type", "Windows") + .addHeader("Connection", "keep-alive") + .addHeader("User-Agent", "") .post(upstreamBody.toRequestBody("application/json".toMediaType())) val response = try { @@ -162,17 +172,13 @@ class TraeChatProxy @Inject constructor( val sessionId = UUID.randomUUID().toString().replace("-", "") return buildJsonObject { - put("conversation_id", "") - put("session_id", sessionId) - put("user_id", credential.userId ?: "") - put("device_id", credential.deviceId ?: credential.checkinDeviceId ?: "") - put("agent_type", "solo_work_lite") - put("model_name", model + "__dev") + put("messages", messages) put("config_name", model) + put("model", model) put("function", "solo_work_lite") put("stream", true) put("request_id", sessionId) - put("messages", messages) + put("session_id", sessionId) src["tools"]?.let { put("tools", it) } src["tool_choice"]?.let { put("tool_choice", it) } (src["max_tokens"] as? JsonPrimitive)?.contentOrNull?.toIntOrNull()?.let {