You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The agent loop just stopped whenever the model ran out of tool calls, or
hit the step limit — nothing ever checked that the work it did actually
builds or passes tests. "Done" was whatever the model said it was.
- detectProjectScripts() (already backing the Test/Lint/Format quick-action
buttons) gained a fourth field, build, detected the same way as the
others from package.json's scripts.build.
- New opt-in settings (off by default — this runs commands automatically,
which shouldn't surprise anyone who didn't turn it on): verificationEnabled,
verificationCommands (explicit override, one per line in the new Settings
section; falls back to the workspace's detected build+test scripts when
unset), verificationMaxRetries (default 3, deliberately separate from
agentMaxSteps so a persistently failing check can't loop forever even
while the step budget still has headroom).
- Hooked into the exact point where runCompletion's post-stream handler
already distinguishes "model called more tools" from "model believes the
turn is over" (previously only used to trigger TTS auto-read). On the
"turn is over" branch, when verification is enabled, runVerification()
runs the configured command(s) for real through the same run_command tool
path everything else uses — deterministically, not left to the model to
decide whether to check its own work — and only lets the turn actually
end once they pass. A failure gets fed back as a tool-result message so
the model can see and fix it, then loops through the existing
continueAfterTools plumbing for another attempt.
- New isVerification flag on ChatMessage (mirrors the existing pinned
field: a UI-only affordance, never sent to a provider) lets the verification
result render as a distinct pass/fail card instead of a generic tool-output
box, plus a toolbar attempt counter next to the existing agent-step one.
2 existing detectProjectScripts test cases updated for the new build field,
plus a new one covering all four scripts detected together.
sandboxStatusBubblewrap: "Linux, via bubblewrap — commands run confined to the workspace, with network access denied unless a command explicitly requests it.",
752
763
sandboxStatusSandboxExec: "macOS, via sandbox-exec — commands run confined to the workspace, with network access denied unless a command explicitly requests it.",
753
764
sandboxStatusNone: "Not available on this platform — only the command blocklist and the resource limits below apply. On Linux, installing bubblewrap (bwrap) enables real filesystem and network containment.",
765
+
verificationSectionTitle: "Verification",
766
+
verificationSectionHint: "After the agent stops calling tools, optionally run real commands and feed the result back before treating the turn as done — off by default, since this runs commands automatically.",
767
+
verificationEnabledLabel: "Verify before finishing a turn",
768
+
verificationCommandsLabel: "Commands to run",
769
+
verificationCommandsHint: "One per line. Leave blank to use the workspace's detected build/test scripts automatically.",
770
+
verificationMaxRetriesLabel: "Max retries",
771
+
verificationMaxRetriesHint: "How many times the agent can try to fix a failing check before it stops and asks you.",
754
772
connectedAccountsTitle: "Connected accounts",
755
773
connectedAccountsHint: "Link developer services for repository analysis and access to private or gated models. Tokens stay encrypted locally when your OS credential store is available.",
756
774
accountGithubHint: "Connect repositories for AI analysis and developer workflows.",
sandboxStatusBubblewrap: "Linux, bubblewrap aracılığıyla — komutlar çalışma alanıyla sınırlı çalışır, bir komut açıkça talep etmedikçe ağ erişimi reddedilir.",
1140
1160
sandboxStatusSandboxExec: "macOS, sandbox-exec aracılığıyla — komutlar çalışma alanıyla sınırlı çalışır, bir komut açıkça talep etmedikçe ağ erişimi reddedilir.",
1141
1161
sandboxStatusNone: "Bu platformda mevcut değil — yalnızca komut engelleme listesi ve aşağıdaki kaynak sınırları uygulanır. Linux'ta bubblewrap (bwrap) kurmak gerçek dosya sistemi ve ağ sınırlaması sağlar.",
1162
+
verificationSectionTitle: "Doğrulama",
1163
+
verificationSectionHint: "Ajan araç çağırmayı bıraktıktan sonra, isteğe bağlı olarak gerçek komutlar çalıştırıp sonucu geri bildirerek turu bitmiş saymadan önce kontrol edin — komutları otomatik çalıştırdığı için varsayılan olarak kapalıdır.",
1164
+
verificationEnabledLabel: "Turu bitirmeden önce doğrula",
verificationCommandsHint: "Her satıra bir tane. Çalışma alanının algılanan build/test betiklerini otomatik kullanmak için boş bırakın.",
1167
+
verificationMaxRetriesLabel: "Maksimum yeniden deneme",
1168
+
verificationMaxRetriesHint: "Ajanın başarısız bir kontrolü durup sizden yardım istemeden önce kaç kez düzeltmeyi deneyebileceği.",
1142
1169
connectedAccountsTitle: "Bağlı hesaplar",
1143
1170
connectedAccountsHint: "Depo analizi ve özel veya kısıtlı modellere erişim için geliştirici hizmetlerini bağlayın. İşletim sistemi kimlik bilgisi deposu kullanılabildiğinde jetonlar yerel olarak şifreli kalır.",
1144
1171
accountGithubHint: "Yapay zeka analizi ve geliştirici iş akışları için depoları bağlayın.",
0 commit comments