| 1801 | `,K+=Rwz,K}async function fN6(q,K,_){let z=q.mapToolResultToToolResultBlockParam(K,_);return nR4(z,q.name,cR4(q.name,q.maxResultSizeChars))}async function lR4(q,K,_){return nR4(q,K,cR4(K,_))}function Cwz(q){if(!q)return!0;if(typeof q==="string")return q.trim()==="";if(!Array.isArray(q))return!1;if(q.length===0)return!0;return q.every((K)=>typeof K==="object"&&("type"in K)&&K.type==="text"&&("text"in K)&&(typeof K.text!=="string"||K.text.trim()===""))}async function nR4(q,K,_){let z=q.content;if(Cwz(z))return d("tengu_tool_empty_result",{toolName:wK(K)}),{...q,content:`(${K} completed with no output)`};if(!z)return q;if(oR4(z))return q;let Y=aR4(z),$=_??PN4;if(Y<=$)return q;let A=await XE8(z,q.tool_use_id);if(PE8(A))return q;let O=DN6(A);return d("tengu_tool_result_persisted",{toolName:wK(K),originalSizeBytes:A.originalSize,persistedSizeBytes:O.length,estimatedOriginalTokens:Math.ceil(A.originalSize/Mo6),estimatedPersistedTokens:Math.ceil(O.length/Mo6),thresholdUsed:$}),{...q,content:O}}function Xa6(q,K){if(q.length<=K)return{preview:q,hasMore:!1};let z=q.slice(0,K).lastIndexOf(` |
| 1802 | `),Y=z>K*0.5?z:K;return{preview:q.slice(0,Y),hasMore:!0}}function PE8(q){return"error"in q}function Pa6(){return{seenIds:new Set,replacements:new Map}}function iR4(q){return{seenIds:new Set(q.seenIds),replacements:new Map(q.replacements)}}function bwz(){let q=g8("tengu_hawthorn_window",null);if(typeof q==="number"&&Number.isFinite(q)&&q>0)return q;return WN4}function rR4(q,K){if(!g8("tengu_hawthorn_steeple",!1))return;if(q)return WE8(q,K??[]);return Pa6()}function xwz(q){return typeof q==="string"&&q.startsWith(dR4)}function oR4(q){return Array.isArray(q)&&q.some((K)=>typeof K==="object"&&("type"in K)&&K.type==="image")}function aR4(q){if(typeof q==="string")return q.length;return q.reduce((K,_)=>K+(_.type==="text"?_.text.length:0),0)}function Iwz(q){let K=new Map;for(let _ of q){if(_.type!=="assistant")continue;let z=_.message.content;if(!Array.isArray(z))continue;for(let Y of z)if(Y.type==="tool_use")K.set(Y.id,Y.name)}return K}function uwz(q){if(q.type!=="user"||!Array.isArray(q.message.content))return[];return q.message.content.flatMap((K)=>{if(K.type!=="tool_result"||!K.content)return[];if(xwz(K.content))return[];if(oR4(K.content))return[];return[{toolUseId:K.tool_use_id,content:K.content,size:aR4(K.content)}]})}function sR4(q){let K=[],_=[],z=()=>{if(_.length>0)K.push(_);_=[]},Y=new Set;for(let $ of q)if($.type==="user")_.push(...uwz($));else if($.type==="assistant"){if(!Y.has($.message.id))z(),Y.add($.message.id)}return z(),K}function mwz(q,K){return q.reduce((_,z)=>{let Y=K.replacements.get(z.toolUseId);if(Y!==void 0)_.mustReapply.push({...z,replacement:Y});else if(K.seenIds.has(z.toolUseId))_.frozen.push(z);else _.fresh.push(z);return _},{mustReapply:[],frozen:[],fresh:[]})}function pwz(q,K,_){let z=[...q].sort((A,O)=>O.size-A.size),Y=[],$=K+q.reduce((A,O)=>A+O.size,0);for(let A of z){if($<=_)break;Y.push(A),$-=A.size}return Y}function Bwz(q,K){return q.map((_)=>{if(_.type!=="user"||!Array.isArray(_.message.content))return _;let z=_.message.content;if(!z.some(($)=>$.type==="tool_result"&&K.has($.tool_use_id)))return _;return{..._,message:{..._.message,content:z.map(($)=>{if($.type!=="tool_result")return $;let A=K.get($.tool_use_id);return A===void 0?$:{...$,content:A}})}}})}async function gwz(q){let K=await XE8(q.content,q.toolUseId);if(PE8(K))return null;return{content:DN6(K),originalSize:K.originalSize}}async function Fwz(q,K,_=new Set){let z=sR4(q),Y=_.size>0?Iwz(q):void 0,$=(P)=>Y!==void 0&&_.has(Y.get(P)??""),A=bwz(),O=new Map,w=[],j=0,H=0;for(let P of z){let{mustReapply:W,frozen:D,fresh:f}=mwz(P,K);if(W.forEach((S)=>O.set(S.toolUseId,S.replacement)),j+=W.length,f.length===0){P.forEach((S)=>K.seenIds.add(S.toolUseId));continue}f.filter((S)=>$(S.toolUseId)).forEach((S)=>K.seenIds.add(S.toolUseId));let Z=f.filter((S)=>!$(S.toolUseId)),T=D.reduce((S,R)=>S+R.size,0),v=Z.reduce((S,R)=>S+R.size,0),V=T+v>A?pwz(Z,T,A):[],E=new Set(V.map((S)=>S.toolUseId));if(P.filter((S)=>!E.has(S.toolUseId)).forEach((S)=>K.seenIds.add(S.toolUseId)),V.length===0)continue;H++,w.push(...V)}if(O.size===0&&w.length===0)return{messages:q,newlyReplaced:[]};let J=await Promise.all(w.map(async(P)=>[P,await gwz(P)])),M=[],X=0;for(let[P,W]of J){if(K.seenIds.add(P.toolUseId),W===null)continue;X+=P.size,O.set(P.toolUseId,W.content),K.replacements.set(P.toolUseId,W.content),M.push({kind:"tool-result",toolUseId:P.toolUseId,replacement:W.content}),d("tengu_tool_result_persisted_message_budget",{originalSizeBytes:W.originalSize,persistedSizeBytes:W.content.length,estimatedOriginalTokens:Math.ceil(W.originalSize/Mo6),estimatedPersistedTokens:Math.ceil(W.content.length/Mo6)})}if(O.size===0)return{messages:q,newlyReplaced:[]};if(M.length>0)N(`Per-message budget: persisted ${M.length} tool results across ${H} over-budget message(s), shed ~${m4(X)}, ${j} re-applied`),d("tengu_message_level_tool_result_budget_enforced",{resultsPersisted:M.length,messagesOverBudget:H,replacedSizeBytes:X,reapplied:j});return{messages:Bwz(q,O),newlyReplaced:M}}async function tR4(q,K,_,z){if(!K)return q;let Y=await Fwz(q,K,z);if(Y.newlyReplaced.length>0)_?.(Y.newlyReplaced);return Y.messages}function WE8(q,K,_){let z=Pa6(),Y=new Set(sR4(q).flat().map(($)=>$.toolUseId));for(let $ of Y)z.seenIds.add($);for(let $ of K)if($.kind==="tool-result"&&Y.has($.toolUseId))z.replacements.set($.toolUseId,$.replacement);if(_){for(let[$,A]of _)if(Y.has($)&&!z.replacements.has($))z.replacements.set($,A)}return z}function eR4(q,K,_){if(!q)return;return WE8(K,_,q.replacements)}function Uwz(q){let K=q;if(K.code)switch(K.code){case"ENOENT":return`Directory not found: ${K.path??"unknown path"}`;case"EACCES":return`Permission denied: ${K.path??"unknown path"}`;case"ENOSPC":return"No space left on device";case"EROFS":return"Read-only file system";case"EMFILE":return"Too many open files";case"EEXIST":return`File already exists: ${K.path??"unknown path"}`;default:return`${K.code}: ${K.message}`}return q.message}var FB1="tool-results",dR4="<persisted-output>",Rwz="</persisted-output>",hwz="tengu_satin_quoll",WN6=2000;var IG=y(()=>{v8();o1();k8();kj();_8();y8();U7();E8();_K();l8()});import{writeFile as Qwz}from"fs/promises";import{join as dwz}from"path";function qh4(q,K){switch(q){case"toolResult":return"Plain text";case"structuredContent":return K?`JSON with schema: ${K}`:"JSON";case"contentArray":return K?`JSON array with schema: ${K}`:"JSON array"}}function Kh4(q,K,_,z){let Y=`Error: result (${K.toLocaleString()} characters) exceeds maximum allowed tokens. Output has been saved to ${q}. |