MCPcopy Create free account
hub / github.com/microsoft/Webwright / parseSessionToolSection

Function parseSessionToolSection

assets/compare_trajectory/app.js:782–917  ·  view source on GitHub ↗
(section, side, commandOrder, eventOrder)

Source from the content-addressed store, hash-verified

780}
781
782function parseSessionToolSection(section, side, commandOrder, eventOrder) {
783 const body = section.body || '';
784 const fences = extractCodeFences(body);
785 const plainBody = stripSessionMarkup(body);
786 const title = extractBoldSummary(plainBody);
787 const argsFence = fences.find((fence) => fence.language === 'json');
788 const parsedArgs = argsFence ? safeJsonParse(argsFence.content.trim()) : null;
789 let command = '';
790 let output = '';
791 let exitCode = null;
792 let extraChips = [];
793 let payloadText = '';
794 if (section.tool === 'bash') {
795 const commandFence = fences.find((fence) => /^\$\s/m.test(fence.content));
796 const outputFenceIndex = commandFence ? fences.indexOf(commandFence) + 1 : -1;
797 command = commandFence ? commandFence.content.replace(/^\$\s?/, '').trim() : '';
798 output = outputFenceIndex > 0 && fences[outputFenceIndex] ? fences[outputFenceIndex].content.trim() : plainBody;
799 exitCode = parseExitCode(output);
800 const savedPath = extractLargeOutputPath(output);
801 if (title) {
802 extraChips.push(title);
803 }
804 if (savedPath) {
805 extraChips.push('saved output');
806 }
807 payloadText = command;
808 } else if (section.tool === 'apply_patch') {
809 const patchValue = typeof parsedArgs === 'string' ? parsedArgs : parsedArgs && typeof parsedArgs.input === 'string' ? parsedArgs.input : '';
810 const patchTargets = extractPatchTargets(patchValue);
811 command = patchValue ? ('apply_patch\n' + patchValue.trim()) : 'apply_patch';
812 output = fences.length > 1 ? fences[fences.length - 1].content.trim() : plainBody;
813 extraChips = [summarizePatchTargets(patchTargets)].concat(patchTargets.slice(0, 3).map((target) => target.action.toLowerCase()));
814 payloadText = patchValue;
815 } else if (section.tool === 'view') {
816 const path = extractFirstPath(plainBody);
817 command = path ? 'view ' + path : 'view';
818 output = fences.length ? fences[fences.length - 1].content.trim() : plainBody;
819 if (title) {
820 extraChips.push(title);
821 }
822 payloadText = extractModelToolPayload(parsedArgs, command);
823 } else if (section.tool === 'glob') {
824 const pattern = fences.length ? fences[0].content.trim() : shortText(plainBody, 120);
825 command = pattern ? 'glob ' + pattern : 'glob';
826 output = fences.length > 1 ? fences[1].content.trim() : plainBody;
827 if (title) {
828 extraChips.push(title);
829 }
830 payloadText = extractModelToolPayload(parsedArgs, command);
831 } else if (section.tool === 'skill') {
832 const argsText = parsedArgs ? JSON.stringify(parsedArgs) : shortText(plainBody, 160);
833 command = 'skill ' + shortText(argsText, 80);
834 output = fences.length ? fences[fences.length - 1].content.trim() : plainBody;
835 if (title) {
836 extraChips.push(title);
837 }
838 payloadText = extractModelToolPayload(parsedArgs, command);
839 } else {

Callers 1

Calls 15

extractCodeFencesFunction · 0.85
stripSessionMarkupFunction · 0.85
extractBoldSummaryFunction · 0.85
safeJsonParseFunction · 0.85
parseExitCodeFunction · 0.85
extractLargeOutputPathFunction · 0.85
extractPatchTargetsFunction · 0.85
summarizePatchTargetsFunction · 0.85
extractFirstPathFunction · 0.85
extractModelToolPayloadFunction · 0.85
shortTextFunction · 0.85
statusFromExitFunction · 0.85

Tested by

no test coverage detected