diff options
| author | Agando <roduccomm@gmail.com> | 2026-11-02 20:50:25 +0100 |
|---|---|---|
| committer | Agando <roduccomm@gmail.com> | 2026-11-02 20:50:25 +0100 |
| commit | d6eee520bc26631455135d1f2229d4013721e5b9 (patch) | |
| tree | 728f82b9883564e586be05f2c8a44aaf746ee6fb /scripts/chat.py | |
| parent | 8d5c4b563da5225c4dbd2a44c7635c49a16d5ab1 (diff) | |
fix(newos4): chat() threw on every tool-using turn and never returned its answer
Regression from 32608bc, caught by the .chat() caller sweep before it aged:
- `recent` was referenced in chat()'s finally block but never declared, so any
turn with toolTurns > 0 threw ReferenceError there and chat() REJECTED.
delegateTask's catch turned that into "agent failed"; the 'completed'
fallback was only ever reachable on tool-free turns.
- chat() still had no return at all, so a tool-free turn resolved undefined and
module-orchestrator.js:1250 fell through to `|| 'completed'`.
Both fixed: `const recent` is now built from _toolCallLog, and chat() returns
{ content: finalAnswer, toolTurns } before the archive block (a return at the
end of the method would let _archiveSession swallow the answer).
Verified with /tmp/probe-chat-hotfix.js, 6/6: tool-using turn resolves
{content:'WORKER ANSWER', toolTurns:2}, tool-free turn resolves the answer,
the orchestrator's own projection returns the answer instead of 'completed',
and _chatLock is released. Run against 32608bc the same probe says
"recent is not defined" - i.e. it reproduces the shipped defect.
Not included: the _chatLock serialisation (orchestrate-parallel still runs
sub-tasks one at a time and the 10s force-release can clear the main turn's
lock). That stays open in STEER-20261102-201045-ab08.
Diffstat (limited to 'scripts/chat.py')
0 files changed, 0 insertions, 0 deletions