fix(agent): subagent patuhi tool-calling contract + truncation char-safe
Hasil audit alur AI agent round 3 (fokus correctness & latent crash). - fix(subagent): engine.rs sebelumnya mengeksekusi tool lalu push ChatMessage::tool hasil TANPA mendahuluinya dengan pesan assistant yang mendeklarasikan tool_calls → history malformed ([..., tool, tool, assistant(text)]). Kontrak OpenAI/Anthropic mensyaratkan pesan assistant (berisi tool_calls) sebelum hasil tool. Kini push response_msg (assistant + tool_calls + content) sebelum eksekusi, dan hapus push assistant content-only di akhir (agar tidak duplikat). Loop utama sudah benar; subagent kini selaras. - fix(utils): &content[..1500] / &content[..1000] di build_rich_context dan &diff[..5000] di auto/engine.rs bisa panic saat indeks byte jatuh di tengah karakter multi-byte UTF-8 (emoji/CJK/panah). Tambah helper truncate_chars() yang memotong per karakter (char-safe) dan pakai di 3 titik tersebut. - test: +4 unit test truncate_chars (ASCII, potong, multibyte no-panic, emoji). Catatan audit: subagent/auto (auto-review) & build_rich_context adalah dead code (spawn_background_review & build_rich_context tidak pernah dipanggil). Auto-review jangan diaktifkan asal (parser format teks rapuh + tanpa verifikasi pasca-fix) — dilaporkan, bukan dicolokkan.
This commit is contained in:
Generated
+11
-11
@@ -4862,7 +4862,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "zesdex-api"
|
||||
version = "1.19.5"
|
||||
version = "1.19.6"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"argon2",
|
||||
@@ -4885,7 +4885,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "zesdex-application"
|
||||
version = "1.19.5"
|
||||
version = "1.19.6"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"base64",
|
||||
@@ -4903,7 +4903,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "zesdex-bootstrap"
|
||||
version = "1.19.5"
|
||||
version = "1.19.6"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"chrono",
|
||||
@@ -4920,7 +4920,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "zesdex-daemon"
|
||||
version = "1.19.5"
|
||||
version = "1.19.6"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"base64",
|
||||
@@ -4944,7 +4944,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "zesdex-domain"
|
||||
version = "1.19.5"
|
||||
version = "1.19.6"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"base64",
|
||||
@@ -4960,7 +4960,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "zesdex-gateway"
|
||||
version = "1.19.5"
|
||||
version = "1.19.6"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"axum",
|
||||
@@ -4987,7 +4987,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "zesdex-grpc"
|
||||
version = "1.19.5"
|
||||
version = "1.19.6"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"axum",
|
||||
@@ -5004,7 +5004,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "zesdex-infrastructure"
|
||||
version = "1.19.5"
|
||||
version = "1.19.6"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"argon2",
|
||||
@@ -5052,7 +5052,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "zesdex-tui"
|
||||
version = "1.19.5"
|
||||
version = "1.19.6"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"base64",
|
||||
@@ -5078,7 +5078,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "zesdex-web"
|
||||
version = "1.19.5"
|
||||
version = "1.19.6"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"axum",
|
||||
@@ -5098,7 +5098,7 @@ dependencies = [
|
||||
|
||||
[[package]]
|
||||
name = "zesdex-ws"
|
||||
version = "1.19.5"
|
||||
version = "1.19.6"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"axum",
|
||||
|
||||
Reference in New Issue
Block a user