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