From c33452edf86e034bfff779501d22a59813a75e86 Mon Sep 17 00:00:00 2001 From: opencode Date: Sat, 8 Aug 2026 20:18:43 +0300 Subject: [PATCH] fix: tool-result message for non-vision tools (KeyError on width); polza provider verified end-to-end (vision + mission on first attempt) --- .../console-2026-08-08T09-11-01-487Z.log | 137 ++++++++++++++++++ chat_map.png | Bin 2901 -> 2957 bytes testbed/README.md | 19 +++ testbed/llm_agent.py | 9 +- 4 files changed, 164 insertions(+), 1 deletion(-) diff --git a/.playwright-mcp/console-2026-08-08T09-11-01-487Z.log b/.playwright-mcp/console-2026-08-08T09-11-01-487Z.log index 70f07fb..eadf4d1 100644 --- a/.playwright-mcp/console-2026-08-08T09-11-01-487Z.log +++ b/.playwright-mcp/console-2026-08-08T09-11-01-487Z.log @@ -7558,3 +7558,140 @@ [28686271ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 [28688761ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 [28694226ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28699032ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28704882ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28709113ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28712039ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28717740ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28721250ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28727080ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28731269ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28733633ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28736200ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28741578ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28743736ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28746650ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28750641ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28754521ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28756560ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28760854ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28764579ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28767213ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28773001ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28776794ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28778955ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28784904ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28788286ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28790486ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28792857ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28798585ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28802014ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28807379ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28813154ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28816904ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28821983ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28825200ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28828714ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28831760ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28835297ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28840439ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28845705ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28850900ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28854790ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28860090ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28865510ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28868853ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28872421ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28877167ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28881585ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28886618ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28891629ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28893699ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28899479ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28904782ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28907164ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28912213ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28917093ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28920109ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28922412ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28925750ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28930098ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28935043ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28940827ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28946526ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28950173ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28952737ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28956824ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28960108ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28965811ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28971332ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28975824ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28978113ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28980694ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28985378ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28989427ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28994590ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[28999234ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29001857ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29007599ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29012972ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29015734ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29017995ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29021974ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29027160ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29032629ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29035429ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29040775ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29043912ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29048315ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29052669ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29057215ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29060043ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29062978ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29068454ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29073499ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29077452ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29082143ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29085678ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29090383ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29095997ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29098378ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29102643ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29107678ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29110605ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29115361ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29118906ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29124655ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29130468ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29133318ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29137791ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29140342ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29145089ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29150788ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29154907ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29158616ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29161283ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29166418ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29168802ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29171262ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29175716ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29180911ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29185543ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29190718ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29196198ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29201786ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29204247ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29206956ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29211781ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29216369ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29219608ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29223579ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29227178ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29229867ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29233540ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29239188ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29243191ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29248396ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29252812ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29257963ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 +[29260190ms] [ERROR] WebSocket connection to 'ws://127.0.0.1:8001/' failed: Error in connection establishment: net::ERR_CONNECTION_REFUSED @ http://127.0.0.1:8000/:40 diff --git a/chat_map.png b/chat_map.png index 0eec596aa5193dad0b486dfb0874250b94139aff..a3b7a153c2f09e563726591da51f72a99858ad04 100644 GIT binary patch literal 2957 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 N&YyL(uCRh8{Tr_Iu*U!Z literal 2901 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 MojuN1JHc=M1${A#lK=n! diff --git a/testbed/README.md b/testbed/README.md index a919ded..1930684 100644 --- a/testbed/README.md +++ b/testbed/README.md @@ -64,6 +64,25 @@ taken); stop the old one with `fuser -k 8765/tcp` or Ctrl-C in its terminal. The demo prints a full transcript of tool calls/results to stdout and saves the capsule's final first-person frame to `demo_final_frame.png`. +## Providers + +Provider presets resolve endpoint + API key + default model: + +```bash +export POLZA_API_KEY="..." # from https://polza.ai/dashboard/api-keys +scripts/run_chat.sh --provider polza # openai/gpt-5.6-luna, vision ON +scripts/run_demo.sh --provider polza --agent llm +scripts/run_demo.sh --provider openai --model gpt-4o-mini +# local ollama stays the default (no flags needed) + +# anything else OpenAI-compatible: +scripts/run_chat.sh --base-url https://... --model ... --api-key ... +``` + +Keys are read from the environment (`POLZA_API_KEY`, `OPENAI_API_KEY`), never +stored in the repo. Multimodal models (gpt-5.x, gemma, qwen-vl, ...) get real +camera frames automatically; `--vision`/`--no-vision` override. + ## Interactive chat mode Talk to the capsule's brain in natural language (any language): diff --git a/testbed/llm_agent.py b/testbed/llm_agent.py index 67304ca..69426e0 100644 --- a/testbed/llm_agent.py +++ b/testbed/llm_agent.py @@ -516,7 +516,7 @@ class LLMController: ) self.messages.append(self._frame_message(frame_b64, frame_note)) self._trim_frames() - else: + elif frame_b64 is not None: # Fallback channel: the digest (plus frame metadata) for # text-only models. content = ( @@ -528,6 +528,13 @@ class LLMController: self.messages.append( {"role": "tool", "tool_call_id": tc.id, "content": content} ) + else: + # Any other tool: plain structured result, prefixed with + # the CURRENT STATE note. + content = (hint + "\n" if hint else "") + json.dumps(outcome.output) + self.messages.append( + {"role": "tool", "tool_call_id": tc.id, "content": content} + ) call_result = ToolCallResult( name=name, args=args, ok=True, output=outcome.output, digest=digest )