Compare commits
2 Commits
main
...
android-cr
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4082b0cfb8 | ||
|
|
ec78982218 |
@ -21,6 +21,7 @@
|
|||||||
- Logging: decouple file log levels from console verbosity; verbose-only details are captured when `logging.level` is debug/trace.
|
- Logging: decouple file log levels from console verbosity; verbose-only details are captured when `logging.level` is debug/trace.
|
||||||
- Build: fix regex literal in tool-meta path detection (watch build error).
|
- Build: fix regex literal in tool-meta path detection (watch build error).
|
||||||
- Auto-reply: add run-level telemetry + typing TTL guardrails to diagnose stuck replies.
|
- Auto-reply: add run-level telemetry + typing TTL guardrails to diagnose stuck replies.
|
||||||
|
- Android: show unreachable gateway errors during pairing (#148) — thanks @cash-echo-bot.
|
||||||
|
|
||||||
### Docs
|
### Docs
|
||||||
- Skills: add Sheets/Docs examples to gog skill (#128) — thanks @mbelinky.
|
- Skills: add Sheets/Docs examples to gog skill (#128) — thanks @mbelinky.
|
||||||
|
|||||||
@ -412,7 +412,8 @@ class NodeRuntime(context: Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!resolved.ok || resolved.token.isNullOrBlank()) {
|
if (!resolved.ok || resolved.token.isNullOrBlank()) {
|
||||||
_statusText.value = "Failed: pairing required"
|
val errorMessage = resolved.error?.trim().orEmpty().ifEmpty { "pairing required" }
|
||||||
|
_statusText.value = "Failed: $errorMessage"
|
||||||
return@launch
|
return@launch
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -37,21 +37,21 @@ class BridgePairingClient {
|
|||||||
withContext(Dispatchers.IO) {
|
withContext(Dispatchers.IO) {
|
||||||
val socket = Socket()
|
val socket = Socket()
|
||||||
socket.tcpNoDelay = true
|
socket.tcpNoDelay = true
|
||||||
socket.connect(InetSocketAddress(endpoint.host, endpoint.port), 8_000)
|
|
||||||
socket.soTimeout = 60_000
|
|
||||||
|
|
||||||
val reader = BufferedReader(InputStreamReader(socket.getInputStream(), Charsets.UTF_8))
|
|
||||||
val writer = BufferedWriter(OutputStreamWriter(socket.getOutputStream(), Charsets.UTF_8))
|
|
||||||
|
|
||||||
fun send(line: String) {
|
|
||||||
writer.write(line)
|
|
||||||
writer.write("\n")
|
|
||||||
writer.flush()
|
|
||||||
}
|
|
||||||
|
|
||||||
fun sendJson(obj: JsonObject) = send(obj.toString())
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
socket.connect(InetSocketAddress(endpoint.host, endpoint.port), 8_000)
|
||||||
|
socket.soTimeout = 60_000
|
||||||
|
|
||||||
|
val reader = BufferedReader(InputStreamReader(socket.getInputStream(), Charsets.UTF_8))
|
||||||
|
val writer = BufferedWriter(OutputStreamWriter(socket.getOutputStream(), Charsets.UTF_8))
|
||||||
|
|
||||||
|
fun send(line: String) {
|
||||||
|
writer.write(line)
|
||||||
|
writer.write("\n")
|
||||||
|
writer.flush()
|
||||||
|
}
|
||||||
|
|
||||||
|
fun sendJson(obj: JsonObject) = send(obj.toString())
|
||||||
|
|
||||||
sendJson(
|
sendJson(
|
||||||
buildJsonObject {
|
buildJsonObject {
|
||||||
put("type", JsonPrimitive("hello"))
|
put("type", JsonPrimitive("hello"))
|
||||||
@ -111,6 +111,9 @@ class BridgePairingClient {
|
|||||||
}
|
}
|
||||||
else -> PairResult(ok = false, token = null, error = "unexpected bridge response")
|
else -> PairResult(ok = false, token = null, error = "unexpected bridge response")
|
||||||
}
|
}
|
||||||
|
} catch (e: Exception) {
|
||||||
|
val message = e.message?.trim().orEmpty().ifEmpty { "gateway unreachable" }
|
||||||
|
PairResult(ok = false, token = null, error = message)
|
||||||
} finally {
|
} finally {
|
||||||
try {
|
try {
|
||||||
socket.close()
|
socket.close()
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user