This commit is contained in:
2025-12-15 14:49:26 +00:00
parent 9e848045f7
commit 8662b73adb
5 changed files with 489 additions and 43 deletions

View File

@@ -30,6 +30,8 @@ export class DualAgentOrchestrator {
maxIterations: 20,
maxConsecutiveRejections: 3,
defaultProvider: 'openai',
maxResultChars: 15000,
maxHistoryMessages: 20,
...options,
};
@@ -260,10 +262,29 @@ export class DualAgentOrchestrator {
try {
const result = await tool.execute(proposal.action, proposal.params);
// Send result to driver
const resultMessage = result.success
? `TOOL RESULT (${proposal.toolName}.${proposal.action}):\n${JSON.stringify(result.result, null, 2)}`
: `TOOL ERROR (${proposal.toolName}.${proposal.action}):\n${result.error}`;
// Build result message (prefer summary if provided, otherwise stringify result)
let resultMessage: string;
if (result.success) {
if (result.summary) {
// Use tool-provided summary
resultMessage = `TOOL RESULT (${proposal.toolName}.${proposal.action}):\n${result.summary}`;
} else {
// Stringify and potentially truncate
const resultStr = JSON.stringify(result.result, null, 2);
const maxChars = this.options.maxResultChars ?? 15000;
if (maxChars > 0 && resultStr.length > maxChars) {
// Truncate the result
const truncated = resultStr.substring(0, maxChars);
const omittedTokens = Math.round((resultStr.length - maxChars) / 4);
resultMessage = `TOOL RESULT (${proposal.toolName}.${proposal.action}):\n${truncated}\n\n[... output truncated, ~${omittedTokens} tokens omitted. Use more specific parameters to reduce output size.]`;
} else {
resultMessage = `TOOL RESULT (${proposal.toolName}.${proposal.action}):\n${resultStr}`;
}
}
} else {
resultMessage = `TOOL ERROR (${proposal.toolName}.${proposal.action}):\n${result.error}`;
}
this.conversationHistory.push({
role: 'system',