This commit is contained in:
seb
2026-10-02 03:44:18 +02:00
parent a58991b9f8
commit c0e8171ef7

View File

@@ -221,12 +221,11 @@ class LLMOrbiter {
break; break;
} }
// Execute each tool call locally const pendingAppendedMessages = [];
for (let callIdx = 0; callIdx < toolCalls.length; callIdx++) { for (let callIdx = 0; callIdx < toolCalls.length; callIdx++) {
const callItem = toolCalls[callIdx]; const callItem = toolCalls[callIdx];
const fnName = callItem.function?.name; const fnName = callItem.function.name;
const invokeFn = toolMap.get(fnName); const invokeFn = toolMap.get(fnName);
let result; let result;
let isError = false; let isError = false;
let errorMsg = null; let errorMsg = null;
@@ -251,7 +250,11 @@ class LLMOrbiter {
call(onToolCall, { name: fnName, args }); call(onToolCall, { name: fnName, args });
try { try {
result = await invokeFn(args, { signal: runSignal }); result = await invokeFn(args, {
signal: runSignal,
messages,
appendMessage: (msg) => pendingAppendedMessages.push(msg),
});
} catch (err) { } catch (err) {
// An abort must propagate, not be recorded as a tool error. // An abort must propagate, not be recorded as a tool error.
if (runSignal.aborted) throw ensureAbortError(runSignal.reason); if (runSignal.aborted) throw ensureAbortError(runSignal.reason);
@@ -291,6 +294,12 @@ class LLMOrbiter {
errorMsg = typeof result.error === 'string' ? result.error : JSON.stringify(result.error); errorMsg = typeof result.error === 'string' ? result.error : JSON.stringify(result.error);
call(onToolError, { name: fnName, error: errorMsg, args }); call(onToolError, { name: fnName, error: errorMsg, args });
} }
if (result && typeof result === 'object' && Array.isArray(result.appendMessages)) {
for (const msg of result.appendMessages) {
pendingAppendedMessages.push(msg);
}
}
} }
} }
@@ -309,6 +318,12 @@ class LLMOrbiter {
} }
if (hasDirectReturn) break; if (hasDirectReturn) break;
if (pendingAppendedMessages.length > 0) {
for (const msg of pendingAppendedMessages) {
messages.push(msg);
}
}
} }