u
This commit is contained in:
@@ -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);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user