Group tool calls in the result

927c2418e0159cd9c10c041bd0ec534189bd7369

Cohee <18619528+Cohee1207@users.noreply.github.com>

1 files changed, +15 -2Showing whitespace changes
public/scripts/tool-calling.js+15 -2
@@ -581,6 +581,19 @@ export class ToolManager {
581 }581 }
582582
583 /**583 /**
584 * Groups tool names by count.
585 * @param {string[]} toolNames Tool names
586 * @returns {string} Grouped tool names
587 */
588 static #groupToolNames(toolNames) {
589 const toolCounts = toolNames.reduce((acc, name) => {
590 acc[name] = (acc[name] || 0) + 1;
591 return acc;
592 }, {});
593 return Object.entries(toolCounts).map(([name, count]) => count > 1 ? `${name} (${count})` : name).join(', ');
594 }
595
596 /**
584 * Formats a message with tool invocations.597 * Formats a message with tool invocations.
585 * @param {ToolInvocation[]} invocations Tool invocations.598 * @param {ToolInvocation[]} invocations Tool invocations.
586 * @returns {string} Formatted message with tool invocations.599 * @returns {string} Formatted message with tool invocations.
@@ -597,8 +610,8 @@ export class ToolManager {
597 i.result = tryParse(i.result);610 i.result = tryParse(i.result);
598 });611 });
599 codeElement.textContent = JSON.stringify(data, null, 2);612 codeElement.textContent = JSON.stringify(data, null, 2);
600 const toolNames = data.map(i => i.displayName || i.name).join(', ');613 const toolNames = data.map(i => i.displayName || i.name);
601 summaryElement.textContent = `Tool calls: ${toolNames}`;614 summaryElement.textContent = `Tool calls: ${this.#groupToolNames(toolNames)}`;
602 preElement.append(codeElement);615 preElement.append(codeElement);
603 detailsElement.append(summaryElement, preElement);616 detailsElement.append(summaryElement, preElement);
604 return detailsElement.outerHTML;617 return detailsElement.outerHTML;