From 66cc282b6dff30a43d829ea64ce1952a31cc6834 Mon Sep 17 00:00:00 2001 From: rock Date: Sun, 13 Sep 2026 21:27:55 +0900 Subject: [PATCH] fix: log raw embedding response before parsing for debugging - Read response as text first, then parse JSON - Log raw body on parse failure (up to 500 chars) - Log status code + body on non-2xx responses - Helps diagnose 'expected ident at line 1 column 2' error --- crates/mem-llm/src/embeddings.rs | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/crates/mem-llm/src/embeddings.rs b/crates/mem-llm/src/embeddings.rs index 932e4a2..1883bd1 100644 --- a/crates/mem-llm/src/embeddings.rs +++ b/crates/mem-llm/src/embeddings.rs @@ -166,8 +166,18 @@ impl EmbeddingsClient { } let resp = builder.json(&req).send().await?; - let _status = resp.status(); - let body: EmbeddingResponse = resp.json().await?; + let status = resp.status(); + let raw_body = resp.text().await?; + + if !status.is_success() { + tracing::error!("Embedding API returned {}: {}", status, &raw_body[..raw_body.len().min(500)]); + return Err(anyhow!("Embedding API returned {}: {}", status, &raw_body[..raw_body.len().min(200)])); + } + + let body: EmbeddingResponse = serde_json::from_str(&raw_body).map_err(|e| { + tracing::error!("Failed to parse embedding response: {}. Raw body: {}", e, &raw_body[..raw_body.len().min(500)]); + anyhow!("Failed to parse embedding response: {}. Raw: {}", e, &raw_body[..raw_body.len().min(200)]) + })?; match body { EmbeddingResponse::Error { error } => {