goatchain-cli 0.0.9-beta.28 → 0.0.9-beta.29
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/ink.mjs +11 -11
- package/package.json +6 -6
package/dist/ink.mjs
CHANGED
|
@@ -112,7 +112,7 @@ ${user}:`]}}function getResponseMetadata22({id,model,created}){return{id:id!=nul
|
|
|
112
112
|
|
|
113
113
|
`);contents[0].parts.unshift({text:systemText+`
|
|
114
114
|
|
|
115
|
-
`})}return{systemInstruction:systemInstructionParts.length>0&&!isGemmaModel?{parts:systemInstructionParts}:void 0,contents}}function getModelPath2(modelId){return modelId.includes("/")?modelId:`models/${modelId}`}function prepareTools6({tools,toolChoice,modelId}){var _a16,_b16;tools=(tools==null?void 0:tools.length)?tools:void 0;let toolWarnings=[],isLatest=["gemini-flash-latest","gemini-flash-lite-latest","gemini-pro-latest"].some((id)=>id===modelId),isGemini2orNewer=modelId.includes("gemini-2")||modelId.includes("gemini-3")||modelId.includes("nano-banana")||isLatest,isGemini3orNewer=modelId.includes("gemini-3"),supportsFileSearch=modelId.includes("gemini-2.5")||modelId.includes("gemini-3");if(tools==null)return{tools:void 0,toolConfig:void 0,toolWarnings};let hasFunctionTools=tools.some((tool2)=>tool2.type==="function"),hasProviderTools=tools.some((tool2)=>tool2.type==="provider");if(hasFunctionTools&&hasProviderTools&&!isGemini3orNewer)toolWarnings.push({type:"unsupported",feature:"combination of function and provider-defined tools"});if(hasProviderTools){let googleTools2=[];if(tools.filter((tool2)=>tool2.type==="provider").forEach((tool2)=>{switch(tool2.id){case"google.google_search":if(isGemini2orNewer)googleTools2.push({googleSearch:{...tool2.args}});else toolWarnings.push({type:"unsupported",feature:`provider-defined tool ${tool2.id}`,details:"Google Search requires Gemini 2.0 or newer."});break;case"google.enterprise_web_search":if(isGemini2orNewer)googleTools2.push({enterpriseWebSearch:{}});else toolWarnings.push({type:"unsupported",feature:`provider-defined tool ${tool2.id}`,details:"Enterprise Web Search requires Gemini 2.0 or newer."});break;case"google.url_context":if(isGemini2orNewer)googleTools2.push({urlContext:{}});else toolWarnings.push({type:"unsupported",feature:`provider-defined tool ${tool2.id}`,details:"The URL context tool is not supported with other Gemini models than Gemini 2."});break;case"google.code_execution":if(isGemini2orNewer)googleTools2.push({codeExecution:{}});else toolWarnings.push({type:"unsupported",feature:`provider-defined tool ${tool2.id}`,details:"The code execution tool is not supported with other Gemini models than Gemini 2."});break;case"google.file_search":if(supportsFileSearch)googleTools2.push({fileSearch:{...tool2.args}});else toolWarnings.push({type:"unsupported",feature:`provider-defined tool ${tool2.id}`,details:"The file search tool is only supported with Gemini 2.5 models and Gemini 3 models."});break;case"google.vertex_rag_store":if(isGemini2orNewer)googleTools2.push({retrieval:{vertex_rag_store:{rag_resources:{rag_corpus:tool2.args.ragCorpus},similarity_top_k:tool2.args.topK}}});else toolWarnings.push({type:"unsupported",feature:`provider-defined tool ${tool2.id}`,details:"The RAG store tool is not supported with other Gemini models than Gemini 2."});break;case"google.google_maps":if(isGemini2orNewer)googleTools2.push({googleMaps:{}});else toolWarnings.push({type:"unsupported",feature:`provider-defined tool ${tool2.id}`,details:"The Google Maps grounding tool is not supported with Gemini models other than Gemini 2 or newer."});break;default:toolWarnings.push({type:"unsupported",feature:`provider-defined tool ${tool2.id}`});break}}),hasFunctionTools&&isGemini3orNewer&&googleTools2.length>0){let functionDeclarations2=[];for(let tool2 of tools)if(tool2.type==="function")functionDeclarations2.push({name:tool2.name,description:(_a16=tool2.description)!=null?_a16:"",parameters:convertJSONSchemaToOpenAPISchema2(tool2.inputSchema)});let combinedToolConfig={functionCallingConfig:{mode:"VALIDATED"},includeServerSideToolInvocations:!0};if(toolChoice!=null)switch(toolChoice.type){case"auto":break;case"none":combinedToolConfig.functionCallingConfig={mode:"NONE"};break;case"required":combinedToolConfig.functionCallingConfig={mode:"ANY"};break;case"tool":combinedToolConfig.functionCallingConfig={mode:"ANY",allowedFunctionNames:[toolChoice.toolName]};break}return{tools:[...googleTools2,{functionDeclarations:functionDeclarations2}],toolConfig:combinedToolConfig,toolWarnings}}return{tools:googleTools2.length>0?googleTools2:void 0,toolConfig:void 0,toolWarnings}}let functionDeclarations=[],hasStrictTools=!1;for(let tool2 of tools)switch(tool2.type){case"function":if(functionDeclarations.push({name:tool2.name,description:(_b16=tool2.description)!=null?_b16:"",parameters:convertJSONSchemaToOpenAPISchema2(tool2.inputSchema)}),tool2.strict===!0)hasStrictTools=!0;break;default:toolWarnings.push({type:"unsupported",feature:`function tool ${tool2.name}`});break}if(toolChoice==null)return{tools:[{functionDeclarations}],toolConfig:hasStrictTools?{functionCallingConfig:{mode:"VALIDATED"}}:void 0,toolWarnings};let type=toolChoice.type;switch(type){case"auto":return{tools:[{functionDeclarations}],toolConfig:{functionCallingConfig:{mode:hasStrictTools?"VALIDATED":"AUTO"}},toolWarnings};case"none":return{tools:[{functionDeclarations}],toolConfig:{functionCallingConfig:{mode:"NONE"}},toolWarnings};case"required":return{tools:[{functionDeclarations}],toolConfig:{functionCallingConfig:{mode:hasStrictTools?"VALIDATED":"ANY"}},toolWarnings};case"tool":return{tools:[{functionDeclarations}],toolConfig:{functionCallingConfig:{mode:hasStrictTools?"VALIDATED":"ANY",allowedFunctionNames:[toolChoice.toolName]}},toolWarnings};default:throw new UnsupportedFunctionalityError({functionality:`tool choice type: ${type}`})}}function parsePath2(rawPath){let segments=[];for(let part of rawPath.split(".")){let bracketIdx=part.indexOf("[");if(bracketIdx===-1)segments.push(part);else{if(bracketIdx>0)segments.push(part.slice(0,bracketIdx));for(let m of part.matchAll(/\[(\d+)\]/g))segments.push(parseInt(m[1],10))}}return segments}function getNestedValue2(obj,segments){let current=obj;for(let seg of segments){if(current==null||typeof current!=="object")return;current=current[seg]}return current}function setNestedValue2(obj,segments,value){let current=obj;for(let i=0;i<segments.length-1;i++){let seg=segments[i],nextSeg=segments[i+1];if(current[seg]==null)current[seg]=typeof nextSeg==="number"?[]:{};current=current[seg]}current[segments[segments.length-1]]=value}function resolvePartialArgValue2(arg){var _a16,_b16;let value=(_b16=(_a16=arg.stringValue)!=null?_a16:arg.numberValue)!=null?_b16:arg.boolValue;if(value!=null)return{value,json:JSON.stringify(value)};if("nullValue"in arg)return{value:null,json:"null"};return}function mapGoogleGenerativeAIFinishReason2({finishReason,hasToolCalls}){switch(finishReason){case"STOP":return hasToolCalls?"tool-calls":"stop";case"MAX_TOKENS":return"length";case"IMAGE_SAFETY":case"RECITATION":case"SAFETY":case"BLOCKLIST":case"PROHIBITED_CONTENT":case"SPII":return"content-filter";case"MALFORMED_FUNCTION_CALL":return"error";case"FINISH_REASON_UNSPECIFIED":case"OTHER":default:return"other"}}function extractSources2({groundingMetadata,generateId:generateId3}){var _a16,_b16,_c,_d,_e,_f;if(!(groundingMetadata==null?void 0:groundingMetadata.groundingChunks))return;let sources=[];for(let chunk of groundingMetadata.groundingChunks)if(chunk.web!=null)sources.push({type:"source",sourceType:"url",id:generateId3(),url:chunk.web.uri,title:(_a16=chunk.web.title)!=null?_a16:void 0});else if(chunk.image!=null)sources.push({type:"source",sourceType:"url",id:generateId3(),url:chunk.image.sourceUri,title:(_b16=chunk.image.title)!=null?_b16:void 0});else if(chunk.retrievedContext!=null){let uri=chunk.retrievedContext.uri,fileSearchStore=chunk.retrievedContext.fileSearchStore;if(uri&&(uri.startsWith("http://")||uri.startsWith("https://")))sources.push({type:"source",sourceType:"url",id:generateId3(),url:uri,title:(_c=chunk.retrievedContext.title)!=null?_c:void 0});else if(uri){let title=(_d=chunk.retrievedContext.title)!=null?_d:"Unknown Document",mediaType="application/octet-stream",filename=void 0;if(uri.endsWith(".pdf"))mediaType="application/pdf",filename=uri.split("/").pop();else if(uri.endsWith(".txt"))mediaType="text/plain",filename=uri.split("/").pop();else if(uri.endsWith(".docx"))mediaType="application/vnd.openxmlformats-officedocument.wordprocessingml.document",filename=uri.split("/").pop();else if(uri.endsWith(".doc"))mediaType="application/msword",filename=uri.split("/").pop();else if(uri.match(/\.(md|markdown)$/))mediaType="text/markdown",filename=uri.split("/").pop();else filename=uri.split("/").pop();sources.push({type:"source",sourceType:"document",id:generateId3(),mediaType,title,filename})}else if(fileSearchStore){let title=(_e=chunk.retrievedContext.title)!=null?_e:"Unknown Document";sources.push({type:"source",sourceType:"document",id:generateId3(),mediaType:"application/octet-stream",title,filename:fileSearchStore.split("/").pop()})}}else if(chunk.maps!=null){if(chunk.maps.uri)sources.push({type:"source",sourceType:"url",id:generateId3(),url:chunk.maps.uri,title:(_f=chunk.maps.title)!=null?_f:void 0})}return sources.length>0?sources:void 0}function isGeminiModel(modelId){return modelId.startsWith("gemini-")}function createGoogleGenerativeAI(options={}){var _a16,_b16;let baseURL=(_a16=withoutTrailingSlash(options.baseURL))!=null?_a16:"https://generativelanguage.googleapis.com/v1beta",providerName=(_b16=options.name)!=null?_b16:"google.generative-ai",getHeaders=()=>withUserAgentSuffix({"x-goog-api-key":loadApiKey({apiKey:options.apiKey,environmentVariableName:"GOOGLE_GENERATIVE_AI_API_KEY",description:"Google Generative AI"}),...options.headers},`ai-sdk/google/${VERSION6}`),createChatModel=(modelId)=>{var _a22;return new GoogleGenerativeAILanguageModel2(modelId,{provider:providerName,baseURL,headers:getHeaders,generateId:(_a22=options.generateId)!=null?_a22:generateId,supportedUrls:()=>({"*":[new RegExp(`^${baseURL}/files/.*$`),new RegExp("^https://(?:www\\.)?youtube\\.com/watch\\?v=[\\w-]+(?:&[\\w=&.-]*)?$"),new RegExp("^https://youtu\\.be/[\\w-]+(?:\\?[\\w=&.-]*)?$")]}),fetch:options.fetch})},createEmbeddingModel=(modelId)=>new GoogleGenerativeAIEmbeddingModel(modelId,{provider:providerName,baseURL,headers:getHeaders,fetch:options.fetch}),createImageModel=(modelId,settings={})=>new GoogleGenerativeAIImageModel(modelId,settings,{provider:providerName,baseURL,headers:getHeaders,fetch:options.fetch}),createVideoModel=(modelId)=>{var _a22;return new GoogleGenerativeAIVideoModel(modelId,{provider:providerName,baseURL,headers:getHeaders,fetch:options.fetch,generateId:(_a22=options.generateId)!=null?_a22:generateId})},provider=function(modelId){if(new.target)throw Error("The Google Generative AI model function cannot be called with the new keyword.");return createChatModel(modelId)};return provider.specificationVersion="v3",provider.languageModel=createChatModel,provider.chat=createChatModel,provider.generativeAI=createChatModel,provider.embedding=createEmbeddingModel,provider.embeddingModel=createEmbeddingModel,provider.textEmbedding=createEmbeddingModel,provider.textEmbeddingModel=createEmbeddingModel,provider.image=createImageModel,provider.imageModel=createImageModel,provider.video=createVideoModel,provider.videoModel=createVideoModel,provider.tools=googleTools,provider}var VERSION6="3.0.64",googleErrorDataSchema2,googleFailedResponseHandler2,googleEmbeddingContentPartSchema,googleEmbeddingModelOptions,GoogleGenerativeAIEmbeddingModel=class{constructor(modelId,config2){this.specificationVersion="v3",this.maxEmbeddingsPerCall=2048,this.supportsParallelCalls=!0,this.modelId=modelId,this.config=config2}get provider(){return this.config.provider}async doEmbed({values,headers,abortSignal,providerOptions}){let googleOptions=await parseProviderOptions({provider:"google",providerOptions,schema:googleEmbeddingModelOptions});if(values.length>this.maxEmbeddingsPerCall)throw new TooManyEmbeddingValuesForCallError({provider:this.provider,modelId:this.modelId,maxEmbeddingsPerCall:this.maxEmbeddingsPerCall,values});let mergedHeaders=combineHeaders(await resolve(this.config.headers),headers),multimodalContent=googleOptions==null?void 0:googleOptions.content;if(multimodalContent!=null&&multimodalContent.length!==values.length)throw Error(`The number of multimodal content entries (${multimodalContent.length}) must match the number of values (${values.length}).`);if(values.length===1){let valueParts=multimodalContent==null?void 0:multimodalContent[0],textPart=values[0]?[{text:values[0]}]:[],parts=valueParts!=null?[...textPart,...valueParts]:[{text:values[0]}],{responseHeaders:responseHeaders2,value:response2,rawValue:rawValue2}=await postJsonToApi({url:`${this.config.baseURL}/models/${this.modelId}:embedContent`,headers:mergedHeaders,body:{model:`models/${this.modelId}`,content:{parts},outputDimensionality:googleOptions==null?void 0:googleOptions.outputDimensionality,taskType:googleOptions==null?void 0:googleOptions.taskType},failedResponseHandler:googleFailedResponseHandler2,successfulResponseHandler:createJsonResponseHandler(googleGenerativeAISingleEmbeddingResponseSchema),abortSignal,fetch:this.config.fetch});return{warnings:[],embeddings:[response2.embedding.values],usage:void 0,response:{headers:responseHeaders2,body:rawValue2}}}let{responseHeaders,value:response,rawValue}=await postJsonToApi({url:`${this.config.baseURL}/models/${this.modelId}:batchEmbedContents`,headers:mergedHeaders,body:{requests:values.map((value,index)=>{let valueParts=multimodalContent==null?void 0:multimodalContent[index],textPart=value?[{text:value}]:[];return{model:`models/${this.modelId}`,content:{role:"user",parts:valueParts!=null?[...textPart,...valueParts]:[{text:value}]},outputDimensionality:googleOptions==null?void 0:googleOptions.outputDimensionality,taskType:googleOptions==null?void 0:googleOptions.taskType}})},failedResponseHandler:googleFailedResponseHandler2,successfulResponseHandler:createJsonResponseHandler(googleGenerativeAITextEmbeddingResponseSchema),abortSignal,fetch:this.config.fetch});return{warnings:[],embeddings:response.embeddings.map((item)=>item.values),usage:void 0,response:{headers:responseHeaders,body:rawValue}}}},googleGenerativeAITextEmbeddingResponseSchema,googleGenerativeAISingleEmbeddingResponseSchema,dataUrlRegex2,googleLanguageModelOptions2,VertexServiceTierMap2,GoogleJSONAccumulator2=class{constructor(){this.accumulatedArgs={},this.jsonText="",this.pathStack=[],this.stringOpen=!1}processPartialArgs(partialArgs){let delta="";for(let arg of partialArgs){let rawPath=arg.jsonPath.replace(/^\$\./,"");if(!rawPath)continue;let segments=parsePath2(rawPath),existingValue=getNestedValue2(this.accumulatedArgs,segments);if(arg.stringValue!=null&&existingValue!==void 0){let escaped=JSON.stringify(arg.stringValue).slice(1,-1);setNestedValue2(this.accumulatedArgs,segments,existingValue+arg.stringValue),delta+=escaped;continue}let resolved=resolvePartialArgValue2(arg);if(resolved==null)continue;setNestedValue2(this.accumulatedArgs,segments,resolved.value),delta+=this.emitNavigationTo(segments,arg,resolved.json)}return this.jsonText+=delta,{currentJSON:this.accumulatedArgs,textDelta:delta}}finalize(){let finalArgs=JSON.stringify(this.accumulatedArgs),closingDelta=finalArgs.slice(this.jsonText.length);return{finalJSON:finalArgs,closingDelta}}ensureRoot(){if(this.pathStack.length===0)return this.pathStack.push({segment:"",isArray:!1,childCount:0}),"{";return""}emitNavigationTo(targetSegments,arg,valueJson){let fragment="";if(this.stringOpen)fragment+='"',this.stringOpen=!1;fragment+=this.ensureRoot();let targetContainerSegments=targetSegments.slice(0,-1),leafSegment=targetSegments[targetSegments.length-1],commonDepth=this.findCommonStackDepth(targetContainerSegments);return fragment+=this.closeDownTo(commonDepth),fragment+=this.openDownTo(targetContainerSegments,leafSegment),fragment+=this.emitLeaf(leafSegment,arg,valueJson),fragment}findCommonStackDepth(targetContainer){let maxDepth=Math.min(this.pathStack.length-1,targetContainer.length),common=0;for(let i=0;i<maxDepth;i++)if(this.pathStack[i+1].segment===targetContainer[i])common++;else break;return common+1}closeDownTo(targetDepth){let fragment="";while(this.pathStack.length>targetDepth){let entry=this.pathStack.pop();fragment+=entry.isArray?"]":"}"}return fragment}openDownTo(targetContainer,leafSegment){let fragment="",startIdx=this.pathStack.length-1;for(let i=startIdx;i<targetContainer.length;i++){let seg=targetContainer[i],parentEntry=this.pathStack[this.pathStack.length-1];if(parentEntry.childCount>0)fragment+=",";if(parentEntry.childCount++,typeof seg==="string")fragment+=`${JSON.stringify(seg)}:`;let isArray=typeof(i+1<targetContainer.length?targetContainer[i+1]:leafSegment)==="number";fragment+=isArray?"[":"{",this.pathStack.push({segment:seg,isArray,childCount:0})}return fragment}emitLeaf(leafSegment,arg,valueJson){let fragment="",container=this.pathStack[this.pathStack.length-1];if(container.childCount>0)fragment+=",";if(container.childCount++,typeof leafSegment==="string")fragment+=`${JSON.stringify(leafSegment)}:`;if(arg.stringValue!=null&&arg.willContinue)fragment+=valueJson.slice(0,-1),this.stringOpen=!0;else fragment+=valueJson;return fragment}},GoogleGenerativeAILanguageModel2=class{constructor(modelId,config2){this.specificationVersion="v3";var _a16;this.modelId=modelId,this.config=config2,this.generateId=(_a16=config2.generateId)!=null?_a16:generateId}get provider(){return this.config.provider}get supportedUrls(){var _a16,_b16,_c;return(_c=(_b16=(_a16=this.config).supportedUrls)==null?void 0:_b16.call(_a16))!=null?_c:{}}async getArgs({prompt,maxOutputTokens,temperature,topP,topK,frequencyPenalty,presencePenalty,stopSequences,responseFormat,seed,tools,toolChoice,providerOptions},{isStreaming=!1}={}){var _a16,_b16;let warnings=[],providerOptionsName=this.config.provider.includes("vertex")?"vertex":"google",googleOptions=await parseProviderOptions({provider:providerOptionsName,providerOptions,schema:googleLanguageModelOptions2});if(googleOptions==null&&providerOptionsName!=="google")googleOptions=await parseProviderOptions({provider:"google",providerOptions,schema:googleLanguageModelOptions2});let isVertexProvider=this.config.provider.startsWith("google.vertex.");if((tools==null?void 0:tools.some((tool2)=>tool2.type==="provider"&&tool2.id==="google.vertex_rag_store"))&&!isVertexProvider)warnings.push({type:"other",message:`The 'vertex_rag_store' tool is only supported with the Google Vertex provider and might not be supported or could behave unexpectedly with the current Google provider (${this.config.provider}).`});if((googleOptions==null?void 0:googleOptions.streamFunctionCallArguments)&&!isVertexProvider)warnings.push({type:"other",message:`'streamFunctionCallArguments' is only supported on the Vertex AI API and will be ignored with the current Google provider (${this.config.provider}). See https://docs.cloud.google.com/vertex-ai/generative-ai/docs/multimodal/function-calling#streaming-fc`});let sanitizedServiceTier=googleOptions==null?void 0:googleOptions.serviceTier;if((googleOptions==null?void 0:googleOptions.serviceTier)&&isVertexProvider)sanitizedServiceTier=VertexServiceTierMap2[googleOptions.serviceTier];let isGemmaModel=this.modelId.toLowerCase().startsWith("gemma-"),supportsFunctionResponseParts=this.modelId.startsWith("gemini-3"),{contents,systemInstruction}=convertToGoogleGenerativeAIMessages2(prompt,{isGemmaModel,providerOptionsName,supportsFunctionResponseParts}),{tools:googleTools2,toolConfig:googleToolConfig,toolWarnings}=prepareTools6({tools,toolChoice,modelId:this.modelId}),streamFunctionCallArguments=isStreaming&&isVertexProvider?(_a16=googleOptions==null?void 0:googleOptions.streamFunctionCallArguments)!=null?_a16:!1:void 0,toolConfig=googleToolConfig||streamFunctionCallArguments||(googleOptions==null?void 0:googleOptions.retrievalConfig)?{...googleToolConfig,...streamFunctionCallArguments&&{functionCallingConfig:{...googleToolConfig==null?void 0:googleToolConfig.functionCallingConfig,streamFunctionCallArguments:!0}},...(googleOptions==null?void 0:googleOptions.retrievalConfig)&&{retrievalConfig:googleOptions.retrievalConfig}}:void 0;return{args:{generationConfig:{maxOutputTokens,temperature,topK,topP,frequencyPenalty,presencePenalty,stopSequences,seed,responseMimeType:(responseFormat==null?void 0:responseFormat.type)==="json"?"application/json":void 0,responseSchema:(responseFormat==null?void 0:responseFormat.type)==="json"&&responseFormat.schema!=null&&((_b16=googleOptions==null?void 0:googleOptions.structuredOutputs)!=null?_b16:!0)?convertJSONSchemaToOpenAPISchema2(responseFormat.schema):void 0,...(googleOptions==null?void 0:googleOptions.audioTimestamp)&&{audioTimestamp:googleOptions.audioTimestamp},responseModalities:googleOptions==null?void 0:googleOptions.responseModalities,thinkingConfig:googleOptions==null?void 0:googleOptions.thinkingConfig,...(googleOptions==null?void 0:googleOptions.mediaResolution)&&{mediaResolution:googleOptions.mediaResolution},...(googleOptions==null?void 0:googleOptions.imageConfig)&&{imageConfig:googleOptions.imageConfig}},contents,systemInstruction:isGemmaModel?void 0:systemInstruction,safetySettings:googleOptions==null?void 0:googleOptions.safetySettings,tools:googleTools2,toolConfig,cachedContent:googleOptions==null?void 0:googleOptions.cachedContent,labels:googleOptions==null?void 0:googleOptions.labels,serviceTier:sanitizedServiceTier},warnings:[...warnings,...toolWarnings],providerOptionsName}}async doGenerate(options){var _a16,_b16,_c,_d,_e,_f,_g,_h,_i,_j,_k,_l,_m,_n,_o,_p;let{args,warnings,providerOptionsName}=await this.getArgs(options),mergedHeaders=combineHeaders(await resolve(this.config.headers),options.headers),{responseHeaders,value:response,rawValue:rawResponse}=await postJsonToApi({url:`${this.config.baseURL}/${getModelPath2(this.modelId)}:generateContent`,headers:mergedHeaders,body:args,failedResponseHandler:googleFailedResponseHandler2,successfulResponseHandler:createJsonResponseHandler(responseSchema2),abortSignal:options.abortSignal,fetch:this.config.fetch}),candidate=response.candidates[0],content=[],parts=(_b16=(_a16=candidate.content)==null?void 0:_a16.parts)!=null?_b16:[],usageMetadata=response.usageMetadata,lastCodeExecutionToolCallId,lastServerToolCallId;for(let part of parts)if("executableCode"in part&&((_c=part.executableCode)==null?void 0:_c.code)){let toolCallId=this.config.generateId();lastCodeExecutionToolCallId=toolCallId,content.push({type:"tool-call",toolCallId,toolName:"code_execution",input:JSON.stringify(part.executableCode),providerExecuted:!0})}else if("codeExecutionResult"in part&&part.codeExecutionResult)content.push({type:"tool-result",toolCallId:lastCodeExecutionToolCallId,toolName:"code_execution",result:{outcome:part.codeExecutionResult.outcome,output:(_d=part.codeExecutionResult.output)!=null?_d:""}}),lastCodeExecutionToolCallId=void 0;else if("text"in part&&part.text!=null){let thoughtSignatureMetadata=part.thoughtSignature?{[providerOptionsName]:{thoughtSignature:part.thoughtSignature}}:void 0;if(part.text.length===0){if(thoughtSignatureMetadata!=null&&content.length>0){let lastContent=content[content.length-1];lastContent.providerMetadata=thoughtSignatureMetadata}}else content.push({type:part.thought===!0?"reasoning":"text",text:part.text,providerMetadata:thoughtSignatureMetadata})}else if("functionCall"in part&&part.functionCall.name!=null&&part.functionCall.args!=null)content.push({type:"tool-call",toolCallId:this.config.generateId(),toolName:part.functionCall.name,input:JSON.stringify(part.functionCall.args),providerMetadata:part.thoughtSignature?{[providerOptionsName]:{thoughtSignature:part.thoughtSignature}}:void 0});else if("inlineData"in part){let hasThought=part.thought===!0,hasThoughtSignature=!!part.thoughtSignature;content.push({type:"file",data:part.inlineData.data,mediaType:part.inlineData.mimeType,providerMetadata:hasThought||hasThoughtSignature?{[providerOptionsName]:{...hasThought?{thought:!0}:{},...hasThoughtSignature?{thoughtSignature:part.thoughtSignature}:{}}}:void 0})}else if("toolCall"in part&&part.toolCall){let toolCallId=(_e=part.toolCall.id)!=null?_e:this.config.generateId();lastServerToolCallId=toolCallId,content.push({type:"tool-call",toolCallId,toolName:`server:${part.toolCall.toolType}`,input:JSON.stringify((_f=part.toolCall.args)!=null?_f:{}),providerExecuted:!0,dynamic:!0,providerMetadata:part.thoughtSignature?{[providerOptionsName]:{thoughtSignature:part.thoughtSignature,serverToolCallId:toolCallId,serverToolType:part.toolCall.toolType}}:{[providerOptionsName]:{serverToolCallId:toolCallId,serverToolType:part.toolCall.toolType}}})}else if("toolResponse"in part&&part.toolResponse){let responseToolCallId=(_g=lastServerToolCallId!=null?lastServerToolCallId:part.toolResponse.id)!=null?_g:this.config.generateId();content.push({type:"tool-result",toolCallId:responseToolCallId,toolName:`server:${part.toolResponse.toolType}`,result:(_h=part.toolResponse.response)!=null?_h:{},providerMetadata:part.thoughtSignature?{[providerOptionsName]:{thoughtSignature:part.thoughtSignature,serverToolCallId:responseToolCallId,serverToolType:part.toolResponse.toolType}}:{[providerOptionsName]:{serverToolCallId:responseToolCallId,serverToolType:part.toolResponse.toolType}}}),lastServerToolCallId=void 0}let sources=(_i=extractSources2({groundingMetadata:candidate.groundingMetadata,generateId:this.config.generateId}))!=null?_i:[];for(let source of sources)content.push(source);return{content,finishReason:{unified:mapGoogleGenerativeAIFinishReason2({finishReason:candidate.finishReason,hasToolCalls:content.some((part)=>part.type==="tool-call"&&!part.providerExecuted)}),raw:(_j=candidate.finishReason)!=null?_j:void 0},usage:convertGoogleGenerativeAIUsage2(usageMetadata),warnings,providerMetadata:{[providerOptionsName]:{promptFeedback:(_k=response.promptFeedback)!=null?_k:null,groundingMetadata:(_l=candidate.groundingMetadata)!=null?_l:null,urlContextMetadata:(_m=candidate.urlContextMetadata)!=null?_m:null,safetyRatings:(_n=candidate.safetyRatings)!=null?_n:null,usageMetadata:usageMetadata!=null?usageMetadata:null,finishMessage:(_o=candidate.finishMessage)!=null?_o:null,serviceTier:(_p=response.serviceTier)!=null?_p:null}},request:{body:args},response:{headers:responseHeaders,body:rawResponse}}}async doStream(options){let{args,warnings,providerOptionsName}=await this.getArgs(options,{isStreaming:!0}),headers=combineHeaders(await resolve(this.config.headers),options.headers),{responseHeaders,value:response}=await postJsonToApi({url:`${this.config.baseURL}/${getModelPath2(this.modelId)}:streamGenerateContent?alt=sse`,headers,body:args,failedResponseHandler:googleFailedResponseHandler2,successfulResponseHandler:createEventSourceResponseHandler(chunkSchema2),abortSignal:options.abortSignal,fetch:this.config.fetch}),finishReason={unified:"other",raw:void 0},usage=void 0,providerMetadata=void 0,lastGroundingMetadata=null,lastUrlContextMetadata=null,serviceTier=null,generateId3=this.config.generateId,hasToolCalls=!1,currentTextBlockId=null,currentReasoningBlockId=null,blockCounter=0,emittedSourceUrls=new Set,lastCodeExecutionToolCallId,lastServerToolCallId,activeStreamingToolCalls=[];return{stream:response.pipeThrough(new TransformStream({start(controller){controller.enqueue({type:"stream-start",warnings})},transform(chunk,controller){var _a16,_b16,_c,_d,_e,_f,_g,_h,_i,_j,_k,_l;if(options.includeRawChunks)controller.enqueue({type:"raw",rawValue:chunk.rawValue});if(!chunk.success){controller.enqueue({type:"error",error:chunk.error});return}let value=chunk.value,usageMetadata=value.usageMetadata;if(usageMetadata!=null)usage=usageMetadata;if(value.serviceTier!=null)serviceTier=value.serviceTier;let candidate=(_a16=value.candidates)==null?void 0:_a16[0];if(candidate==null)return;let content=candidate.content;if(candidate.groundingMetadata!=null)lastGroundingMetadata=candidate.groundingMetadata;if(candidate.urlContextMetadata!=null)lastUrlContextMetadata=candidate.urlContextMetadata;let sources=extractSources2({groundingMetadata:candidate.groundingMetadata,generateId:generateId3});if(sources!=null){for(let source of sources)if(source.sourceType==="url"&&!emittedSourceUrls.has(source.url))emittedSourceUrls.add(source.url),controller.enqueue(source)}if(content!=null){let parts=(_b16=content.parts)!=null?_b16:[];for(let part of parts)if("executableCode"in part&&((_c=part.executableCode)==null?void 0:_c.code)){let toolCallId=generateId3();lastCodeExecutionToolCallId=toolCallId,controller.enqueue({type:"tool-call",toolCallId,toolName:"code_execution",input:JSON.stringify(part.executableCode),providerExecuted:!0})}else if("codeExecutionResult"in part&&part.codeExecutionResult){let toolCallId=lastCodeExecutionToolCallId;if(toolCallId)controller.enqueue({type:"tool-result",toolCallId,toolName:"code_execution",result:{outcome:part.codeExecutionResult.outcome,output:(_d=part.codeExecutionResult.output)!=null?_d:""}}),lastCodeExecutionToolCallId=void 0}else if("text"in part&&part.text!=null){let thoughtSignatureMetadata=part.thoughtSignature?{[providerOptionsName]:{thoughtSignature:part.thoughtSignature}}:void 0;if(part.text.length===0){if(thoughtSignatureMetadata!=null&¤tTextBlockId!==null)controller.enqueue({type:"text-delta",id:currentTextBlockId,delta:"",providerMetadata:thoughtSignatureMetadata})}else if(part.thought===!0){if(currentTextBlockId!==null)controller.enqueue({type:"text-end",id:currentTextBlockId}),currentTextBlockId=null;if(currentReasoningBlockId===null)currentReasoningBlockId=String(blockCounter++),controller.enqueue({type:"reasoning-start",id:currentReasoningBlockId,providerMetadata:thoughtSignatureMetadata});controller.enqueue({type:"reasoning-delta",id:currentReasoningBlockId,delta:part.text,providerMetadata:thoughtSignatureMetadata})}else{if(currentReasoningBlockId!==null)controller.enqueue({type:"reasoning-end",id:currentReasoningBlockId}),currentReasoningBlockId=null;if(currentTextBlockId===null)currentTextBlockId=String(blockCounter++),controller.enqueue({type:"text-start",id:currentTextBlockId,providerMetadata:thoughtSignatureMetadata});controller.enqueue({type:"text-delta",id:currentTextBlockId,delta:part.text,providerMetadata:thoughtSignatureMetadata})}}else if("inlineData"in part){if(currentTextBlockId!==null)controller.enqueue({type:"text-end",id:currentTextBlockId}),currentTextBlockId=null;if(currentReasoningBlockId!==null)controller.enqueue({type:"reasoning-end",id:currentReasoningBlockId}),currentReasoningBlockId=null;let hasThought=part.thought===!0,hasThoughtSignature=!!part.thoughtSignature,fileMeta=hasThought||hasThoughtSignature?{[providerOptionsName]:{...hasThought?{thought:!0}:{},...hasThoughtSignature?{thoughtSignature:part.thoughtSignature}:{}}}:void 0;controller.enqueue({type:"file",mediaType:part.inlineData.mimeType,data:part.inlineData.data,providerMetadata:fileMeta})}else if("toolCall"in part&&part.toolCall){let toolCallId=(_e=part.toolCall.id)!=null?_e:generateId3();lastServerToolCallId=toolCallId;let serverMeta={[providerOptionsName]:{...part.thoughtSignature?{thoughtSignature:part.thoughtSignature}:{},serverToolCallId:toolCallId,serverToolType:part.toolCall.toolType}};controller.enqueue({type:"tool-call",toolCallId,toolName:`server:${part.toolCall.toolType}`,input:JSON.stringify((_f=part.toolCall.args)!=null?_f:{}),providerExecuted:!0,dynamic:!0,providerMetadata:serverMeta})}else if("toolResponse"in part&&part.toolResponse){let responseToolCallId=(_g=lastServerToolCallId!=null?lastServerToolCallId:part.toolResponse.id)!=null?_g:generateId3(),serverMeta={[providerOptionsName]:{...part.thoughtSignature?{thoughtSignature:part.thoughtSignature}:{},serverToolCallId:responseToolCallId,serverToolType:part.toolResponse.toolType}};controller.enqueue({type:"tool-result",toolCallId:responseToolCallId,toolName:`server:${part.toolResponse.toolType}`,result:(_h=part.toolResponse.response)!=null?_h:{},providerMetadata:serverMeta}),lastServerToolCallId=void 0}for(let part of parts){if(!("functionCall"in part))continue;let providerMeta=part.thoughtSignature?{[providerOptionsName]:{thoughtSignature:part.thoughtSignature}}:void 0,isStreamingChunk=part.functionCall.partialArgs!=null||part.functionCall.name!=null&&part.functionCall.willContinue===!0,isTerminalChunk=part.functionCall.name==null&&part.functionCall.args==null&&part.functionCall.partialArgs==null&&part.functionCall.willContinue==null,isCompleteCall=part.functionCall.name!=null&&part.functionCall.args!=null&&part.functionCall.partialArgs==null;if(isStreamingChunk){if(part.functionCall.name!=null&&part.functionCall.willContinue===!0){let toolCallId=generateId3(),accumulator=new GoogleJSONAccumulator2;if(activeStreamingToolCalls.push({toolCallId,toolName:part.functionCall.name,accumulator,providerMetadata:providerMeta}),controller.enqueue({type:"tool-input-start",id:toolCallId,toolName:part.functionCall.name,providerMetadata:providerMeta}),part.functionCall.partialArgs!=null){let{textDelta}=accumulator.processPartialArgs(part.functionCall.partialArgs);if(textDelta.length>0)controller.enqueue({type:"tool-input-delta",id:toolCallId,delta:textDelta,providerMetadata:providerMeta})}}else if(part.functionCall.partialArgs!=null&&activeStreamingToolCalls.length>0){let active=activeStreamingToolCalls[activeStreamingToolCalls.length-1],{textDelta}=active.accumulator.processPartialArgs(part.functionCall.partialArgs);if(textDelta.length>0)controller.enqueue({type:"tool-input-delta",id:active.toolCallId,delta:textDelta,providerMetadata:providerMeta})}}else if(isTerminalChunk&&activeStreamingToolCalls.length>0){let active=activeStreamingToolCalls.pop(),{finalJSON,closingDelta}=active.accumulator.finalize();if(closingDelta.length>0)controller.enqueue({type:"tool-input-delta",id:active.toolCallId,delta:closingDelta,providerMetadata:active.providerMetadata});controller.enqueue({type:"tool-input-end",id:active.toolCallId,providerMetadata:active.providerMetadata}),controller.enqueue({type:"tool-call",toolCallId:active.toolCallId,toolName:active.toolName,input:finalJSON,providerMetadata:active.providerMetadata}),hasToolCalls=!0}else if(isCompleteCall){let toolCallId=generateId3(),toolName=part.functionCall.name,args2=typeof part.functionCall.args==="string"?part.functionCall.args:JSON.stringify((_i=part.functionCall.args)!=null?_i:{});controller.enqueue({type:"tool-input-start",id:toolCallId,toolName,providerMetadata:providerMeta}),controller.enqueue({type:"tool-input-delta",id:toolCallId,delta:args2,providerMetadata:providerMeta}),controller.enqueue({type:"tool-input-end",id:toolCallId,providerMetadata:providerMeta}),controller.enqueue({type:"tool-call",toolCallId,toolName,input:args2,providerMetadata:providerMeta}),hasToolCalls=!0}}}if(candidate.finishReason!=null)finishReason={unified:mapGoogleGenerativeAIFinishReason2({finishReason:candidate.finishReason,hasToolCalls}),raw:candidate.finishReason},providerMetadata={[providerOptionsName]:{promptFeedback:(_j=value.promptFeedback)!=null?_j:null,groundingMetadata:lastGroundingMetadata,urlContextMetadata:lastUrlContextMetadata,safetyRatings:(_k=candidate.safetyRatings)!=null?_k:null,usageMetadata:usageMetadata!=null?usageMetadata:null,finishMessage:(_l=candidate.finishMessage)!=null?_l:null,serviceTier}}},flush(controller){if(currentTextBlockId!==null)controller.enqueue({type:"text-end",id:currentTextBlockId});if(currentReasoningBlockId!==null)controller.enqueue({type:"reasoning-end",id:currentReasoningBlockId});controller.enqueue({type:"finish",finishReason,usage:convertGoogleGenerativeAIUsage2(usage),providerMetadata})}})),response:{headers:responseHeaders},request:{body:args}}}},getGroundingMetadataSchema2=()=>exports_external.object({webSearchQueries:exports_external.array(exports_external.string()).nullish(),imageSearchQueries:exports_external.array(exports_external.string()).nullish(),retrievalQueries:exports_external.array(exports_external.string()).nullish(),searchEntryPoint:exports_external.object({renderedContent:exports_external.string()}).nullish(),groundingChunks:exports_external.array(exports_external.object({web:exports_external.object({uri:exports_external.string(),title:exports_external.string().nullish()}).nullish(),image:exports_external.object({sourceUri:exports_external.string(),imageUri:exports_external.string(),title:exports_external.string().nullish(),domain:exports_external.string().nullish()}).nullish(),retrievedContext:exports_external.object({uri:exports_external.string().nullish(),title:exports_external.string().nullish(),text:exports_external.string().nullish(),fileSearchStore:exports_external.string().nullish()}).nullish(),maps:exports_external.object({uri:exports_external.string().nullish(),title:exports_external.string().nullish(),text:exports_external.string().nullish(),placeId:exports_external.string().nullish()}).nullish()})).nullish(),groundingSupports:exports_external.array(exports_external.object({segment:exports_external.object({startIndex:exports_external.number().nullish(),endIndex:exports_external.number().nullish(),text:exports_external.string().nullish()}).nullish(),segment_text:exports_external.string().nullish(),groundingChunkIndices:exports_external.array(exports_external.number()).nullish(),supportChunkIndices:exports_external.array(exports_external.number()).nullish(),confidenceScores:exports_external.array(exports_external.number()).nullish(),confidenceScore:exports_external.array(exports_external.number()).nullish()})).nullish(),retrievalMetadata:exports_external.union([exports_external.object({webDynamicRetrievalScore:exports_external.number()}),exports_external.object({})]).nullish()}),partialArgSchema2,getContentSchema2=()=>exports_external.object({parts:exports_external.array(exports_external.union([exports_external.object({functionCall:exports_external.object({name:exports_external.string().nullish(),args:exports_external.unknown().nullish(),partialArgs:exports_external.array(partialArgSchema2).nullish(),willContinue:exports_external.boolean().nullish()}),thoughtSignature:exports_external.string().nullish()}),exports_external.object({inlineData:exports_external.object({mimeType:exports_external.string(),data:exports_external.string()}),thought:exports_external.boolean().nullish(),thoughtSignature:exports_external.string().nullish()}),exports_external.object({toolCall:exports_external.object({toolType:exports_external.string(),args:exports_external.unknown().nullish(),id:exports_external.string()}),thoughtSignature:exports_external.string().nullish()}),exports_external.object({toolResponse:exports_external.object({toolType:exports_external.string(),response:exports_external.unknown().nullish(),id:exports_external.string()}),thoughtSignature:exports_external.string().nullish()}),exports_external.object({executableCode:exports_external.object({language:exports_external.string(),code:exports_external.string()}).nullish(),codeExecutionResult:exports_external.object({outcome:exports_external.string(),output:exports_external.string().nullish()}).nullish(),text:exports_external.string().nullish(),thought:exports_external.boolean().nullish(),thoughtSignature:exports_external.string().nullish()})])).nullish()}),getSafetyRatingSchema2=()=>exports_external.object({category:exports_external.string().nullish(),probability:exports_external.string().nullish(),probabilityScore:exports_external.number().nullish(),severity:exports_external.string().nullish(),severityScore:exports_external.number().nullish(),blocked:exports_external.boolean().nullish()}),tokenDetailsSchema2,usageSchema3,getUrlContextMetadataSchema2=()=>exports_external.object({urlMetadata:exports_external.array(exports_external.object({retrievedUrl:exports_external.string(),urlRetrievalStatus:exports_external.string()})).nullish()}),responseSchema2,chunkSchema2,codeExecution2,enterpriseWebSearch2,fileSearchArgsBaseSchema2,fileSearchArgsSchema5,fileSearch5,googleMaps2,googleSearchToolArgsBaseSchema2,googleSearchToolArgsSchema2,googleSearch2,urlContext2,vertexRagStore2,googleTools,GoogleGenerativeAIImageModel=class{constructor(modelId,settings,config2){this.modelId=modelId,this.settings=settings,this.config=config2,this.specificationVersion="v3"}get maxImagesPerCall(){if(this.settings.maxImagesPerCall!=null)return this.settings.maxImagesPerCall;if(isGeminiModel(this.modelId))return 10;return 4}get provider(){return this.config.provider}async doGenerate(options){if(isGeminiModel(this.modelId))return this.doGenerateGemini(options);return this.doGenerateImagen(options)}async doGenerateImagen(options){var _a16,_b16,_c;let{prompt,n=1,size,aspectRatio="1:1",seed,providerOptions,headers,abortSignal,files,mask}=options,warnings=[];if(files!=null&&files.length>0)throw Error("Google Generative AI does not support image editing with Imagen models. Use Google Vertex AI (@ai-sdk/google-vertex) for image editing capabilities.");if(mask!=null)throw Error("Google Generative AI does not support image editing with masks. Use Google Vertex AI (@ai-sdk/google-vertex) for image editing capabilities.");if(size!=null)warnings.push({type:"unsupported",feature:"size",details:"This model does not support the `size` option. Use `aspectRatio` instead."});if(seed!=null)warnings.push({type:"unsupported",feature:"seed",details:"This model does not support the `seed` option through this provider."});let googleOptions=await parseProviderOptions({provider:"google",providerOptions,schema:googleImageModelOptionsSchema}),currentDate=(_c=(_b16=(_a16=this.config._internal)==null?void 0:_a16.currentDate)==null?void 0:_b16.call(_a16))!=null?_c:new Date,parameters={sampleCount:n};if(aspectRatio!=null)parameters.aspectRatio=aspectRatio;if(googleOptions)Object.assign(parameters,googleOptions);let body={instances:[{prompt}],parameters},{responseHeaders,value:response}=await postJsonToApi({url:`${this.config.baseURL}/models/${this.modelId}:predict`,headers:combineHeaders(await resolve(this.config.headers),headers),body,failedResponseHandler:googleFailedResponseHandler2,successfulResponseHandler:createJsonResponseHandler(googleImageResponseSchema),abortSignal,fetch:this.config.fetch});return{images:response.predictions.map((p)=>p.bytesBase64Encoded),warnings,providerMetadata:{google:{images:response.predictions.map(()=>({}))}},response:{timestamp:currentDate,modelId:this.modelId,headers:responseHeaders}}}async doGenerateGemini(options){var _a16,_b16,_c,_d,_e,_f,_g,_h,_i;let{prompt,n,size,aspectRatio,seed,providerOptions,headers,abortSignal,files,mask}=options,warnings=[];if(mask!=null)throw Error("Gemini image models do not support mask-based image editing.");if(n!=null&&n>1)throw Error("Gemini image models do not support generating a set number of images per call. Use n=1 or omit the n parameter.");if(size!=null)warnings.push({type:"unsupported",feature:"size",details:"This model does not support the `size` option. Use `aspectRatio` instead."});let userContent=[];if(prompt!=null)userContent.push({type:"text",text:prompt});if(files!=null&&files.length>0)for(let file2 of files)if(file2.type==="url")userContent.push({type:"file",data:new URL(file2.url),mediaType:"image/*"});else userContent.push({type:"file",data:typeof file2.data==="string"?file2.data:new Uint8Array(file2.data),mediaType:file2.mediaType});let languageModelPrompt=[{role:"user",content:userContent}],result=await new GoogleGenerativeAILanguageModel2(this.modelId,{provider:this.config.provider,baseURL:this.config.baseURL,headers:(_a16=this.config.headers)!=null?_a16:{},fetch:this.config.fetch,generateId:(_b16=this.config.generateId)!=null?_b16:generateId}).doGenerate({prompt:languageModelPrompt,seed,providerOptions:{google:{responseModalities:["IMAGE"],imageConfig:aspectRatio?{aspectRatio}:void 0,...(_c=providerOptions==null?void 0:providerOptions.google)!=null?_c:{}}},headers,abortSignal}),currentDate=(_f=(_e=(_d=this.config._internal)==null?void 0:_d.currentDate)==null?void 0:_e.call(_d))!=null?_f:new Date,images=[];for(let part of result.content)if(part.type==="file"&&part.mediaType.startsWith("image/"))images.push(convertToBase64(part.data));return{images,warnings,providerMetadata:{google:{images:images.map(()=>({}))}},response:{timestamp:currentDate,modelId:this.modelId,headers:(_g=result.response)==null?void 0:_g.headers},usage:result.usage?{inputTokens:result.usage.inputTokens.total,outputTokens:result.usage.outputTokens.total,totalTokens:((_h=result.usage.inputTokens.total)!=null?_h:0)+((_i=result.usage.outputTokens.total)!=null?_i:0)}:void 0}}},googleImageResponseSchema,googleImageModelOptionsSchema,GoogleGenerativeAIVideoModel=class{constructor(modelId,config2){this.modelId=modelId,this.config=config2,this.specificationVersion="v3"}get provider(){return this.config.provider}get maxVideosPerCall(){return 4}async doGenerate(options){var _a16,_b16,_c,_d,_e,_f,_g,_h;let currentDate=(_c=(_b16=(_a16=this.config._internal)==null?void 0:_a16.currentDate)==null?void 0:_b16.call(_a16))!=null?_c:new Date,warnings=[],googleOptions=await parseProviderOptions({provider:"google",providerOptions:options.providerOptions,schema:googleVideoModelOptionsSchema}),instances=[{}],instance=instances[0];if(options.prompt!=null)instance.prompt=options.prompt;if(options.image!=null)if(options.image.type==="url")warnings.push({type:"unsupported",feature:"URL-based image input",details:"Google Generative AI video models require base64-encoded images. URL will be ignored."});else{let base64Data=typeof options.image.data==="string"?options.image.data:convertUint8ArrayToBase64(options.image.data);instance.image={inlineData:{mimeType:options.image.mediaType||"image/png",data:base64Data}}}if((googleOptions==null?void 0:googleOptions.referenceImages)!=null)instance.referenceImages=googleOptions.referenceImages.map((refImg)=>{if(refImg.bytesBase64Encoded)return{inlineData:{mimeType:"image/png",data:refImg.bytesBase64Encoded}};else if(refImg.gcsUri)return{gcsUri:refImg.gcsUri};return refImg});let parameters={sampleCount:options.n};if(options.aspectRatio)parameters.aspectRatio=options.aspectRatio;if(options.resolution){let resolutionMap={"1280x720":"720p","1920x1080":"1080p","3840x2160":"4k"};parameters.resolution=resolutionMap[options.resolution]||options.resolution}if(options.duration)parameters.durationSeconds=options.duration;if(options.seed)parameters.seed=options.seed;if(googleOptions!=null){let opts=googleOptions;if(opts.personGeneration!==void 0&&opts.personGeneration!==null)parameters.personGeneration=opts.personGeneration;if(opts.negativePrompt!==void 0&&opts.negativePrompt!==null)parameters.negativePrompt=opts.negativePrompt;for(let[key,value]of Object.entries(opts))if(!["pollIntervalMs","pollTimeoutMs","personGeneration","negativePrompt","referenceImages"].includes(key))parameters[key]=value}let{value:operation}=await postJsonToApi({url:`${this.config.baseURL}/models/${this.modelId}:predictLongRunning`,headers:combineHeaders(await resolve(this.config.headers),options.headers),body:{instances,parameters},successfulResponseHandler:createJsonResponseHandler(googleOperationSchema),failedResponseHandler:googleFailedResponseHandler2,abortSignal:options.abortSignal,fetch:this.config.fetch}),operationName=operation.name;if(!operationName)throw new AISDKError({name:"GOOGLE_VIDEO_GENERATION_ERROR",message:"No operation name returned from API"});let pollIntervalMs=(_d=googleOptions==null?void 0:googleOptions.pollIntervalMs)!=null?_d:1e4,pollTimeoutMs=(_e=googleOptions==null?void 0:googleOptions.pollTimeoutMs)!=null?_e:600000,startTime=Date.now(),finalOperation=operation,responseHeaders;while(!finalOperation.done){if(Date.now()-startTime>pollTimeoutMs)throw new AISDKError({name:"GOOGLE_VIDEO_GENERATION_TIMEOUT",message:`Video generation timed out after ${pollTimeoutMs}ms`});if(await delay(pollIntervalMs),(_f=options.abortSignal)==null?void 0:_f.aborted)throw new AISDKError({name:"GOOGLE_VIDEO_GENERATION_ABORTED",message:"Video generation request was aborted"});let{value:statusOperation,responseHeaders:pollHeaders}=await getFromApi({url:`${this.config.baseURL}/${operationName}`,headers:combineHeaders(await resolve(this.config.headers),options.headers),successfulResponseHandler:createJsonResponseHandler(googleOperationSchema),failedResponseHandler:googleFailedResponseHandler2,abortSignal:options.abortSignal,fetch:this.config.fetch});finalOperation=statusOperation,responseHeaders=pollHeaders}if(finalOperation.error)throw new AISDKError({name:"GOOGLE_VIDEO_GENERATION_FAILED",message:`Video generation failed: ${finalOperation.error.message}`});let response=finalOperation.response;if(!((_g=response==null?void 0:response.generateVideoResponse)==null?void 0:_g.generatedSamples)||response.generateVideoResponse.generatedSamples.length===0)throw new AISDKError({name:"GOOGLE_VIDEO_GENERATION_ERROR",message:`No videos in response. Response: ${JSON.stringify(finalOperation)}`});let videos=[],videoMetadata=[],resolvedHeaders=await resolve(this.config.headers),apiKey=resolvedHeaders==null?void 0:resolvedHeaders["x-goog-api-key"];for(let generatedSample of response.generateVideoResponse.generatedSamples)if((_h=generatedSample.video)==null?void 0:_h.uri){let urlWithAuth=apiKey?`${generatedSample.video.uri}${generatedSample.video.uri.includes("?")?"&":"?"}key=${apiKey}`:generatedSample.video.uri;videos.push({type:"url",url:urlWithAuth,mediaType:"video/mp4"}),videoMetadata.push({uri:generatedSample.video.uri})}if(videos.length===0)throw new AISDKError({name:"GOOGLE_VIDEO_GENERATION_ERROR",message:"No valid videos in response"});return{videos,warnings,response:{timestamp:currentDate,modelId:this.modelId,headers:responseHeaders},providerMetadata:{google:{videos:videoMetadata}}}}},googleOperationSchema,googleVideoModelOptionsSchema,google;var init_dist9=__esm(()=>{init_dist3();init_dist();init_dist3();init_v4();init_dist3();init_v4();init_dist3();init_v4();init_dist3();init_v4();init_dist();init_dist3();init_dist3();init_v4();init_dist();init_dist3();init_v4();init_dist3();init_v4();init_dist3();init_v4();init_dist3();init_v4();init_dist3();init_v4();init_dist3();init_v4();init_dist3();init_v4();init_dist3();init_v4();init_dist();init_dist3();init_v4();googleErrorDataSchema2=lazySchema(()=>zodSchema(exports_external.object({error:exports_external.object({code:exports_external.number().nullable(),message:exports_external.string(),status:exports_external.string()})}))),googleFailedResponseHandler2=createJsonErrorResponseHandler({errorSchema:googleErrorDataSchema2,errorToMessage:(data)=>data.error.message}),googleEmbeddingContentPartSchema=exports_external.union([exports_external.object({text:exports_external.string()}),exports_external.object({inlineData:exports_external.object({mimeType:exports_external.string(),data:exports_external.string()})})]),googleEmbeddingModelOptions=lazySchema(()=>zodSchema(exports_external.object({outputDimensionality:exports_external.number().optional(),taskType:exports_external.enum(["SEMANTIC_SIMILARITY","CLASSIFICATION","CLUSTERING","RETRIEVAL_DOCUMENT","RETRIEVAL_QUERY","QUESTION_ANSWERING","FACT_VERIFICATION","CODE_RETRIEVAL_QUERY"]).optional(),content:exports_external.array(exports_external.array(googleEmbeddingContentPartSchema).min(1).nullable()).optional()}))),googleGenerativeAITextEmbeddingResponseSchema=lazySchema(()=>zodSchema(exports_external.object({embeddings:exports_external.array(exports_external.object({values:exports_external.array(exports_external.number())}))}))),googleGenerativeAISingleEmbeddingResponseSchema=lazySchema(()=>zodSchema(exports_external.object({embedding:exports_external.object({values:exports_external.array(exports_external.number())})})));dataUrlRegex2=/^data:([^;,]+);base64,(.+)$/s;googleLanguageModelOptions2=lazySchema(()=>zodSchema(exports_external.object({responseModalities:exports_external.array(exports_external.enum(["TEXT","IMAGE"])).optional(),thinkingConfig:exports_external.object({thinkingBudget:exports_external.number().optional(),includeThoughts:exports_external.boolean().optional(),thinkingLevel:exports_external.enum(["minimal","low","medium","high"]).optional()}).optional(),cachedContent:exports_external.string().optional(),structuredOutputs:exports_external.boolean().optional(),safetySettings:exports_external.array(exports_external.object({category:exports_external.enum(["HARM_CATEGORY_UNSPECIFIED","HARM_CATEGORY_HATE_SPEECH","HARM_CATEGORY_DANGEROUS_CONTENT","HARM_CATEGORY_HARASSMENT","HARM_CATEGORY_SEXUALLY_EXPLICIT","HARM_CATEGORY_CIVIC_INTEGRITY"]),threshold:exports_external.enum(["HARM_BLOCK_THRESHOLD_UNSPECIFIED","BLOCK_LOW_AND_ABOVE","BLOCK_MEDIUM_AND_ABOVE","BLOCK_ONLY_HIGH","BLOCK_NONE","OFF"])})).optional(),threshold:exports_external.enum(["HARM_BLOCK_THRESHOLD_UNSPECIFIED","BLOCK_LOW_AND_ABOVE","BLOCK_MEDIUM_AND_ABOVE","BLOCK_ONLY_HIGH","BLOCK_NONE","OFF"]).optional(),audioTimestamp:exports_external.boolean().optional(),labels:exports_external.record(exports_external.string(),exports_external.string()).optional(),mediaResolution:exports_external.enum(["MEDIA_RESOLUTION_UNSPECIFIED","MEDIA_RESOLUTION_LOW","MEDIA_RESOLUTION_MEDIUM","MEDIA_RESOLUTION_HIGH"]).optional(),imageConfig:exports_external.object({aspectRatio:exports_external.enum(["1:1","2:3","3:2","3:4","4:3","4:5","5:4","9:16","16:9","21:9","1:8","8:1","1:4","4:1"]).optional(),imageSize:exports_external.enum(["1K","2K","4K","512"]).optional()}).optional(),retrievalConfig:exports_external.object({latLng:exports_external.object({latitude:exports_external.number(),longitude:exports_external.number()}).optional()}).optional(),streamFunctionCallArguments:exports_external.boolean().optional(),serviceTier:exports_external.enum(["standard","flex","priority"]).optional()}))),VertexServiceTierMap2={standard:"SERVICE_TIER_STANDARD",flex:"SERVICE_TIER_FLEX",priority:"SERVICE_TIER_PRIORITY"};partialArgSchema2=exports_external.object({jsonPath:exports_external.string(),stringValue:exports_external.string().nullish(),numberValue:exports_external.number().nullish(),boolValue:exports_external.boolean().nullish(),nullValue:exports_external.unknown().nullish(),willContinue:exports_external.boolean().nullish()}),tokenDetailsSchema2=exports_external.array(exports_external.object({modality:exports_external.string(),tokenCount:exports_external.number()})).nullish(),usageSchema3=exports_external.object({cachedContentTokenCount:exports_external.number().nullish(),thoughtsTokenCount:exports_external.number().nullish(),promptTokenCount:exports_external.number().nullish(),candidatesTokenCount:exports_external.number().nullish(),totalTokenCount:exports_external.number().nullish(),trafficType:exports_external.string().nullish(),promptTokensDetails:tokenDetailsSchema2,candidatesTokensDetails:tokenDetailsSchema2}),responseSchema2=lazySchema(()=>zodSchema(exports_external.object({candidates:exports_external.array(exports_external.object({content:getContentSchema2().nullish().or(exports_external.object({}).strict()),finishReason:exports_external.string().nullish(),finishMessage:exports_external.string().nullish(),safetyRatings:exports_external.array(getSafetyRatingSchema2()).nullish(),groundingMetadata:getGroundingMetadataSchema2().nullish(),urlContextMetadata:getUrlContextMetadataSchema2().nullish()})),usageMetadata:usageSchema3.nullish(),promptFeedback:exports_external.object({blockReason:exports_external.string().nullish(),safetyRatings:exports_external.array(getSafetyRatingSchema2()).nullish()}).nullish(),serviceTier:exports_external.string().nullish()}))),chunkSchema2=lazySchema(()=>zodSchema(exports_external.object({candidates:exports_external.array(exports_external.object({content:getContentSchema2().nullish(),finishReason:exports_external.string().nullish(),finishMessage:exports_external.string().nullish(),safetyRatings:exports_external.array(getSafetyRatingSchema2()).nullish(),groundingMetadata:getGroundingMetadataSchema2().nullish(),urlContextMetadata:getUrlContextMetadataSchema2().nullish()})).nullish(),usageMetadata:usageSchema3.nullish(),promptFeedback:exports_external.object({blockReason:exports_external.string().nullish(),safetyRatings:exports_external.array(getSafetyRatingSchema2()).nullish()}).nullish(),serviceTier:exports_external.string().nullish()}))),codeExecution2=createProviderToolFactoryWithOutputSchema({id:"google.code_execution",inputSchema:exports_external.object({language:exports_external.string().describe("The programming language of the code."),code:exports_external.string().describe("The code to be executed.")}),outputSchema:exports_external.object({outcome:exports_external.string().describe('The outcome of the execution (e.g., "OUTCOME_OK").'),output:exports_external.string().describe("The output from the code execution.")})}),enterpriseWebSearch2=createProviderToolFactory({id:"google.enterprise_web_search",inputSchema:lazySchema(()=>zodSchema(exports_external.object({})))}),fileSearchArgsBaseSchema2=exports_external.object({fileSearchStoreNames:exports_external.array(exports_external.string()).describe("The names of the file_search_stores to retrieve from. Example: `fileSearchStores/my-file-search-store-123`"),topK:exports_external.number().int().positive().describe("The number of file search retrieval chunks to retrieve.").optional(),metadataFilter:exports_external.string().describe("Metadata filter to apply to the file search retrieval documents. See https://google.aip.dev/160 for the syntax of the filter expression.").optional()}).passthrough(),fileSearchArgsSchema5=lazySchema(()=>zodSchema(fileSearchArgsBaseSchema2)),fileSearch5=createProviderToolFactory({id:"google.file_search",inputSchema:fileSearchArgsSchema5}),googleMaps2=createProviderToolFactory({id:"google.google_maps",inputSchema:lazySchema(()=>zodSchema(exports_external.object({})))}),googleSearchToolArgsBaseSchema2=exports_external.object({searchTypes:exports_external.object({webSearch:exports_external.object({}).optional(),imageSearch:exports_external.object({}).optional()}).optional(),timeRangeFilter:exports_external.object({startTime:exports_external.string(),endTime:exports_external.string()}).optional()}).passthrough(),googleSearchToolArgsSchema2=lazySchema(()=>zodSchema(googleSearchToolArgsBaseSchema2)),googleSearch2=createProviderToolFactory({id:"google.google_search",inputSchema:googleSearchToolArgsSchema2}),urlContext2=createProviderToolFactory({id:"google.url_context",inputSchema:lazySchema(()=>zodSchema(exports_external.object({})))}),vertexRagStore2=createProviderToolFactory({id:"google.vertex_rag_store",inputSchema:exports_external.object({ragCorpus:exports_external.string(),topK:exports_external.number().optional()})}),googleTools={googleSearch:googleSearch2,enterpriseWebSearch:enterpriseWebSearch2,googleMaps:googleMaps2,urlContext:urlContext2,fileSearch:fileSearch5,codeExecution:codeExecution2,vertexRagStore:vertexRagStore2};googleImageResponseSchema=lazySchema(()=>zodSchema(exports_external.object({predictions:exports_external.array(exports_external.object({bytesBase64Encoded:exports_external.string()})).default([])}))),googleImageModelOptionsSchema=lazySchema(()=>zodSchema(exports_external.object({personGeneration:exports_external.enum(["dont_allow","allow_adult","allow_all"]).nullish(),aspectRatio:exports_external.enum(["1:1","3:4","4:3","9:16","16:9"]).nullish()}))),googleOperationSchema=exports_external.object({name:exports_external.string().nullish(),done:exports_external.boolean().nullish(),error:exports_external.object({code:exports_external.number().nullish(),message:exports_external.string(),status:exports_external.string().nullish()}).nullish(),response:exports_external.object({generateVideoResponse:exports_external.object({generatedSamples:exports_external.array(exports_external.object({video:exports_external.object({uri:exports_external.string().nullish()}).nullish()})).nullish()}).nullish()}).nullish()}),googleVideoModelOptionsSchema=lazySchema(()=>zodSchema(exports_external.object({pollIntervalMs:exports_external.number().positive().nullish(),pollTimeoutMs:exports_external.number().positive().nullish(),personGeneration:exports_external.enum(["dont_allow","allow_adult","allow_all"]).nullish(),negativePrompt:exports_external.string().nullish(),referenceImages:exports_external.array(exports_external.object({bytesBase64Encoded:exports_external.string().nullish(),gcsUri:exports_external.string().nullish()})).nullish()}).passthrough()));google=createGoogleGenerativeAI()});function geminiAssistantPrefixParts(message){let rawParts=readProviderState(message,GEMINI_STATE_KEY)?.parts;if(!Array.isArray(rawParts))return[];let parts=[];for(let rawPart of rawParts){if(!rawPart||typeof rawPart!=="object"||Array.isArray(rawPart))continue;let part=rawPart,thoughtSignature=typeof part.thoughtSignature==="string"?part.thoughtSignature:void 0;if(part.functionCall&&typeof part.functionCall.name==="string"){let providerOptions=createGeminiThoughtProviderOptions(thoughtSignature);parts.push({type:"tool-call",toolCallId:crypto.randomUUID(),toolName:part.functionCall.name,input:part.functionCall.args??{},providerOptions});continue}if(typeof part.text==="string"){let providerOptions=createGeminiThoughtProviderOptions(thoughtSignature);parts.push({type:part.thought===!0?"reasoning":"text",text:part.text,providerOptions})}}return parts}function createGeminiAssistantMetadata(result){let parts=result.content.flatMap((part)=>{let metadata=part.providerMetadata?.google,thoughtSignature=metadata&&typeof metadata.thoughtSignature==="string"?metadata.thoughtSignature:void 0;if(!thoughtSignature&&part.type!=="reasoning")return[];if(part.type==="reasoning")return[{text:part.text,thought:!0,thoughtSignature}];if(part.type==="tool-call")return[{functionCall:{name:part.toolName,args:parseToolArguments(part.input)},thoughtSignature}];if(part.type==="text")return[{text:part.text,thoughtSignature}];return[]});if(parts.length===0)return;return attachProviderState(void 0,GEMINI_STATE_KEY,{parts})}function parseToolArguments(input){let normalized=input.trim();if(normalized.length===0)return{};return parseJsonObject(normalized,"Gemini tool call arguments")}function createGeminiThoughtProviderOptions(thoughtSignature){if(!thoughtSignature)return;return{google:{thoughtSignature}}}function prepareGeminiCall(context){let model=createProvider5(context.options,context.debug)(context.request.model.modelId),googleProviderOptions=buildGeminiThinkingProviderOptions(context.request.reasoning);return{model,callOptions:{prompt:messagesToLanguageModelPrompt(context.request.messages,{assistantPrefixParts:geminiAssistantPrefixParts}),tools:mapToolDefinitionsToLanguageModelTools(context.request.tools),maxOutputTokens:context.request.maxOutputTokens,temperature:context.request.temperature,topP:context.request.topP,stopSequences:context.request.stop,abortSignal:context.request.signal,...googleProviderOptions?{providerOptions:{google:googleProviderOptions}}:{}},debug:context.debug,createAssistantMetadata:createGeminiAssistantMetadata}}function createProvider5(options,debug){let stripApiKey=!options.apiKey&&!hasHeader(options.headers,"x-goog-api-key");return warnIfPlaceholderApiKey({provider:"Gemini",shouldWarn:stripApiKey,logger:options.logger}),createGoogleGenerativeAI({apiKey:options.apiKey??PLACEHOLDER_API_KEY5,baseURL:normalizeBaseUrl4(options.baseUrl),headers:options.headers,fetch:createProviderFetch({fetch:options.fetch,stripHeaders:["x-goog-api-key"],stripWhen:stripApiKey,debug})})}function normalizeBaseUrl4(baseUrl){let normalized=(baseUrl??DEFAULT_BASE_URL3).replace(/\/$/,"");return normalized.endsWith("/v1beta")?normalized:`${normalized}/v1beta`}var GEMINI_STATE_KEY="gemini",DEFAULT_BASE_URL3="https://generativelanguage.googleapis.com",PLACEHOLDER_API_KEY5="dim-placeholder-key",geminiDriver,createGeminiAdapter;var init_gemini=__esm(()=>{init_tool_result_output();init_create_provider_factory();init_reasoning();init_provider_state();init_dist();init_dist9();geminiDriver={async generate(context){return generateWithAiSdk(prepareGeminiCall(context))},stream(context){return streamWithAiSdk(prepareGeminiCall(context))},normalizeError(error48){if(APICallError.isInstance(error48))return createApiCallErrorPayload({code:"gemini_http_error",provider:"Gemini",error:error48});return createRequestErrorPayload({code:"gemini_request_error",error:error48})}};createGeminiAdapter=createProviderFactory({defaultProvider:"gemini",driver:geminiDriver})});function convertMoonshotAIChatUsage(usage){var _a16,_b16,_c,_d,_e,_f,_g;if(usage==null)return{inputTokens:{total:void 0,noCache:void 0,cacheRead:void 0,cacheWrite:void 0},outputTokens:{total:void 0,text:void 0,reasoning:void 0},raw:void 0};let promptTokens=(_a16=usage.prompt_tokens)!=null?_a16:0,completionTokens=(_b16=usage.completion_tokens)!=null?_b16:0,cacheReadTokens=(_e=(_d=usage.cached_tokens)!=null?_d:(_c=usage.prompt_tokens_details)==null?void 0:_c.cached_tokens)!=null?_e:0,reasoningTokens=(_g=(_f=usage.completion_tokens_details)==null?void 0:_f.reasoning_tokens)!=null?_g:0;return{inputTokens:{total:promptTokens,noCache:promptTokens-cacheReadTokens,cacheRead:cacheReadTokens,cacheWrite:void 0},outputTokens:{total:completionTokens,text:completionTokens-reasoningTokens,reasoning:reasoningTokens},raw:usage}}function createMoonshotAI(options={}){var _a16;let baseURL=withoutTrailingSlash((_a16=options.baseURL)!=null?_a16:defaultBaseURL),getHeaders=()=>withUserAgentSuffix({Authorization:`Bearer ${loadApiKey({apiKey:options.apiKey,environmentVariableName:"MOONSHOT_API_KEY",description:"Moonshot API key"})}`,...options.headers},`ai-sdk/moonshotai/${VERSION7}`),getCommonModelConfig=(modelType)=>({provider:`moonshotai.${modelType}`,url:({path:path6})=>`${baseURL}${path6}`,headers:getHeaders,fetch:options.fetch}),createChatModel=(modelId)=>{return new MoonshotAIChatLanguageModel(modelId,{...getCommonModelConfig("chat"),includeUsage:!0,errorStructure:moonshotaiErrorStructure,transformRequestBody:(args)=>{let{thinking,reasoningHistory}=args,{thinking:_,reasoningHistory:__,...rest}=args;return{...rest,...thinking&&{thinking:{type:thinking.type,...thinking.budgetTokens!==void 0&&{budget_tokens:thinking.budgetTokens}}},...reasoningHistory&&{reasoning_history:reasoningHistory}}}})},provider=(modelId)=>createChatModel(modelId);return provider.specificationVersion="v3",provider.chatModel=createChatModel,provider.languageModel=createChatModel,provider.embeddingModel=(modelId)=>{throw new NoSuchModelError({modelId,modelType:"embeddingModel"})},provider.imageModel=(modelId)=>{throw new NoSuchModelError({modelId,modelType:"imageModel"})},provider}var MoonshotAIChatLanguageModel,VERSION7="2.0.16",moonshotaiErrorSchema,moonshotaiErrorStructure,defaultBaseURL="https://api.moonshot.ai/v1",moonshotai;var init_dist10=__esm(()=>{init_dist();init_dist3();init_v4();init_dist4();MoonshotAIChatLanguageModel=class extends OpenAICompatibleChatLanguageModel{constructor(modelId,config2){super(modelId,config2)}async doGenerate(options){var _a16,_b16;let result=await super.doGenerate(options),usage=(_b16=(_a16=result.response)==null?void 0:_a16.body)==null?void 0:_b16.usage;return{...result,usage:convertMoonshotAIChatUsage(usage)}}async doStream(options){let result=await super.doStream(options);return{...result,stream:result.stream.pipeThrough(new TransformStream({transform(chunk,controller){if(chunk.type==="finish"&&chunk.usage)controller.enqueue({...chunk,usage:convertMoonshotAIChatUsage(chunk.usage.raw)});else controller.enqueue(chunk)}}))}}},moonshotaiErrorSchema=exports_external.object({error:exports_external.object({message:exports_external.string(),type:exports_external.string().nullish()})}),moonshotaiErrorStructure={errorSchema:moonshotaiErrorSchema,errorToMessage:(data)=>data.error.message};moonshotai=createMoonshotAI()});function prepareMoonshotCall(context){let model=createProvider6(context.options,context.debug).languageModel(context.request.model.modelId),moonshotaiProviderOptions=buildMoonshotThinkingProviderOptions(context.request.reasoning);return{model,callOptions:{prompt:messagesToLanguageModelPrompt(context.request.messages),tools:mapToolDefinitionsToLanguageModelTools(context.request.tools,{schemaProfile:"strictTopLevelObject"}),maxOutputTokens:context.request.maxOutputTokens,temperature:context.request.temperature,topP:context.request.topP,stopSequences:context.request.stop,abortSignal:context.request.signal,...moonshotaiProviderOptions?{providerOptions:{moonshotai:moonshotaiProviderOptions}}:{}},debug:context.debug}}function createProvider6(options,debug){let stripAuthorization=!options.apiKey&&!hasHeader(options.headers,"authorization");return warnIfPlaceholderApiKey({provider:"MoonshotAI",shouldWarn:stripAuthorization,logger:options.logger}),createMoonshotAI({apiKey:options.apiKey??PLACEHOLDER_API_KEY6,baseURL:normalizeBaseUrl5(options.baseUrl),headers:options.headers,fetch:createProviderFetch({fetch:options.fetch,stripHeaders:["authorization"],stripWhen:stripAuthorization,debug})})}function normalizeBaseUrl5(baseUrl){return(baseUrl??DEFAULT_BASE_URL4).replace(/\/$/,"")}var DEFAULT_BASE_URL4="https://api.moonshot.ai/v1",PLACEHOLDER_API_KEY6="dim-placeholder-key",moonshotAIDriver,createMoonshotAIAdapter;var init_moonshotai=__esm(()=>{init_create_provider_factory();init_reasoning();init_dist();init_dist10();moonshotAIDriver={async generate(context){return generateWithAiSdk(prepareMoonshotCall(context))},stream(context){return streamWithAiSdk(prepareMoonshotCall(context))},normalizeError(error48){if(APICallError.isInstance(error48))return createApiCallErrorPayload({code:"moonshotai_http_error",provider:"MoonshotAI",error:error48});return createRequestErrorPayload({code:"moonshotai_request_error",error:error48})}};createMoonshotAIAdapter=createProviderFactory({defaultProvider:"moonshotai",driver:moonshotAIDriver})});function openAIAssistantPrefixParts(message){if(typeof message.thinking!=="string"||message.thinking.length===0)return[];return[{type:"reasoning",text:message.thinking}]}function prepareOpenAICall(context){let model=createProvider7(context.options,context.debug).chatModel(context.request.model.modelId),openaiCompatibleProviderOptions=buildOpenAICompatibleProviderOptions(context.request.reasoning);return{model,callOptions:{prompt:messagesToLanguageModelPrompt(context.request.messages,{assistantPrefixParts:openAIAssistantPrefixParts}),tools:mapToolDefinitionsToLanguageModelTools(context.request.tools,{schemaProfile:"strictTopLevelObject"}),maxOutputTokens:context.request.maxOutputTokens,temperature:context.request.temperature,topP:context.request.topP,stopSequences:context.request.stop,abortSignal:context.request.signal,...openaiCompatibleProviderOptions?{providerOptions:{"openai-compatible":openaiCompatibleProviderOptions}}:{}},debug:context.debug}}function createProvider7(options,debug){let stripAuthorization=!options.apiKey&&!hasHeader(options.headers,"authorization");return warnIfPlaceholderApiKey({provider:"OpenAI-compatible",shouldWarn:stripAuthorization,logger:options.logger}),createOpenAICompatible({name:"openai-compatible",apiKey:options.apiKey??PLACEHOLDER_API_KEY7,baseURL:normalizeBaseUrl6(options.baseUrl),includeUsage:!0,headers:options.headers,fetch:createProviderFetch({fetch:options.fetch,stripHeaders:["authorization"],stripWhen:stripAuthorization,debug})})}function normalizeBaseUrl6(baseUrl){return(baseUrl??DEFAULT_BASE_URL5).replace(/\/$/,"")}function reorderOpenAICompatibleContent(result){return{...result,content:[...result.content].sort((left,right)=>{return getContentPriority(left.type)-getContentPriority(right.type)})}}function getContentPriority(type){switch(type){case"thinking":return 0;case"text":return 1;case"tool_call":return 2}}var DEFAULT_BASE_URL5="https://api.openai.com/v1",PLACEHOLDER_API_KEY7="dim-placeholder-key",openAIDriver,createOpenAIAdapter;var init_openai=__esm(()=>{init_create_provider_factory();init_reasoning();init_dist();init_dist4();openAIDriver={async generate(context){return reorderOpenAICompatibleContent(await generateWithAiSdk(prepareOpenAICall(context)))},stream(context){return streamWithAiSdk(prepareOpenAICall(context))},normalizeError(error48){if(APICallError.isInstance(error48))return createApiCallErrorPayload({code:"openai_http_error",provider:"OpenAI-compatible",error:error48});return createRequestErrorPayload({code:"openai_request_error",error:error48})}};createOpenAIAdapter=createProviderFactory({defaultProvider:"openai-compatible",driver:openAIDriver})});function sliceMessagesForOpenAIResponses(messages,usePreviousResponseId=!1){return sliceMessagesForResponses(messages,OPENAI_RESPONSES_STATE_KEY,usePreviousResponseId)}function createOpenAIResponsesAssistantMetadata(result){return createResponsesAssistantMetadata({result,stateKey:OPENAI_RESPONSES_STATE_KEY,providerMetadataKey:"openai"})}function prepareOpenAIResponsesCall(context){let model=createProvider8(context.options,context.debug).responses(context.request.model.modelId),requestProviderOptions=getOpenAIResponsesRequestProviderOptions(context.request.providerOptions),{messages,previousResponseId}=sliceMessagesForOpenAIResponses(context.request.messages,context.options.usePreviousResponseId),openaiProviderOptionsSource=buildOpenAIResponsesProviderOptions(context.request.reasoning),openaiProviderOptions={};if(openaiProviderOptionsSource){for(let[key,value]of Object.entries(openaiProviderOptionsSource))if(value!==void 0)openaiProviderOptions[key]=value}if(typeof requestProviderOptions?.promptCacheKey==="string")openaiProviderOptions.promptCacheKey=requestProviderOptions.promptCacheKey;if(previousResponseId)openaiProviderOptions.previousResponseId=previousResponseId;let callOptions={prompt:messagesToLanguageModelPrompt(messages),tools:mapToolDefinitionsToLanguageModelTools(context.request.tools,{schemaProfile:"strictTopLevelObject"}),maxOutputTokens:context.request.maxOutputTokens,temperature:context.request.temperature,topP:context.request.topP,stopSequences:context.request.stop,abortSignal:context.request.signal};if(requestProviderOptions?.requestHeaders!==void 0)callOptions.headers=requestProviderOptions.requestHeaders;if(Object.keys(openaiProviderOptions).length>0)callOptions.providerOptions={openai:openaiProviderOptions};return{model,callOptions,debug:context.debug,createAssistantMetadata:createOpenAIResponsesAssistantMetadata}}function createProvider8(options,debug){let stripAuthorization=!options.apiKey&&!hasHeader(options.headers,"authorization");return warnIfPlaceholderApiKey({provider:"OpenAI Responses",shouldWarn:stripAuthorization,logger:options.logger}),createOpenAI({apiKey:options.apiKey??PLACEHOLDER_API_KEY8,baseURL:normalizeBaseUrl7(options.baseUrl),headers:options.headers,fetch:createProviderFetch({fetch:options.fetch,stripHeaders:["authorization"],stripWhen:stripAuthorization,debug})})}function normalizeBaseUrl7(baseUrl){return(baseUrl??DEFAULT_BASE_URL6).replace(/\/$/,"")}function getOpenAIResponsesRequestProviderOptions(providerOptions){let openai2=providerOptions?.openai;if(!openai2)return;let requestHeaders=toStringRecord(openai2.requestHeaders),next={};if(typeof openai2.promptCacheKey==="string")next.promptCacheKey=openai2.promptCacheKey;if(requestHeaders)next.requestHeaders=requestHeaders;return Object.keys(next).length>0?next:void 0}function toStringRecord(value){let entries=readJsonObjectEntries(value);if(!entries)return;let next={};for(let[key,entryValue]of entries){if(typeof entryValue!=="string")return;next[key]=entryValue}return next}function readJsonObjectEntries(value){if(!value||typeof value!=="object"||Array.isArray(value))return;return Object.entries(value)}var OPENAI_RESPONSES_STATE_KEY="openaiResponses",DEFAULT_BASE_URL6="https://api.openai.com/v1",PLACEHOLDER_API_KEY8="dim-placeholder-key",openAIResponsesDriver,createOpenAIResponsesAdapter;var init_openai_responses=__esm(()=>{init_create_provider_factory();init_reasoning();init_responses_state();init_dist();init_dist6();openAIResponsesDriver={async generate(context){return generateWithAiSdk(prepareOpenAIResponsesCall(context))},stream(context){return streamWithAiSdk(prepareOpenAIResponsesCall(context))},normalizeError(error48){if(APICallError.isInstance(error48))return createApiCallErrorPayload({code:"openai_responses_http_error",provider:"OpenAI Responses",error:error48});return createRequestErrorPayload({code:"openai_responses_request_error",error:error48})}};createOpenAIResponsesAdapter=createProviderFactory({defaultProvider:"openai-responses",driver:openAIResponsesDriver})});function convertToXaiChatMessages(prompt){var _a16;let messages=[],warnings=[];for(let{role,content}of prompt)switch(role){case"system":{messages.push({role:"system",content});break}case"user":{if(content.length===1&&content[0].type==="text"){messages.push({role:"user",content:content[0].text});break}messages.push({role:"user",content:content.map((part)=>{switch(part.type){case"text":return{type:"text",text:part.text};case"file":if(part.mediaType.startsWith("image/")){let mediaType=part.mediaType==="image/*"?"image/jpeg":part.mediaType;return{type:"image_url",image_url:{url:part.data instanceof URL?part.data.toString():`data:${mediaType};base64,${convertToBase64(part.data)}`}}}else throw new UnsupportedFunctionalityError({functionality:`file part media type ${part.mediaType}`})}})});break}case"assistant":{let text="",toolCalls=[];for(let part of content)switch(part.type){case"text":{text+=part.text;break}case"tool-call":{toolCalls.push({id:part.toolCallId,type:"function",function:{name:part.toolName,arguments:JSON.stringify(part.input)}});break}}messages.push({role:"assistant",content:text,tool_calls:toolCalls.length>0?toolCalls:void 0});break}case"tool":{for(let toolResponse of content){if(toolResponse.type==="tool-approval-response")continue;let output=toolResponse.output,contentValue;switch(output.type){case"text":case"error-text":contentValue=output.value;break;case"execution-denied":contentValue=(_a16=output.reason)!=null?_a16:"Tool execution denied.";break;case"content":case"json":case"error-json":contentValue=JSON.stringify(output.value);break}messages.push({role:"tool",tool_call_id:toolResponse.toolCallId,content:contentValue})}break}default:throw Error(`Unsupported role: ${role}`)}return{messages,warnings}}function convertXaiChatUsage(usage){var _a16,_b16,_c,_d;let cacheReadTokens=(_b16=(_a16=usage.prompt_tokens_details)==null?void 0:_a16.cached_tokens)!=null?_b16:0,reasoningTokens=(_d=(_c=usage.completion_tokens_details)==null?void 0:_c.reasoning_tokens)!=null?_d:0,promptTokensIncludesCached=cacheReadTokens<=usage.prompt_tokens;return{inputTokens:{total:promptTokensIncludesCached?usage.prompt_tokens:usage.prompt_tokens+cacheReadTokens,noCache:promptTokensIncludesCached?usage.prompt_tokens-cacheReadTokens:usage.prompt_tokens,cacheRead:cacheReadTokens,cacheWrite:void 0},outputTokens:{total:usage.completion_tokens+reasoningTokens,text:usage.completion_tokens,reasoning:reasoningTokens},raw:usage}}function getResponseMetadata6({id,model,created,created_at}){let unixTime=created!=null?created:created_at;return{id:id!=null?id:void 0,modelId:model!=null?model:void 0,timestamp:unixTime!=null?new Date(unixTime*1000):void 0}}function mapXaiFinishReason(finishReason){switch(finishReason){case"stop":return"stop";case"length":return"length";case"tool_calls":case"function_call":return"tool-calls";case"content_filter":return"content-filter";default:return"other"}}function prepareTools7({tools,toolChoice}){tools=(tools==null?void 0:tools.length)?tools:void 0;let toolWarnings=[];if(tools==null)return{tools:void 0,toolChoice:void 0,toolWarnings};let xaiTools2=[];for(let tool2 of tools)if(tool2.type==="provider")toolWarnings.push({type:"unsupported",feature:`provider-defined tool ${tool2.name}`});else xaiTools2.push({type:"function",function:{name:tool2.name,description:tool2.description,parameters:tool2.inputSchema,...tool2.strict!=null?{strict:tool2.strict}:{}}});if(toolChoice==null)return{tools:xaiTools2,toolChoice:void 0,toolWarnings};let type=toolChoice.type;switch(type){case"auto":case"none":return{tools:xaiTools2,toolChoice:type,toolWarnings};case"required":return{tools:xaiTools2,toolChoice:"required",toolWarnings};case"tool":return{tools:xaiTools2,toolChoice:{type:"function",function:{name:toolChoice.toolName}},toolWarnings};default:throw new UnsupportedFunctionalityError({functionality:`tool choice type: ${type}`})}}async function convertToXaiResponsesInput({prompt}){var _a16,_b16,_c,_d,_e,_f,_g,_h,_i;let input=[],inputWarnings=[];for(let message of prompt)switch(message.role){case"system":{input.push({role:"system",content:message.content});break}case"user":{let contentParts=[];for(let block of message.content)switch(block.type){case"text":{contentParts.push({type:"input_text",text:block.text});break}case"file":{if(block.mediaType.startsWith("image/")){let mediaType=block.mediaType==="image/*"?"image/jpeg":block.mediaType,imageUrl=block.data instanceof URL?block.data.toString():`data:${mediaType};base64,${convertToBase64(block.data)}`;contentParts.push({type:"input_image",image_url:imageUrl})}else throw new UnsupportedFunctionalityError({functionality:`file part media type ${block.mediaType}`});break}default:{let _exhaustiveCheck=block;inputWarnings.push({type:"other",message:"xAI Responses API does not support this content type in user messages"})}}input.push({role:"user",content:contentParts});break}case"assistant":{for(let part of message.content)switch(part.type){case"text":{let id=typeof((_b16=(_a16=part.providerOptions)==null?void 0:_a16.xai)==null?void 0:_b16.itemId)==="string"?part.providerOptions.xai.itemId:void 0;input.push({role:"assistant",content:part.text,id});break}case"tool-call":{if(part.providerExecuted)break;let id=typeof((_d=(_c=part.providerOptions)==null?void 0:_c.xai)==null?void 0:_d.itemId)==="string"?part.providerOptions.xai.itemId:void 0;input.push({type:"function_call",id:id!=null?id:part.toolCallId,call_id:part.toolCallId,name:part.toolName,arguments:JSON.stringify(part.input),status:"completed"});break}case"tool-result":break;case"reasoning":{let itemId=typeof((_f=(_e=part.providerOptions)==null?void 0:_e.xai)==null?void 0:_f.itemId)==="string"?part.providerOptions.xai.itemId:void 0,encryptedContent=typeof((_h=(_g=part.providerOptions)==null?void 0:_g.xai)==null?void 0:_h.reasoningEncryptedContent)==="string"?part.providerOptions.xai.reasoningEncryptedContent:void 0;if(itemId!=null||encryptedContent!=null){let summaryParts=[];if(part.text.length>0)summaryParts.push({type:"summary_text",text:part.text});input.push({type:"reasoning",id:itemId!=null?itemId:"",summary:summaryParts,status:"completed",...encryptedContent!=null&&{encrypted_content:encryptedContent}})}else inputWarnings.push({type:"other",message:"Reasoning parts without itemId or encrypted content cannot be sent back to xAI. Skipping."});break}case"file":{inputWarnings.push({type:"other",message:`xAI Responses API does not support ${part.type} in assistant messages`});break}default:{let _exhaustiveCheck=part;inputWarnings.push({type:"other",message:"xAI Responses API does not support this content type in assistant messages"})}}break}case"tool":{for(let part of message.content){if(part.type==="tool-approval-response")continue;let output=part.output,outputValue;switch(output.type){case"text":case"error-text":outputValue=output.value;break;case"execution-denied":outputValue=(_i=output.reason)!=null?_i:"tool execution denied";break;case"json":case"error-json":outputValue=JSON.stringify(output.value);break;case"content":outputValue=output.value.map((item)=>{if(item.type==="text")return item.text;return""}).join("");break;default:{let _exhaustiveCheck=output;outputValue=""}}input.push({type:"function_call_output",call_id:part.toolCallId,output:outputValue})}break}default:{let _exhaustiveCheck=message;inputWarnings.push({type:"other",message:"unsupported message role"})}}return{input,inputWarnings}}function convertXaiResponsesUsage(usage){var _a16,_b16,_c,_d;let cacheReadTokens=(_b16=(_a16=usage.input_tokens_details)==null?void 0:_a16.cached_tokens)!=null?_b16:0,reasoningTokens=(_d=(_c=usage.output_tokens_details)==null?void 0:_c.reasoning_tokens)!=null?_d:0,inputTokensIncludesCached=cacheReadTokens<=usage.input_tokens;return{inputTokens:{total:inputTokensIncludesCached?usage.input_tokens:usage.input_tokens+cacheReadTokens,noCache:inputTokensIncludesCached?usage.input_tokens-cacheReadTokens:usage.input_tokens,cacheRead:cacheReadTokens,cacheWrite:void 0},outputTokens:{total:usage.output_tokens,text:usage.output_tokens-reasoningTokens,reasoning:reasoningTokens},raw:usage}}function mapXaiResponsesFinishReason(finishReason){switch(finishReason){case"stop":case"completed":return"stop";case"length":case"max_output_tokens":return"length";case"tool_calls":case"function_call":return"tool-calls";case"content_filter":return"content-filter";default:return"other"}}async function prepareResponsesTools3({tools,toolChoice}){let normalizedTools=(tools==null?void 0:tools.length)?tools:void 0,toolWarnings=[];if(normalizedTools==null)return{tools:void 0,toolChoice:void 0,toolWarnings};let xaiTools2=[],toolByName=new Map;for(let tool2 of normalizedTools)if(toolByName.set(tool2.name,tool2),tool2.type==="provider")switch(tool2.id){case"xai.web_search":{let args=await validateTypes({value:tool2.args,schema:webSearchArgsSchema4});xaiTools2.push({type:"web_search",allowed_domains:args.allowedDomains,excluded_domains:args.excludedDomains,enable_image_understanding:args.enableImageUnderstanding});break}case"xai.x_search":{let args=await validateTypes({value:tool2.args,schema:xSearchArgsSchema});xaiTools2.push({type:"x_search",allowed_x_handles:args.allowedXHandles,excluded_x_handles:args.excludedXHandles,from_date:args.fromDate,to_date:args.toDate,enable_image_understanding:args.enableImageUnderstanding,enable_video_understanding:args.enableVideoUnderstanding});break}case"xai.code_execution":{xaiTools2.push({type:"code_interpreter"});break}case"xai.view_image":{xaiTools2.push({type:"view_image"});break}case"xai.view_x_video":{xaiTools2.push({type:"view_x_video"});break}case"xai.file_search":{let args=await validateTypes({value:tool2.args,schema:fileSearchArgsSchema6});xaiTools2.push({type:"file_search",vector_store_ids:args.vectorStoreIds,max_num_results:args.maxNumResults});break}case"xai.mcp":{let args=await validateTypes({value:tool2.args,schema:mcpServerArgsSchema});xaiTools2.push({type:"mcp",server_url:args.serverUrl,server_label:args.serverLabel,server_description:args.serverDescription,allowed_tools:args.allowedTools,headers:args.headers,authorization:args.authorization});break}default:{toolWarnings.push({type:"unsupported",feature:`provider-defined tool ${tool2.name}`});break}}else xaiTools2.push({type:"function",name:tool2.name,description:tool2.description,parameters:tool2.inputSchema,...tool2.strict!=null?{strict:tool2.strict}:{}});if(toolChoice==null)return{tools:xaiTools2,toolChoice:void 0,toolWarnings};let type=toolChoice.type;switch(type){case"auto":case"none":return{tools:xaiTools2,toolChoice:type,toolWarnings};case"required":return{tools:xaiTools2,toolChoice:"required",toolWarnings};case"tool":{let selectedTool=toolByName.get(toolChoice.toolName);if(selectedTool==null)return{tools:xaiTools2,toolChoice:void 0,toolWarnings};if(selectedTool.type==="provider")return toolWarnings.push({type:"unsupported",feature:`toolChoice for server-side tool "${selectedTool.name}"`}),{tools:xaiTools2,toolChoice:void 0,toolWarnings};return{tools:xaiTools2,toolChoice:{type:"function",name:selectedTool.name},toolWarnings}}default:throw new UnsupportedFunctionalityError({functionality:`tool choice type: ${type}`})}}function resolveVideoMode(options){if((options==null?void 0:options.mode)!=null)return options.mode;if((options==null?void 0:options.videoUrl)!=null)return"edit-video";if((options==null?void 0:options.referenceImageUrls)!=null&&options.referenceImageUrls.length>0)return"reference-to-video";return}function createXai(options={}){var _a16;let baseURL=withoutTrailingSlash((_a16=options.baseURL)!=null?_a16:"https://api.x.ai/v1"),getHeaders=()=>withUserAgentSuffix({Authorization:`Bearer ${loadApiKey({apiKey:options.apiKey,environmentVariableName:"XAI_API_KEY",description:"xAI API key"})}`,...options.headers},`ai-sdk/xai/${VERSION8}`),createChatLanguageModel=(modelId)=>{return new XaiChatLanguageModel(modelId,{provider:"xai.chat",baseURL,headers:getHeaders,generateId,fetch:options.fetch})},createResponsesLanguageModel=(modelId)=>{return new XaiResponsesLanguageModel(modelId,{provider:"xai.responses",baseURL,headers:getHeaders,generateId,fetch:options.fetch})},createImageModel=(modelId)=>{return new XaiImageModel(modelId,{provider:"xai.image",baseURL,headers:getHeaders,fetch:options.fetch})},createVideoModel=(modelId)=>{return new XaiVideoModel(modelId,{provider:"xai.video",baseURL,headers:getHeaders,fetch:options.fetch})},provider=(modelId)=>createChatLanguageModel(modelId);return provider.specificationVersion="v3",provider.languageModel=createChatLanguageModel,provider.chat=createChatLanguageModel,provider.responses=createResponsesLanguageModel,provider.embeddingModel=(modelId)=>{throw new NoSuchModelError({modelId,modelType:"embeddingModel"})},provider.textEmbeddingModel=provider.embeddingModel,provider.imageModel=createImageModel,provider.image=createImageModel,provider.videoModel=createVideoModel,provider.video=createVideoModel,provider.tools=xaiTools,provider}var webSourceSchema,xSourceSchema,newsSourceSchema,rssSourceSchema,searchSourceSchema,xaiLanguageModelChatOptions,xaiErrorDataSchema,xaiFailedResponseHandler,XaiChatLanguageModel=class{constructor(modelId,config2){this.specificationVersion="v3",this.supportedUrls={"image/*":[/^https?:\/\/.*$/]},this.modelId=modelId,this.config=config2}get provider(){return this.config.provider}async getArgs({prompt,maxOutputTokens,temperature,topP,topK,frequencyPenalty,presencePenalty,stopSequences,seed,responseFormat,providerOptions,tools,toolChoice}){var _a16,_b16,_c;let warnings=[],options=(_a16=await parseProviderOptions({provider:"xai",providerOptions,schema:xaiLanguageModelChatOptions}))!=null?_a16:{};if(topK!=null)warnings.push({type:"unsupported",feature:"topK"});if(frequencyPenalty!=null)warnings.push({type:"unsupported",feature:"frequencyPenalty"});if(presencePenalty!=null)warnings.push({type:"unsupported",feature:"presencePenalty"});if(stopSequences!=null)warnings.push({type:"unsupported",feature:"stopSequences"});let{messages,warnings:messageWarnings}=convertToXaiChatMessages(prompt);warnings.push(...messageWarnings);let{tools:xaiTools2,toolChoice:xaiToolChoice,toolWarnings}=prepareTools7({tools,toolChoice});return warnings.push(...toolWarnings),{args:{model:this.modelId,logprobs:options.logprobs===!0||options.topLogprobs!=null?!0:void 0,top_logprobs:options.topLogprobs,max_completion_tokens:maxOutputTokens,temperature,top_p:topP,seed,reasoning_effort:options.reasoningEffort,parallel_function_calling:options.parallel_function_calling,response_format:(responseFormat==null?void 0:responseFormat.type)==="json"?responseFormat.schema!=null?{type:"json_schema",json_schema:{name:(_b16=responseFormat.name)!=null?_b16:"response",schema:responseFormat.schema,strict:!0}}:{type:"json_object"}:void 0,search_parameters:options.searchParameters?{mode:options.searchParameters.mode,return_citations:options.searchParameters.returnCitations,from_date:options.searchParameters.fromDate,to_date:options.searchParameters.toDate,max_search_results:options.searchParameters.maxSearchResults,sources:(_c=options.searchParameters.sources)==null?void 0:_c.map((source)=>{var _a22;return{type:source.type,...source.type==="web"&&{country:source.country,excluded_websites:source.excludedWebsites,allowed_websites:source.allowedWebsites,safe_search:source.safeSearch},...source.type==="x"&&{excluded_x_handles:source.excludedXHandles,included_x_handles:(_a22=source.includedXHandles)!=null?_a22:source.xHandles,post_favorite_count:source.postFavoriteCount,post_view_count:source.postViewCount},...source.type==="news"&&{country:source.country,excluded_websites:source.excludedWebsites,safe_search:source.safeSearch},...source.type==="rss"&&{links:source.links}}})}:void 0,messages,tools:xaiTools2,tool_choice:xaiToolChoice},warnings}}async doGenerate(options){var _a16,_b16;let{args:body,warnings}=await this.getArgs(options),url2=`${(_a16=this.config.baseURL)!=null?_a16:"https://api.x.ai/v1"}/chat/completions`,{responseHeaders,value:response,rawValue:rawResponse}=await postJsonToApi({url:url2,headers:combineHeaders(this.config.headers(),options.headers),body,failedResponseHandler:xaiFailedResponseHandler,successfulResponseHandler:createJsonResponseHandler(xaiChatResponseSchema),abortSignal:options.abortSignal,fetch:this.config.fetch});if(response.error!=null)throw new APICallError({message:response.error,url:url2,requestBodyValues:body,statusCode:200,responseHeaders,responseBody:JSON.stringify(rawResponse),isRetryable:response.code==="The service is currently unavailable"});let choice=response.choices[0],content=[];if(choice.message.content!=null&&choice.message.content.length>0){let text=choice.message.content,lastMessage=body.messages[body.messages.length-1];if((lastMessage==null?void 0:lastMessage.role)==="assistant"&&text===lastMessage.content)text="";if(text.length>0)content.push({type:"text",text})}if(choice.message.reasoning_content!=null&&choice.message.reasoning_content.length>0)content.push({type:"reasoning",text:choice.message.reasoning_content});if(choice.message.tool_calls!=null)for(let toolCall of choice.message.tool_calls)content.push({type:"tool-call",toolCallId:toolCall.id,toolName:toolCall.function.name,input:toolCall.function.arguments});if(response.citations!=null)for(let url22 of response.citations)content.push({type:"source",sourceType:"url",id:this.config.generateId(),url:url22});return{content,finishReason:{unified:mapXaiFinishReason(choice.finish_reason),raw:(_b16=choice.finish_reason)!=null?_b16:void 0},usage:response.usage?convertXaiChatUsage(response.usage):{inputTokens:{total:0,noCache:0,cacheRead:0,cacheWrite:0},outputTokens:{total:0,text:0,reasoning:0}},request:{body},response:{...getResponseMetadata6(response),headers:responseHeaders,body:rawResponse},warnings}}async doStream(options){var _a16;let{args,warnings}=await this.getArgs(options),body={...args,stream:!0,stream_options:{include_usage:!0}},url2=`${(_a16=this.config.baseURL)!=null?_a16:"https://api.x.ai/v1"}/chat/completions`,{responseHeaders,value:response}=await postJsonToApi({url:url2,headers:combineHeaders(this.config.headers(),options.headers),body,failedResponseHandler:xaiFailedResponseHandler,successfulResponseHandler:async({response:response2})=>{let responseHeaders2=extractResponseHeaders(response2),contentType=response2.headers.get("content-type");if(contentType==null?void 0:contentType.includes("application/json")){let responseBody=await response2.text(),parsedError=await safeParseJSON({text:responseBody,schema:xaiStreamErrorSchema});if(parsedError.success)throw new APICallError({message:parsedError.value.error,url:url2,requestBodyValues:body,statusCode:200,responseHeaders:responseHeaders2,responseBody,isRetryable:parsedError.value.code==="The service is currently unavailable"});throw new APICallError({message:"Invalid JSON response",url:url2,requestBodyValues:body,statusCode:200,responseHeaders:responseHeaders2,responseBody})}return createEventSourceResponseHandler(xaiChatChunkSchema)({response:response2,url:url2,requestBodyValues:body})},abortSignal:options.abortSignal,fetch:this.config.fetch}),finishReason={unified:"other",raw:void 0},usage=void 0,isFirstChunk=!0,contentBlocks={},lastReasoningDeltas={},activeReasoningBlockId=void 0,self2=this;return{stream:response.pipeThrough(new TransformStream({start(controller){controller.enqueue({type:"stream-start",warnings})},transform(chunk,controller){if(options.includeRawChunks)controller.enqueue({type:"raw",rawValue:chunk.rawValue});if(!chunk.success){controller.enqueue({type:"error",error:chunk.error});return}let value=chunk.value;if(isFirstChunk)controller.enqueue({type:"response-metadata",...getResponseMetadata6(value)}),isFirstChunk=!1;if(value.citations!=null)for(let url22 of value.citations)controller.enqueue({type:"source",sourceType:"url",id:self2.config.generateId(),url:url22});if(value.usage!=null)usage=convertXaiChatUsage(value.usage);let choice=value.choices[0];if((choice==null?void 0:choice.finish_reason)!=null)finishReason={unified:mapXaiFinishReason(choice.finish_reason),raw:choice.finish_reason};if((choice==null?void 0:choice.delta)==null)return;let{delta,index:choiceIndex}=choice;if(delta.content!=null&&delta.content.length>0){let textContent=delta.content;if(activeReasoningBlockId!=null&&!contentBlocks[activeReasoningBlockId].ended)controller.enqueue({type:"reasoning-end",id:activeReasoningBlockId}),contentBlocks[activeReasoningBlockId].ended=!0,activeReasoningBlockId=void 0;let lastMessage=body.messages[body.messages.length-1];if((lastMessage==null?void 0:lastMessage.role)==="assistant"&&textContent===lastMessage.content)return;let blockId=`text-${value.id||choiceIndex}`;if(contentBlocks[blockId]==null)contentBlocks[blockId]={type:"text",ended:!1},controller.enqueue({type:"text-start",id:blockId});controller.enqueue({type:"text-delta",id:blockId,delta:textContent})}if(delta.reasoning_content!=null&&delta.reasoning_content.length>0){let blockId=`reasoning-${value.id||choiceIndex}`;if(lastReasoningDeltas[blockId]===delta.reasoning_content)return;if(lastReasoningDeltas[blockId]=delta.reasoning_content,contentBlocks[blockId]==null)contentBlocks[blockId]={type:"reasoning",ended:!1},activeReasoningBlockId=blockId,controller.enqueue({type:"reasoning-start",id:blockId});controller.enqueue({type:"reasoning-delta",id:blockId,delta:delta.reasoning_content})}if(delta.tool_calls!=null){if(activeReasoningBlockId!=null&&!contentBlocks[activeReasoningBlockId].ended)controller.enqueue({type:"reasoning-end",id:activeReasoningBlockId}),contentBlocks[activeReasoningBlockId].ended=!0,activeReasoningBlockId=void 0;for(let toolCall of delta.tool_calls){let toolCallId=toolCall.id;controller.enqueue({type:"tool-input-start",id:toolCallId,toolName:toolCall.function.name}),controller.enqueue({type:"tool-input-delta",id:toolCallId,delta:toolCall.function.arguments}),controller.enqueue({type:"tool-input-end",id:toolCallId}),controller.enqueue({type:"tool-call",toolCallId,toolName:toolCall.function.name,input:toolCall.function.arguments})}}},flush(controller){for(let[blockId,block]of Object.entries(contentBlocks))if(!block.ended)controller.enqueue({type:block.type==="text"?"text-end":"reasoning-end",id:blockId});controller.enqueue({type:"finish",finishReason,usage:usage!=null?usage:{inputTokens:{total:0,noCache:0,cacheRead:0,cacheWrite:0},outputTokens:{total:0,text:0,reasoning:0}}})}})),request:{body},response:{headers:responseHeaders}}}},xaiUsageSchema,xaiChatResponseSchema,xaiChatChunkSchema,xaiStreamErrorSchema,xaiImageModelOptions,XaiImageModel=class{constructor(modelId,config2){this.modelId=modelId,this.config=config2,this.specificationVersion="v3",this.maxImagesPerCall=3}get provider(){return this.config.provider}async doGenerate({prompt,n,size,aspectRatio,seed,providerOptions,headers,abortSignal,files,mask}){var _a16,_b16,_c,_d,_e;let warnings=[];if(size!=null)warnings.push({type:"unsupported",feature:"size",details:"This model does not support the `size` option. Use `aspectRatio` instead."});if(seed!=null)warnings.push({type:"unsupported",feature:"seed"});if(mask!=null)warnings.push({type:"unsupported",feature:"mask"});let xaiOptions=await parseProviderOptions({provider:"xai",providerOptions,schema:xaiImageModelOptions}),hasFiles=files!=null&&files.length>0,imageUrls=hasFiles?files.map((file2)=>convertImageModelFileToDataUri(file2)):[],endpoint=hasFiles?"/images/edits":"/images/generations",body={model:this.modelId,prompt,n,response_format:"b64_json"};if(aspectRatio!=null)body.aspect_ratio=aspectRatio;if((xaiOptions==null?void 0:xaiOptions.output_format)!=null)body.output_format=xaiOptions.output_format;if((xaiOptions==null?void 0:xaiOptions.sync_mode)!=null)body.sync_mode=xaiOptions.sync_mode;if((xaiOptions==null?void 0:xaiOptions.aspect_ratio)!=null&&aspectRatio==null)body.aspect_ratio=xaiOptions.aspect_ratio;if((xaiOptions==null?void 0:xaiOptions.resolution)!=null)body.resolution=xaiOptions.resolution;if((xaiOptions==null?void 0:xaiOptions.quality)!=null)body.quality=xaiOptions.quality;if((xaiOptions==null?void 0:xaiOptions.user)!=null)body.user=xaiOptions.user;if(imageUrls.length===1)body.image={url:imageUrls[0],type:"image_url"};else if(imageUrls.length>1)body.images=imageUrls.map((url2)=>({url:url2,type:"image_url"}));let baseURL=(_a16=this.config.baseURL)!=null?_a16:"https://api.x.ai/v1",currentDate=(_d=(_c=(_b16=this.config._internal)==null?void 0:_b16.currentDate)==null?void 0:_c.call(_b16))!=null?_d:new Date,{value:response,responseHeaders}=await postJsonToApi({url:`${baseURL}${endpoint}`,headers:combineHeaders(this.config.headers(),headers),body,failedResponseHandler:xaiFailedResponseHandler,successfulResponseHandler:createJsonResponseHandler(xaiImageResponseSchema),abortSignal,fetch:this.config.fetch});return{images:response.data.every((image)=>image.b64_json!=null)?response.data.map((image)=>image.b64_json):await Promise.all(response.data.map((image)=>this.downloadImage(image.url,abortSignal))),warnings,response:{timestamp:currentDate,modelId:this.modelId,headers:responseHeaders},providerMetadata:{xai:{images:response.data.map((item)=>({...item.revised_prompt?{revisedPrompt:item.revised_prompt}:{}})),...((_e=response.usage)==null?void 0:_e.cost_in_usd_ticks)!=null?{costInUsdTicks:response.usage.cost_in_usd_ticks}:{}}}}}async downloadImage(url2,abortSignal){let{value}=await getFromApi({url:url2,abortSignal,failedResponseHandler:createStatusCodeErrorResponseHandler(),successfulResponseHandler:createBinaryResponseHandler(),fetch:this.config.fetch});return value}},xaiImageResponseSchema,annotationSchema,messageContentPartSchema,reasoningSummaryPartSchema,toolCallSchema,mcpCallSchema,outputItemSchema,xaiResponsesUsageSchema,xaiResponsesResponseSchema,xaiResponsesChunkSchema,xaiLanguageModelResponsesOptions,fileSearchArgsSchema6,fileSearchOutputSchema4,fileSearchToolFactory,fileSearch6=(args)=>fileSearchToolFactory(args),mcpServerArgsSchema,mcpServerOutputSchema,mcpServerToolFactory,mcpServer=(args)=>mcpServerToolFactory(args),webSearchArgsSchema4,webSearchOutputSchema3,webSearchToolFactory4,webSearch3=(args={})=>webSearchToolFactory4(args),xSearchArgsSchema,xSearchOutputSchema,xSearchToolFactory,xSearch=(args={})=>xSearchToolFactory(args),XaiResponsesLanguageModel=class{constructor(modelId,config2){this.specificationVersion="v3",this.supportedUrls={"image/*":[/^https?:\/\/.*$/]},this.modelId=modelId,this.config=config2}get provider(){return this.config.provider}async getArgs({prompt,maxOutputTokens,temperature,topP,stopSequences,seed,responseFormat,providerOptions,tools,toolChoice}){var _a16,_b16,_c,_d,_e,_f,_g,_h;let warnings=[],options=(_a16=await parseProviderOptions({provider:"xai",providerOptions,schema:xaiLanguageModelResponsesOptions}))!=null?_a16:{};if(stopSequences!=null)warnings.push({type:"unsupported",feature:"stopSequences"});let webSearchToolName=(_b16=tools==null?void 0:tools.find((tool2)=>tool2.type==="provider"&&tool2.id==="xai.web_search"))==null?void 0:_b16.name,xSearchToolName=(_c=tools==null?void 0:tools.find((tool2)=>tool2.type==="provider"&&tool2.id==="xai.x_search"))==null?void 0:_c.name,codeExecutionToolName=(_d=tools==null?void 0:tools.find((tool2)=>tool2.type==="provider"&&tool2.id==="xai.code_execution"))==null?void 0:_d.name,mcpToolName=(_e=tools==null?void 0:tools.find((tool2)=>tool2.type==="provider"&&tool2.id==="xai.mcp"))==null?void 0:_e.name,fileSearchToolName=(_f=tools==null?void 0:tools.find((tool2)=>tool2.type==="provider"&&tool2.id==="xai.file_search"))==null?void 0:_f.name,{input,inputWarnings}=await convertToXaiResponsesInput({prompt,store:(_g=options.store)!=null?_g:!0});warnings.push(...inputWarnings);let{tools:xaiTools2,toolChoice:xaiToolChoice,toolWarnings}=await prepareResponsesTools3({tools,toolChoice});warnings.push(...toolWarnings);let include=options.include?[...options.include]:void 0;if(options.store===!1)if(include==null)include=["reasoning.encrypted_content"];else include=[...include,"reasoning.encrypted_content"];let baseArgs={model:this.modelId,input,logprobs:options.logprobs===!0||options.topLogprobs!=null?!0:void 0,top_logprobs:options.topLogprobs,max_output_tokens:maxOutputTokens,temperature,top_p:topP,seed,...(responseFormat==null?void 0:responseFormat.type)==="json"&&{text:{format:responseFormat.schema!=null?{type:"json_schema",strict:!0,name:(_h=responseFormat.name)!=null?_h:"response",description:responseFormat.description,schema:responseFormat.schema}:{type:"json_object"}}},...options.reasoningEffort!=null&&{reasoning:{effort:options.reasoningEffort}},...options.store===!1&&{store:options.store},...include!=null&&{include},...options.previousResponseId!=null&&{previous_response_id:options.previousResponseId}};if(xaiTools2&&xaiTools2.length>0)baseArgs.tools=xaiTools2;if(xaiToolChoice!=null)baseArgs.tool_choice=xaiToolChoice;return{args:baseArgs,warnings,webSearchToolName,xSearchToolName,codeExecutionToolName,mcpToolName,fileSearchToolName}}async doGenerate(options){var _a16,_b16,_c,_d,_e,_f,_g,_h,_i,_j,_k,_l,_m;let{args:body,warnings,webSearchToolName,xSearchToolName,codeExecutionToolName,mcpToolName,fileSearchToolName}=await this.getArgs(options),{responseHeaders,value:response,rawValue:rawResponse}=await postJsonToApi({url:`${(_a16=this.config.baseURL)!=null?_a16:"https://api.x.ai/v1"}/responses`,headers:combineHeaders(this.config.headers(),options.headers),body,failedResponseHandler:xaiFailedResponseHandler,successfulResponseHandler:createJsonResponseHandler(xaiResponsesResponseSchema),abortSignal:options.abortSignal,fetch:this.config.fetch}),content=[],hasFunctionCall=!1,webSearchSubTools=["web_search","web_search_with_snippets","browse_page"],xSearchSubTools=["x_user_search","x_keyword_search","x_semantic_search","x_thread_fetch"];for(let part of response.output){if(part.type==="file_search_call"){let toolName=fileSearchToolName!=null?fileSearchToolName:"file_search";content.push({type:"tool-call",toolCallId:part.id,toolName,input:"",providerExecuted:!0}),content.push({type:"tool-result",toolCallId:part.id,toolName,result:{queries:(_b16=part.queries)!=null?_b16:[],results:(_d=(_c=part.results)==null?void 0:_c.map((result)=>({fileId:result.file_id,filename:result.filename,score:result.score,text:result.text})))!=null?_d:null}});continue}if(part.type==="web_search_call"||part.type==="x_search_call"||part.type==="code_interpreter_call"||part.type==="code_execution_call"||part.type==="view_image_call"||part.type==="view_x_video_call"||part.type==="custom_tool_call"||part.type==="mcp_call"){let toolName=(_e=part.name)!=null?_e:"";if(webSearchSubTools.includes((_f=part.name)!=null?_f:"")||part.type==="web_search_call")toolName=webSearchToolName!=null?webSearchToolName:"web_search";else if(xSearchSubTools.includes((_g=part.name)!=null?_g:"")||part.type==="x_search_call")toolName=xSearchToolName!=null?xSearchToolName:"x_search";else if(part.name==="code_execution"||part.type==="code_interpreter_call"||part.type==="code_execution_call")toolName=codeExecutionToolName!=null?codeExecutionToolName:"code_execution";else if(part.type==="mcp_call")toolName=(_h=mcpToolName!=null?mcpToolName:part.name)!=null?_h:"mcp";let toolInput=part.type==="custom_tool_call"?(_i=part.input)!=null?_i:"":part.type==="mcp_call"?(_j=part.arguments)!=null?_j:"":(_k=part.arguments)!=null?_k:"";content.push({type:"tool-call",toolCallId:part.id,toolName,input:toolInput,providerExecuted:!0});continue}switch(part.type){case"message":{for(let contentPart of part.content){if(contentPart.text)content.push({type:"text",text:contentPart.text});if(contentPart.annotations){for(let annotation of contentPart.annotations)if(annotation.type==="url_citation"&&"url"in annotation)content.push({type:"source",sourceType:"url",id:this.config.generateId(),url:annotation.url,title:(_l=annotation.title)!=null?_l:annotation.url})}}break}case"function_call":{hasFunctionCall=!0,content.push({type:"tool-call",toolCallId:part.call_id,toolName:part.name,input:part.arguments});break}case"reasoning":{let reasoningText=part.summary.map((s)=>s.text).filter((text)=>text&&text.length>0).join("");if(reasoningText||part.encrypted_content){let hasMetadata=part.encrypted_content||part.id;content.push({type:"reasoning",text:reasoningText,...hasMetadata&&{providerMetadata:{xai:{...part.encrypted_content&&{reasoningEncryptedContent:part.encrypted_content},...part.id&&{itemId:part.id}}}}})}break}default:break}}return{content,finishReason:{unified:hasFunctionCall?"tool-calls":mapXaiResponsesFinishReason(response.status),raw:(_m=response.status)!=null?_m:void 0},usage:response.usage?convertXaiResponsesUsage(response.usage):{inputTokens:{total:0,noCache:0,cacheRead:0,cacheWrite:0},outputTokens:{total:0,text:0,reasoning:0}},request:{body},response:{...getResponseMetadata6(response),headers:responseHeaders,body:rawResponse},warnings}}async doStream(options){var _a16;let{args,warnings,webSearchToolName,xSearchToolName,codeExecutionToolName,mcpToolName,fileSearchToolName}=await this.getArgs(options),body={...args,stream:!0},{responseHeaders,value:response}=await postJsonToApi({url:`${(_a16=this.config.baseURL)!=null?_a16:"https://api.x.ai/v1"}/responses`,headers:combineHeaders(this.config.headers(),options.headers),body,failedResponseHandler:xaiFailedResponseHandler,successfulResponseHandler:createEventSourceResponseHandler(xaiResponsesChunkSchema),abortSignal:options.abortSignal,fetch:this.config.fetch}),finishReason={unified:"other",raw:void 0},hasFunctionCall=!1,usage=void 0,isFirstChunk=!0,contentBlocks={},seenToolCalls=new Set,ongoingToolCalls={},activeReasoning={},self2=this;return{stream:response.pipeThrough(new TransformStream({start(controller){controller.enqueue({type:"stream-start",warnings})},transform(chunk,controller){var _a22,_b16,_c,_d,_e,_f,_g,_h,_i,_j,_k,_l,_m,_n,_o;if(options.includeRawChunks)controller.enqueue({type:"raw",rawValue:chunk.rawValue});if(!chunk.success){controller.enqueue({type:"error",error:chunk.error});return}let event=chunk.value;if(event.type==="response.created"||event.type==="response.in_progress"){if(isFirstChunk)controller.enqueue({type:"response-metadata",...getResponseMetadata6(event.response)}),isFirstChunk=!1;return}if(event.type==="response.reasoning_summary_part.added"){let blockId=`reasoning-${event.item_id}`;activeReasoning[event.item_id]={},controller.enqueue({type:"reasoning-start",id:blockId,providerMetadata:{xai:{itemId:event.item_id}}})}if(event.type==="response.reasoning_summary_text.delta"){let blockId=`reasoning-${event.item_id}`;controller.enqueue({type:"reasoning-delta",id:blockId,delta:event.delta,providerMetadata:{xai:{itemId:event.item_id}}});return}if(event.type==="response.reasoning_summary_text.done")return;if(event.type==="response.reasoning_text.delta"){let blockId=`reasoning-${event.item_id}`;if(activeReasoning[event.item_id]==null)activeReasoning[event.item_id]={},controller.enqueue({type:"reasoning-start",id:blockId,providerMetadata:{xai:{itemId:event.item_id}}});controller.enqueue({type:"reasoning-delta",id:blockId,delta:event.delta,providerMetadata:{xai:{itemId:event.item_id}}});return}if(event.type==="response.reasoning_text.done")return;if(event.type==="response.output_text.delta"){let blockId=`text-${event.item_id}`;if(contentBlocks[blockId]==null)contentBlocks[blockId]={type:"text"},controller.enqueue({type:"text-start",id:blockId});controller.enqueue({type:"text-delta",id:blockId,delta:event.delta});return}if(event.type==="response.output_text.done"){if(event.annotations){for(let annotation of event.annotations)if(annotation.type==="url_citation"&&"url"in annotation)controller.enqueue({type:"source",sourceType:"url",id:self2.config.generateId(),url:annotation.url,title:(_a22=annotation.title)!=null?_a22:annotation.url})}return}if(event.type==="response.output_text.annotation.added"){let annotation=event.annotation;if(annotation.type==="url_citation"&&"url"in annotation)controller.enqueue({type:"source",sourceType:"url",id:self2.config.generateId(),url:annotation.url,title:(_b16=annotation.title)!=null?_b16:annotation.url});return}if(event.type==="response.done"||event.type==="response.completed"||event.type==="response.incomplete"){let response2=event.response;if(response2.usage)usage=convertXaiResponsesUsage(response2.usage);if(event.type==="response.incomplete"){let reason="incomplete_details"in response2?(_c=response2.incomplete_details)==null?void 0:_c.reason:void 0;finishReason={unified:reason?mapXaiResponsesFinishReason(reason):"other",raw:reason!=null?reason:"incomplete"}}else if("status"in response2&&response2.status)finishReason={unified:hasFunctionCall?"tool-calls":mapXaiResponsesFinishReason(response2.status),raw:response2.status};return}if(event.type==="response.failed"){let reason=(_d=event.response.incomplete_details)==null?void 0:_d.reason;if(finishReason={unified:reason?mapXaiResponsesFinishReason(reason):"error",raw:reason!=null?reason:"error"},event.response.usage)usage=convertXaiResponsesUsage(event.response.usage);return}if(event.type==="error"){controller.enqueue({type:"error",error:event});return}if(event.type==="response.custom_tool_call_input.delta"||event.type==="response.custom_tool_call_input.done")return;if(event.type==="response.function_call_arguments.delta"){let toolCall=ongoingToolCalls[event.output_index];if(toolCall!=null)controller.enqueue({type:"tool-input-delta",id:toolCall.toolCallId,delta:event.delta});return}if(event.type==="response.function_call_arguments.done")return;if(event.type==="response.output_item.added"||event.type==="response.output_item.done"){let part=event.item;if(part.type==="reasoning"){if(event.type==="response.output_item.done"){let blockId=`reasoning-${part.id}`;if(!(part.id in activeReasoning))activeReasoning[part.id]={},controller.enqueue({type:"reasoning-start",id:blockId,providerMetadata:{xai:{...part.id&&{itemId:part.id}}}});controller.enqueue({type:"reasoning-end",id:blockId,providerMetadata:{xai:{...part.encrypted_content&&{reasoningEncryptedContent:part.encrypted_content},...part.id&&{itemId:part.id}}}}),delete activeReasoning[part.id]}return}if(part.type==="file_search_call"){let toolName=fileSearchToolName!=null?fileSearchToolName:"file_search";if(!seenToolCalls.has(part.id))seenToolCalls.add(part.id),controller.enqueue({type:"tool-input-start",id:part.id,toolName}),controller.enqueue({type:"tool-input-delta",id:part.id,delta:""}),controller.enqueue({type:"tool-input-end",id:part.id}),controller.enqueue({type:"tool-call",toolCallId:part.id,toolName,input:"",providerExecuted:!0});if(event.type==="response.output_item.done")controller.enqueue({type:"tool-result",toolCallId:part.id,toolName,result:{queries:(_e=part.queries)!=null?_e:[],results:(_g=(_f=part.results)==null?void 0:_f.map((result)=>({fileId:result.file_id,filename:result.filename,score:result.score,text:result.text})))!=null?_g:null}});return}if(part.type==="web_search_call"||part.type==="x_search_call"||part.type==="code_interpreter_call"||part.type==="code_execution_call"||part.type==="view_image_call"||part.type==="view_x_video_call"||part.type==="custom_tool_call"||part.type==="mcp_call"){let webSearchSubTools=["web_search","web_search_with_snippets","browse_page"],xSearchSubTools=["x_user_search","x_keyword_search","x_semantic_search","x_thread_fetch"],toolName=(_h=part.name)!=null?_h:"";if(webSearchSubTools.includes((_i=part.name)!=null?_i:"")||part.type==="web_search_call")toolName=webSearchToolName!=null?webSearchToolName:"web_search";else if(xSearchSubTools.includes((_j=part.name)!=null?_j:"")||part.type==="x_search_call")toolName=xSearchToolName!=null?xSearchToolName:"x_search";else if(part.name==="code_execution"||part.type==="code_interpreter_call"||part.type==="code_execution_call")toolName=codeExecutionToolName!=null?codeExecutionToolName:"code_execution";else if(part.type==="mcp_call")toolName=(_k=mcpToolName!=null?mcpToolName:part.name)!=null?_k:"mcp";let toolInput=part.type==="custom_tool_call"?(_l=part.input)!=null?_l:"":part.type==="mcp_call"?(_m=part.arguments)!=null?_m:"":(_n=part.arguments)!=null?_n:"";if((part.type==="custom_tool_call"?event.type==="response.output_item.done":!seenToolCalls.has(part.id))&&!seenToolCalls.has(part.id))seenToolCalls.add(part.id),controller.enqueue({type:"tool-input-start",id:part.id,toolName}),controller.enqueue({type:"tool-input-delta",id:part.id,delta:toolInput}),controller.enqueue({type:"tool-input-end",id:part.id}),controller.enqueue({type:"tool-call",toolCallId:part.id,toolName,input:toolInput,providerExecuted:!0});return}if(part.type==="message")for(let contentPart of part.content){if(contentPart.text&&contentPart.text.length>0){let blockId=`text-${part.id}`;if(contentBlocks[blockId]==null)contentBlocks[blockId]={type:"text"},controller.enqueue({type:"text-start",id:blockId}),controller.enqueue({type:"text-delta",id:blockId,delta:contentPart.text})}if(contentPart.annotations){for(let annotation of contentPart.annotations)if(annotation.type==="url_citation"&&"url"in annotation)controller.enqueue({type:"source",sourceType:"url",id:self2.config.generateId(),url:annotation.url,title:(_o=annotation.title)!=null?_o:annotation.url})}}else if(part.type==="function_call"){if(event.type==="response.output_item.added")ongoingToolCalls[event.output_index]={toolName:part.name,toolCallId:part.call_id},controller.enqueue({type:"tool-input-start",id:part.call_id,toolName:part.name});else if(event.type==="response.output_item.done")hasFunctionCall=!0,ongoingToolCalls[event.output_index]=void 0,controller.enqueue({type:"tool-input-end",id:part.call_id}),controller.enqueue({type:"tool-call",toolCallId:part.call_id,toolName:part.name,input:part.arguments})}}},flush(controller){for(let[blockId,block]of Object.entries(contentBlocks))if(block.type==="text")controller.enqueue({type:"text-end",id:blockId});controller.enqueue({type:"finish",finishReason,usage:usage!=null?usage:{inputTokens:{total:0,noCache:0,cacheRead:0,cacheWrite:0},outputTokens:{total:0,text:0,reasoning:0}}})}})),request:{body},response:{headers:responseHeaders}}}},codeExecutionOutputSchema,codeExecutionToolFactory,codeExecution3=(args={})=>codeExecutionToolFactory(args),viewImageOutputSchema,viewImageToolFactory,viewImage=(args={})=>viewImageToolFactory(args),viewXVideoOutputSchema,viewXVideoToolFactory,viewXVideo=(args={})=>viewXVideoToolFactory(args),xaiTools,VERSION8="3.0.83",nonEmptyStringSchema,resolutionSchema,modeSchema,baseFields,editVideoSchema,extendVideoSchema,referenceToVideoSchema,autoDetectSchema,xaiVideoModelOptions,runtimeSchema,xaiVideoModelOptionsSchema,RESOLUTION_MAP,XaiVideoModel=class{constructor(modelId,config2){this.modelId=modelId,this.config=config2,this.specificationVersion="v3",this.maxVideosPerCall=1}get provider(){return this.config.provider}async doGenerate(options){var _a16,_b16,_c,_d,_e,_f,_g,_h,_i,_j;let currentDate=(_c=(_b16=(_a16=this.config._internal)==null?void 0:_a16.currentDate)==null?void 0:_b16.call(_a16))!=null?_c:new Date,warnings=[],xaiOptions=await parseProviderOptions({provider:"xai",providerOptions:options.providerOptions,schema:xaiVideoModelOptionsSchema}),effectiveMode=resolveVideoMode(xaiOptions),isEdit=effectiveMode==="edit-video",isExtension=effectiveMode==="extend-video",hasReferenceImages=effectiveMode==="reference-to-video";if(options.fps!=null)warnings.push({type:"unsupported",feature:"fps",details:"xAI video models do not support custom FPS."});if(options.seed!=null)warnings.push({type:"unsupported",feature:"seed",details:"xAI video models do not support seed."});if(options.n!=null&&options.n>1)warnings.push({type:"unsupported",feature:"n",details:"xAI video models do not support generating multiple videos per call. Only 1 video will be generated."});if(isEdit&&options.duration!=null)warnings.push({type:"unsupported",feature:"duration",details:"xAI video editing does not support custom duration."});if(isEdit&&options.aspectRatio!=null)warnings.push({type:"unsupported",feature:"aspectRatio",details:"xAI video editing does not support custom aspect ratio."});if(isEdit&&((xaiOptions==null?void 0:xaiOptions.resolution)!=null||options.resolution!=null))warnings.push({type:"unsupported",feature:"resolution",details:"xAI video editing does not support custom resolution."});if(isExtension&&options.aspectRatio!=null)warnings.push({type:"unsupported",feature:"aspectRatio",details:"xAI video extension does not support custom aspect ratio."});if(isExtension&&((xaiOptions==null?void 0:xaiOptions.resolution)!=null||options.resolution!=null))warnings.push({type:"unsupported",feature:"resolution",details:"xAI video extension does not support custom resolution."});let body={model:this.modelId,prompt:options.prompt},allowDuration=!isEdit,allowAspectRatio=!isEdit&&!isExtension,allowResolution=!isEdit&&!isExtension;if(allowDuration&&options.duration!=null)body.duration=options.duration;if(allowAspectRatio&&options.aspectRatio!=null)body.aspect_ratio=options.aspectRatio;if(allowResolution&&(xaiOptions==null?void 0:xaiOptions.resolution)!=null)body.resolution=xaiOptions.resolution;else if(allowResolution&&options.resolution!=null){let mapped=RESOLUTION_MAP[options.resolution];if(mapped!=null)body.resolution=mapped;else warnings.push({type:"unsupported",feature:"resolution",details:`Unrecognized resolution "${options.resolution}". Use providerOptions.xai.resolution with "480p" or "720p" instead.`})}if(isEdit)body.video={url:xaiOptions.videoUrl};if(isExtension)body.video={url:xaiOptions.videoUrl};if(options.image!=null)if(options.image.type==="url")body.image={url:options.image.url};else{let base64Data=typeof options.image.data==="string"?options.image.data:convertUint8ArrayToBase64(options.image.data);body.image={url:`data:${options.image.mediaType};base64,${base64Data}`}}if(hasReferenceImages)body.reference_images=xaiOptions.referenceImageUrls.map((url2)=>({url:url2}));if(xaiOptions!=null){for(let[key,value]of Object.entries(xaiOptions))if(!["mode","pollIntervalMs","pollTimeoutMs","resolution","videoUrl","referenceImageUrls"].includes(key))body[key]=value}let baseURL=(_d=this.config.baseURL)!=null?_d:"https://api.x.ai/v1",endpoint;if(isEdit)endpoint=`${baseURL}/videos/edits`;else if(isExtension)endpoint=`${baseURL}/videos/extensions`;else endpoint=`${baseURL}/videos/generations`;let{value:createResponse}=await postJsonToApi({url:endpoint,headers:combineHeaders(this.config.headers(),options.headers),body,failedResponseHandler:xaiFailedResponseHandler,successfulResponseHandler:createJsonResponseHandler(xaiCreateVideoResponseSchema),abortSignal:options.abortSignal,fetch:this.config.fetch}),requestId=createResponse.request_id;if(!requestId)throw new AISDKError({name:"XAI_VIDEO_GENERATION_ERROR",message:`No request_id returned from xAI API. Response: ${JSON.stringify(createResponse)}`});let pollIntervalMs=(_e=xaiOptions==null?void 0:xaiOptions.pollIntervalMs)!=null?_e:5000,pollTimeoutMs=(_f=xaiOptions==null?void 0:xaiOptions.pollTimeoutMs)!=null?_f:600000,startTime=Date.now(),responseHeaders;while(!0){if(await delay(pollIntervalMs,{abortSignal:options.abortSignal}),Date.now()-startTime>pollTimeoutMs)throw new AISDKError({name:"XAI_VIDEO_GENERATION_TIMEOUT",message:`Video generation timed out after ${pollTimeoutMs}ms`});let{value:statusResponse,responseHeaders:pollHeaders}=await getFromApi({url:`${baseURL}/videos/${requestId}`,headers:combineHeaders(this.config.headers(),options.headers),successfulResponseHandler:createJsonResponseHandler(xaiVideoStatusResponseSchema),failedResponseHandler:xaiFailedResponseHandler,abortSignal:options.abortSignal,fetch:this.config.fetch});if(responseHeaders=pollHeaders,statusResponse.status==="done"||statusResponse.status==null&&((_g=statusResponse.video)==null?void 0:_g.url)){if(((_h=statusResponse.video)==null?void 0:_h.respect_moderation)===!1)throw new AISDKError({name:"XAI_VIDEO_MODERATION_ERROR",message:"Video generation was blocked due to a content policy violation."});if(!((_i=statusResponse.video)==null?void 0:_i.url))throw new AISDKError({name:"XAI_VIDEO_GENERATION_ERROR",message:"Video generation completed but no video URL was returned."});return{videos:[{type:"url",url:statusResponse.video.url,mediaType:"video/mp4"}],warnings,response:{timestamp:currentDate,modelId:this.modelId,headers:responseHeaders},providerMetadata:{xai:{requestId,videoUrl:statusResponse.video.url,...statusResponse.video.duration!=null?{duration:statusResponse.video.duration}:{},...((_j=statusResponse.usage)==null?void 0:_j.cost_in_usd_ticks)!=null?{costInUsdTicks:statusResponse.usage.cost_in_usd_ticks}:{},...statusResponse.progress!=null?{progress:statusResponse.progress}:{}}}}}if(statusResponse.status==="expired")throw new AISDKError({name:"XAI_VIDEO_GENERATION_EXPIRED",message:"Video generation request expired."});if(statusResponse.status==="failed")throw new AISDKError({name:"XAI_VIDEO_GENERATION_FAILED",message:"Video generation failed."})}}},xaiCreateVideoResponseSchema,xaiVideoStatusResponseSchema,xai;var init_dist11=__esm(()=>{init_dist();init_dist3();init_dist();init_dist3();init_v4();init_dist();init_dist3();init_v4();init_dist3();init_v4();init_dist();init_dist3();init_v4();init_v4();init_dist3();init_dist();init_dist3();init_v4();init_v4();init_dist();init_dist3();init_dist3();init_v4();init_dist3();init_v4();init_dist3();init_v4();init_dist3();init_v4();init_dist3();init_v4();init_dist3();init_v4();init_dist3();init_v4();init_dist();init_dist3();init_v4();init_dist3();init_v4();webSourceSchema=exports_external.object({type:exports_external.literal("web"),country:exports_external.string().length(2).optional(),excludedWebsites:exports_external.array(exports_external.string()).max(5).optional(),allowedWebsites:exports_external.array(exports_external.string()).max(5).optional(),safeSearch:exports_external.boolean().optional()}),xSourceSchema=exports_external.object({type:exports_external.literal("x"),excludedXHandles:exports_external.array(exports_external.string()).optional(),includedXHandles:exports_external.array(exports_external.string()).optional(),postFavoriteCount:exports_external.number().int().optional(),postViewCount:exports_external.number().int().optional(),xHandles:exports_external.array(exports_external.string()).optional()}),newsSourceSchema=exports_external.object({type:exports_external.literal("news"),country:exports_external.string().length(2).optional(),excludedWebsites:exports_external.array(exports_external.string()).max(5).optional(),safeSearch:exports_external.boolean().optional()}),rssSourceSchema=exports_external.object({type:exports_external.literal("rss"),links:exports_external.array(exports_external.string().url()).max(1)}),searchSourceSchema=exports_external.discriminatedUnion("type",[webSourceSchema,xSourceSchema,newsSourceSchema,rssSourceSchema]),xaiLanguageModelChatOptions=exports_external.object({reasoningEffort:exports_external.enum(["low","high"]).optional(),logprobs:exports_external.boolean().optional(),topLogprobs:exports_external.number().int().min(0).max(8).optional(),parallel_function_calling:exports_external.boolean().optional(),searchParameters:exports_external.object({mode:exports_external.enum(["off","auto","on"]),returnCitations:exports_external.boolean().optional(),fromDate:exports_external.string().optional(),toDate:exports_external.string().optional(),maxSearchResults:exports_external.number().min(1).max(50).optional(),sources:exports_external.array(searchSourceSchema).optional()}).optional()}),xaiErrorDataSchema=exports_external.object({error:exports_external.object({message:exports_external.string(),type:exports_external.string().nullish(),param:exports_external.any().nullish(),code:exports_external.union([exports_external.string(),exports_external.number()]).nullish()})}),xaiFailedResponseHandler=createJsonErrorResponseHandler({errorSchema:xaiErrorDataSchema,errorToMessage:(data)=>data.error.message});xaiUsageSchema=exports_external.object({prompt_tokens:exports_external.number(),completion_tokens:exports_external.number(),total_tokens:exports_external.number(),prompt_tokens_details:exports_external.object({text_tokens:exports_external.number().nullish(),audio_tokens:exports_external.number().nullish(),image_tokens:exports_external.number().nullish(),cached_tokens:exports_external.number().nullish()}).nullish(),completion_tokens_details:exports_external.object({reasoning_tokens:exports_external.number().nullish(),audio_tokens:exports_external.number().nullish(),accepted_prediction_tokens:exports_external.number().nullish(),rejected_prediction_tokens:exports_external.number().nullish()}).nullish()}),xaiChatResponseSchema=exports_external.object({id:exports_external.string().nullish(),created:exports_external.number().nullish(),model:exports_external.string().nullish(),choices:exports_external.array(exports_external.object({message:exports_external.object({role:exports_external.literal("assistant"),content:exports_external.string().nullish(),reasoning_content:exports_external.string().nullish(),tool_calls:exports_external.array(exports_external.object({id:exports_external.string(),type:exports_external.literal("function"),function:exports_external.object({name:exports_external.string(),arguments:exports_external.string()})})).nullish()}),index:exports_external.number(),finish_reason:exports_external.string().nullish()})).nullish(),object:exports_external.literal("chat.completion").nullish(),usage:xaiUsageSchema.nullish(),citations:exports_external.array(exports_external.string().url()).nullish(),code:exports_external.string().nullish(),error:exports_external.string().nullish()}),xaiChatChunkSchema=exports_external.object({id:exports_external.string().nullish(),created:exports_external.number().nullish(),model:exports_external.string().nullish(),choices:exports_external.array(exports_external.object({delta:exports_external.object({role:exports_external.enum(["assistant"]).optional(),content:exports_external.string().nullish(),reasoning_content:exports_external.string().nullish(),tool_calls:exports_external.array(exports_external.object({id:exports_external.string(),type:exports_external.literal("function"),function:exports_external.object({name:exports_external.string(),arguments:exports_external.string()})})).nullish()}),finish_reason:exports_external.string().nullish(),index:exports_external.number()})),usage:xaiUsageSchema.nullish(),citations:exports_external.array(exports_external.string().url()).nullish()}),xaiStreamErrorSchema=exports_external.object({code:exports_external.string(),error:exports_external.string()}),xaiImageModelOptions=exports_external.object({aspect_ratio:exports_external.string().optional(),output_format:exports_external.string().optional(),sync_mode:exports_external.boolean().optional(),resolution:exports_external.enum(["1k","2k"]).optional(),quality:exports_external.enum(["low","medium","high"]).optional(),user:exports_external.string().optional()}),xaiImageResponseSchema=exports_external.object({data:exports_external.array(exports_external.object({url:exports_external.string().nullish(),b64_json:exports_external.string().nullish(),revised_prompt:exports_external.string().nullish()})),usage:exports_external.object({cost_in_usd_ticks:exports_external.number().nullish()}).nullish()});annotationSchema=exports_external.union([exports_external.object({type:exports_external.literal("url_citation"),url:exports_external.string(),title:exports_external.string().optional()}),exports_external.object({type:exports_external.string()})]),messageContentPartSchema=exports_external.object({type:exports_external.string(),text:exports_external.string().optional(),logprobs:exports_external.array(exports_external.any()).optional(),annotations:exports_external.array(annotationSchema).optional()}),reasoningSummaryPartSchema=exports_external.object({type:exports_external.string(),text:exports_external.string()}),toolCallSchema=exports_external.object({name:exports_external.string().optional(),arguments:exports_external.string().optional(),input:exports_external.string().optional(),call_id:exports_external.string().optional(),id:exports_external.string(),status:exports_external.string(),action:exports_external.any().optional()}),mcpCallSchema=exports_external.object({name:exports_external.string().optional(),arguments:exports_external.string().optional(),output:exports_external.string().optional(),error:exports_external.string().optional(),id:exports_external.string(),status:exports_external.string(),server_label:exports_external.string().optional()}),outputItemSchema=exports_external.discriminatedUnion("type",[exports_external.object({type:exports_external.literal("web_search_call"),...toolCallSchema.shape}),exports_external.object({type:exports_external.literal("x_search_call"),...toolCallSchema.shape}),exports_external.object({type:exports_external.literal("code_interpreter_call"),...toolCallSchema.shape}),exports_external.object({type:exports_external.literal("code_execution_call"),...toolCallSchema.shape}),exports_external.object({type:exports_external.literal("view_image_call"),...toolCallSchema.shape}),exports_external.object({type:exports_external.literal("view_x_video_call"),...toolCallSchema.shape}),exports_external.object({type:exports_external.literal("file_search_call"),id:exports_external.string(),status:exports_external.string(),queries:exports_external.array(exports_external.string()).optional(),results:exports_external.array(exports_external.object({file_id:exports_external.string(),filename:exports_external.string(),score:exports_external.number(),text:exports_external.string()})).nullish()}),exports_external.object({type:exports_external.literal("custom_tool_call"),...toolCallSchema.shape}),exports_external.object({type:exports_external.literal("mcp_call"),...mcpCallSchema.shape}),exports_external.object({type:exports_external.literal("message"),role:exports_external.string(),content:exports_external.array(messageContentPartSchema),id:exports_external.string(),status:exports_external.string()}),exports_external.object({type:exports_external.literal("function_call"),name:exports_external.string(),arguments:exports_external.string(),call_id:exports_external.string(),id:exports_external.string()}),exports_external.object({type:exports_external.literal("reasoning"),id:exports_external.string(),summary:exports_external.array(reasoningSummaryPartSchema),status:exports_external.string(),encrypted_content:exports_external.string().nullish()})]),xaiResponsesUsageSchema=exports_external.object({input_tokens:exports_external.number(),output_tokens:exports_external.number(),total_tokens:exports_external.number().optional(),input_tokens_details:exports_external.object({cached_tokens:exports_external.number().optional()}).optional(),output_tokens_details:exports_external.object({reasoning_tokens:exports_external.number().optional()}).optional(),num_sources_used:exports_external.number().optional(),num_server_side_tools_used:exports_external.number().optional()}),xaiResponsesResponseSchema=exports_external.object({id:exports_external.string().nullish(),created_at:exports_external.number().nullish(),model:exports_external.string().nullish(),object:exports_external.literal("response"),output:exports_external.array(outputItemSchema),usage:xaiResponsesUsageSchema.nullish(),status:exports_external.string()}),xaiResponsesChunkSchema=exports_external.union([exports_external.object({type:exports_external.literal("response.created"),response:xaiResponsesResponseSchema.partial({usage:!0,status:!0})}),exports_external.object({type:exports_external.literal("response.in_progress"),response:xaiResponsesResponseSchema.partial({usage:!0,status:!0})}),exports_external.object({type:exports_external.literal("response.output_item.added"),item:outputItemSchema,output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.output_item.done"),item:outputItemSchema,output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.content_part.added"),item_id:exports_external.string(),output_index:exports_external.number(),content_index:exports_external.number(),part:messageContentPartSchema}),exports_external.object({type:exports_external.literal("response.content_part.done"),item_id:exports_external.string(),output_index:exports_external.number(),content_index:exports_external.number(),part:messageContentPartSchema}),exports_external.object({type:exports_external.literal("response.output_text.delta"),item_id:exports_external.string(),output_index:exports_external.number(),content_index:exports_external.number(),delta:exports_external.string(),logprobs:exports_external.array(exports_external.any()).optional()}),exports_external.object({type:exports_external.literal("response.output_text.done"),item_id:exports_external.string(),output_index:exports_external.number(),content_index:exports_external.number(),text:exports_external.string(),logprobs:exports_external.array(exports_external.any()).optional(),annotations:exports_external.array(annotationSchema).optional()}),exports_external.object({type:exports_external.literal("response.output_text.annotation.added"),item_id:exports_external.string(),output_index:exports_external.number(),content_index:exports_external.number(),annotation_index:exports_external.number(),annotation:annotationSchema}),exports_external.object({type:exports_external.literal("response.reasoning_summary_part.added"),item_id:exports_external.string(),output_index:exports_external.number(),summary_index:exports_external.number(),part:reasoningSummaryPartSchema}),exports_external.object({type:exports_external.literal("response.reasoning_summary_part.done"),item_id:exports_external.string(),output_index:exports_external.number(),summary_index:exports_external.number(),part:reasoningSummaryPartSchema}),exports_external.object({type:exports_external.literal("response.reasoning_summary_text.delta"),item_id:exports_external.string(),output_index:exports_external.number(),summary_index:exports_external.number(),delta:exports_external.string()}),exports_external.object({type:exports_external.literal("response.reasoning_summary_text.done"),item_id:exports_external.string(),output_index:exports_external.number(),summary_index:exports_external.number(),text:exports_external.string()}),exports_external.object({type:exports_external.literal("response.reasoning_text.delta"),item_id:exports_external.string(),output_index:exports_external.number(),content_index:exports_external.number(),delta:exports_external.string()}),exports_external.object({type:exports_external.literal("response.reasoning_text.done"),item_id:exports_external.string(),output_index:exports_external.number(),content_index:exports_external.number(),text:exports_external.string()}),exports_external.object({type:exports_external.literal("response.web_search_call.in_progress"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.web_search_call.searching"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.web_search_call.completed"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.x_search_call.in_progress"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.x_search_call.searching"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.x_search_call.completed"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.file_search_call.in_progress"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.file_search_call.searching"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.file_search_call.completed"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.code_execution_call.in_progress"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.code_execution_call.executing"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.code_execution_call.completed"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.code_interpreter_call.in_progress"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.code_interpreter_call.executing"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.code_interpreter_call.interpreting"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.code_interpreter_call.completed"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.code_interpreter_call_code.delta"),item_id:exports_external.string(),output_index:exports_external.number(),delta:exports_external.string()}),exports_external.object({type:exports_external.literal("response.code_interpreter_call_code.done"),item_id:exports_external.string(),output_index:exports_external.number(),code:exports_external.string()}),exports_external.object({type:exports_external.literal("response.custom_tool_call_input.delta"),item_id:exports_external.string(),output_index:exports_external.number(),delta:exports_external.string()}),exports_external.object({type:exports_external.literal("response.custom_tool_call_input.done"),item_id:exports_external.string(),output_index:exports_external.number(),input:exports_external.string()}),exports_external.object({type:exports_external.literal("response.function_call_arguments.delta"),item_id:exports_external.string(),output_index:exports_external.number(),delta:exports_external.string()}),exports_external.object({type:exports_external.literal("response.function_call_arguments.done"),item_id:exports_external.string(),output_index:exports_external.number(),arguments:exports_external.string()}),exports_external.object({type:exports_external.literal("response.mcp_call.in_progress"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.mcp_call.executing"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.mcp_call.completed"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.mcp_call.failed"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.mcp_call_arguments.delta"),item_id:exports_external.string(),output_index:exports_external.number(),delta:exports_external.string()}),exports_external.object({type:exports_external.literal("response.mcp_call_arguments.done"),item_id:exports_external.string(),output_index:exports_external.number(),arguments:exports_external.string().optional()}),exports_external.object({type:exports_external.literal("response.mcp_call_output.delta"),item_id:exports_external.string(),output_index:exports_external.number(),delta:exports_external.string()}),exports_external.object({type:exports_external.literal("response.mcp_call_output.done"),item_id:exports_external.string(),output_index:exports_external.number(),output:exports_external.string().optional()}),exports_external.object({type:exports_external.literal("response.incomplete"),response:exports_external.object({incomplete_details:exports_external.object({reason:exports_external.string()}).nullish(),usage:xaiResponsesUsageSchema.nullish()})}),exports_external.object({type:exports_external.literal("response.failed"),response:exports_external.object({error:exports_external.object({code:exports_external.string().nullish(),message:exports_external.string()}).nullish(),incomplete_details:exports_external.object({reason:exports_external.string()}).nullish(),usage:xaiResponsesUsageSchema.nullish()})}),exports_external.object({type:exports_external.literal("error"),code:exports_external.string().nullish(),message:exports_external.string(),param:exports_external.string().nullish()}),exports_external.object({type:exports_external.literal("response.done"),response:xaiResponsesResponseSchema}),exports_external.object({type:exports_external.literal("response.completed"),response:xaiResponsesResponseSchema})]),xaiLanguageModelResponsesOptions=exports_external.object({reasoningEffort:exports_external.enum(["low","medium","high"]).optional(),logprobs:exports_external.boolean().optional(),topLogprobs:exports_external.number().int().min(0).max(8).optional(),store:exports_external.boolean().optional(),previousResponseId:exports_external.string().optional(),include:exports_external.array(exports_external.enum(["file_search_call.results"])).nullish()}),fileSearchArgsSchema6=lazySchema(()=>zodSchema(exports_external.object({vectorStoreIds:exports_external.array(exports_external.string()),maxNumResults:exports_external.number().optional()}))),fileSearchOutputSchema4=lazySchema(()=>zodSchema(exports_external.object({queries:exports_external.array(exports_external.string()),results:exports_external.array(exports_external.object({fileId:exports_external.string(),filename:exports_external.string(),score:exports_external.number().min(0).max(1),text:exports_external.string()})).nullable()}))),fileSearchToolFactory=createProviderToolFactoryWithOutputSchema({id:"xai.file_search",inputSchema:lazySchema(()=>zodSchema(exports_external.object({}))),outputSchema:fileSearchOutputSchema4}),mcpServerArgsSchema=lazySchema(()=>zodSchema(exports_external.object({serverUrl:exports_external.string().describe("The URL of the MCP server"),serverLabel:exports_external.string().optional().describe("A label for the MCP server"),serverDescription:exports_external.string().optional().describe("Description of the MCP server"),allowedTools:exports_external.array(exports_external.string()).optional().describe("List of allowed tool names"),headers:exports_external.record(exports_external.string(),exports_external.string()).optional().describe("Custom headers to send"),authorization:exports_external.string().optional().describe("Authorization header value")}))),mcpServerOutputSchema=lazySchema(()=>zodSchema(exports_external.object({name:exports_external.string(),arguments:exports_external.string(),result:exports_external.unknown()}))),mcpServerToolFactory=createProviderToolFactoryWithOutputSchema({id:"xai.mcp",inputSchema:lazySchema(()=>zodSchema(exports_external.object({}))),outputSchema:mcpServerOutputSchema}),webSearchArgsSchema4=lazySchema(()=>zodSchema(exports_external.object({allowedDomains:exports_external.array(exports_external.string()).max(5).optional(),excludedDomains:exports_external.array(exports_external.string()).max(5).optional(),enableImageUnderstanding:exports_external.boolean().optional()}))),webSearchOutputSchema3=lazySchema(()=>zodSchema(exports_external.object({query:exports_external.string(),sources:exports_external.array(exports_external.object({title:exports_external.string(),url:exports_external.string(),snippet:exports_external.string()}))}))),webSearchToolFactory4=createProviderToolFactoryWithOutputSchema({id:"xai.web_search",inputSchema:lazySchema(()=>zodSchema(exports_external.object({}))),outputSchema:webSearchOutputSchema3}),xSearchArgsSchema=lazySchema(()=>zodSchema(exports_external.object({allowedXHandles:exports_external.array(exports_external.string()).max(10).optional(),excludedXHandles:exports_external.array(exports_external.string()).max(10).optional(),fromDate:exports_external.string().optional(),toDate:exports_external.string().optional(),enableImageUnderstanding:exports_external.boolean().optional(),enableVideoUnderstanding:exports_external.boolean().optional()}))),xSearchOutputSchema=lazySchema(()=>zodSchema(exports_external.object({query:exports_external.string(),posts:exports_external.array(exports_external.object({author:exports_external.string(),text:exports_external.string(),url:exports_external.string(),likes:exports_external.number()}))}))),xSearchToolFactory=createProviderToolFactoryWithOutputSchema({id:"xai.x_search",inputSchema:lazySchema(()=>zodSchema(exports_external.object({}))),outputSchema:xSearchOutputSchema});codeExecutionOutputSchema=exports_external.object({output:exports_external.string().describe("the output of the code execution"),error:exports_external.string().optional().describe("any error that occurred")}),codeExecutionToolFactory=createProviderToolFactoryWithOutputSchema({id:"xai.code_execution",inputSchema:exports_external.object({}).describe("no input parameters"),outputSchema:codeExecutionOutputSchema}),viewImageOutputSchema=exports_external.object({description:exports_external.string().describe("description of the image"),objects:exports_external.array(exports_external.string()).optional().describe("objects detected in the image")}),viewImageToolFactory=createProviderToolFactoryWithOutputSchema({id:"xai.view_image",inputSchema:exports_external.object({}).describe("no input parameters"),outputSchema:viewImageOutputSchema}),viewXVideoOutputSchema=exports_external.object({transcript:exports_external.string().optional().describe("transcript of the video"),description:exports_external.string().describe("description of the video content"),duration:exports_external.number().optional().describe("duration in seconds")}),viewXVideoToolFactory=createProviderToolFactoryWithOutputSchema({id:"xai.view_x_video",inputSchema:exports_external.object({}).describe("no input parameters"),outputSchema:viewXVideoOutputSchema}),xaiTools={codeExecution:codeExecution3,fileSearch:fileSearch6,mcpServer,viewImage,viewXVideo,webSearch:webSearch3,xSearch},nonEmptyStringSchema=exports_external.string().min(1),resolutionSchema=exports_external.enum(["480p","720p"]),modeSchema=exports_external.enum(["edit-video","extend-video","reference-to-video"]),baseFields={pollIntervalMs:exports_external.number().positive().nullish(),pollTimeoutMs:exports_external.number().positive().nullish(),resolution:resolutionSchema.nullish()},editVideoSchema=exports_external.object({...baseFields,mode:exports_external.literal("edit-video"),videoUrl:nonEmptyStringSchema,referenceImageUrls:exports_external.undefined().optional()}),extendVideoSchema=exports_external.object({...baseFields,mode:exports_external.literal("extend-video"),videoUrl:nonEmptyStringSchema,referenceImageUrls:exports_external.undefined().optional()}),referenceToVideoSchema=exports_external.object({...baseFields,mode:exports_external.literal("reference-to-video"),referenceImageUrls:exports_external.array(nonEmptyStringSchema).min(1).max(7),videoUrl:exports_external.undefined().optional()}),autoDetectSchema=exports_external.object({...baseFields,mode:exports_external.undefined().optional(),videoUrl:nonEmptyStringSchema.optional(),referenceImageUrls:exports_external.array(nonEmptyStringSchema).min(1).max(7).optional()}),xaiVideoModelOptions=exports_external.union([editVideoSchema,extendVideoSchema,referenceToVideoSchema,autoDetectSchema]),runtimeSchema=exports_external.object({mode:modeSchema.optional(),videoUrl:nonEmptyStringSchema.optional(),referenceImageUrls:exports_external.array(nonEmptyStringSchema).min(1).max(7).optional(),...baseFields}).passthrough(),xaiVideoModelOptionsSchema=lazySchema(()=>zodSchema(runtimeSchema)),RESOLUTION_MAP={"1280x720":"720p","854x480":"480p","640x480":"480p"};xaiCreateVideoResponseSchema=exports_external.object({request_id:exports_external.string().nullish()}),xaiVideoStatusResponseSchema=exports_external.object({status:exports_external.string().nullish(),video:exports_external.object({url:exports_external.string(),duration:exports_external.number().nullish(),respect_moderation:exports_external.boolean().nullish()}).nullish(),model:exports_external.string().nullish(),usage:exports_external.object({cost_in_usd_ticks:exports_external.number().nullish()}).nullish(),progress:exports_external.number().nullish(),error:exports_external.object({code:exports_external.string().nullish(),message:exports_external.string().nullish()}).nullish()});xai=createXai()});function prepareXaiCall(context){let model=createProvider9(context.options,context.debug).chat(context.request.model.modelId),reasoningEffort=resolveLowHighReasoningEffort(context.request.reasoning);return{model,callOptions:{prompt:messagesToLanguageModelPrompt(context.request.messages),tools:mapToolDefinitionsToLanguageModelTools(context.request.tools,{schemaProfile:"strictTopLevelObject"}),maxOutputTokens:context.request.maxOutputTokens,temperature:context.request.temperature,topP:context.request.topP,stopSequences:context.request.stop,abortSignal:context.request.signal,...reasoningEffort?{providerOptions:{xai:{reasoningEffort}}}:{}},debug:context.debug}}function createProvider9(options,debug){let stripAuthorization=!options.apiKey&&!hasHeader(options.headers,"authorization");return warnIfPlaceholderApiKey({provider:"xAI",shouldWarn:stripAuthorization,logger:options.logger}),createXai({apiKey:options.apiKey??PLACEHOLDER_API_KEY9,baseURL:normalizeBaseUrl8(options.baseUrl),headers:options.headers,fetch:createProviderFetch({fetch:options.fetch,stripHeaders:["authorization"],stripWhen:stripAuthorization,debug})})}function normalizeBaseUrl8(baseUrl){return(baseUrl??DEFAULT_BASE_URL7).replace(/\/$/,"")}var DEFAULT_BASE_URL7="https://api.x.ai/v1",PLACEHOLDER_API_KEY9="dim-placeholder-key",xaiDriver,createXaiAdapter;var init_xai=__esm(()=>{init_create_provider_factory();init_reasoning();init_dist();init_dist11();xaiDriver={async generate(context){return generateWithAiSdk(prepareXaiCall(context))},stream(context){return streamWithAiSdk(prepareXaiCall(context))},normalizeError(error48){if(APICallError.isInstance(error48))return createApiCallErrorPayload({code:"xai_http_error",provider:"xAI",error:error48});return createRequestErrorPayload({code:"xai_request_error",error:error48})}};createXaiAdapter=createProviderFactory({defaultProvider:"xai",driver:xaiDriver})});function sliceMessagesForXaiResponses(messages,usePreviousResponseId=!1){return sliceMessagesForResponses(messages,XAI_RESPONSES_STATE_KEY,usePreviousResponseId)}function createXaiResponsesAssistantMetadata(result){return createResponsesAssistantMetadata({result,stateKey:XAI_RESPONSES_STATE_KEY,providerMetadataKey:"xai"})}function prepareXaiResponsesCall(context){let model=createProvider10(context.options,context.debug).responses(context.request.model.modelId),{messages,previousResponseId}=sliceMessagesForXaiResponses(context.request.messages,context.options.usePreviousResponseId),reasoningEffort=resolveLowMediumHighReasoningEffort(context.request.reasoning),xaiProviderOptions={...reasoningEffort?{reasoningEffort}:{},...previousResponseId?{previousResponseId}:{}};return{model,callOptions:{prompt:messagesToLanguageModelPrompt(messages),tools:mapToolDefinitionsToLanguageModelTools(context.request.tools,{schemaProfile:"strictTopLevelObject"}),maxOutputTokens:context.request.maxOutputTokens,temperature:context.request.temperature,topP:context.request.topP,stopSequences:context.request.stop,abortSignal:context.request.signal,...Object.keys(xaiProviderOptions).length>0?{providerOptions:{xai:xaiProviderOptions}}:{}},debug:context.debug,createAssistantMetadata:createXaiResponsesAssistantMetadata}}function createProvider10(options,debug){let stripAuthorization=!options.apiKey&&!hasHeader(options.headers,"authorization");return warnIfPlaceholderApiKey({provider:"xAI Responses",shouldWarn:stripAuthorization,logger:options.logger}),createXai({apiKey:options.apiKey??PLACEHOLDER_API_KEY10,baseURL:normalizeBaseUrl9(options.baseUrl),headers:options.headers,fetch:createProviderFetch({fetch:options.fetch,stripHeaders:["authorization"],stripWhen:stripAuthorization,debug})})}function normalizeBaseUrl9(baseUrl){return(baseUrl??DEFAULT_BASE_URL8).replace(/\/$/,"")}var XAI_RESPONSES_STATE_KEY="xaiResponses",DEFAULT_BASE_URL8="https://api.x.ai/v1",PLACEHOLDER_API_KEY10="dim-placeholder-key",xaiResponsesDriver,createXaiResponsesAdapter;var init_xai_responses=__esm(()=>{init_create_provider_factory();init_reasoning();init_responses_state();init_dist();init_dist11();xaiResponsesDriver={async generate(context){return generateWithAiSdk(prepareXaiResponsesCall(context))},stream(context){return streamWithAiSdk(prepareXaiResponsesCall(context))},normalizeError(error48){if(APICallError.isInstance(error48))return createApiCallErrorPayload({code:"xai_responses_http_error",provider:"xAI Responses",error:error48});return createRequestErrorPayload({code:"xai_responses_request_error",error:error48})}};createXaiResponsesAdapter=createProviderFactory({defaultProvider:"xai-responses",driver:xaiResponsesDriver})});function prepareOpenAICompatibleCall(context){let model=createOpenAICompatibleProvider(context.options,context.debug).chatModel(context.request.model.modelId),zenmuxProviderOptions=buildReasoningEffortProviderOptions(context.request.reasoning,ZENMUX_REASONING_EFFORTS);return{model,callOptions:{prompt:messagesToLanguageModelPrompt(context.request.messages),tools:mapToolDefinitionsToLanguageModelTools(context.request.tools,{schemaProfile:"strictTopLevelObject"}),maxOutputTokens:context.request.maxOutputTokens,temperature:context.request.temperature,topP:context.request.topP,stopSequences:context.request.stop,abortSignal:context.request.signal,...zenmuxProviderOptions?{providerOptions:{[OPENAI_COMPATIBLE_PROVIDER_NAME]:zenmuxProviderOptions}}:{}},debug:context.debug}}function getAnthropicRouteContext(context){if(!shouldRouteToAnthropic(context.request.model.modelId))return;return{...context,options:toAnthropicOptions(context.options),request:{...context.request,reasoning:toAnthropicReasoning(context.request.reasoning)}}}function shouldRouteToAnthropic(modelId){return modelId.startsWith("anthropic/")}function toAnthropicOptions(options){return{...copyProviderFactoryBaseOptions(options),apiKey:options.apiKey,baseUrl:DEFAULT_ANTHROPIC_BASE_URL,fetch:options.fetch,headers:resolveZenMuxHeaders(options)}}function copyProviderFactoryBaseOptions(options){return{defaultModel:options.defaultModel,provider:options.provider,streamMode:options.streamMode,debug:options.debug,logger:options.logger}}function resolveZenMuxHeaders(options){let merged=new Map;if(options.organization)merged.set("zenmux-organization",["ZenMux-Organization",options.organization]);if(options.project)merged.set("zenmux-project",["ZenMux-Project",options.project]);for(let[key,value]of Object.entries(options.headers??{}))merged.set(key.toLowerCase(),[key,value]);if(merged.size===0)return;return Object.fromEntries(merged.values())}function toAnthropicReasoning(reasoning){if(!reasoning)return reasoning;if(reasoning.enabled===!1)return reasoning;if(hasExplicitReasoningBudget(reasoning))return reasoning;let rawEffort=reasoning.effort;if(typeof rawEffort!=="string")return reasoning;let budgetTokens=ANTHROPIC_REASONING_BUDGETS[rawEffort];if(!budgetTokens)return reasoning;return{...reasoning,budgetTokens}}function hasExplicitReasoningBudget(reasoning){return"budgetTokens"in reasoning}function createOpenAICompatibleProvider(options,debug){let stripAuthorization=!options.apiKey&&!hasHeader(options.headers,"authorization");return warnIfPlaceholderApiKey({provider:"ZenMux",shouldWarn:stripAuthorization,logger:options.logger}),createOpenAICompatible({name:OPENAI_COMPATIBLE_PROVIDER_NAME,apiKey:options.apiKey??PLACEHOLDER_API_KEY11,baseURL:DEFAULT_BASE_URL9,includeUsage:!0,headers:resolveZenMuxHeaders(options),fetch:createProviderFetch({fetch:options.fetch,stripHeaders:["authorization"],stripWhen:stripAuthorization,debug})})}function warnIfIgnoredBaseUrl(options){if(!options.baseUrl||ignoredBaseUrlWarningShown)return;ignoredBaseUrlWarningShown=!0,options.logger?.emit({level:"warn",source:"provider.config",message:"ZenMux adapter now ignores baseUrl and always routes through the official ZenMux endpoints. Remove baseUrl to avoid configuration drift.",metadata:{provider:"zenmux",kind:"ignored_option",option:"baseUrl"}})}var DEFAULT_BASE_URL9="https://zenmux.ai/api/v1",DEFAULT_ANTHROPIC_BASE_URL="https://zenmux.ai/api/anthropic",OPENAI_COMPATIBLE_PROVIDER_NAME="zenmux",PLACEHOLDER_API_KEY11="dim-placeholder-key",ZENMUX_REASONING_EFFORTS,ANTHROPIC_REASONING_BUDGETS,ignoredBaseUrlWarningShown=!1,zenmuxDriver,createZenMuxAdapter;var init_zenmux=__esm(()=>{init_create_provider_factory();init_reasoning();init_driver();init_dist();init_dist4();ZENMUX_REASONING_EFFORTS=["minimal","low","medium","high"],ANTHROPIC_REASONING_BUDGETS={none:512,minimal:512,low:1024,medium:2048,high:4096,xhigh:4096},zenmuxDriver={async generate(context){warnIfIgnoredBaseUrl(context.options);let anthropicContext=getAnthropicRouteContext(context);if(anthropicContext&&anthropicDriver.generate)return anthropicDriver.generate(anthropicContext);return generateWithAiSdk(prepareOpenAICompatibleCall(context))},stream(context){warnIfIgnoredBaseUrl(context.options);let anthropicContext=getAnthropicRouteContext(context);if(anthropicContext&&anthropicDriver.stream)return anthropicDriver.stream(anthropicContext);return streamWithAiSdk(prepareOpenAICompatibleCall(context))},normalizeError(error48){if(APICallError.isInstance(error48))return createApiCallErrorPayload({code:"zenmux_http_error",provider:"ZenMux",error:error48});return createRequestErrorPayload({code:"zenmux_request_error",error:error48})}};createZenMuxAdapter=createProviderFactory({defaultProvider:"zenmux",driver:zenmuxDriver})});import{createRequire as createRequire2}from"node:module";import path6 from"node:path";import{fileURLToPath,pathToFileURL}from"node:url";function isTruthyEnv(value){if(!value)return!1;let normalized=value.trim().toLowerCase();return normalized.length>0&&normalized!=="0"&&normalized!=="false"&&normalized!=="off"}function normalizeFactoryId(id,label){if(typeof id!=="string"||id.trim().length===0)throw TypeError(`${label} is required`);return id.trim()}function normalizeModuleFactorySource(source,factoryId){if(!source||source.type!=="module")throw TypeError(`Process factory "${factoryId}" must declare a module source`);if(typeof source.specifier!=="string"||source.specifier.trim().length===0)throw TypeError(`Process factory "${factoryId}" module specifier is required`);if(typeof source.exportName!=="string"||source.exportName.trim().length===0)throw TypeError(`Process factory "${factoryId}" exportName is required`);return{type:"module",specifier:normalizeModuleSpecifier(source.specifier),exportName:source.exportName.trim()}}function normalizeModuleSpecifier(specifier){let trimmed=specifier.trim();if(trimmed.startsWith("file://"))return normalizeFileUrlSpecifier(trimmed);if(isRelativeModuleSpecifier(trimmed))throw TypeError("Process factory module specifiers must use a package specifier, absolute path, or file URL; relative paths are not stable across child processes");if(path6.isAbsolute(trimmed))return pathToFileURL(trimmed).toString();return trimmed}function normalizeFileUrlSpecifier(specifier){try{return pathToFileURL(fileURLToPath(specifier)).toString()}catch{throw TypeError(`Invalid process factory file URL: ${specifier}`)}}function isRelativeModuleSpecifier(specifier){return specifier.startsWith("./")||specifier.startsWith("../")||specifier.startsWith(".\\")||specifier.startsWith("..\\")}function normalizeRuntimeProfile(profile){if(!profile||typeof profile!=="object")throw TypeError("Process runtime profile must be an object");if(typeof profile.id!=="string"||profile.id.trim().length===0)throw TypeError("Process runtime profile id is required");if(!profile.model||typeof profile.model.factoryId!=="string"||profile.model.factoryId.trim().length===0)throw TypeError(`Process runtime profile "${profile.id}" requires a model factoryId`);if(profile.plugins&&!Array.isArray(profile.plugins))throw TypeError(`Process runtime profile "${profile.id}" plugins must be an array`);return structuredClone({...profile,id:profile.id.trim(),model:{factoryId:profile.model.factoryId.trim(),options:profile.model.options?structuredClone(profile.model.options):void 0},plugins:profile.plugins?.map((plugin)=>{if(!plugin||typeof plugin.factoryId!=="string"||plugin.factoryId.trim().length===0)throw TypeError(`Process runtime profile "${profile.id}" contains an invalid plugin factoryId`);return{factoryId:plugin.factoryId.trim(),options:plugin.options?structuredClone(plugin.options):void 0}})??[],metadata:profile.metadata?structuredClone(profile.metadata):void 0,reasoning:profile.reasoning?structuredClone(profile.reasoning):void 0,cache:profile.cache?structuredClone(profile.cache):void 0})}var require2,SUBAGENT_PROCESS_DEBUG,SubagentProcessRegistry=class{modelFactories=new Map;pluginFactories=new Map;profiles=new Map;constructor(){for(let id of builtinSubagentProcessModelFactoryIds)this.modelFactories.set(id,{id,source:{type:"builtin"}})}registerModelFactory(registration){let normalized={id:normalizeFactoryId(registration.id,"Process model factory id"),source:normalizeModuleFactorySource(registration.source,registration.id)};if(this.modelFactories.get(normalized.id)?.source.type==="builtin")throw Error(`Cannot override built-in process model factory "${normalized.id}"`);return this.modelFactories.set(normalized.id,normalized),this}registerPluginFactory(registration){let normalized={id:normalizeFactoryId(registration.id,"Process plugin factory id"),source:normalizeModuleFactorySource(registration.source,registration.id)};return this.pluginFactories.set(normalized.id,normalized),this}registerProfile(profile){let normalized=normalizeRuntimeProfile(profile);return this.profiles.set(normalized.id,normalized),this}getProfile(profileId){let profile=this.profiles.get(profileId);return profile?structuredClone(profile):void 0}hasModelFactory(factoryId){return this.modelFactories.has(factoryId)}hasPluginFactory(factoryId){return this.pluginFactories.has(factoryId)}createBootstrap(profileId){let profile=this.profiles.get(profileId);if(!profile)throw Error(`Unknown subagent process profile: ${profileId}`);let modelFactory=this.modelFactories.get(profile.model.factoryId);if(!modelFactory)throw Error(`Unknown process model factory "${profile.model.factoryId}" for profile "${profileId}"`);let pluginFactories=profile.plugins?.map((descriptor)=>{let registration=this.pluginFactories.get(descriptor.factoryId);if(!registration)throw Error(`Unknown process plugin factory "${descriptor.factoryId}" for profile "${profileId}"`);return structuredClone(registration)})??[];return{profile:structuredClone(profile),modelFactory:structuredClone(modelFactory),pluginFactories}}};var init_dist12=__esm(()=>{init_tool_result_output();init_subagent_process_builtins();init_aihubmix();init_aihubmix_responses();init_driver();init_anthropic();init_deepseek();init_gemini();init_moonshotai();init_openai();init_openai_responses();init_xai();init_xai_responses();init_zenmux();require2=createRequire2(import.meta.url),SUBAGENT_PROCESS_DEBUG=isTruthyEnv(process.env.DIM_SUBAGENT_PROCESS_DEBUG)});function denyToolCall(reason,result){return{type:"deny",reason,result}}function askToolCall(request,toolCall){return{type:"ask",request,toolCall}}function finalizeRun(finalMessage,additionalContext){return{type:"finalize",finalMessage,additionalContext}}var init_dist13=()=>{};var exports_dist={};__export(exports_dist,{createAutoCompactPlugin:()=>createAutoCompactPlugin});function createAutoCompactPlugin(options={}){let resolved=resolveOptions(options);return{manifest:{id:options.id??"auto-compact",version:"0.2.0",apiVersion:1,permissions:{model:!0},capabilities:["auto-compact"]},setup(context){return{inspector:{getConfig:async()=>{let config2={maxSummaryTokens:resolved.maxSummaryTokens,summaryInputMaxTokens:resolved.summaryInputMaxTokens,summaryPrompt:resolved.summaryPrompt,retainMessages:resolved.retainMessages,compaction:{auto:resolved.compaction.auto,prune:resolved.compaction.prune,reserved:resolved.compaction.reserved}};if(resolved.summaryModel)config2.summaryModel={provider:resolved.summaryModel.provider,modelId:resolved.summaryModel.modelId};return config2},getSessionState:async(sessionId)=>structuredClone(readPluginState(await context.services.pluginState.get(sessionId)))},createSessionController:(controllerContext)=>createAutoCompactController({options:resolved,logger:context.services.logger,model:context.services.model,context:controllerContext})}}}}function createAutoCompactController(input){return{readPlanningOptions(){return{auto:input.options.compaction.auto,retainMessages:input.options.retainMessages,reservedTokens:input.options.compaction.reserved,summaryTokenReserve:input.options.maxSummaryTokens}},async compact(request){let sessionStatus=input.context.getStatus(),summaryModel=input.options.summaryModel??sessionStatus.model;if(!summaryModel){let result={status:"skipped",reasonCode:"missing_summary_model",reasonMessage:"Auto compact summary model is unavailable",diagnostics:{}};return await persistPluginState(input.context,{strategy:"controller-v2",...input.options.summaryModel?{summaryModel:input.options.summaryModel}:{},lastResult:createPersistedResult(request,result)}),result}try{let summary=await generateSummary({contextStatus:sessionStatus,summaryModel,maxSummaryTokens:input.options.maxSummaryTokens,summaryInputMaxTokens:input.options.summaryInputMaxTokens,summaryPrompt:input.options.summaryPrompt,existingSystemSegments:request.plan.existingSystemSegments,compactedMessages:request.plan.compactedMessages,summaryInputMode:request.summaryInputMode,pruneToolOutputs:input.options.compaction.prune,sessionId:input.context.sessionId,usageKind:request.plan.trigger==="manual"?"manual_compaction":"auto_compaction",model:input.model,logger:input.logger}),result=summary.status==="normalized"?{status:"compacted",summary:summary.summary,diagnostics:{summaryNormalization:summary.summaryNormalization,summaryInputTokens:summary.summaryInputTokens,summaryOutputTokensEstimate:summary.summaryOutputTokensEstimate,summaryChars:summary.summaryChars,summaryCallCount:summary.summaryCallCount,summaryChunkCount:summary.summaryChunkCount,prunedToolOutputCount:summary.prunedToolOutputCount,preservedToolOutputCount:summary.preservedToolOutputCount}}:summary.status==="empty_body_preserve_previous"?{status:"skipped",reasonCode:"empty_summary_preserved_previous",reasonMessage:"Summary generation produced an empty body and preserved the existing continuation summary",diagnostics:{}}:{status:"failed",reasonCode:"invalid_summary_contract",reasonMessage:"Auto compact summary body cannot be empty",diagnostics:{}};return await persistPluginState(input.context,{strategy:"controller-v2",summaryModel,lastResult:createPersistedResult(request,result)}),result}catch(error48){let result={status:"failed",reasonCode:readErrorCode2(error48)??"summary_generation_failed",reasonMessage:readErrorMessage2(error48),diagnostics:{}};return await persistPluginState(input.context,{strategy:"controller-v2",summaryModel,lastResult:createPersistedResult(request,result)}),result}}}}function resolveOptions(options){return{summaryModel:options.summaryModel,maxSummaryTokens:positiveIntegerOr(options.maxSummaryTokens,1024),summaryInputMaxTokens:Math.max(1280,positiveIntegerOr(options.summaryInputMaxTokens,16000)),summaryPrompt:options.summaryPrompt?.trim()||`You have been working on the task described above but have not yet completed it. Write a continuation summary that will allow you (or another instance of yourself) to resume work efficiently in a future context window where the conversation history will be replaced with this summary. Your summary should be structured, concise, and actionable. Include:
|
|
115
|
+
`})}return{systemInstruction:systemInstructionParts.length>0&&!isGemmaModel?{parts:systemInstructionParts}:void 0,contents}}function getModelPath2(modelId){return modelId.includes("/")?modelId:`models/${modelId}`}function prepareTools6({tools,toolChoice,modelId}){var _a16,_b16;tools=(tools==null?void 0:tools.length)?tools:void 0;let toolWarnings=[],isLatest=["gemini-flash-latest","gemini-flash-lite-latest","gemini-pro-latest"].some((id)=>id===modelId),isGemini2orNewer=modelId.includes("gemini-2")||modelId.includes("gemini-3")||modelId.includes("nano-banana")||isLatest,isGemini3orNewer=modelId.includes("gemini-3"),supportsFileSearch=modelId.includes("gemini-2.5")||modelId.includes("gemini-3");if(tools==null)return{tools:void 0,toolConfig:void 0,toolWarnings};let hasFunctionTools=tools.some((tool2)=>tool2.type==="function"),hasProviderTools=tools.some((tool2)=>tool2.type==="provider");if(hasFunctionTools&&hasProviderTools&&!isGemini3orNewer)toolWarnings.push({type:"unsupported",feature:"combination of function and provider-defined tools"});if(hasProviderTools){let googleTools2=[];if(tools.filter((tool2)=>tool2.type==="provider").forEach((tool2)=>{switch(tool2.id){case"google.google_search":if(isGemini2orNewer)googleTools2.push({googleSearch:{...tool2.args}});else toolWarnings.push({type:"unsupported",feature:`provider-defined tool ${tool2.id}`,details:"Google Search requires Gemini 2.0 or newer."});break;case"google.enterprise_web_search":if(isGemini2orNewer)googleTools2.push({enterpriseWebSearch:{}});else toolWarnings.push({type:"unsupported",feature:`provider-defined tool ${tool2.id}`,details:"Enterprise Web Search requires Gemini 2.0 or newer."});break;case"google.url_context":if(isGemini2orNewer)googleTools2.push({urlContext:{}});else toolWarnings.push({type:"unsupported",feature:`provider-defined tool ${tool2.id}`,details:"The URL context tool is not supported with other Gemini models than Gemini 2."});break;case"google.code_execution":if(isGemini2orNewer)googleTools2.push({codeExecution:{}});else toolWarnings.push({type:"unsupported",feature:`provider-defined tool ${tool2.id}`,details:"The code execution tool is not supported with other Gemini models than Gemini 2."});break;case"google.file_search":if(supportsFileSearch)googleTools2.push({fileSearch:{...tool2.args}});else toolWarnings.push({type:"unsupported",feature:`provider-defined tool ${tool2.id}`,details:"The file search tool is only supported with Gemini 2.5 models and Gemini 3 models."});break;case"google.vertex_rag_store":if(isGemini2orNewer)googleTools2.push({retrieval:{vertex_rag_store:{rag_resources:{rag_corpus:tool2.args.ragCorpus},similarity_top_k:tool2.args.topK}}});else toolWarnings.push({type:"unsupported",feature:`provider-defined tool ${tool2.id}`,details:"The RAG store tool is not supported with other Gemini models than Gemini 2."});break;case"google.google_maps":if(isGemini2orNewer)googleTools2.push({googleMaps:{}});else toolWarnings.push({type:"unsupported",feature:`provider-defined tool ${tool2.id}`,details:"The Google Maps grounding tool is not supported with Gemini models other than Gemini 2 or newer."});break;default:toolWarnings.push({type:"unsupported",feature:`provider-defined tool ${tool2.id}`});break}}),hasFunctionTools&&isGemini3orNewer&&googleTools2.length>0){let functionDeclarations2=[];for(let tool2 of tools)if(tool2.type==="function")functionDeclarations2.push({name:tool2.name,description:(_a16=tool2.description)!=null?_a16:"",parameters:convertJSONSchemaToOpenAPISchema2(tool2.inputSchema)});let combinedToolConfig={functionCallingConfig:{mode:"VALIDATED"},includeServerSideToolInvocations:!0};if(toolChoice!=null)switch(toolChoice.type){case"auto":break;case"none":combinedToolConfig.functionCallingConfig={mode:"NONE"};break;case"required":combinedToolConfig.functionCallingConfig={mode:"ANY"};break;case"tool":combinedToolConfig.functionCallingConfig={mode:"ANY",allowedFunctionNames:[toolChoice.toolName]};break}return{tools:[...googleTools2,{functionDeclarations:functionDeclarations2}],toolConfig:combinedToolConfig,toolWarnings}}return{tools:googleTools2.length>0?googleTools2:void 0,toolConfig:void 0,toolWarnings}}let functionDeclarations=[],hasStrictTools=!1;for(let tool2 of tools)switch(tool2.type){case"function":if(functionDeclarations.push({name:tool2.name,description:(_b16=tool2.description)!=null?_b16:"",parameters:convertJSONSchemaToOpenAPISchema2(tool2.inputSchema)}),tool2.strict===!0)hasStrictTools=!0;break;default:toolWarnings.push({type:"unsupported",feature:`function tool ${tool2.name}`});break}if(toolChoice==null)return{tools:[{functionDeclarations}],toolConfig:hasStrictTools?{functionCallingConfig:{mode:"VALIDATED"}}:void 0,toolWarnings};let type=toolChoice.type;switch(type){case"auto":return{tools:[{functionDeclarations}],toolConfig:{functionCallingConfig:{mode:hasStrictTools?"VALIDATED":"AUTO"}},toolWarnings};case"none":return{tools:[{functionDeclarations}],toolConfig:{functionCallingConfig:{mode:"NONE"}},toolWarnings};case"required":return{tools:[{functionDeclarations}],toolConfig:{functionCallingConfig:{mode:hasStrictTools?"VALIDATED":"ANY"}},toolWarnings};case"tool":return{tools:[{functionDeclarations}],toolConfig:{functionCallingConfig:{mode:hasStrictTools?"VALIDATED":"ANY",allowedFunctionNames:[toolChoice.toolName]}},toolWarnings};default:throw new UnsupportedFunctionalityError({functionality:`tool choice type: ${type}`})}}function parsePath2(rawPath){let segments=[];for(let part of rawPath.split(".")){let bracketIdx=part.indexOf("[");if(bracketIdx===-1)segments.push(part);else{if(bracketIdx>0)segments.push(part.slice(0,bracketIdx));for(let m of part.matchAll(/\[(\d+)\]/g))segments.push(parseInt(m[1],10))}}return segments}function getNestedValue2(obj,segments){let current=obj;for(let seg of segments){if(current==null||typeof current!=="object")return;current=current[seg]}return current}function setNestedValue2(obj,segments,value){let current=obj;for(let i=0;i<segments.length-1;i++){let seg=segments[i],nextSeg=segments[i+1];if(current[seg]==null)current[seg]=typeof nextSeg==="number"?[]:{};current=current[seg]}current[segments[segments.length-1]]=value}function resolvePartialArgValue2(arg){var _a16,_b16;let value=(_b16=(_a16=arg.stringValue)!=null?_a16:arg.numberValue)!=null?_b16:arg.boolValue;if(value!=null)return{value,json:JSON.stringify(value)};if("nullValue"in arg)return{value:null,json:"null"};return}function mapGoogleGenerativeAIFinishReason2({finishReason,hasToolCalls}){switch(finishReason){case"STOP":return hasToolCalls?"tool-calls":"stop";case"MAX_TOKENS":return"length";case"IMAGE_SAFETY":case"RECITATION":case"SAFETY":case"BLOCKLIST":case"PROHIBITED_CONTENT":case"SPII":return"content-filter";case"MALFORMED_FUNCTION_CALL":return"error";case"FINISH_REASON_UNSPECIFIED":case"OTHER":default:return"other"}}function extractSources2({groundingMetadata,generateId:generateId3}){var _a16,_b16,_c,_d,_e,_f;if(!(groundingMetadata==null?void 0:groundingMetadata.groundingChunks))return;let sources=[];for(let chunk of groundingMetadata.groundingChunks)if(chunk.web!=null)sources.push({type:"source",sourceType:"url",id:generateId3(),url:chunk.web.uri,title:(_a16=chunk.web.title)!=null?_a16:void 0});else if(chunk.image!=null)sources.push({type:"source",sourceType:"url",id:generateId3(),url:chunk.image.sourceUri,title:(_b16=chunk.image.title)!=null?_b16:void 0});else if(chunk.retrievedContext!=null){let uri=chunk.retrievedContext.uri,fileSearchStore=chunk.retrievedContext.fileSearchStore;if(uri&&(uri.startsWith("http://")||uri.startsWith("https://")))sources.push({type:"source",sourceType:"url",id:generateId3(),url:uri,title:(_c=chunk.retrievedContext.title)!=null?_c:void 0});else if(uri){let title=(_d=chunk.retrievedContext.title)!=null?_d:"Unknown Document",mediaType="application/octet-stream",filename=void 0;if(uri.endsWith(".pdf"))mediaType="application/pdf",filename=uri.split("/").pop();else if(uri.endsWith(".txt"))mediaType="text/plain",filename=uri.split("/").pop();else if(uri.endsWith(".docx"))mediaType="application/vnd.openxmlformats-officedocument.wordprocessingml.document",filename=uri.split("/").pop();else if(uri.endsWith(".doc"))mediaType="application/msword",filename=uri.split("/").pop();else if(uri.match(/\.(md|markdown)$/))mediaType="text/markdown",filename=uri.split("/").pop();else filename=uri.split("/").pop();sources.push({type:"source",sourceType:"document",id:generateId3(),mediaType,title,filename})}else if(fileSearchStore){let title=(_e=chunk.retrievedContext.title)!=null?_e:"Unknown Document";sources.push({type:"source",sourceType:"document",id:generateId3(),mediaType:"application/octet-stream",title,filename:fileSearchStore.split("/").pop()})}}else if(chunk.maps!=null){if(chunk.maps.uri)sources.push({type:"source",sourceType:"url",id:generateId3(),url:chunk.maps.uri,title:(_f=chunk.maps.title)!=null?_f:void 0})}return sources.length>0?sources:void 0}function isGeminiModel(modelId){return modelId.startsWith("gemini-")}function createGoogleGenerativeAI(options={}){var _a16,_b16;let baseURL=(_a16=withoutTrailingSlash(options.baseURL))!=null?_a16:"https://generativelanguage.googleapis.com/v1beta",providerName=(_b16=options.name)!=null?_b16:"google.generative-ai",getHeaders=()=>withUserAgentSuffix({"x-goog-api-key":loadApiKey({apiKey:options.apiKey,environmentVariableName:"GOOGLE_GENERATIVE_AI_API_KEY",description:"Google Generative AI"}),...options.headers},`ai-sdk/google/${VERSION6}`),createChatModel=(modelId)=>{var _a22;return new GoogleGenerativeAILanguageModel2(modelId,{provider:providerName,baseURL,headers:getHeaders,generateId:(_a22=options.generateId)!=null?_a22:generateId,supportedUrls:()=>({"*":[new RegExp(`^${baseURL}/files/.*$`),new RegExp("^https://(?:www\\.)?youtube\\.com/watch\\?v=[\\w-]+(?:&[\\w=&.-]*)?$"),new RegExp("^https://youtu\\.be/[\\w-]+(?:\\?[\\w=&.-]*)?$")]}),fetch:options.fetch})},createEmbeddingModel=(modelId)=>new GoogleGenerativeAIEmbeddingModel(modelId,{provider:providerName,baseURL,headers:getHeaders,fetch:options.fetch}),createImageModel=(modelId,settings={})=>new GoogleGenerativeAIImageModel(modelId,settings,{provider:providerName,baseURL,headers:getHeaders,fetch:options.fetch}),createVideoModel=(modelId)=>{var _a22;return new GoogleGenerativeAIVideoModel(modelId,{provider:providerName,baseURL,headers:getHeaders,fetch:options.fetch,generateId:(_a22=options.generateId)!=null?_a22:generateId})},provider=function(modelId){if(new.target)throw Error("The Google Generative AI model function cannot be called with the new keyword.");return createChatModel(modelId)};return provider.specificationVersion="v3",provider.languageModel=createChatModel,provider.chat=createChatModel,provider.generativeAI=createChatModel,provider.embedding=createEmbeddingModel,provider.embeddingModel=createEmbeddingModel,provider.textEmbedding=createEmbeddingModel,provider.textEmbeddingModel=createEmbeddingModel,provider.image=createImageModel,provider.imageModel=createImageModel,provider.video=createVideoModel,provider.videoModel=createVideoModel,provider.tools=googleTools,provider}var VERSION6="3.0.64",googleErrorDataSchema2,googleFailedResponseHandler2,googleEmbeddingContentPartSchema,googleEmbeddingModelOptions,GoogleGenerativeAIEmbeddingModel=class{constructor(modelId,config2){this.specificationVersion="v3",this.maxEmbeddingsPerCall=2048,this.supportsParallelCalls=!0,this.modelId=modelId,this.config=config2}get provider(){return this.config.provider}async doEmbed({values,headers,abortSignal,providerOptions}){let googleOptions=await parseProviderOptions({provider:"google",providerOptions,schema:googleEmbeddingModelOptions});if(values.length>this.maxEmbeddingsPerCall)throw new TooManyEmbeddingValuesForCallError({provider:this.provider,modelId:this.modelId,maxEmbeddingsPerCall:this.maxEmbeddingsPerCall,values});let mergedHeaders=combineHeaders(await resolve(this.config.headers),headers),multimodalContent=googleOptions==null?void 0:googleOptions.content;if(multimodalContent!=null&&multimodalContent.length!==values.length)throw Error(`The number of multimodal content entries (${multimodalContent.length}) must match the number of values (${values.length}).`);if(values.length===1){let valueParts=multimodalContent==null?void 0:multimodalContent[0],textPart=values[0]?[{text:values[0]}]:[],parts=valueParts!=null?[...textPart,...valueParts]:[{text:values[0]}],{responseHeaders:responseHeaders2,value:response2,rawValue:rawValue2}=await postJsonToApi({url:`${this.config.baseURL}/models/${this.modelId}:embedContent`,headers:mergedHeaders,body:{model:`models/${this.modelId}`,content:{parts},outputDimensionality:googleOptions==null?void 0:googleOptions.outputDimensionality,taskType:googleOptions==null?void 0:googleOptions.taskType},failedResponseHandler:googleFailedResponseHandler2,successfulResponseHandler:createJsonResponseHandler(googleGenerativeAISingleEmbeddingResponseSchema),abortSignal,fetch:this.config.fetch});return{warnings:[],embeddings:[response2.embedding.values],usage:void 0,response:{headers:responseHeaders2,body:rawValue2}}}let{responseHeaders,value:response,rawValue}=await postJsonToApi({url:`${this.config.baseURL}/models/${this.modelId}:batchEmbedContents`,headers:mergedHeaders,body:{requests:values.map((value,index)=>{let valueParts=multimodalContent==null?void 0:multimodalContent[index],textPart=value?[{text:value}]:[];return{model:`models/${this.modelId}`,content:{role:"user",parts:valueParts!=null?[...textPart,...valueParts]:[{text:value}]},outputDimensionality:googleOptions==null?void 0:googleOptions.outputDimensionality,taskType:googleOptions==null?void 0:googleOptions.taskType}})},failedResponseHandler:googleFailedResponseHandler2,successfulResponseHandler:createJsonResponseHandler(googleGenerativeAITextEmbeddingResponseSchema),abortSignal,fetch:this.config.fetch});return{warnings:[],embeddings:response.embeddings.map((item)=>item.values),usage:void 0,response:{headers:responseHeaders,body:rawValue}}}},googleGenerativeAITextEmbeddingResponseSchema,googleGenerativeAISingleEmbeddingResponseSchema,dataUrlRegex2,googleLanguageModelOptions2,VertexServiceTierMap2,GoogleJSONAccumulator2=class{constructor(){this.accumulatedArgs={},this.jsonText="",this.pathStack=[],this.stringOpen=!1}processPartialArgs(partialArgs){let delta="";for(let arg of partialArgs){let rawPath=arg.jsonPath.replace(/^\$\./,"");if(!rawPath)continue;let segments=parsePath2(rawPath),existingValue=getNestedValue2(this.accumulatedArgs,segments);if(arg.stringValue!=null&&existingValue!==void 0){let escaped=JSON.stringify(arg.stringValue).slice(1,-1);setNestedValue2(this.accumulatedArgs,segments,existingValue+arg.stringValue),delta+=escaped;continue}let resolved=resolvePartialArgValue2(arg);if(resolved==null)continue;setNestedValue2(this.accumulatedArgs,segments,resolved.value),delta+=this.emitNavigationTo(segments,arg,resolved.json)}return this.jsonText+=delta,{currentJSON:this.accumulatedArgs,textDelta:delta}}finalize(){let finalArgs=JSON.stringify(this.accumulatedArgs),closingDelta=finalArgs.slice(this.jsonText.length);return{finalJSON:finalArgs,closingDelta}}ensureRoot(){if(this.pathStack.length===0)return this.pathStack.push({segment:"",isArray:!1,childCount:0}),"{";return""}emitNavigationTo(targetSegments,arg,valueJson){let fragment="";if(this.stringOpen)fragment+='"',this.stringOpen=!1;fragment+=this.ensureRoot();let targetContainerSegments=targetSegments.slice(0,-1),leafSegment=targetSegments[targetSegments.length-1],commonDepth=this.findCommonStackDepth(targetContainerSegments);return fragment+=this.closeDownTo(commonDepth),fragment+=this.openDownTo(targetContainerSegments,leafSegment),fragment+=this.emitLeaf(leafSegment,arg,valueJson),fragment}findCommonStackDepth(targetContainer){let maxDepth=Math.min(this.pathStack.length-1,targetContainer.length),common=0;for(let i=0;i<maxDepth;i++)if(this.pathStack[i+1].segment===targetContainer[i])common++;else break;return common+1}closeDownTo(targetDepth){let fragment="";while(this.pathStack.length>targetDepth){let entry=this.pathStack.pop();fragment+=entry.isArray?"]":"}"}return fragment}openDownTo(targetContainer,leafSegment){let fragment="",startIdx=this.pathStack.length-1;for(let i=startIdx;i<targetContainer.length;i++){let seg=targetContainer[i],parentEntry=this.pathStack[this.pathStack.length-1];if(parentEntry.childCount>0)fragment+=",";if(parentEntry.childCount++,typeof seg==="string")fragment+=`${JSON.stringify(seg)}:`;let isArray=typeof(i+1<targetContainer.length?targetContainer[i+1]:leafSegment)==="number";fragment+=isArray?"[":"{",this.pathStack.push({segment:seg,isArray,childCount:0})}return fragment}emitLeaf(leafSegment,arg,valueJson){let fragment="",container=this.pathStack[this.pathStack.length-1];if(container.childCount>0)fragment+=",";if(container.childCount++,typeof leafSegment==="string")fragment+=`${JSON.stringify(leafSegment)}:`;if(arg.stringValue!=null&&arg.willContinue)fragment+=valueJson.slice(0,-1),this.stringOpen=!0;else fragment+=valueJson;return fragment}},GoogleGenerativeAILanguageModel2=class{constructor(modelId,config2){this.specificationVersion="v3";var _a16;this.modelId=modelId,this.config=config2,this.generateId=(_a16=config2.generateId)!=null?_a16:generateId}get provider(){return this.config.provider}get supportedUrls(){var _a16,_b16,_c;return(_c=(_b16=(_a16=this.config).supportedUrls)==null?void 0:_b16.call(_a16))!=null?_c:{}}async getArgs({prompt,maxOutputTokens,temperature,topP,topK,frequencyPenalty,presencePenalty,stopSequences,responseFormat,seed,tools,toolChoice,providerOptions},{isStreaming=!1}={}){var _a16,_b16;let warnings=[],providerOptionsName=this.config.provider.includes("vertex")?"vertex":"google",googleOptions=await parseProviderOptions({provider:providerOptionsName,providerOptions,schema:googleLanguageModelOptions2});if(googleOptions==null&&providerOptionsName!=="google")googleOptions=await parseProviderOptions({provider:"google",providerOptions,schema:googleLanguageModelOptions2});let isVertexProvider=this.config.provider.startsWith("google.vertex.");if((tools==null?void 0:tools.some((tool2)=>tool2.type==="provider"&&tool2.id==="google.vertex_rag_store"))&&!isVertexProvider)warnings.push({type:"other",message:`The 'vertex_rag_store' tool is only supported with the Google Vertex provider and might not be supported or could behave unexpectedly with the current Google provider (${this.config.provider}).`});if((googleOptions==null?void 0:googleOptions.streamFunctionCallArguments)&&!isVertexProvider)warnings.push({type:"other",message:`'streamFunctionCallArguments' is only supported on the Vertex AI API and will be ignored with the current Google provider (${this.config.provider}). See https://docs.cloud.google.com/vertex-ai/generative-ai/docs/multimodal/function-calling#streaming-fc`});let sanitizedServiceTier=googleOptions==null?void 0:googleOptions.serviceTier;if((googleOptions==null?void 0:googleOptions.serviceTier)&&isVertexProvider)sanitizedServiceTier=VertexServiceTierMap2[googleOptions.serviceTier];let isGemmaModel=this.modelId.toLowerCase().startsWith("gemma-"),supportsFunctionResponseParts=this.modelId.startsWith("gemini-3"),{contents,systemInstruction}=convertToGoogleGenerativeAIMessages2(prompt,{isGemmaModel,providerOptionsName,supportsFunctionResponseParts}),{tools:googleTools2,toolConfig:googleToolConfig,toolWarnings}=prepareTools6({tools,toolChoice,modelId:this.modelId}),streamFunctionCallArguments=isStreaming&&isVertexProvider?(_a16=googleOptions==null?void 0:googleOptions.streamFunctionCallArguments)!=null?_a16:!1:void 0,toolConfig=googleToolConfig||streamFunctionCallArguments||(googleOptions==null?void 0:googleOptions.retrievalConfig)?{...googleToolConfig,...streamFunctionCallArguments&&{functionCallingConfig:{...googleToolConfig==null?void 0:googleToolConfig.functionCallingConfig,streamFunctionCallArguments:!0}},...(googleOptions==null?void 0:googleOptions.retrievalConfig)&&{retrievalConfig:googleOptions.retrievalConfig}}:void 0;return{args:{generationConfig:{maxOutputTokens,temperature,topK,topP,frequencyPenalty,presencePenalty,stopSequences,seed,responseMimeType:(responseFormat==null?void 0:responseFormat.type)==="json"?"application/json":void 0,responseSchema:(responseFormat==null?void 0:responseFormat.type)==="json"&&responseFormat.schema!=null&&((_b16=googleOptions==null?void 0:googleOptions.structuredOutputs)!=null?_b16:!0)?convertJSONSchemaToOpenAPISchema2(responseFormat.schema):void 0,...(googleOptions==null?void 0:googleOptions.audioTimestamp)&&{audioTimestamp:googleOptions.audioTimestamp},responseModalities:googleOptions==null?void 0:googleOptions.responseModalities,thinkingConfig:googleOptions==null?void 0:googleOptions.thinkingConfig,...(googleOptions==null?void 0:googleOptions.mediaResolution)&&{mediaResolution:googleOptions.mediaResolution},...(googleOptions==null?void 0:googleOptions.imageConfig)&&{imageConfig:googleOptions.imageConfig}},contents,systemInstruction:isGemmaModel?void 0:systemInstruction,safetySettings:googleOptions==null?void 0:googleOptions.safetySettings,tools:googleTools2,toolConfig,cachedContent:googleOptions==null?void 0:googleOptions.cachedContent,labels:googleOptions==null?void 0:googleOptions.labels,serviceTier:sanitizedServiceTier},warnings:[...warnings,...toolWarnings],providerOptionsName}}async doGenerate(options){var _a16,_b16,_c,_d,_e,_f,_g,_h,_i,_j,_k,_l,_m,_n,_o,_p;let{args,warnings,providerOptionsName}=await this.getArgs(options),mergedHeaders=combineHeaders(await resolve(this.config.headers),options.headers),{responseHeaders,value:response,rawValue:rawResponse}=await postJsonToApi({url:`${this.config.baseURL}/${getModelPath2(this.modelId)}:generateContent`,headers:mergedHeaders,body:args,failedResponseHandler:googleFailedResponseHandler2,successfulResponseHandler:createJsonResponseHandler(responseSchema2),abortSignal:options.abortSignal,fetch:this.config.fetch}),candidate=response.candidates[0],content=[],parts=(_b16=(_a16=candidate.content)==null?void 0:_a16.parts)!=null?_b16:[],usageMetadata=response.usageMetadata,lastCodeExecutionToolCallId,lastServerToolCallId;for(let part of parts)if("executableCode"in part&&((_c=part.executableCode)==null?void 0:_c.code)){let toolCallId=this.config.generateId();lastCodeExecutionToolCallId=toolCallId,content.push({type:"tool-call",toolCallId,toolName:"code_execution",input:JSON.stringify(part.executableCode),providerExecuted:!0})}else if("codeExecutionResult"in part&&part.codeExecutionResult)content.push({type:"tool-result",toolCallId:lastCodeExecutionToolCallId,toolName:"code_execution",result:{outcome:part.codeExecutionResult.outcome,output:(_d=part.codeExecutionResult.output)!=null?_d:""}}),lastCodeExecutionToolCallId=void 0;else if("text"in part&&part.text!=null){let thoughtSignatureMetadata=part.thoughtSignature?{[providerOptionsName]:{thoughtSignature:part.thoughtSignature}}:void 0;if(part.text.length===0){if(thoughtSignatureMetadata!=null&&content.length>0){let lastContent=content[content.length-1];lastContent.providerMetadata=thoughtSignatureMetadata}}else content.push({type:part.thought===!0?"reasoning":"text",text:part.text,providerMetadata:thoughtSignatureMetadata})}else if("functionCall"in part&&part.functionCall.name!=null&&part.functionCall.args!=null)content.push({type:"tool-call",toolCallId:this.config.generateId(),toolName:part.functionCall.name,input:JSON.stringify(part.functionCall.args),providerMetadata:part.thoughtSignature?{[providerOptionsName]:{thoughtSignature:part.thoughtSignature}}:void 0});else if("inlineData"in part){let hasThought=part.thought===!0,hasThoughtSignature=!!part.thoughtSignature;content.push({type:"file",data:part.inlineData.data,mediaType:part.inlineData.mimeType,providerMetadata:hasThought||hasThoughtSignature?{[providerOptionsName]:{...hasThought?{thought:!0}:{},...hasThoughtSignature?{thoughtSignature:part.thoughtSignature}:{}}}:void 0})}else if("toolCall"in part&&part.toolCall){let toolCallId=(_e=part.toolCall.id)!=null?_e:this.config.generateId();lastServerToolCallId=toolCallId,content.push({type:"tool-call",toolCallId,toolName:`server:${part.toolCall.toolType}`,input:JSON.stringify((_f=part.toolCall.args)!=null?_f:{}),providerExecuted:!0,dynamic:!0,providerMetadata:part.thoughtSignature?{[providerOptionsName]:{thoughtSignature:part.thoughtSignature,serverToolCallId:toolCallId,serverToolType:part.toolCall.toolType}}:{[providerOptionsName]:{serverToolCallId:toolCallId,serverToolType:part.toolCall.toolType}}})}else if("toolResponse"in part&&part.toolResponse){let responseToolCallId=(_g=lastServerToolCallId!=null?lastServerToolCallId:part.toolResponse.id)!=null?_g:this.config.generateId();content.push({type:"tool-result",toolCallId:responseToolCallId,toolName:`server:${part.toolResponse.toolType}`,result:(_h=part.toolResponse.response)!=null?_h:{},providerMetadata:part.thoughtSignature?{[providerOptionsName]:{thoughtSignature:part.thoughtSignature,serverToolCallId:responseToolCallId,serverToolType:part.toolResponse.toolType}}:{[providerOptionsName]:{serverToolCallId:responseToolCallId,serverToolType:part.toolResponse.toolType}}}),lastServerToolCallId=void 0}let sources=(_i=extractSources2({groundingMetadata:candidate.groundingMetadata,generateId:this.config.generateId}))!=null?_i:[];for(let source of sources)content.push(source);return{content,finishReason:{unified:mapGoogleGenerativeAIFinishReason2({finishReason:candidate.finishReason,hasToolCalls:content.some((part)=>part.type==="tool-call"&&!part.providerExecuted)}),raw:(_j=candidate.finishReason)!=null?_j:void 0},usage:convertGoogleGenerativeAIUsage2(usageMetadata),warnings,providerMetadata:{[providerOptionsName]:{promptFeedback:(_k=response.promptFeedback)!=null?_k:null,groundingMetadata:(_l=candidate.groundingMetadata)!=null?_l:null,urlContextMetadata:(_m=candidate.urlContextMetadata)!=null?_m:null,safetyRatings:(_n=candidate.safetyRatings)!=null?_n:null,usageMetadata:usageMetadata!=null?usageMetadata:null,finishMessage:(_o=candidate.finishMessage)!=null?_o:null,serviceTier:(_p=response.serviceTier)!=null?_p:null}},request:{body:args},response:{headers:responseHeaders,body:rawResponse}}}async doStream(options){let{args,warnings,providerOptionsName}=await this.getArgs(options,{isStreaming:!0}),headers=combineHeaders(await resolve(this.config.headers),options.headers),{responseHeaders,value:response}=await postJsonToApi({url:`${this.config.baseURL}/${getModelPath2(this.modelId)}:streamGenerateContent?alt=sse`,headers,body:args,failedResponseHandler:googleFailedResponseHandler2,successfulResponseHandler:createEventSourceResponseHandler(chunkSchema2),abortSignal:options.abortSignal,fetch:this.config.fetch}),finishReason={unified:"other",raw:void 0},usage=void 0,providerMetadata=void 0,lastGroundingMetadata=null,lastUrlContextMetadata=null,serviceTier=null,generateId3=this.config.generateId,hasToolCalls=!1,currentTextBlockId=null,currentReasoningBlockId=null,blockCounter=0,emittedSourceUrls=new Set,lastCodeExecutionToolCallId,lastServerToolCallId,activeStreamingToolCalls=[];return{stream:response.pipeThrough(new TransformStream({start(controller){controller.enqueue({type:"stream-start",warnings})},transform(chunk,controller){var _a16,_b16,_c,_d,_e,_f,_g,_h,_i,_j,_k,_l;if(options.includeRawChunks)controller.enqueue({type:"raw",rawValue:chunk.rawValue});if(!chunk.success){controller.enqueue({type:"error",error:chunk.error});return}let value=chunk.value,usageMetadata=value.usageMetadata;if(usageMetadata!=null)usage=usageMetadata;if(value.serviceTier!=null)serviceTier=value.serviceTier;let candidate=(_a16=value.candidates)==null?void 0:_a16[0];if(candidate==null)return;let content=candidate.content;if(candidate.groundingMetadata!=null)lastGroundingMetadata=candidate.groundingMetadata;if(candidate.urlContextMetadata!=null)lastUrlContextMetadata=candidate.urlContextMetadata;let sources=extractSources2({groundingMetadata:candidate.groundingMetadata,generateId:generateId3});if(sources!=null){for(let source of sources)if(source.sourceType==="url"&&!emittedSourceUrls.has(source.url))emittedSourceUrls.add(source.url),controller.enqueue(source)}if(content!=null){let parts=(_b16=content.parts)!=null?_b16:[];for(let part of parts)if("executableCode"in part&&((_c=part.executableCode)==null?void 0:_c.code)){let toolCallId=generateId3();lastCodeExecutionToolCallId=toolCallId,controller.enqueue({type:"tool-call",toolCallId,toolName:"code_execution",input:JSON.stringify(part.executableCode),providerExecuted:!0})}else if("codeExecutionResult"in part&&part.codeExecutionResult){let toolCallId=lastCodeExecutionToolCallId;if(toolCallId)controller.enqueue({type:"tool-result",toolCallId,toolName:"code_execution",result:{outcome:part.codeExecutionResult.outcome,output:(_d=part.codeExecutionResult.output)!=null?_d:""}}),lastCodeExecutionToolCallId=void 0}else if("text"in part&&part.text!=null){let thoughtSignatureMetadata=part.thoughtSignature?{[providerOptionsName]:{thoughtSignature:part.thoughtSignature}}:void 0;if(part.text.length===0){if(thoughtSignatureMetadata!=null&¤tTextBlockId!==null)controller.enqueue({type:"text-delta",id:currentTextBlockId,delta:"",providerMetadata:thoughtSignatureMetadata})}else if(part.thought===!0){if(currentTextBlockId!==null)controller.enqueue({type:"text-end",id:currentTextBlockId}),currentTextBlockId=null;if(currentReasoningBlockId===null)currentReasoningBlockId=String(blockCounter++),controller.enqueue({type:"reasoning-start",id:currentReasoningBlockId,providerMetadata:thoughtSignatureMetadata});controller.enqueue({type:"reasoning-delta",id:currentReasoningBlockId,delta:part.text,providerMetadata:thoughtSignatureMetadata})}else{if(currentReasoningBlockId!==null)controller.enqueue({type:"reasoning-end",id:currentReasoningBlockId}),currentReasoningBlockId=null;if(currentTextBlockId===null)currentTextBlockId=String(blockCounter++),controller.enqueue({type:"text-start",id:currentTextBlockId,providerMetadata:thoughtSignatureMetadata});controller.enqueue({type:"text-delta",id:currentTextBlockId,delta:part.text,providerMetadata:thoughtSignatureMetadata})}}else if("inlineData"in part){if(currentTextBlockId!==null)controller.enqueue({type:"text-end",id:currentTextBlockId}),currentTextBlockId=null;if(currentReasoningBlockId!==null)controller.enqueue({type:"reasoning-end",id:currentReasoningBlockId}),currentReasoningBlockId=null;let hasThought=part.thought===!0,hasThoughtSignature=!!part.thoughtSignature,fileMeta=hasThought||hasThoughtSignature?{[providerOptionsName]:{...hasThought?{thought:!0}:{},...hasThoughtSignature?{thoughtSignature:part.thoughtSignature}:{}}}:void 0;controller.enqueue({type:"file",mediaType:part.inlineData.mimeType,data:part.inlineData.data,providerMetadata:fileMeta})}else if("toolCall"in part&&part.toolCall){let toolCallId=(_e=part.toolCall.id)!=null?_e:generateId3();lastServerToolCallId=toolCallId;let serverMeta={[providerOptionsName]:{...part.thoughtSignature?{thoughtSignature:part.thoughtSignature}:{},serverToolCallId:toolCallId,serverToolType:part.toolCall.toolType}};controller.enqueue({type:"tool-call",toolCallId,toolName:`server:${part.toolCall.toolType}`,input:JSON.stringify((_f=part.toolCall.args)!=null?_f:{}),providerExecuted:!0,dynamic:!0,providerMetadata:serverMeta})}else if("toolResponse"in part&&part.toolResponse){let responseToolCallId=(_g=lastServerToolCallId!=null?lastServerToolCallId:part.toolResponse.id)!=null?_g:generateId3(),serverMeta={[providerOptionsName]:{...part.thoughtSignature?{thoughtSignature:part.thoughtSignature}:{},serverToolCallId:responseToolCallId,serverToolType:part.toolResponse.toolType}};controller.enqueue({type:"tool-result",toolCallId:responseToolCallId,toolName:`server:${part.toolResponse.toolType}`,result:(_h=part.toolResponse.response)!=null?_h:{},providerMetadata:serverMeta}),lastServerToolCallId=void 0}for(let part of parts){if(!("functionCall"in part))continue;let providerMeta=part.thoughtSignature?{[providerOptionsName]:{thoughtSignature:part.thoughtSignature}}:void 0,isStreamingChunk=part.functionCall.partialArgs!=null||part.functionCall.name!=null&&part.functionCall.willContinue===!0,isTerminalChunk=part.functionCall.name==null&&part.functionCall.args==null&&part.functionCall.partialArgs==null&&part.functionCall.willContinue==null,isCompleteCall=part.functionCall.name!=null&&part.functionCall.args!=null&&part.functionCall.partialArgs==null;if(isStreamingChunk){if(part.functionCall.name!=null&&part.functionCall.willContinue===!0){let toolCallId=generateId3(),accumulator=new GoogleJSONAccumulator2;if(activeStreamingToolCalls.push({toolCallId,toolName:part.functionCall.name,accumulator,providerMetadata:providerMeta}),controller.enqueue({type:"tool-input-start",id:toolCallId,toolName:part.functionCall.name,providerMetadata:providerMeta}),part.functionCall.partialArgs!=null){let{textDelta}=accumulator.processPartialArgs(part.functionCall.partialArgs);if(textDelta.length>0)controller.enqueue({type:"tool-input-delta",id:toolCallId,delta:textDelta,providerMetadata:providerMeta})}}else if(part.functionCall.partialArgs!=null&&activeStreamingToolCalls.length>0){let active=activeStreamingToolCalls[activeStreamingToolCalls.length-1],{textDelta}=active.accumulator.processPartialArgs(part.functionCall.partialArgs);if(textDelta.length>0)controller.enqueue({type:"tool-input-delta",id:active.toolCallId,delta:textDelta,providerMetadata:providerMeta})}}else if(isTerminalChunk&&activeStreamingToolCalls.length>0){let active=activeStreamingToolCalls.pop(),{finalJSON,closingDelta}=active.accumulator.finalize();if(closingDelta.length>0)controller.enqueue({type:"tool-input-delta",id:active.toolCallId,delta:closingDelta,providerMetadata:active.providerMetadata});controller.enqueue({type:"tool-input-end",id:active.toolCallId,providerMetadata:active.providerMetadata}),controller.enqueue({type:"tool-call",toolCallId:active.toolCallId,toolName:active.toolName,input:finalJSON,providerMetadata:active.providerMetadata}),hasToolCalls=!0}else if(isCompleteCall){let toolCallId=generateId3(),toolName=part.functionCall.name,args2=typeof part.functionCall.args==="string"?part.functionCall.args:JSON.stringify((_i=part.functionCall.args)!=null?_i:{});controller.enqueue({type:"tool-input-start",id:toolCallId,toolName,providerMetadata:providerMeta}),controller.enqueue({type:"tool-input-delta",id:toolCallId,delta:args2,providerMetadata:providerMeta}),controller.enqueue({type:"tool-input-end",id:toolCallId,providerMetadata:providerMeta}),controller.enqueue({type:"tool-call",toolCallId,toolName,input:args2,providerMetadata:providerMeta}),hasToolCalls=!0}}}if(candidate.finishReason!=null)finishReason={unified:mapGoogleGenerativeAIFinishReason2({finishReason:candidate.finishReason,hasToolCalls}),raw:candidate.finishReason},providerMetadata={[providerOptionsName]:{promptFeedback:(_j=value.promptFeedback)!=null?_j:null,groundingMetadata:lastGroundingMetadata,urlContextMetadata:lastUrlContextMetadata,safetyRatings:(_k=candidate.safetyRatings)!=null?_k:null,usageMetadata:usageMetadata!=null?usageMetadata:null,finishMessage:(_l=candidate.finishMessage)!=null?_l:null,serviceTier}}},flush(controller){if(currentTextBlockId!==null)controller.enqueue({type:"text-end",id:currentTextBlockId});if(currentReasoningBlockId!==null)controller.enqueue({type:"reasoning-end",id:currentReasoningBlockId});controller.enqueue({type:"finish",finishReason,usage:convertGoogleGenerativeAIUsage2(usage),providerMetadata})}})),response:{headers:responseHeaders},request:{body:args}}}},getGroundingMetadataSchema2=()=>exports_external.object({webSearchQueries:exports_external.array(exports_external.string()).nullish(),imageSearchQueries:exports_external.array(exports_external.string()).nullish(),retrievalQueries:exports_external.array(exports_external.string()).nullish(),searchEntryPoint:exports_external.object({renderedContent:exports_external.string()}).nullish(),groundingChunks:exports_external.array(exports_external.object({web:exports_external.object({uri:exports_external.string(),title:exports_external.string().nullish()}).nullish(),image:exports_external.object({sourceUri:exports_external.string(),imageUri:exports_external.string(),title:exports_external.string().nullish(),domain:exports_external.string().nullish()}).nullish(),retrievedContext:exports_external.object({uri:exports_external.string().nullish(),title:exports_external.string().nullish(),text:exports_external.string().nullish(),fileSearchStore:exports_external.string().nullish()}).nullish(),maps:exports_external.object({uri:exports_external.string().nullish(),title:exports_external.string().nullish(),text:exports_external.string().nullish(),placeId:exports_external.string().nullish()}).nullish()})).nullish(),groundingSupports:exports_external.array(exports_external.object({segment:exports_external.object({startIndex:exports_external.number().nullish(),endIndex:exports_external.number().nullish(),text:exports_external.string().nullish()}).nullish(),segment_text:exports_external.string().nullish(),groundingChunkIndices:exports_external.array(exports_external.number()).nullish(),supportChunkIndices:exports_external.array(exports_external.number()).nullish(),confidenceScores:exports_external.array(exports_external.number()).nullish(),confidenceScore:exports_external.array(exports_external.number()).nullish()})).nullish(),retrievalMetadata:exports_external.union([exports_external.object({webDynamicRetrievalScore:exports_external.number()}),exports_external.object({})]).nullish()}),partialArgSchema2,getContentSchema2=()=>exports_external.object({parts:exports_external.array(exports_external.union([exports_external.object({functionCall:exports_external.object({name:exports_external.string().nullish(),args:exports_external.unknown().nullish(),partialArgs:exports_external.array(partialArgSchema2).nullish(),willContinue:exports_external.boolean().nullish()}),thoughtSignature:exports_external.string().nullish()}),exports_external.object({inlineData:exports_external.object({mimeType:exports_external.string(),data:exports_external.string()}),thought:exports_external.boolean().nullish(),thoughtSignature:exports_external.string().nullish()}),exports_external.object({toolCall:exports_external.object({toolType:exports_external.string(),args:exports_external.unknown().nullish(),id:exports_external.string()}),thoughtSignature:exports_external.string().nullish()}),exports_external.object({toolResponse:exports_external.object({toolType:exports_external.string(),response:exports_external.unknown().nullish(),id:exports_external.string()}),thoughtSignature:exports_external.string().nullish()}),exports_external.object({executableCode:exports_external.object({language:exports_external.string(),code:exports_external.string()}).nullish(),codeExecutionResult:exports_external.object({outcome:exports_external.string(),output:exports_external.string().nullish()}).nullish(),text:exports_external.string().nullish(),thought:exports_external.boolean().nullish(),thoughtSignature:exports_external.string().nullish()})])).nullish()}),getSafetyRatingSchema2=()=>exports_external.object({category:exports_external.string().nullish(),probability:exports_external.string().nullish(),probabilityScore:exports_external.number().nullish(),severity:exports_external.string().nullish(),severityScore:exports_external.number().nullish(),blocked:exports_external.boolean().nullish()}),tokenDetailsSchema2,usageSchema3,getUrlContextMetadataSchema2=()=>exports_external.object({urlMetadata:exports_external.array(exports_external.object({retrievedUrl:exports_external.string(),urlRetrievalStatus:exports_external.string()})).nullish()}),responseSchema2,chunkSchema2,codeExecution2,enterpriseWebSearch2,fileSearchArgsBaseSchema2,fileSearchArgsSchema5,fileSearch5,googleMaps2,googleSearchToolArgsBaseSchema2,googleSearchToolArgsSchema2,googleSearch2,urlContext2,vertexRagStore2,googleTools,GoogleGenerativeAIImageModel=class{constructor(modelId,settings,config2){this.modelId=modelId,this.settings=settings,this.config=config2,this.specificationVersion="v3"}get maxImagesPerCall(){if(this.settings.maxImagesPerCall!=null)return this.settings.maxImagesPerCall;if(isGeminiModel(this.modelId))return 10;return 4}get provider(){return this.config.provider}async doGenerate(options){if(isGeminiModel(this.modelId))return this.doGenerateGemini(options);return this.doGenerateImagen(options)}async doGenerateImagen(options){var _a16,_b16,_c;let{prompt,n=1,size,aspectRatio="1:1",seed,providerOptions,headers,abortSignal,files,mask}=options,warnings=[];if(files!=null&&files.length>0)throw Error("Google Generative AI does not support image editing with Imagen models. Use Google Vertex AI (@ai-sdk/google-vertex) for image editing capabilities.");if(mask!=null)throw Error("Google Generative AI does not support image editing with masks. Use Google Vertex AI (@ai-sdk/google-vertex) for image editing capabilities.");if(size!=null)warnings.push({type:"unsupported",feature:"size",details:"This model does not support the `size` option. Use `aspectRatio` instead."});if(seed!=null)warnings.push({type:"unsupported",feature:"seed",details:"This model does not support the `seed` option through this provider."});let googleOptions=await parseProviderOptions({provider:"google",providerOptions,schema:googleImageModelOptionsSchema}),currentDate=(_c=(_b16=(_a16=this.config._internal)==null?void 0:_a16.currentDate)==null?void 0:_b16.call(_a16))!=null?_c:new Date,parameters={sampleCount:n};if(aspectRatio!=null)parameters.aspectRatio=aspectRatio;if(googleOptions)Object.assign(parameters,googleOptions);let body={instances:[{prompt}],parameters},{responseHeaders,value:response}=await postJsonToApi({url:`${this.config.baseURL}/models/${this.modelId}:predict`,headers:combineHeaders(await resolve(this.config.headers),headers),body,failedResponseHandler:googleFailedResponseHandler2,successfulResponseHandler:createJsonResponseHandler(googleImageResponseSchema),abortSignal,fetch:this.config.fetch});return{images:response.predictions.map((p)=>p.bytesBase64Encoded),warnings,providerMetadata:{google:{images:response.predictions.map(()=>({}))}},response:{timestamp:currentDate,modelId:this.modelId,headers:responseHeaders}}}async doGenerateGemini(options){var _a16,_b16,_c,_d,_e,_f,_g,_h,_i;let{prompt,n,size,aspectRatio,seed,providerOptions,headers,abortSignal,files,mask}=options,warnings=[];if(mask!=null)throw Error("Gemini image models do not support mask-based image editing.");if(n!=null&&n>1)throw Error("Gemini image models do not support generating a set number of images per call. Use n=1 or omit the n parameter.");if(size!=null)warnings.push({type:"unsupported",feature:"size",details:"This model does not support the `size` option. Use `aspectRatio` instead."});let userContent=[];if(prompt!=null)userContent.push({type:"text",text:prompt});if(files!=null&&files.length>0)for(let file2 of files)if(file2.type==="url")userContent.push({type:"file",data:new URL(file2.url),mediaType:"image/*"});else userContent.push({type:"file",data:typeof file2.data==="string"?file2.data:new Uint8Array(file2.data),mediaType:file2.mediaType});let languageModelPrompt=[{role:"user",content:userContent}],result=await new GoogleGenerativeAILanguageModel2(this.modelId,{provider:this.config.provider,baseURL:this.config.baseURL,headers:(_a16=this.config.headers)!=null?_a16:{},fetch:this.config.fetch,generateId:(_b16=this.config.generateId)!=null?_b16:generateId}).doGenerate({prompt:languageModelPrompt,seed,providerOptions:{google:{responseModalities:["IMAGE"],imageConfig:aspectRatio?{aspectRatio}:void 0,...(_c=providerOptions==null?void 0:providerOptions.google)!=null?_c:{}}},headers,abortSignal}),currentDate=(_f=(_e=(_d=this.config._internal)==null?void 0:_d.currentDate)==null?void 0:_e.call(_d))!=null?_f:new Date,images=[];for(let part of result.content)if(part.type==="file"&&part.mediaType.startsWith("image/"))images.push(convertToBase64(part.data));return{images,warnings,providerMetadata:{google:{images:images.map(()=>({}))}},response:{timestamp:currentDate,modelId:this.modelId,headers:(_g=result.response)==null?void 0:_g.headers},usage:result.usage?{inputTokens:result.usage.inputTokens.total,outputTokens:result.usage.outputTokens.total,totalTokens:((_h=result.usage.inputTokens.total)!=null?_h:0)+((_i=result.usage.outputTokens.total)!=null?_i:0)}:void 0}}},googleImageResponseSchema,googleImageModelOptionsSchema,GoogleGenerativeAIVideoModel=class{constructor(modelId,config2){this.modelId=modelId,this.config=config2,this.specificationVersion="v3"}get provider(){return this.config.provider}get maxVideosPerCall(){return 4}async doGenerate(options){var _a16,_b16,_c,_d,_e,_f,_g,_h;let currentDate=(_c=(_b16=(_a16=this.config._internal)==null?void 0:_a16.currentDate)==null?void 0:_b16.call(_a16))!=null?_c:new Date,warnings=[],googleOptions=await parseProviderOptions({provider:"google",providerOptions:options.providerOptions,schema:googleVideoModelOptionsSchema}),instances=[{}],instance=instances[0];if(options.prompt!=null)instance.prompt=options.prompt;if(options.image!=null)if(options.image.type==="url")warnings.push({type:"unsupported",feature:"URL-based image input",details:"Google Generative AI video models require base64-encoded images. URL will be ignored."});else{let base64Data=typeof options.image.data==="string"?options.image.data:convertUint8ArrayToBase64(options.image.data);instance.image={inlineData:{mimeType:options.image.mediaType||"image/png",data:base64Data}}}if((googleOptions==null?void 0:googleOptions.referenceImages)!=null)instance.referenceImages=googleOptions.referenceImages.map((refImg)=>{if(refImg.bytesBase64Encoded)return{inlineData:{mimeType:"image/png",data:refImg.bytesBase64Encoded}};else if(refImg.gcsUri)return{gcsUri:refImg.gcsUri};return refImg});let parameters={sampleCount:options.n};if(options.aspectRatio)parameters.aspectRatio=options.aspectRatio;if(options.resolution){let resolutionMap={"1280x720":"720p","1920x1080":"1080p","3840x2160":"4k"};parameters.resolution=resolutionMap[options.resolution]||options.resolution}if(options.duration)parameters.durationSeconds=options.duration;if(options.seed)parameters.seed=options.seed;if(googleOptions!=null){let opts=googleOptions;if(opts.personGeneration!==void 0&&opts.personGeneration!==null)parameters.personGeneration=opts.personGeneration;if(opts.negativePrompt!==void 0&&opts.negativePrompt!==null)parameters.negativePrompt=opts.negativePrompt;for(let[key,value]of Object.entries(opts))if(!["pollIntervalMs","pollTimeoutMs","personGeneration","negativePrompt","referenceImages"].includes(key))parameters[key]=value}let{value:operation}=await postJsonToApi({url:`${this.config.baseURL}/models/${this.modelId}:predictLongRunning`,headers:combineHeaders(await resolve(this.config.headers),options.headers),body:{instances,parameters},successfulResponseHandler:createJsonResponseHandler(googleOperationSchema),failedResponseHandler:googleFailedResponseHandler2,abortSignal:options.abortSignal,fetch:this.config.fetch}),operationName=operation.name;if(!operationName)throw new AISDKError({name:"GOOGLE_VIDEO_GENERATION_ERROR",message:"No operation name returned from API"});let pollIntervalMs=(_d=googleOptions==null?void 0:googleOptions.pollIntervalMs)!=null?_d:1e4,pollTimeoutMs=(_e=googleOptions==null?void 0:googleOptions.pollTimeoutMs)!=null?_e:600000,startTime=Date.now(),finalOperation=operation,responseHeaders;while(!finalOperation.done){if(Date.now()-startTime>pollTimeoutMs)throw new AISDKError({name:"GOOGLE_VIDEO_GENERATION_TIMEOUT",message:`Video generation timed out after ${pollTimeoutMs}ms`});if(await delay(pollIntervalMs),(_f=options.abortSignal)==null?void 0:_f.aborted)throw new AISDKError({name:"GOOGLE_VIDEO_GENERATION_ABORTED",message:"Video generation request was aborted"});let{value:statusOperation,responseHeaders:pollHeaders}=await getFromApi({url:`${this.config.baseURL}/${operationName}`,headers:combineHeaders(await resolve(this.config.headers),options.headers),successfulResponseHandler:createJsonResponseHandler(googleOperationSchema),failedResponseHandler:googleFailedResponseHandler2,abortSignal:options.abortSignal,fetch:this.config.fetch});finalOperation=statusOperation,responseHeaders=pollHeaders}if(finalOperation.error)throw new AISDKError({name:"GOOGLE_VIDEO_GENERATION_FAILED",message:`Video generation failed: ${finalOperation.error.message}`});let response=finalOperation.response;if(!((_g=response==null?void 0:response.generateVideoResponse)==null?void 0:_g.generatedSamples)||response.generateVideoResponse.generatedSamples.length===0)throw new AISDKError({name:"GOOGLE_VIDEO_GENERATION_ERROR",message:`No videos in response. Response: ${JSON.stringify(finalOperation)}`});let videos=[],videoMetadata=[],resolvedHeaders=await resolve(this.config.headers),apiKey=resolvedHeaders==null?void 0:resolvedHeaders["x-goog-api-key"];for(let generatedSample of response.generateVideoResponse.generatedSamples)if((_h=generatedSample.video)==null?void 0:_h.uri){let urlWithAuth=apiKey?`${generatedSample.video.uri}${generatedSample.video.uri.includes("?")?"&":"?"}key=${apiKey}`:generatedSample.video.uri;videos.push({type:"url",url:urlWithAuth,mediaType:"video/mp4"}),videoMetadata.push({uri:generatedSample.video.uri})}if(videos.length===0)throw new AISDKError({name:"GOOGLE_VIDEO_GENERATION_ERROR",message:"No valid videos in response"});return{videos,warnings,response:{timestamp:currentDate,modelId:this.modelId,headers:responseHeaders},providerMetadata:{google:{videos:videoMetadata}}}}},googleOperationSchema,googleVideoModelOptionsSchema,google;var init_dist9=__esm(()=>{init_dist3();init_dist();init_dist3();init_v4();init_dist3();init_v4();init_dist3();init_v4();init_dist3();init_v4();init_dist();init_dist3();init_dist3();init_v4();init_dist();init_dist3();init_v4();init_dist3();init_v4();init_dist3();init_v4();init_dist3();init_v4();init_dist3();init_v4();init_dist3();init_v4();init_dist3();init_v4();init_dist3();init_v4();init_dist();init_dist3();init_v4();googleErrorDataSchema2=lazySchema(()=>zodSchema(exports_external.object({error:exports_external.object({code:exports_external.number().nullable(),message:exports_external.string(),status:exports_external.string()})}))),googleFailedResponseHandler2=createJsonErrorResponseHandler({errorSchema:googleErrorDataSchema2,errorToMessage:(data)=>data.error.message}),googleEmbeddingContentPartSchema=exports_external.union([exports_external.object({text:exports_external.string()}),exports_external.object({inlineData:exports_external.object({mimeType:exports_external.string(),data:exports_external.string()})})]),googleEmbeddingModelOptions=lazySchema(()=>zodSchema(exports_external.object({outputDimensionality:exports_external.number().optional(),taskType:exports_external.enum(["SEMANTIC_SIMILARITY","CLASSIFICATION","CLUSTERING","RETRIEVAL_DOCUMENT","RETRIEVAL_QUERY","QUESTION_ANSWERING","FACT_VERIFICATION","CODE_RETRIEVAL_QUERY"]).optional(),content:exports_external.array(exports_external.array(googleEmbeddingContentPartSchema).min(1).nullable()).optional()}))),googleGenerativeAITextEmbeddingResponseSchema=lazySchema(()=>zodSchema(exports_external.object({embeddings:exports_external.array(exports_external.object({values:exports_external.array(exports_external.number())}))}))),googleGenerativeAISingleEmbeddingResponseSchema=lazySchema(()=>zodSchema(exports_external.object({embedding:exports_external.object({values:exports_external.array(exports_external.number())})})));dataUrlRegex2=/^data:([^;,]+);base64,(.+)$/s;googleLanguageModelOptions2=lazySchema(()=>zodSchema(exports_external.object({responseModalities:exports_external.array(exports_external.enum(["TEXT","IMAGE"])).optional(),thinkingConfig:exports_external.object({thinkingBudget:exports_external.number().optional(),includeThoughts:exports_external.boolean().optional(),thinkingLevel:exports_external.enum(["minimal","low","medium","high"]).optional()}).optional(),cachedContent:exports_external.string().optional(),structuredOutputs:exports_external.boolean().optional(),safetySettings:exports_external.array(exports_external.object({category:exports_external.enum(["HARM_CATEGORY_UNSPECIFIED","HARM_CATEGORY_HATE_SPEECH","HARM_CATEGORY_DANGEROUS_CONTENT","HARM_CATEGORY_HARASSMENT","HARM_CATEGORY_SEXUALLY_EXPLICIT","HARM_CATEGORY_CIVIC_INTEGRITY"]),threshold:exports_external.enum(["HARM_BLOCK_THRESHOLD_UNSPECIFIED","BLOCK_LOW_AND_ABOVE","BLOCK_MEDIUM_AND_ABOVE","BLOCK_ONLY_HIGH","BLOCK_NONE","OFF"])})).optional(),threshold:exports_external.enum(["HARM_BLOCK_THRESHOLD_UNSPECIFIED","BLOCK_LOW_AND_ABOVE","BLOCK_MEDIUM_AND_ABOVE","BLOCK_ONLY_HIGH","BLOCK_NONE","OFF"]).optional(),audioTimestamp:exports_external.boolean().optional(),labels:exports_external.record(exports_external.string(),exports_external.string()).optional(),mediaResolution:exports_external.enum(["MEDIA_RESOLUTION_UNSPECIFIED","MEDIA_RESOLUTION_LOW","MEDIA_RESOLUTION_MEDIUM","MEDIA_RESOLUTION_HIGH"]).optional(),imageConfig:exports_external.object({aspectRatio:exports_external.enum(["1:1","2:3","3:2","3:4","4:3","4:5","5:4","9:16","16:9","21:9","1:8","8:1","1:4","4:1"]).optional(),imageSize:exports_external.enum(["1K","2K","4K","512"]).optional()}).optional(),retrievalConfig:exports_external.object({latLng:exports_external.object({latitude:exports_external.number(),longitude:exports_external.number()}).optional()}).optional(),streamFunctionCallArguments:exports_external.boolean().optional(),serviceTier:exports_external.enum(["standard","flex","priority"]).optional()}))),VertexServiceTierMap2={standard:"SERVICE_TIER_STANDARD",flex:"SERVICE_TIER_FLEX",priority:"SERVICE_TIER_PRIORITY"};partialArgSchema2=exports_external.object({jsonPath:exports_external.string(),stringValue:exports_external.string().nullish(),numberValue:exports_external.number().nullish(),boolValue:exports_external.boolean().nullish(),nullValue:exports_external.unknown().nullish(),willContinue:exports_external.boolean().nullish()}),tokenDetailsSchema2=exports_external.array(exports_external.object({modality:exports_external.string(),tokenCount:exports_external.number()})).nullish(),usageSchema3=exports_external.object({cachedContentTokenCount:exports_external.number().nullish(),thoughtsTokenCount:exports_external.number().nullish(),promptTokenCount:exports_external.number().nullish(),candidatesTokenCount:exports_external.number().nullish(),totalTokenCount:exports_external.number().nullish(),trafficType:exports_external.string().nullish(),promptTokensDetails:tokenDetailsSchema2,candidatesTokensDetails:tokenDetailsSchema2}),responseSchema2=lazySchema(()=>zodSchema(exports_external.object({candidates:exports_external.array(exports_external.object({content:getContentSchema2().nullish().or(exports_external.object({}).strict()),finishReason:exports_external.string().nullish(),finishMessage:exports_external.string().nullish(),safetyRatings:exports_external.array(getSafetyRatingSchema2()).nullish(),groundingMetadata:getGroundingMetadataSchema2().nullish(),urlContextMetadata:getUrlContextMetadataSchema2().nullish()})),usageMetadata:usageSchema3.nullish(),promptFeedback:exports_external.object({blockReason:exports_external.string().nullish(),safetyRatings:exports_external.array(getSafetyRatingSchema2()).nullish()}).nullish(),serviceTier:exports_external.string().nullish()}))),chunkSchema2=lazySchema(()=>zodSchema(exports_external.object({candidates:exports_external.array(exports_external.object({content:getContentSchema2().nullish(),finishReason:exports_external.string().nullish(),finishMessage:exports_external.string().nullish(),safetyRatings:exports_external.array(getSafetyRatingSchema2()).nullish(),groundingMetadata:getGroundingMetadataSchema2().nullish(),urlContextMetadata:getUrlContextMetadataSchema2().nullish()})).nullish(),usageMetadata:usageSchema3.nullish(),promptFeedback:exports_external.object({blockReason:exports_external.string().nullish(),safetyRatings:exports_external.array(getSafetyRatingSchema2()).nullish()}).nullish(),serviceTier:exports_external.string().nullish()}))),codeExecution2=createProviderToolFactoryWithOutputSchema({id:"google.code_execution",inputSchema:exports_external.object({language:exports_external.string().describe("The programming language of the code."),code:exports_external.string().describe("The code to be executed.")}),outputSchema:exports_external.object({outcome:exports_external.string().describe('The outcome of the execution (e.g., "OUTCOME_OK").'),output:exports_external.string().describe("The output from the code execution.")})}),enterpriseWebSearch2=createProviderToolFactory({id:"google.enterprise_web_search",inputSchema:lazySchema(()=>zodSchema(exports_external.object({})))}),fileSearchArgsBaseSchema2=exports_external.object({fileSearchStoreNames:exports_external.array(exports_external.string()).describe("The names of the file_search_stores to retrieve from. Example: `fileSearchStores/my-file-search-store-123`"),topK:exports_external.number().int().positive().describe("The number of file search retrieval chunks to retrieve.").optional(),metadataFilter:exports_external.string().describe("Metadata filter to apply to the file search retrieval documents. See https://google.aip.dev/160 for the syntax of the filter expression.").optional()}).passthrough(),fileSearchArgsSchema5=lazySchema(()=>zodSchema(fileSearchArgsBaseSchema2)),fileSearch5=createProviderToolFactory({id:"google.file_search",inputSchema:fileSearchArgsSchema5}),googleMaps2=createProviderToolFactory({id:"google.google_maps",inputSchema:lazySchema(()=>zodSchema(exports_external.object({})))}),googleSearchToolArgsBaseSchema2=exports_external.object({searchTypes:exports_external.object({webSearch:exports_external.object({}).optional(),imageSearch:exports_external.object({}).optional()}).optional(),timeRangeFilter:exports_external.object({startTime:exports_external.string(),endTime:exports_external.string()}).optional()}).passthrough(),googleSearchToolArgsSchema2=lazySchema(()=>zodSchema(googleSearchToolArgsBaseSchema2)),googleSearch2=createProviderToolFactory({id:"google.google_search",inputSchema:googleSearchToolArgsSchema2}),urlContext2=createProviderToolFactory({id:"google.url_context",inputSchema:lazySchema(()=>zodSchema(exports_external.object({})))}),vertexRagStore2=createProviderToolFactory({id:"google.vertex_rag_store",inputSchema:exports_external.object({ragCorpus:exports_external.string(),topK:exports_external.number().optional()})}),googleTools={googleSearch:googleSearch2,enterpriseWebSearch:enterpriseWebSearch2,googleMaps:googleMaps2,urlContext:urlContext2,fileSearch:fileSearch5,codeExecution:codeExecution2,vertexRagStore:vertexRagStore2};googleImageResponseSchema=lazySchema(()=>zodSchema(exports_external.object({predictions:exports_external.array(exports_external.object({bytesBase64Encoded:exports_external.string()})).default([])}))),googleImageModelOptionsSchema=lazySchema(()=>zodSchema(exports_external.object({personGeneration:exports_external.enum(["dont_allow","allow_adult","allow_all"]).nullish(),aspectRatio:exports_external.enum(["1:1","3:4","4:3","9:16","16:9"]).nullish()}))),googleOperationSchema=exports_external.object({name:exports_external.string().nullish(),done:exports_external.boolean().nullish(),error:exports_external.object({code:exports_external.number().nullish(),message:exports_external.string(),status:exports_external.string().nullish()}).nullish(),response:exports_external.object({generateVideoResponse:exports_external.object({generatedSamples:exports_external.array(exports_external.object({video:exports_external.object({uri:exports_external.string().nullish()}).nullish()})).nullish()}).nullish()}).nullish()}),googleVideoModelOptionsSchema=lazySchema(()=>zodSchema(exports_external.object({pollIntervalMs:exports_external.number().positive().nullish(),pollTimeoutMs:exports_external.number().positive().nullish(),personGeneration:exports_external.enum(["dont_allow","allow_adult","allow_all"]).nullish(),negativePrompt:exports_external.string().nullish(),referenceImages:exports_external.array(exports_external.object({bytesBase64Encoded:exports_external.string().nullish(),gcsUri:exports_external.string().nullish()})).nullish()}).passthrough()));google=createGoogleGenerativeAI()});function geminiAssistantPrefixParts(message){let rawParts=readProviderState(message,GEMINI_STATE_KEY)?.parts;if(!Array.isArray(rawParts))return[];let parts=[];for(let rawPart of rawParts){if(!rawPart||typeof rawPart!=="object"||Array.isArray(rawPart))continue;let part=rawPart,thoughtSignature=typeof part.thoughtSignature==="string"?part.thoughtSignature:void 0;if(part.functionCall&&typeof part.functionCall.name==="string"){let providerOptions=createGeminiThoughtProviderOptions(thoughtSignature);parts.push({type:"tool-call",toolCallId:crypto.randomUUID(),toolName:part.functionCall.name,input:part.functionCall.args??{},providerOptions});continue}if(typeof part.text==="string"){let providerOptions=createGeminiThoughtProviderOptions(thoughtSignature);parts.push({type:part.thought===!0?"reasoning":"text",text:part.text,providerOptions})}}return parts}function createGeminiAssistantMetadata(result){let parts=result.content.flatMap((part)=>{let metadata=part.providerMetadata?.google,thoughtSignature=metadata&&typeof metadata.thoughtSignature==="string"?metadata.thoughtSignature:void 0;if(!thoughtSignature&&part.type!=="reasoning")return[];if(part.type==="reasoning")return[{text:part.text,thought:!0,thoughtSignature}];if(part.type==="tool-call")return[{functionCall:{name:part.toolName,args:parseToolArguments(part.input)},thoughtSignature}];if(part.type==="text")return[{text:part.text,thoughtSignature}];return[]});if(parts.length===0)return;return attachProviderState(void 0,GEMINI_STATE_KEY,{parts})}function parseToolArguments(input){let normalized=input.trim();if(normalized.length===0)return{};return parseJsonObject(normalized,"Gemini tool call arguments")}function createGeminiThoughtProviderOptions(thoughtSignature){if(!thoughtSignature)return;return{google:{thoughtSignature}}}function prepareGeminiCall(context){let model=createProvider5(context.options,context.debug)(context.request.model.modelId),googleProviderOptions=buildGeminiThinkingProviderOptions(context.request.reasoning);return{model,callOptions:{prompt:messagesToLanguageModelPrompt(context.request.messages,{assistantPrefixParts:geminiAssistantPrefixParts}),tools:mapToolDefinitionsToLanguageModelTools(context.request.tools),maxOutputTokens:context.request.maxOutputTokens,temperature:context.request.temperature,topP:context.request.topP,stopSequences:context.request.stop,abortSignal:context.request.signal,...googleProviderOptions?{providerOptions:{google:googleProviderOptions}}:{}},debug:context.debug,createAssistantMetadata:createGeminiAssistantMetadata}}function createProvider5(options,debug){let stripApiKey=!options.apiKey&&!hasHeader(options.headers,"x-goog-api-key");return warnIfPlaceholderApiKey({provider:"Gemini",shouldWarn:stripApiKey,logger:options.logger}),createGoogleGenerativeAI({apiKey:options.apiKey??PLACEHOLDER_API_KEY5,baseURL:normalizeBaseUrl4(options.baseUrl),headers:options.headers,fetch:createProviderFetch({fetch:options.fetch,stripHeaders:["x-goog-api-key"],stripWhen:stripApiKey,debug})})}function normalizeBaseUrl4(baseUrl){let normalized=(baseUrl??DEFAULT_BASE_URL3).replace(/\/$/,"");return normalized.endsWith("/v1beta")?normalized:`${normalized}/v1beta`}var GEMINI_STATE_KEY="gemini",DEFAULT_BASE_URL3="https://generativelanguage.googleapis.com",PLACEHOLDER_API_KEY5="dim-placeholder-key",geminiDriver,createGeminiAdapter;var init_gemini=__esm(()=>{init_tool_result_output();init_create_provider_factory();init_reasoning();init_provider_state();init_dist();init_dist9();geminiDriver={async generate(context){return generateWithAiSdk(prepareGeminiCall(context))},stream(context){return streamWithAiSdk(prepareGeminiCall(context))},normalizeError(error48){if(APICallError.isInstance(error48))return createApiCallErrorPayload({code:"gemini_http_error",provider:"Gemini",error:error48});return createRequestErrorPayload({code:"gemini_request_error",error:error48})}};createGeminiAdapter=createProviderFactory({defaultProvider:"gemini",driver:geminiDriver})});function convertMoonshotAIChatUsage(usage){var _a16,_b16,_c,_d,_e,_f,_g;if(usage==null)return{inputTokens:{total:void 0,noCache:void 0,cacheRead:void 0,cacheWrite:void 0},outputTokens:{total:void 0,text:void 0,reasoning:void 0},raw:void 0};let promptTokens=(_a16=usage.prompt_tokens)!=null?_a16:0,completionTokens=(_b16=usage.completion_tokens)!=null?_b16:0,cacheReadTokens=(_e=(_d=usage.cached_tokens)!=null?_d:(_c=usage.prompt_tokens_details)==null?void 0:_c.cached_tokens)!=null?_e:0,reasoningTokens=(_g=(_f=usage.completion_tokens_details)==null?void 0:_f.reasoning_tokens)!=null?_g:0;return{inputTokens:{total:promptTokens,noCache:promptTokens-cacheReadTokens,cacheRead:cacheReadTokens,cacheWrite:void 0},outputTokens:{total:completionTokens,text:completionTokens-reasoningTokens,reasoning:reasoningTokens},raw:usage}}function createMoonshotAI(options={}){var _a16;let baseURL=withoutTrailingSlash((_a16=options.baseURL)!=null?_a16:defaultBaseURL),getHeaders=()=>withUserAgentSuffix({Authorization:`Bearer ${loadApiKey({apiKey:options.apiKey,environmentVariableName:"MOONSHOT_API_KEY",description:"Moonshot API key"})}`,...options.headers},`ai-sdk/moonshotai/${VERSION7}`),getCommonModelConfig=(modelType)=>({provider:`moonshotai.${modelType}`,url:({path:path6})=>`${baseURL}${path6}`,headers:getHeaders,fetch:options.fetch}),createChatModel=(modelId)=>{return new MoonshotAIChatLanguageModel(modelId,{...getCommonModelConfig("chat"),includeUsage:!0,errorStructure:moonshotaiErrorStructure,transformRequestBody:(args)=>{let{thinking,reasoningHistory}=args,{thinking:_,reasoningHistory:__,...rest}=args;return{...rest,...thinking&&{thinking:{type:thinking.type,...thinking.budgetTokens!==void 0&&{budget_tokens:thinking.budgetTokens}}},...reasoningHistory&&{reasoning_history:reasoningHistory}}}})},provider=(modelId)=>createChatModel(modelId);return provider.specificationVersion="v3",provider.chatModel=createChatModel,provider.languageModel=createChatModel,provider.embeddingModel=(modelId)=>{throw new NoSuchModelError({modelId,modelType:"embeddingModel"})},provider.imageModel=(modelId)=>{throw new NoSuchModelError({modelId,modelType:"imageModel"})},provider}var MoonshotAIChatLanguageModel,VERSION7="2.0.16",moonshotaiErrorSchema,moonshotaiErrorStructure,defaultBaseURL="https://api.moonshot.ai/v1",moonshotai;var init_dist10=__esm(()=>{init_dist();init_dist3();init_v4();init_dist4();MoonshotAIChatLanguageModel=class extends OpenAICompatibleChatLanguageModel{constructor(modelId,config2){super(modelId,config2)}async doGenerate(options){var _a16,_b16;let result=await super.doGenerate(options),usage=(_b16=(_a16=result.response)==null?void 0:_a16.body)==null?void 0:_b16.usage;return{...result,usage:convertMoonshotAIChatUsage(usage)}}async doStream(options){let result=await super.doStream(options);return{...result,stream:result.stream.pipeThrough(new TransformStream({transform(chunk,controller){if(chunk.type==="finish"&&chunk.usage)controller.enqueue({...chunk,usage:convertMoonshotAIChatUsage(chunk.usage.raw)});else controller.enqueue(chunk)}}))}}},moonshotaiErrorSchema=exports_external.object({error:exports_external.object({message:exports_external.string(),type:exports_external.string().nullish()})}),moonshotaiErrorStructure={errorSchema:moonshotaiErrorSchema,errorToMessage:(data)=>data.error.message};moonshotai=createMoonshotAI()});function prepareMoonshotCall(context){let model=createProvider6(context.options,context.debug).languageModel(context.request.model.modelId),moonshotaiProviderOptions=buildMoonshotThinkingProviderOptions(context.request.reasoning);return{model,callOptions:{prompt:messagesToLanguageModelPrompt(context.request.messages),tools:mapToolDefinitionsToLanguageModelTools(context.request.tools,{schemaProfile:"strictTopLevelObject"}),maxOutputTokens:context.request.maxOutputTokens,temperature:context.request.temperature,topP:context.request.topP,stopSequences:context.request.stop,abortSignal:context.request.signal,...moonshotaiProviderOptions?{providerOptions:{moonshotai:moonshotaiProviderOptions}}:{}},debug:context.debug}}function createProvider6(options,debug){let stripAuthorization=!options.apiKey&&!hasHeader(options.headers,"authorization");return warnIfPlaceholderApiKey({provider:"MoonshotAI",shouldWarn:stripAuthorization,logger:options.logger}),createMoonshotAI({apiKey:options.apiKey??PLACEHOLDER_API_KEY6,baseURL:normalizeBaseUrl5(options.baseUrl),headers:options.headers,fetch:createProviderFetch({fetch:options.fetch,stripHeaders:["authorization"],stripWhen:stripAuthorization,debug})})}function normalizeBaseUrl5(baseUrl){return(baseUrl??DEFAULT_BASE_URL4).replace(/\/$/,"")}var DEFAULT_BASE_URL4="https://api.moonshot.ai/v1",PLACEHOLDER_API_KEY6="dim-placeholder-key",moonshotAIDriver,createMoonshotAIAdapter;var init_moonshotai=__esm(()=>{init_create_provider_factory();init_reasoning();init_dist();init_dist10();moonshotAIDriver={async generate(context){return generateWithAiSdk(prepareMoonshotCall(context))},stream(context){return streamWithAiSdk(prepareMoonshotCall(context))},normalizeError(error48){if(APICallError.isInstance(error48))return createApiCallErrorPayload({code:"moonshotai_http_error",provider:"MoonshotAI",error:error48});return createRequestErrorPayload({code:"moonshotai_request_error",error:error48})}};createMoonshotAIAdapter=createProviderFactory({defaultProvider:"moonshotai",driver:moonshotAIDriver})});function openAIAssistantPrefixParts(message){if(typeof message.thinking!=="string"||message.thinking.length===0)return[];return[{type:"reasoning",text:message.thinking}]}function prepareOpenAICall(context){let model=createProvider7(context.options,context.debug).chatModel(context.request.model.modelId),openaiCompatibleProviderOptions=buildOpenAICompatibleProviderOptions(context.request.reasoning);return{model,callOptions:{prompt:messagesToLanguageModelPrompt(context.request.messages,{assistantPrefixParts:openAIAssistantPrefixParts}),tools:mapToolDefinitionsToLanguageModelTools(context.request.tools,{schemaProfile:"strictTopLevelObject"}),maxOutputTokens:context.request.maxOutputTokens,temperature:context.request.temperature,topP:context.request.topP,stopSequences:context.request.stop,abortSignal:context.request.signal,...openaiCompatibleProviderOptions?{providerOptions:{"openai-compatible":openaiCompatibleProviderOptions}}:{}},debug:context.debug}}function createProvider7(options,debug){let stripAuthorization=!options.apiKey&&!hasHeader(options.headers,"authorization");return warnIfPlaceholderApiKey({provider:"OpenAI-compatible",shouldWarn:stripAuthorization,logger:options.logger}),createOpenAICompatible({name:"openai-compatible",apiKey:options.apiKey??PLACEHOLDER_API_KEY7,baseURL:normalizeBaseUrl6(options.baseUrl),includeUsage:!0,headers:options.headers,fetch:createProviderFetch({fetch:options.fetch,stripHeaders:["authorization"],stripWhen:stripAuthorization,debug})})}function normalizeBaseUrl6(baseUrl){return(baseUrl??DEFAULT_BASE_URL5).replace(/\/$/,"")}function reorderOpenAICompatibleContent(result){return{...result,content:[...result.content].sort((left,right)=>{return getContentPriority(left.type)-getContentPriority(right.type)})}}function getContentPriority(type){switch(type){case"thinking":return 0;case"text":return 1;case"tool_call":return 2}}var DEFAULT_BASE_URL5="https://api.openai.com/v1",PLACEHOLDER_API_KEY7="dim-placeholder-key",openAIDriver,createOpenAIAdapter;var init_openai=__esm(()=>{init_create_provider_factory();init_reasoning();init_dist();init_dist4();openAIDriver={async generate(context){return reorderOpenAICompatibleContent(await generateWithAiSdk(prepareOpenAICall(context)))},stream(context){return streamWithAiSdk(prepareOpenAICall(context))},normalizeError(error48){if(APICallError.isInstance(error48))return createApiCallErrorPayload({code:"openai_http_error",provider:"OpenAI-compatible",error:error48});return createRequestErrorPayload({code:"openai_request_error",error:error48})}};createOpenAIAdapter=createProviderFactory({defaultProvider:"openai-compatible",driver:openAIDriver})});function sliceMessagesForOpenAIResponses(messages,usePreviousResponseId=!1){return sliceMessagesForResponses(messages,OPENAI_RESPONSES_STATE_KEY,usePreviousResponseId)}function createOpenAIResponsesAssistantMetadata(result){return createResponsesAssistantMetadata({result,stateKey:OPENAI_RESPONSES_STATE_KEY,providerMetadataKey:"openai"})}function prepareOpenAIResponsesCall(context){let model=createProvider8(context.options,context.debug).responses(context.request.model.modelId),requestProviderOptions=getOpenAIResponsesRequestProviderOptions(context.request.providerOptions),{messages,previousResponseId}=sliceMessagesForOpenAIResponses(context.request.messages,context.options.usePreviousResponseId),openaiProviderOptionsSource=buildOpenAIResponsesProviderOptions(context.request.reasoning),openaiProviderOptions={};if(openaiProviderOptionsSource){for(let[key,value]of Object.entries(openaiProviderOptionsSource))if(value!==void 0)openaiProviderOptions[key]=value}if(typeof requestProviderOptions?.promptCacheKey==="string")openaiProviderOptions.promptCacheKey=requestProviderOptions.promptCacheKey;if(previousResponseId)openaiProviderOptions.previousResponseId=previousResponseId;let callOptions={prompt:messagesToLanguageModelPrompt(messages),tools:mapToolDefinitionsToLanguageModelTools(context.request.tools,{schemaProfile:"strictTopLevelObject"}),maxOutputTokens:context.request.maxOutputTokens,temperature:context.request.temperature,topP:context.request.topP,stopSequences:context.request.stop,abortSignal:context.request.signal};if(requestProviderOptions?.requestHeaders!==void 0)callOptions.headers=requestProviderOptions.requestHeaders;if(Object.keys(openaiProviderOptions).length>0)callOptions.providerOptions={openai:openaiProviderOptions};return{model,callOptions,debug:context.debug,createAssistantMetadata:createOpenAIResponsesAssistantMetadata}}function createProvider8(options,debug){let stripAuthorization=!options.apiKey&&!hasHeader(options.headers,"authorization");return warnIfPlaceholderApiKey({provider:"OpenAI Responses",shouldWarn:stripAuthorization,logger:options.logger}),createOpenAI({apiKey:options.apiKey??PLACEHOLDER_API_KEY8,baseURL:normalizeBaseUrl7(options.baseUrl),headers:options.headers,fetch:createProviderFetch({fetch:options.fetch,stripHeaders:["authorization"],stripWhen:stripAuthorization,debug})})}function normalizeBaseUrl7(baseUrl){return(baseUrl??DEFAULT_BASE_URL6).replace(/\/$/,"")}function getOpenAIResponsesRequestProviderOptions(providerOptions){let openai2=providerOptions?.openai;if(!openai2)return;let requestHeaders=toStringRecord(openai2.requestHeaders),next={};if(typeof openai2.promptCacheKey==="string")next.promptCacheKey=openai2.promptCacheKey;if(requestHeaders)next.requestHeaders=requestHeaders;return Object.keys(next).length>0?next:void 0}function toStringRecord(value){let entries=readJsonObjectEntries(value);if(!entries)return;let next={};for(let[key,entryValue]of entries){if(typeof entryValue!=="string")return;next[key]=entryValue}return next}function readJsonObjectEntries(value){if(!value||typeof value!=="object"||Array.isArray(value))return;return Object.entries(value)}var OPENAI_RESPONSES_STATE_KEY="openaiResponses",DEFAULT_BASE_URL6="https://api.openai.com/v1",PLACEHOLDER_API_KEY8="dim-placeholder-key",openAIResponsesDriver,createOpenAIResponsesAdapter;var init_openai_responses=__esm(()=>{init_create_provider_factory();init_reasoning();init_responses_state();init_dist();init_dist6();openAIResponsesDriver={async generate(context){return generateWithAiSdk(prepareOpenAIResponsesCall(context))},stream(context){return streamWithAiSdk(prepareOpenAIResponsesCall(context))},normalizeError(error48){if(APICallError.isInstance(error48))return createApiCallErrorPayload({code:"openai_responses_http_error",provider:"OpenAI Responses",error:error48});return createRequestErrorPayload({code:"openai_responses_request_error",error:error48})}};createOpenAIResponsesAdapter=createProviderFactory({defaultProvider:"openai-responses",driver:openAIResponsesDriver})});function convertToXaiChatMessages(prompt){var _a16;let messages=[],warnings=[];for(let{role,content}of prompt)switch(role){case"system":{messages.push({role:"system",content});break}case"user":{if(content.length===1&&content[0].type==="text"){messages.push({role:"user",content:content[0].text});break}messages.push({role:"user",content:content.map((part)=>{switch(part.type){case"text":return{type:"text",text:part.text};case"file":if(part.mediaType.startsWith("image/")){let mediaType=part.mediaType==="image/*"?"image/jpeg":part.mediaType;return{type:"image_url",image_url:{url:part.data instanceof URL?part.data.toString():`data:${mediaType};base64,${convertToBase64(part.data)}`}}}else throw new UnsupportedFunctionalityError({functionality:`file part media type ${part.mediaType}`})}})});break}case"assistant":{let text="",toolCalls=[];for(let part of content)switch(part.type){case"text":{text+=part.text;break}case"tool-call":{toolCalls.push({id:part.toolCallId,type:"function",function:{name:part.toolName,arguments:JSON.stringify(part.input)}});break}}messages.push({role:"assistant",content:text,tool_calls:toolCalls.length>0?toolCalls:void 0});break}case"tool":{for(let toolResponse of content){if(toolResponse.type==="tool-approval-response")continue;let output=toolResponse.output,contentValue;switch(output.type){case"text":case"error-text":contentValue=output.value;break;case"execution-denied":contentValue=(_a16=output.reason)!=null?_a16:"Tool execution denied.";break;case"content":case"json":case"error-json":contentValue=JSON.stringify(output.value);break}messages.push({role:"tool",tool_call_id:toolResponse.toolCallId,content:contentValue})}break}default:throw Error(`Unsupported role: ${role}`)}return{messages,warnings}}function convertXaiChatUsage(usage){var _a16,_b16,_c,_d;let cacheReadTokens=(_b16=(_a16=usage.prompt_tokens_details)==null?void 0:_a16.cached_tokens)!=null?_b16:0,reasoningTokens=(_d=(_c=usage.completion_tokens_details)==null?void 0:_c.reasoning_tokens)!=null?_d:0,promptTokensIncludesCached=cacheReadTokens<=usage.prompt_tokens;return{inputTokens:{total:promptTokensIncludesCached?usage.prompt_tokens:usage.prompt_tokens+cacheReadTokens,noCache:promptTokensIncludesCached?usage.prompt_tokens-cacheReadTokens:usage.prompt_tokens,cacheRead:cacheReadTokens,cacheWrite:void 0},outputTokens:{total:usage.completion_tokens+reasoningTokens,text:usage.completion_tokens,reasoning:reasoningTokens},raw:usage}}function getResponseMetadata6({id,model,created,created_at}){let unixTime=created!=null?created:created_at;return{id:id!=null?id:void 0,modelId:model!=null?model:void 0,timestamp:unixTime!=null?new Date(unixTime*1000):void 0}}function mapXaiFinishReason(finishReason){switch(finishReason){case"stop":return"stop";case"length":return"length";case"tool_calls":case"function_call":return"tool-calls";case"content_filter":return"content-filter";default:return"other"}}function prepareTools7({tools,toolChoice}){tools=(tools==null?void 0:tools.length)?tools:void 0;let toolWarnings=[];if(tools==null)return{tools:void 0,toolChoice:void 0,toolWarnings};let xaiTools2=[];for(let tool2 of tools)if(tool2.type==="provider")toolWarnings.push({type:"unsupported",feature:`provider-defined tool ${tool2.name}`});else xaiTools2.push({type:"function",function:{name:tool2.name,description:tool2.description,parameters:tool2.inputSchema,...tool2.strict!=null?{strict:tool2.strict}:{}}});if(toolChoice==null)return{tools:xaiTools2,toolChoice:void 0,toolWarnings};let type=toolChoice.type;switch(type){case"auto":case"none":return{tools:xaiTools2,toolChoice:type,toolWarnings};case"required":return{tools:xaiTools2,toolChoice:"required",toolWarnings};case"tool":return{tools:xaiTools2,toolChoice:{type:"function",function:{name:toolChoice.toolName}},toolWarnings};default:throw new UnsupportedFunctionalityError({functionality:`tool choice type: ${type}`})}}async function convertToXaiResponsesInput({prompt}){var _a16,_b16,_c,_d,_e,_f,_g,_h,_i;let input=[],inputWarnings=[];for(let message of prompt)switch(message.role){case"system":{input.push({role:"system",content:message.content});break}case"user":{let contentParts=[];for(let block of message.content)switch(block.type){case"text":{contentParts.push({type:"input_text",text:block.text});break}case"file":{if(block.mediaType.startsWith("image/")){let mediaType=block.mediaType==="image/*"?"image/jpeg":block.mediaType,imageUrl=block.data instanceof URL?block.data.toString():`data:${mediaType};base64,${convertToBase64(block.data)}`;contentParts.push({type:"input_image",image_url:imageUrl})}else throw new UnsupportedFunctionalityError({functionality:`file part media type ${block.mediaType}`});break}default:{let _exhaustiveCheck=block;inputWarnings.push({type:"other",message:"xAI Responses API does not support this content type in user messages"})}}input.push({role:"user",content:contentParts});break}case"assistant":{for(let part of message.content)switch(part.type){case"text":{let id=typeof((_b16=(_a16=part.providerOptions)==null?void 0:_a16.xai)==null?void 0:_b16.itemId)==="string"?part.providerOptions.xai.itemId:void 0;input.push({role:"assistant",content:part.text,id});break}case"tool-call":{if(part.providerExecuted)break;let id=typeof((_d=(_c=part.providerOptions)==null?void 0:_c.xai)==null?void 0:_d.itemId)==="string"?part.providerOptions.xai.itemId:void 0;input.push({type:"function_call",id:id!=null?id:part.toolCallId,call_id:part.toolCallId,name:part.toolName,arguments:JSON.stringify(part.input),status:"completed"});break}case"tool-result":break;case"reasoning":{let itemId=typeof((_f=(_e=part.providerOptions)==null?void 0:_e.xai)==null?void 0:_f.itemId)==="string"?part.providerOptions.xai.itemId:void 0,encryptedContent=typeof((_h=(_g=part.providerOptions)==null?void 0:_g.xai)==null?void 0:_h.reasoningEncryptedContent)==="string"?part.providerOptions.xai.reasoningEncryptedContent:void 0;if(itemId!=null||encryptedContent!=null){let summaryParts=[];if(part.text.length>0)summaryParts.push({type:"summary_text",text:part.text});input.push({type:"reasoning",id:itemId!=null?itemId:"",summary:summaryParts,status:"completed",...encryptedContent!=null&&{encrypted_content:encryptedContent}})}else inputWarnings.push({type:"other",message:"Reasoning parts without itemId or encrypted content cannot be sent back to xAI. Skipping."});break}case"file":{inputWarnings.push({type:"other",message:`xAI Responses API does not support ${part.type} in assistant messages`});break}default:{let _exhaustiveCheck=part;inputWarnings.push({type:"other",message:"xAI Responses API does not support this content type in assistant messages"})}}break}case"tool":{for(let part of message.content){if(part.type==="tool-approval-response")continue;let output=part.output,outputValue;switch(output.type){case"text":case"error-text":outputValue=output.value;break;case"execution-denied":outputValue=(_i=output.reason)!=null?_i:"tool execution denied";break;case"json":case"error-json":outputValue=JSON.stringify(output.value);break;case"content":outputValue=output.value.map((item)=>{if(item.type==="text")return item.text;return""}).join("");break;default:{let _exhaustiveCheck=output;outputValue=""}}input.push({type:"function_call_output",call_id:part.toolCallId,output:outputValue})}break}default:{let _exhaustiveCheck=message;inputWarnings.push({type:"other",message:"unsupported message role"})}}return{input,inputWarnings}}function convertXaiResponsesUsage(usage){var _a16,_b16,_c,_d;let cacheReadTokens=(_b16=(_a16=usage.input_tokens_details)==null?void 0:_a16.cached_tokens)!=null?_b16:0,reasoningTokens=(_d=(_c=usage.output_tokens_details)==null?void 0:_c.reasoning_tokens)!=null?_d:0,inputTokensIncludesCached=cacheReadTokens<=usage.input_tokens;return{inputTokens:{total:inputTokensIncludesCached?usage.input_tokens:usage.input_tokens+cacheReadTokens,noCache:inputTokensIncludesCached?usage.input_tokens-cacheReadTokens:usage.input_tokens,cacheRead:cacheReadTokens,cacheWrite:void 0},outputTokens:{total:usage.output_tokens,text:usage.output_tokens-reasoningTokens,reasoning:reasoningTokens},raw:usage}}function mapXaiResponsesFinishReason(finishReason){switch(finishReason){case"stop":case"completed":return"stop";case"length":case"max_output_tokens":return"length";case"tool_calls":case"function_call":return"tool-calls";case"content_filter":return"content-filter";default:return"other"}}async function prepareResponsesTools3({tools,toolChoice}){let normalizedTools=(tools==null?void 0:tools.length)?tools:void 0,toolWarnings=[];if(normalizedTools==null)return{tools:void 0,toolChoice:void 0,toolWarnings};let xaiTools2=[],toolByName=new Map;for(let tool2 of normalizedTools)if(toolByName.set(tool2.name,tool2),tool2.type==="provider")switch(tool2.id){case"xai.web_search":{let args=await validateTypes({value:tool2.args,schema:webSearchArgsSchema4});xaiTools2.push({type:"web_search",allowed_domains:args.allowedDomains,excluded_domains:args.excludedDomains,enable_image_understanding:args.enableImageUnderstanding});break}case"xai.x_search":{let args=await validateTypes({value:tool2.args,schema:xSearchArgsSchema});xaiTools2.push({type:"x_search",allowed_x_handles:args.allowedXHandles,excluded_x_handles:args.excludedXHandles,from_date:args.fromDate,to_date:args.toDate,enable_image_understanding:args.enableImageUnderstanding,enable_video_understanding:args.enableVideoUnderstanding});break}case"xai.code_execution":{xaiTools2.push({type:"code_interpreter"});break}case"xai.view_image":{xaiTools2.push({type:"view_image"});break}case"xai.view_x_video":{xaiTools2.push({type:"view_x_video"});break}case"xai.file_search":{let args=await validateTypes({value:tool2.args,schema:fileSearchArgsSchema6});xaiTools2.push({type:"file_search",vector_store_ids:args.vectorStoreIds,max_num_results:args.maxNumResults});break}case"xai.mcp":{let args=await validateTypes({value:tool2.args,schema:mcpServerArgsSchema});xaiTools2.push({type:"mcp",server_url:args.serverUrl,server_label:args.serverLabel,server_description:args.serverDescription,allowed_tools:args.allowedTools,headers:args.headers,authorization:args.authorization});break}default:{toolWarnings.push({type:"unsupported",feature:`provider-defined tool ${tool2.name}`});break}}else xaiTools2.push({type:"function",name:tool2.name,description:tool2.description,parameters:tool2.inputSchema,...tool2.strict!=null?{strict:tool2.strict}:{}});if(toolChoice==null)return{tools:xaiTools2,toolChoice:void 0,toolWarnings};let type=toolChoice.type;switch(type){case"auto":case"none":return{tools:xaiTools2,toolChoice:type,toolWarnings};case"required":return{tools:xaiTools2,toolChoice:"required",toolWarnings};case"tool":{let selectedTool=toolByName.get(toolChoice.toolName);if(selectedTool==null)return{tools:xaiTools2,toolChoice:void 0,toolWarnings};if(selectedTool.type==="provider")return toolWarnings.push({type:"unsupported",feature:`toolChoice for server-side tool "${selectedTool.name}"`}),{tools:xaiTools2,toolChoice:void 0,toolWarnings};return{tools:xaiTools2,toolChoice:{type:"function",name:selectedTool.name},toolWarnings}}default:throw new UnsupportedFunctionalityError({functionality:`tool choice type: ${type}`})}}function resolveVideoMode(options){if((options==null?void 0:options.mode)!=null)return options.mode;if((options==null?void 0:options.videoUrl)!=null)return"edit-video";if((options==null?void 0:options.referenceImageUrls)!=null&&options.referenceImageUrls.length>0)return"reference-to-video";return}function createXai(options={}){var _a16;let baseURL=withoutTrailingSlash((_a16=options.baseURL)!=null?_a16:"https://api.x.ai/v1"),getHeaders=()=>withUserAgentSuffix({Authorization:`Bearer ${loadApiKey({apiKey:options.apiKey,environmentVariableName:"XAI_API_KEY",description:"xAI API key"})}`,...options.headers},`ai-sdk/xai/${VERSION8}`),createChatLanguageModel=(modelId)=>{return new XaiChatLanguageModel(modelId,{provider:"xai.chat",baseURL,headers:getHeaders,generateId,fetch:options.fetch})},createResponsesLanguageModel=(modelId)=>{return new XaiResponsesLanguageModel(modelId,{provider:"xai.responses",baseURL,headers:getHeaders,generateId,fetch:options.fetch})},createImageModel=(modelId)=>{return new XaiImageModel(modelId,{provider:"xai.image",baseURL,headers:getHeaders,fetch:options.fetch})},createVideoModel=(modelId)=>{return new XaiVideoModel(modelId,{provider:"xai.video",baseURL,headers:getHeaders,fetch:options.fetch})},provider=(modelId)=>createChatLanguageModel(modelId);return provider.specificationVersion="v3",provider.languageModel=createChatLanguageModel,provider.chat=createChatLanguageModel,provider.responses=createResponsesLanguageModel,provider.embeddingModel=(modelId)=>{throw new NoSuchModelError({modelId,modelType:"embeddingModel"})},provider.textEmbeddingModel=provider.embeddingModel,provider.imageModel=createImageModel,provider.image=createImageModel,provider.videoModel=createVideoModel,provider.video=createVideoModel,provider.tools=xaiTools,provider}var webSourceSchema,xSourceSchema,newsSourceSchema,rssSourceSchema,searchSourceSchema,xaiLanguageModelChatOptions,xaiErrorDataSchema,xaiFailedResponseHandler,XaiChatLanguageModel=class{constructor(modelId,config2){this.specificationVersion="v3",this.supportedUrls={"image/*":[/^https?:\/\/.*$/]},this.modelId=modelId,this.config=config2}get provider(){return this.config.provider}async getArgs({prompt,maxOutputTokens,temperature,topP,topK,frequencyPenalty,presencePenalty,stopSequences,seed,responseFormat,providerOptions,tools,toolChoice}){var _a16,_b16,_c;let warnings=[],options=(_a16=await parseProviderOptions({provider:"xai",providerOptions,schema:xaiLanguageModelChatOptions}))!=null?_a16:{};if(topK!=null)warnings.push({type:"unsupported",feature:"topK"});if(frequencyPenalty!=null)warnings.push({type:"unsupported",feature:"frequencyPenalty"});if(presencePenalty!=null)warnings.push({type:"unsupported",feature:"presencePenalty"});if(stopSequences!=null)warnings.push({type:"unsupported",feature:"stopSequences"});let{messages,warnings:messageWarnings}=convertToXaiChatMessages(prompt);warnings.push(...messageWarnings);let{tools:xaiTools2,toolChoice:xaiToolChoice,toolWarnings}=prepareTools7({tools,toolChoice});return warnings.push(...toolWarnings),{args:{model:this.modelId,logprobs:options.logprobs===!0||options.topLogprobs!=null?!0:void 0,top_logprobs:options.topLogprobs,max_completion_tokens:maxOutputTokens,temperature,top_p:topP,seed,reasoning_effort:options.reasoningEffort,parallel_function_calling:options.parallel_function_calling,response_format:(responseFormat==null?void 0:responseFormat.type)==="json"?responseFormat.schema!=null?{type:"json_schema",json_schema:{name:(_b16=responseFormat.name)!=null?_b16:"response",schema:responseFormat.schema,strict:!0}}:{type:"json_object"}:void 0,search_parameters:options.searchParameters?{mode:options.searchParameters.mode,return_citations:options.searchParameters.returnCitations,from_date:options.searchParameters.fromDate,to_date:options.searchParameters.toDate,max_search_results:options.searchParameters.maxSearchResults,sources:(_c=options.searchParameters.sources)==null?void 0:_c.map((source)=>{var _a22;return{type:source.type,...source.type==="web"&&{country:source.country,excluded_websites:source.excludedWebsites,allowed_websites:source.allowedWebsites,safe_search:source.safeSearch},...source.type==="x"&&{excluded_x_handles:source.excludedXHandles,included_x_handles:(_a22=source.includedXHandles)!=null?_a22:source.xHandles,post_favorite_count:source.postFavoriteCount,post_view_count:source.postViewCount},...source.type==="news"&&{country:source.country,excluded_websites:source.excludedWebsites,safe_search:source.safeSearch},...source.type==="rss"&&{links:source.links}}})}:void 0,messages,tools:xaiTools2,tool_choice:xaiToolChoice},warnings}}async doGenerate(options){var _a16,_b16;let{args:body,warnings}=await this.getArgs(options),url2=`${(_a16=this.config.baseURL)!=null?_a16:"https://api.x.ai/v1"}/chat/completions`,{responseHeaders,value:response,rawValue:rawResponse}=await postJsonToApi({url:url2,headers:combineHeaders(this.config.headers(),options.headers),body,failedResponseHandler:xaiFailedResponseHandler,successfulResponseHandler:createJsonResponseHandler(xaiChatResponseSchema),abortSignal:options.abortSignal,fetch:this.config.fetch});if(response.error!=null)throw new APICallError({message:response.error,url:url2,requestBodyValues:body,statusCode:200,responseHeaders,responseBody:JSON.stringify(rawResponse),isRetryable:response.code==="The service is currently unavailable"});let choice=response.choices[0],content=[];if(choice.message.content!=null&&choice.message.content.length>0){let text=choice.message.content,lastMessage=body.messages[body.messages.length-1];if((lastMessage==null?void 0:lastMessage.role)==="assistant"&&text===lastMessage.content)text="";if(text.length>0)content.push({type:"text",text})}if(choice.message.reasoning_content!=null&&choice.message.reasoning_content.length>0)content.push({type:"reasoning",text:choice.message.reasoning_content});if(choice.message.tool_calls!=null)for(let toolCall of choice.message.tool_calls)content.push({type:"tool-call",toolCallId:toolCall.id,toolName:toolCall.function.name,input:toolCall.function.arguments});if(response.citations!=null)for(let url22 of response.citations)content.push({type:"source",sourceType:"url",id:this.config.generateId(),url:url22});return{content,finishReason:{unified:mapXaiFinishReason(choice.finish_reason),raw:(_b16=choice.finish_reason)!=null?_b16:void 0},usage:response.usage?convertXaiChatUsage(response.usage):{inputTokens:{total:0,noCache:0,cacheRead:0,cacheWrite:0},outputTokens:{total:0,text:0,reasoning:0}},request:{body},response:{...getResponseMetadata6(response),headers:responseHeaders,body:rawResponse},warnings}}async doStream(options){var _a16;let{args,warnings}=await this.getArgs(options),body={...args,stream:!0,stream_options:{include_usage:!0}},url2=`${(_a16=this.config.baseURL)!=null?_a16:"https://api.x.ai/v1"}/chat/completions`,{responseHeaders,value:response}=await postJsonToApi({url:url2,headers:combineHeaders(this.config.headers(),options.headers),body,failedResponseHandler:xaiFailedResponseHandler,successfulResponseHandler:async({response:response2})=>{let responseHeaders2=extractResponseHeaders(response2),contentType=response2.headers.get("content-type");if(contentType==null?void 0:contentType.includes("application/json")){let responseBody=await response2.text(),parsedError=await safeParseJSON({text:responseBody,schema:xaiStreamErrorSchema});if(parsedError.success)throw new APICallError({message:parsedError.value.error,url:url2,requestBodyValues:body,statusCode:200,responseHeaders:responseHeaders2,responseBody,isRetryable:parsedError.value.code==="The service is currently unavailable"});throw new APICallError({message:"Invalid JSON response",url:url2,requestBodyValues:body,statusCode:200,responseHeaders:responseHeaders2,responseBody})}return createEventSourceResponseHandler(xaiChatChunkSchema)({response:response2,url:url2,requestBodyValues:body})},abortSignal:options.abortSignal,fetch:this.config.fetch}),finishReason={unified:"other",raw:void 0},usage=void 0,isFirstChunk=!0,contentBlocks={},lastReasoningDeltas={},activeReasoningBlockId=void 0,self2=this;return{stream:response.pipeThrough(new TransformStream({start(controller){controller.enqueue({type:"stream-start",warnings})},transform(chunk,controller){if(options.includeRawChunks)controller.enqueue({type:"raw",rawValue:chunk.rawValue});if(!chunk.success){controller.enqueue({type:"error",error:chunk.error});return}let value=chunk.value;if(isFirstChunk)controller.enqueue({type:"response-metadata",...getResponseMetadata6(value)}),isFirstChunk=!1;if(value.citations!=null)for(let url22 of value.citations)controller.enqueue({type:"source",sourceType:"url",id:self2.config.generateId(),url:url22});if(value.usage!=null)usage=convertXaiChatUsage(value.usage);let choice=value.choices[0];if((choice==null?void 0:choice.finish_reason)!=null)finishReason={unified:mapXaiFinishReason(choice.finish_reason),raw:choice.finish_reason};if((choice==null?void 0:choice.delta)==null)return;let{delta,index:choiceIndex}=choice;if(delta.content!=null&&delta.content.length>0){let textContent=delta.content;if(activeReasoningBlockId!=null&&!contentBlocks[activeReasoningBlockId].ended)controller.enqueue({type:"reasoning-end",id:activeReasoningBlockId}),contentBlocks[activeReasoningBlockId].ended=!0,activeReasoningBlockId=void 0;let lastMessage=body.messages[body.messages.length-1];if((lastMessage==null?void 0:lastMessage.role)==="assistant"&&textContent===lastMessage.content)return;let blockId=`text-${value.id||choiceIndex}`;if(contentBlocks[blockId]==null)contentBlocks[blockId]={type:"text",ended:!1},controller.enqueue({type:"text-start",id:blockId});controller.enqueue({type:"text-delta",id:blockId,delta:textContent})}if(delta.reasoning_content!=null&&delta.reasoning_content.length>0){let blockId=`reasoning-${value.id||choiceIndex}`;if(lastReasoningDeltas[blockId]===delta.reasoning_content)return;if(lastReasoningDeltas[blockId]=delta.reasoning_content,contentBlocks[blockId]==null)contentBlocks[blockId]={type:"reasoning",ended:!1},activeReasoningBlockId=blockId,controller.enqueue({type:"reasoning-start",id:blockId});controller.enqueue({type:"reasoning-delta",id:blockId,delta:delta.reasoning_content})}if(delta.tool_calls!=null){if(activeReasoningBlockId!=null&&!contentBlocks[activeReasoningBlockId].ended)controller.enqueue({type:"reasoning-end",id:activeReasoningBlockId}),contentBlocks[activeReasoningBlockId].ended=!0,activeReasoningBlockId=void 0;for(let toolCall of delta.tool_calls){let toolCallId=toolCall.id;controller.enqueue({type:"tool-input-start",id:toolCallId,toolName:toolCall.function.name}),controller.enqueue({type:"tool-input-delta",id:toolCallId,delta:toolCall.function.arguments}),controller.enqueue({type:"tool-input-end",id:toolCallId}),controller.enqueue({type:"tool-call",toolCallId,toolName:toolCall.function.name,input:toolCall.function.arguments})}}},flush(controller){for(let[blockId,block]of Object.entries(contentBlocks))if(!block.ended)controller.enqueue({type:block.type==="text"?"text-end":"reasoning-end",id:blockId});controller.enqueue({type:"finish",finishReason,usage:usage!=null?usage:{inputTokens:{total:0,noCache:0,cacheRead:0,cacheWrite:0},outputTokens:{total:0,text:0,reasoning:0}}})}})),request:{body},response:{headers:responseHeaders}}}},xaiUsageSchema,xaiChatResponseSchema,xaiChatChunkSchema,xaiStreamErrorSchema,xaiImageModelOptions,XaiImageModel=class{constructor(modelId,config2){this.modelId=modelId,this.config=config2,this.specificationVersion="v3",this.maxImagesPerCall=3}get provider(){return this.config.provider}async doGenerate({prompt,n,size,aspectRatio,seed,providerOptions,headers,abortSignal,files,mask}){var _a16,_b16,_c,_d,_e;let warnings=[];if(size!=null)warnings.push({type:"unsupported",feature:"size",details:"This model does not support the `size` option. Use `aspectRatio` instead."});if(seed!=null)warnings.push({type:"unsupported",feature:"seed"});if(mask!=null)warnings.push({type:"unsupported",feature:"mask"});let xaiOptions=await parseProviderOptions({provider:"xai",providerOptions,schema:xaiImageModelOptions}),hasFiles=files!=null&&files.length>0,imageUrls=hasFiles?files.map((file2)=>convertImageModelFileToDataUri(file2)):[],endpoint=hasFiles?"/images/edits":"/images/generations",body={model:this.modelId,prompt,n,response_format:"b64_json"};if(aspectRatio!=null)body.aspect_ratio=aspectRatio;if((xaiOptions==null?void 0:xaiOptions.output_format)!=null)body.output_format=xaiOptions.output_format;if((xaiOptions==null?void 0:xaiOptions.sync_mode)!=null)body.sync_mode=xaiOptions.sync_mode;if((xaiOptions==null?void 0:xaiOptions.aspect_ratio)!=null&&aspectRatio==null)body.aspect_ratio=xaiOptions.aspect_ratio;if((xaiOptions==null?void 0:xaiOptions.resolution)!=null)body.resolution=xaiOptions.resolution;if((xaiOptions==null?void 0:xaiOptions.quality)!=null)body.quality=xaiOptions.quality;if((xaiOptions==null?void 0:xaiOptions.user)!=null)body.user=xaiOptions.user;if(imageUrls.length===1)body.image={url:imageUrls[0],type:"image_url"};else if(imageUrls.length>1)body.images=imageUrls.map((url2)=>({url:url2,type:"image_url"}));let baseURL=(_a16=this.config.baseURL)!=null?_a16:"https://api.x.ai/v1",currentDate=(_d=(_c=(_b16=this.config._internal)==null?void 0:_b16.currentDate)==null?void 0:_c.call(_b16))!=null?_d:new Date,{value:response,responseHeaders}=await postJsonToApi({url:`${baseURL}${endpoint}`,headers:combineHeaders(this.config.headers(),headers),body,failedResponseHandler:xaiFailedResponseHandler,successfulResponseHandler:createJsonResponseHandler(xaiImageResponseSchema),abortSignal,fetch:this.config.fetch});return{images:response.data.every((image)=>image.b64_json!=null)?response.data.map((image)=>image.b64_json):await Promise.all(response.data.map((image)=>this.downloadImage(image.url,abortSignal))),warnings,response:{timestamp:currentDate,modelId:this.modelId,headers:responseHeaders},providerMetadata:{xai:{images:response.data.map((item)=>({...item.revised_prompt?{revisedPrompt:item.revised_prompt}:{}})),...((_e=response.usage)==null?void 0:_e.cost_in_usd_ticks)!=null?{costInUsdTicks:response.usage.cost_in_usd_ticks}:{}}}}}async downloadImage(url2,abortSignal){let{value}=await getFromApi({url:url2,abortSignal,failedResponseHandler:createStatusCodeErrorResponseHandler(),successfulResponseHandler:createBinaryResponseHandler(),fetch:this.config.fetch});return value}},xaiImageResponseSchema,annotationSchema,messageContentPartSchema,reasoningSummaryPartSchema,toolCallSchema,mcpCallSchema,outputItemSchema,xaiResponsesUsageSchema,xaiResponsesResponseSchema,xaiResponsesChunkSchema,xaiLanguageModelResponsesOptions,fileSearchArgsSchema6,fileSearchOutputSchema4,fileSearchToolFactory,fileSearch6=(args)=>fileSearchToolFactory(args),mcpServerArgsSchema,mcpServerOutputSchema,mcpServerToolFactory,mcpServer=(args)=>mcpServerToolFactory(args),webSearchArgsSchema4,webSearchOutputSchema3,webSearchToolFactory4,webSearch3=(args={})=>webSearchToolFactory4(args),xSearchArgsSchema,xSearchOutputSchema,xSearchToolFactory,xSearch=(args={})=>xSearchToolFactory(args),XaiResponsesLanguageModel=class{constructor(modelId,config2){this.specificationVersion="v3",this.supportedUrls={"image/*":[/^https?:\/\/.*$/]},this.modelId=modelId,this.config=config2}get provider(){return this.config.provider}async getArgs({prompt,maxOutputTokens,temperature,topP,stopSequences,seed,responseFormat,providerOptions,tools,toolChoice}){var _a16,_b16,_c,_d,_e,_f,_g,_h;let warnings=[],options=(_a16=await parseProviderOptions({provider:"xai",providerOptions,schema:xaiLanguageModelResponsesOptions}))!=null?_a16:{};if(stopSequences!=null)warnings.push({type:"unsupported",feature:"stopSequences"});let webSearchToolName=(_b16=tools==null?void 0:tools.find((tool2)=>tool2.type==="provider"&&tool2.id==="xai.web_search"))==null?void 0:_b16.name,xSearchToolName=(_c=tools==null?void 0:tools.find((tool2)=>tool2.type==="provider"&&tool2.id==="xai.x_search"))==null?void 0:_c.name,codeExecutionToolName=(_d=tools==null?void 0:tools.find((tool2)=>tool2.type==="provider"&&tool2.id==="xai.code_execution"))==null?void 0:_d.name,mcpToolName=(_e=tools==null?void 0:tools.find((tool2)=>tool2.type==="provider"&&tool2.id==="xai.mcp"))==null?void 0:_e.name,fileSearchToolName=(_f=tools==null?void 0:tools.find((tool2)=>tool2.type==="provider"&&tool2.id==="xai.file_search"))==null?void 0:_f.name,{input,inputWarnings}=await convertToXaiResponsesInput({prompt,store:(_g=options.store)!=null?_g:!0});warnings.push(...inputWarnings);let{tools:xaiTools2,toolChoice:xaiToolChoice,toolWarnings}=await prepareResponsesTools3({tools,toolChoice});warnings.push(...toolWarnings);let include=options.include?[...options.include]:void 0;if(options.store===!1)if(include==null)include=["reasoning.encrypted_content"];else include=[...include,"reasoning.encrypted_content"];let baseArgs={model:this.modelId,input,logprobs:options.logprobs===!0||options.topLogprobs!=null?!0:void 0,top_logprobs:options.topLogprobs,max_output_tokens:maxOutputTokens,temperature,top_p:topP,seed,...(responseFormat==null?void 0:responseFormat.type)==="json"&&{text:{format:responseFormat.schema!=null?{type:"json_schema",strict:!0,name:(_h=responseFormat.name)!=null?_h:"response",description:responseFormat.description,schema:responseFormat.schema}:{type:"json_object"}}},...options.reasoningEffort!=null&&{reasoning:{effort:options.reasoningEffort}},...options.store===!1&&{store:options.store},...include!=null&&{include},...options.previousResponseId!=null&&{previous_response_id:options.previousResponseId}};if(xaiTools2&&xaiTools2.length>0)baseArgs.tools=xaiTools2;if(xaiToolChoice!=null)baseArgs.tool_choice=xaiToolChoice;return{args:baseArgs,warnings,webSearchToolName,xSearchToolName,codeExecutionToolName,mcpToolName,fileSearchToolName}}async doGenerate(options){var _a16,_b16,_c,_d,_e,_f,_g,_h,_i,_j,_k,_l,_m;let{args:body,warnings,webSearchToolName,xSearchToolName,codeExecutionToolName,mcpToolName,fileSearchToolName}=await this.getArgs(options),{responseHeaders,value:response,rawValue:rawResponse}=await postJsonToApi({url:`${(_a16=this.config.baseURL)!=null?_a16:"https://api.x.ai/v1"}/responses`,headers:combineHeaders(this.config.headers(),options.headers),body,failedResponseHandler:xaiFailedResponseHandler,successfulResponseHandler:createJsonResponseHandler(xaiResponsesResponseSchema),abortSignal:options.abortSignal,fetch:this.config.fetch}),content=[],hasFunctionCall=!1,webSearchSubTools=["web_search","web_search_with_snippets","browse_page"],xSearchSubTools=["x_user_search","x_keyword_search","x_semantic_search","x_thread_fetch"];for(let part of response.output){if(part.type==="file_search_call"){let toolName=fileSearchToolName!=null?fileSearchToolName:"file_search";content.push({type:"tool-call",toolCallId:part.id,toolName,input:"",providerExecuted:!0}),content.push({type:"tool-result",toolCallId:part.id,toolName,result:{queries:(_b16=part.queries)!=null?_b16:[],results:(_d=(_c=part.results)==null?void 0:_c.map((result)=>({fileId:result.file_id,filename:result.filename,score:result.score,text:result.text})))!=null?_d:null}});continue}if(part.type==="web_search_call"||part.type==="x_search_call"||part.type==="code_interpreter_call"||part.type==="code_execution_call"||part.type==="view_image_call"||part.type==="view_x_video_call"||part.type==="custom_tool_call"||part.type==="mcp_call"){let toolName=(_e=part.name)!=null?_e:"";if(webSearchSubTools.includes((_f=part.name)!=null?_f:"")||part.type==="web_search_call")toolName=webSearchToolName!=null?webSearchToolName:"web_search";else if(xSearchSubTools.includes((_g=part.name)!=null?_g:"")||part.type==="x_search_call")toolName=xSearchToolName!=null?xSearchToolName:"x_search";else if(part.name==="code_execution"||part.type==="code_interpreter_call"||part.type==="code_execution_call")toolName=codeExecutionToolName!=null?codeExecutionToolName:"code_execution";else if(part.type==="mcp_call")toolName=(_h=mcpToolName!=null?mcpToolName:part.name)!=null?_h:"mcp";let toolInput=part.type==="custom_tool_call"?(_i=part.input)!=null?_i:"":part.type==="mcp_call"?(_j=part.arguments)!=null?_j:"":(_k=part.arguments)!=null?_k:"";content.push({type:"tool-call",toolCallId:part.id,toolName,input:toolInput,providerExecuted:!0});continue}switch(part.type){case"message":{for(let contentPart of part.content){if(contentPart.text)content.push({type:"text",text:contentPart.text});if(contentPart.annotations){for(let annotation of contentPart.annotations)if(annotation.type==="url_citation"&&"url"in annotation)content.push({type:"source",sourceType:"url",id:this.config.generateId(),url:annotation.url,title:(_l=annotation.title)!=null?_l:annotation.url})}}break}case"function_call":{hasFunctionCall=!0,content.push({type:"tool-call",toolCallId:part.call_id,toolName:part.name,input:part.arguments});break}case"reasoning":{let reasoningText=part.summary.map((s)=>s.text).filter((text)=>text&&text.length>0).join("");if(reasoningText||part.encrypted_content){let hasMetadata=part.encrypted_content||part.id;content.push({type:"reasoning",text:reasoningText,...hasMetadata&&{providerMetadata:{xai:{...part.encrypted_content&&{reasoningEncryptedContent:part.encrypted_content},...part.id&&{itemId:part.id}}}}})}break}default:break}}return{content,finishReason:{unified:hasFunctionCall?"tool-calls":mapXaiResponsesFinishReason(response.status),raw:(_m=response.status)!=null?_m:void 0},usage:response.usage?convertXaiResponsesUsage(response.usage):{inputTokens:{total:0,noCache:0,cacheRead:0,cacheWrite:0},outputTokens:{total:0,text:0,reasoning:0}},request:{body},response:{...getResponseMetadata6(response),headers:responseHeaders,body:rawResponse},warnings}}async doStream(options){var _a16;let{args,warnings,webSearchToolName,xSearchToolName,codeExecutionToolName,mcpToolName,fileSearchToolName}=await this.getArgs(options),body={...args,stream:!0},{responseHeaders,value:response}=await postJsonToApi({url:`${(_a16=this.config.baseURL)!=null?_a16:"https://api.x.ai/v1"}/responses`,headers:combineHeaders(this.config.headers(),options.headers),body,failedResponseHandler:xaiFailedResponseHandler,successfulResponseHandler:createEventSourceResponseHandler(xaiResponsesChunkSchema),abortSignal:options.abortSignal,fetch:this.config.fetch}),finishReason={unified:"other",raw:void 0},hasFunctionCall=!1,usage=void 0,isFirstChunk=!0,contentBlocks={},seenToolCalls=new Set,ongoingToolCalls={},activeReasoning={},self2=this;return{stream:response.pipeThrough(new TransformStream({start(controller){controller.enqueue({type:"stream-start",warnings})},transform(chunk,controller){var _a22,_b16,_c,_d,_e,_f,_g,_h,_i,_j,_k,_l,_m,_n,_o;if(options.includeRawChunks)controller.enqueue({type:"raw",rawValue:chunk.rawValue});if(!chunk.success){controller.enqueue({type:"error",error:chunk.error});return}let event=chunk.value;if(event.type==="response.created"||event.type==="response.in_progress"){if(isFirstChunk)controller.enqueue({type:"response-metadata",...getResponseMetadata6(event.response)}),isFirstChunk=!1;return}if(event.type==="response.reasoning_summary_part.added"){let blockId=`reasoning-${event.item_id}`;activeReasoning[event.item_id]={},controller.enqueue({type:"reasoning-start",id:blockId,providerMetadata:{xai:{itemId:event.item_id}}})}if(event.type==="response.reasoning_summary_text.delta"){let blockId=`reasoning-${event.item_id}`;controller.enqueue({type:"reasoning-delta",id:blockId,delta:event.delta,providerMetadata:{xai:{itemId:event.item_id}}});return}if(event.type==="response.reasoning_summary_text.done")return;if(event.type==="response.reasoning_text.delta"){let blockId=`reasoning-${event.item_id}`;if(activeReasoning[event.item_id]==null)activeReasoning[event.item_id]={},controller.enqueue({type:"reasoning-start",id:blockId,providerMetadata:{xai:{itemId:event.item_id}}});controller.enqueue({type:"reasoning-delta",id:blockId,delta:event.delta,providerMetadata:{xai:{itemId:event.item_id}}});return}if(event.type==="response.reasoning_text.done")return;if(event.type==="response.output_text.delta"){let blockId=`text-${event.item_id}`;if(contentBlocks[blockId]==null)contentBlocks[blockId]={type:"text"},controller.enqueue({type:"text-start",id:blockId});controller.enqueue({type:"text-delta",id:blockId,delta:event.delta});return}if(event.type==="response.output_text.done"){if(event.annotations){for(let annotation of event.annotations)if(annotation.type==="url_citation"&&"url"in annotation)controller.enqueue({type:"source",sourceType:"url",id:self2.config.generateId(),url:annotation.url,title:(_a22=annotation.title)!=null?_a22:annotation.url})}return}if(event.type==="response.output_text.annotation.added"){let annotation=event.annotation;if(annotation.type==="url_citation"&&"url"in annotation)controller.enqueue({type:"source",sourceType:"url",id:self2.config.generateId(),url:annotation.url,title:(_b16=annotation.title)!=null?_b16:annotation.url});return}if(event.type==="response.done"||event.type==="response.completed"||event.type==="response.incomplete"){let response2=event.response;if(response2.usage)usage=convertXaiResponsesUsage(response2.usage);if(event.type==="response.incomplete"){let reason="incomplete_details"in response2?(_c=response2.incomplete_details)==null?void 0:_c.reason:void 0;finishReason={unified:reason?mapXaiResponsesFinishReason(reason):"other",raw:reason!=null?reason:"incomplete"}}else if("status"in response2&&response2.status)finishReason={unified:hasFunctionCall?"tool-calls":mapXaiResponsesFinishReason(response2.status),raw:response2.status};return}if(event.type==="response.failed"){let reason=(_d=event.response.incomplete_details)==null?void 0:_d.reason;if(finishReason={unified:reason?mapXaiResponsesFinishReason(reason):"error",raw:reason!=null?reason:"error"},event.response.usage)usage=convertXaiResponsesUsage(event.response.usage);return}if(event.type==="error"){controller.enqueue({type:"error",error:event});return}if(event.type==="response.custom_tool_call_input.delta"||event.type==="response.custom_tool_call_input.done")return;if(event.type==="response.function_call_arguments.delta"){let toolCall=ongoingToolCalls[event.output_index];if(toolCall!=null)controller.enqueue({type:"tool-input-delta",id:toolCall.toolCallId,delta:event.delta});return}if(event.type==="response.function_call_arguments.done")return;if(event.type==="response.output_item.added"||event.type==="response.output_item.done"){let part=event.item;if(part.type==="reasoning"){if(event.type==="response.output_item.done"){let blockId=`reasoning-${part.id}`;if(!(part.id in activeReasoning))activeReasoning[part.id]={},controller.enqueue({type:"reasoning-start",id:blockId,providerMetadata:{xai:{...part.id&&{itemId:part.id}}}});controller.enqueue({type:"reasoning-end",id:blockId,providerMetadata:{xai:{...part.encrypted_content&&{reasoningEncryptedContent:part.encrypted_content},...part.id&&{itemId:part.id}}}}),delete activeReasoning[part.id]}return}if(part.type==="file_search_call"){let toolName=fileSearchToolName!=null?fileSearchToolName:"file_search";if(!seenToolCalls.has(part.id))seenToolCalls.add(part.id),controller.enqueue({type:"tool-input-start",id:part.id,toolName}),controller.enqueue({type:"tool-input-delta",id:part.id,delta:""}),controller.enqueue({type:"tool-input-end",id:part.id}),controller.enqueue({type:"tool-call",toolCallId:part.id,toolName,input:"",providerExecuted:!0});if(event.type==="response.output_item.done")controller.enqueue({type:"tool-result",toolCallId:part.id,toolName,result:{queries:(_e=part.queries)!=null?_e:[],results:(_g=(_f=part.results)==null?void 0:_f.map((result)=>({fileId:result.file_id,filename:result.filename,score:result.score,text:result.text})))!=null?_g:null}});return}if(part.type==="web_search_call"||part.type==="x_search_call"||part.type==="code_interpreter_call"||part.type==="code_execution_call"||part.type==="view_image_call"||part.type==="view_x_video_call"||part.type==="custom_tool_call"||part.type==="mcp_call"){let webSearchSubTools=["web_search","web_search_with_snippets","browse_page"],xSearchSubTools=["x_user_search","x_keyword_search","x_semantic_search","x_thread_fetch"],toolName=(_h=part.name)!=null?_h:"";if(webSearchSubTools.includes((_i=part.name)!=null?_i:"")||part.type==="web_search_call")toolName=webSearchToolName!=null?webSearchToolName:"web_search";else if(xSearchSubTools.includes((_j=part.name)!=null?_j:"")||part.type==="x_search_call")toolName=xSearchToolName!=null?xSearchToolName:"x_search";else if(part.name==="code_execution"||part.type==="code_interpreter_call"||part.type==="code_execution_call")toolName=codeExecutionToolName!=null?codeExecutionToolName:"code_execution";else if(part.type==="mcp_call")toolName=(_k=mcpToolName!=null?mcpToolName:part.name)!=null?_k:"mcp";let toolInput=part.type==="custom_tool_call"?(_l=part.input)!=null?_l:"":part.type==="mcp_call"?(_m=part.arguments)!=null?_m:"":(_n=part.arguments)!=null?_n:"";if((part.type==="custom_tool_call"?event.type==="response.output_item.done":!seenToolCalls.has(part.id))&&!seenToolCalls.has(part.id))seenToolCalls.add(part.id),controller.enqueue({type:"tool-input-start",id:part.id,toolName}),controller.enqueue({type:"tool-input-delta",id:part.id,delta:toolInput}),controller.enqueue({type:"tool-input-end",id:part.id}),controller.enqueue({type:"tool-call",toolCallId:part.id,toolName,input:toolInput,providerExecuted:!0});return}if(part.type==="message")for(let contentPart of part.content){if(contentPart.text&&contentPart.text.length>0){let blockId=`text-${part.id}`;if(contentBlocks[blockId]==null)contentBlocks[blockId]={type:"text"},controller.enqueue({type:"text-start",id:blockId}),controller.enqueue({type:"text-delta",id:blockId,delta:contentPart.text})}if(contentPart.annotations){for(let annotation of contentPart.annotations)if(annotation.type==="url_citation"&&"url"in annotation)controller.enqueue({type:"source",sourceType:"url",id:self2.config.generateId(),url:annotation.url,title:(_o=annotation.title)!=null?_o:annotation.url})}}else if(part.type==="function_call"){if(event.type==="response.output_item.added")ongoingToolCalls[event.output_index]={toolName:part.name,toolCallId:part.call_id},controller.enqueue({type:"tool-input-start",id:part.call_id,toolName:part.name});else if(event.type==="response.output_item.done")hasFunctionCall=!0,ongoingToolCalls[event.output_index]=void 0,controller.enqueue({type:"tool-input-end",id:part.call_id}),controller.enqueue({type:"tool-call",toolCallId:part.call_id,toolName:part.name,input:part.arguments})}}},flush(controller){for(let[blockId,block]of Object.entries(contentBlocks))if(block.type==="text")controller.enqueue({type:"text-end",id:blockId});controller.enqueue({type:"finish",finishReason,usage:usage!=null?usage:{inputTokens:{total:0,noCache:0,cacheRead:0,cacheWrite:0},outputTokens:{total:0,text:0,reasoning:0}}})}})),request:{body},response:{headers:responseHeaders}}}},codeExecutionOutputSchema,codeExecutionToolFactory,codeExecution3=(args={})=>codeExecutionToolFactory(args),viewImageOutputSchema,viewImageToolFactory,viewImage=(args={})=>viewImageToolFactory(args),viewXVideoOutputSchema,viewXVideoToolFactory,viewXVideo=(args={})=>viewXVideoToolFactory(args),xaiTools,VERSION8="3.0.83",nonEmptyStringSchema,resolutionSchema,modeSchema,baseFields,editVideoSchema,extendVideoSchema,referenceToVideoSchema,autoDetectSchema,xaiVideoModelOptions,runtimeSchema,xaiVideoModelOptionsSchema,RESOLUTION_MAP,XaiVideoModel=class{constructor(modelId,config2){this.modelId=modelId,this.config=config2,this.specificationVersion="v3",this.maxVideosPerCall=1}get provider(){return this.config.provider}async doGenerate(options){var _a16,_b16,_c,_d,_e,_f,_g,_h,_i,_j;let currentDate=(_c=(_b16=(_a16=this.config._internal)==null?void 0:_a16.currentDate)==null?void 0:_b16.call(_a16))!=null?_c:new Date,warnings=[],xaiOptions=await parseProviderOptions({provider:"xai",providerOptions:options.providerOptions,schema:xaiVideoModelOptionsSchema}),effectiveMode=resolveVideoMode(xaiOptions),isEdit=effectiveMode==="edit-video",isExtension=effectiveMode==="extend-video",hasReferenceImages=effectiveMode==="reference-to-video";if(options.fps!=null)warnings.push({type:"unsupported",feature:"fps",details:"xAI video models do not support custom FPS."});if(options.seed!=null)warnings.push({type:"unsupported",feature:"seed",details:"xAI video models do not support seed."});if(options.n!=null&&options.n>1)warnings.push({type:"unsupported",feature:"n",details:"xAI video models do not support generating multiple videos per call. Only 1 video will be generated."});if(isEdit&&options.duration!=null)warnings.push({type:"unsupported",feature:"duration",details:"xAI video editing does not support custom duration."});if(isEdit&&options.aspectRatio!=null)warnings.push({type:"unsupported",feature:"aspectRatio",details:"xAI video editing does not support custom aspect ratio."});if(isEdit&&((xaiOptions==null?void 0:xaiOptions.resolution)!=null||options.resolution!=null))warnings.push({type:"unsupported",feature:"resolution",details:"xAI video editing does not support custom resolution."});if(isExtension&&options.aspectRatio!=null)warnings.push({type:"unsupported",feature:"aspectRatio",details:"xAI video extension does not support custom aspect ratio."});if(isExtension&&((xaiOptions==null?void 0:xaiOptions.resolution)!=null||options.resolution!=null))warnings.push({type:"unsupported",feature:"resolution",details:"xAI video extension does not support custom resolution."});let body={model:this.modelId,prompt:options.prompt},allowDuration=!isEdit,allowAspectRatio=!isEdit&&!isExtension,allowResolution=!isEdit&&!isExtension;if(allowDuration&&options.duration!=null)body.duration=options.duration;if(allowAspectRatio&&options.aspectRatio!=null)body.aspect_ratio=options.aspectRatio;if(allowResolution&&(xaiOptions==null?void 0:xaiOptions.resolution)!=null)body.resolution=xaiOptions.resolution;else if(allowResolution&&options.resolution!=null){let mapped=RESOLUTION_MAP[options.resolution];if(mapped!=null)body.resolution=mapped;else warnings.push({type:"unsupported",feature:"resolution",details:`Unrecognized resolution "${options.resolution}". Use providerOptions.xai.resolution with "480p" or "720p" instead.`})}if(isEdit)body.video={url:xaiOptions.videoUrl};if(isExtension)body.video={url:xaiOptions.videoUrl};if(options.image!=null)if(options.image.type==="url")body.image={url:options.image.url};else{let base64Data=typeof options.image.data==="string"?options.image.data:convertUint8ArrayToBase64(options.image.data);body.image={url:`data:${options.image.mediaType};base64,${base64Data}`}}if(hasReferenceImages)body.reference_images=xaiOptions.referenceImageUrls.map((url2)=>({url:url2}));if(xaiOptions!=null){for(let[key,value]of Object.entries(xaiOptions))if(!["mode","pollIntervalMs","pollTimeoutMs","resolution","videoUrl","referenceImageUrls"].includes(key))body[key]=value}let baseURL=(_d=this.config.baseURL)!=null?_d:"https://api.x.ai/v1",endpoint;if(isEdit)endpoint=`${baseURL}/videos/edits`;else if(isExtension)endpoint=`${baseURL}/videos/extensions`;else endpoint=`${baseURL}/videos/generations`;let{value:createResponse}=await postJsonToApi({url:endpoint,headers:combineHeaders(this.config.headers(),options.headers),body,failedResponseHandler:xaiFailedResponseHandler,successfulResponseHandler:createJsonResponseHandler(xaiCreateVideoResponseSchema),abortSignal:options.abortSignal,fetch:this.config.fetch}),requestId=createResponse.request_id;if(!requestId)throw new AISDKError({name:"XAI_VIDEO_GENERATION_ERROR",message:`No request_id returned from xAI API. Response: ${JSON.stringify(createResponse)}`});let pollIntervalMs=(_e=xaiOptions==null?void 0:xaiOptions.pollIntervalMs)!=null?_e:5000,pollTimeoutMs=(_f=xaiOptions==null?void 0:xaiOptions.pollTimeoutMs)!=null?_f:600000,startTime=Date.now(),responseHeaders;while(!0){if(await delay(pollIntervalMs,{abortSignal:options.abortSignal}),Date.now()-startTime>pollTimeoutMs)throw new AISDKError({name:"XAI_VIDEO_GENERATION_TIMEOUT",message:`Video generation timed out after ${pollTimeoutMs}ms`});let{value:statusResponse,responseHeaders:pollHeaders}=await getFromApi({url:`${baseURL}/videos/${requestId}`,headers:combineHeaders(this.config.headers(),options.headers),successfulResponseHandler:createJsonResponseHandler(xaiVideoStatusResponseSchema),failedResponseHandler:xaiFailedResponseHandler,abortSignal:options.abortSignal,fetch:this.config.fetch});if(responseHeaders=pollHeaders,statusResponse.status==="done"||statusResponse.status==null&&((_g=statusResponse.video)==null?void 0:_g.url)){if(((_h=statusResponse.video)==null?void 0:_h.respect_moderation)===!1)throw new AISDKError({name:"XAI_VIDEO_MODERATION_ERROR",message:"Video generation was blocked due to a content policy violation."});if(!((_i=statusResponse.video)==null?void 0:_i.url))throw new AISDKError({name:"XAI_VIDEO_GENERATION_ERROR",message:"Video generation completed but no video URL was returned."});return{videos:[{type:"url",url:statusResponse.video.url,mediaType:"video/mp4"}],warnings,response:{timestamp:currentDate,modelId:this.modelId,headers:responseHeaders},providerMetadata:{xai:{requestId,videoUrl:statusResponse.video.url,...statusResponse.video.duration!=null?{duration:statusResponse.video.duration}:{},...((_j=statusResponse.usage)==null?void 0:_j.cost_in_usd_ticks)!=null?{costInUsdTicks:statusResponse.usage.cost_in_usd_ticks}:{},...statusResponse.progress!=null?{progress:statusResponse.progress}:{}}}}}if(statusResponse.status==="expired")throw new AISDKError({name:"XAI_VIDEO_GENERATION_EXPIRED",message:"Video generation request expired."});if(statusResponse.status==="failed")throw new AISDKError({name:"XAI_VIDEO_GENERATION_FAILED",message:"Video generation failed."})}}},xaiCreateVideoResponseSchema,xaiVideoStatusResponseSchema,xai;var init_dist11=__esm(()=>{init_dist();init_dist3();init_dist();init_dist3();init_v4();init_dist();init_dist3();init_v4();init_dist3();init_v4();init_dist();init_dist3();init_v4();init_v4();init_dist3();init_dist();init_dist3();init_v4();init_v4();init_dist();init_dist3();init_dist3();init_v4();init_dist3();init_v4();init_dist3();init_v4();init_dist3();init_v4();init_dist3();init_v4();init_dist3();init_v4();init_dist3();init_v4();init_dist();init_dist3();init_v4();init_dist3();init_v4();webSourceSchema=exports_external.object({type:exports_external.literal("web"),country:exports_external.string().length(2).optional(),excludedWebsites:exports_external.array(exports_external.string()).max(5).optional(),allowedWebsites:exports_external.array(exports_external.string()).max(5).optional(),safeSearch:exports_external.boolean().optional()}),xSourceSchema=exports_external.object({type:exports_external.literal("x"),excludedXHandles:exports_external.array(exports_external.string()).optional(),includedXHandles:exports_external.array(exports_external.string()).optional(),postFavoriteCount:exports_external.number().int().optional(),postViewCount:exports_external.number().int().optional(),xHandles:exports_external.array(exports_external.string()).optional()}),newsSourceSchema=exports_external.object({type:exports_external.literal("news"),country:exports_external.string().length(2).optional(),excludedWebsites:exports_external.array(exports_external.string()).max(5).optional(),safeSearch:exports_external.boolean().optional()}),rssSourceSchema=exports_external.object({type:exports_external.literal("rss"),links:exports_external.array(exports_external.string().url()).max(1)}),searchSourceSchema=exports_external.discriminatedUnion("type",[webSourceSchema,xSourceSchema,newsSourceSchema,rssSourceSchema]),xaiLanguageModelChatOptions=exports_external.object({reasoningEffort:exports_external.enum(["low","high"]).optional(),logprobs:exports_external.boolean().optional(),topLogprobs:exports_external.number().int().min(0).max(8).optional(),parallel_function_calling:exports_external.boolean().optional(),searchParameters:exports_external.object({mode:exports_external.enum(["off","auto","on"]),returnCitations:exports_external.boolean().optional(),fromDate:exports_external.string().optional(),toDate:exports_external.string().optional(),maxSearchResults:exports_external.number().min(1).max(50).optional(),sources:exports_external.array(searchSourceSchema).optional()}).optional()}),xaiErrorDataSchema=exports_external.object({error:exports_external.object({message:exports_external.string(),type:exports_external.string().nullish(),param:exports_external.any().nullish(),code:exports_external.union([exports_external.string(),exports_external.number()]).nullish()})}),xaiFailedResponseHandler=createJsonErrorResponseHandler({errorSchema:xaiErrorDataSchema,errorToMessage:(data)=>data.error.message});xaiUsageSchema=exports_external.object({prompt_tokens:exports_external.number(),completion_tokens:exports_external.number(),total_tokens:exports_external.number(),prompt_tokens_details:exports_external.object({text_tokens:exports_external.number().nullish(),audio_tokens:exports_external.number().nullish(),image_tokens:exports_external.number().nullish(),cached_tokens:exports_external.number().nullish()}).nullish(),completion_tokens_details:exports_external.object({reasoning_tokens:exports_external.number().nullish(),audio_tokens:exports_external.number().nullish(),accepted_prediction_tokens:exports_external.number().nullish(),rejected_prediction_tokens:exports_external.number().nullish()}).nullish()}),xaiChatResponseSchema=exports_external.object({id:exports_external.string().nullish(),created:exports_external.number().nullish(),model:exports_external.string().nullish(),choices:exports_external.array(exports_external.object({message:exports_external.object({role:exports_external.literal("assistant"),content:exports_external.string().nullish(),reasoning_content:exports_external.string().nullish(),tool_calls:exports_external.array(exports_external.object({id:exports_external.string(),type:exports_external.literal("function"),function:exports_external.object({name:exports_external.string(),arguments:exports_external.string()})})).nullish()}),index:exports_external.number(),finish_reason:exports_external.string().nullish()})).nullish(),object:exports_external.literal("chat.completion").nullish(),usage:xaiUsageSchema.nullish(),citations:exports_external.array(exports_external.string().url()).nullish(),code:exports_external.string().nullish(),error:exports_external.string().nullish()}),xaiChatChunkSchema=exports_external.object({id:exports_external.string().nullish(),created:exports_external.number().nullish(),model:exports_external.string().nullish(),choices:exports_external.array(exports_external.object({delta:exports_external.object({role:exports_external.enum(["assistant"]).optional(),content:exports_external.string().nullish(),reasoning_content:exports_external.string().nullish(),tool_calls:exports_external.array(exports_external.object({id:exports_external.string(),type:exports_external.literal("function"),function:exports_external.object({name:exports_external.string(),arguments:exports_external.string()})})).nullish()}),finish_reason:exports_external.string().nullish(),index:exports_external.number()})),usage:xaiUsageSchema.nullish(),citations:exports_external.array(exports_external.string().url()).nullish()}),xaiStreamErrorSchema=exports_external.object({code:exports_external.string(),error:exports_external.string()}),xaiImageModelOptions=exports_external.object({aspect_ratio:exports_external.string().optional(),output_format:exports_external.string().optional(),sync_mode:exports_external.boolean().optional(),resolution:exports_external.enum(["1k","2k"]).optional(),quality:exports_external.enum(["low","medium","high"]).optional(),user:exports_external.string().optional()}),xaiImageResponseSchema=exports_external.object({data:exports_external.array(exports_external.object({url:exports_external.string().nullish(),b64_json:exports_external.string().nullish(),revised_prompt:exports_external.string().nullish()})),usage:exports_external.object({cost_in_usd_ticks:exports_external.number().nullish()}).nullish()});annotationSchema=exports_external.union([exports_external.object({type:exports_external.literal("url_citation"),url:exports_external.string(),title:exports_external.string().optional()}),exports_external.object({type:exports_external.string()})]),messageContentPartSchema=exports_external.object({type:exports_external.string(),text:exports_external.string().optional(),logprobs:exports_external.array(exports_external.any()).optional(),annotations:exports_external.array(annotationSchema).optional()}),reasoningSummaryPartSchema=exports_external.object({type:exports_external.string(),text:exports_external.string()}),toolCallSchema=exports_external.object({name:exports_external.string().optional(),arguments:exports_external.string().optional(),input:exports_external.string().optional(),call_id:exports_external.string().optional(),id:exports_external.string(),status:exports_external.string(),action:exports_external.any().optional()}),mcpCallSchema=exports_external.object({name:exports_external.string().optional(),arguments:exports_external.string().optional(),output:exports_external.string().optional(),error:exports_external.string().optional(),id:exports_external.string(),status:exports_external.string(),server_label:exports_external.string().optional()}),outputItemSchema=exports_external.discriminatedUnion("type",[exports_external.object({type:exports_external.literal("web_search_call"),...toolCallSchema.shape}),exports_external.object({type:exports_external.literal("x_search_call"),...toolCallSchema.shape}),exports_external.object({type:exports_external.literal("code_interpreter_call"),...toolCallSchema.shape}),exports_external.object({type:exports_external.literal("code_execution_call"),...toolCallSchema.shape}),exports_external.object({type:exports_external.literal("view_image_call"),...toolCallSchema.shape}),exports_external.object({type:exports_external.literal("view_x_video_call"),...toolCallSchema.shape}),exports_external.object({type:exports_external.literal("file_search_call"),id:exports_external.string(),status:exports_external.string(),queries:exports_external.array(exports_external.string()).optional(),results:exports_external.array(exports_external.object({file_id:exports_external.string(),filename:exports_external.string(),score:exports_external.number(),text:exports_external.string()})).nullish()}),exports_external.object({type:exports_external.literal("custom_tool_call"),...toolCallSchema.shape}),exports_external.object({type:exports_external.literal("mcp_call"),...mcpCallSchema.shape}),exports_external.object({type:exports_external.literal("message"),role:exports_external.string(),content:exports_external.array(messageContentPartSchema),id:exports_external.string(),status:exports_external.string()}),exports_external.object({type:exports_external.literal("function_call"),name:exports_external.string(),arguments:exports_external.string(),call_id:exports_external.string(),id:exports_external.string()}),exports_external.object({type:exports_external.literal("reasoning"),id:exports_external.string(),summary:exports_external.array(reasoningSummaryPartSchema),status:exports_external.string(),encrypted_content:exports_external.string().nullish()})]),xaiResponsesUsageSchema=exports_external.object({input_tokens:exports_external.number(),output_tokens:exports_external.number(),total_tokens:exports_external.number().optional(),input_tokens_details:exports_external.object({cached_tokens:exports_external.number().optional()}).optional(),output_tokens_details:exports_external.object({reasoning_tokens:exports_external.number().optional()}).optional(),num_sources_used:exports_external.number().optional(),num_server_side_tools_used:exports_external.number().optional()}),xaiResponsesResponseSchema=exports_external.object({id:exports_external.string().nullish(),created_at:exports_external.number().nullish(),model:exports_external.string().nullish(),object:exports_external.literal("response"),output:exports_external.array(outputItemSchema),usage:xaiResponsesUsageSchema.nullish(),status:exports_external.string()}),xaiResponsesChunkSchema=exports_external.union([exports_external.object({type:exports_external.literal("response.created"),response:xaiResponsesResponseSchema.partial({usage:!0,status:!0})}),exports_external.object({type:exports_external.literal("response.in_progress"),response:xaiResponsesResponseSchema.partial({usage:!0,status:!0})}),exports_external.object({type:exports_external.literal("response.output_item.added"),item:outputItemSchema,output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.output_item.done"),item:outputItemSchema,output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.content_part.added"),item_id:exports_external.string(),output_index:exports_external.number(),content_index:exports_external.number(),part:messageContentPartSchema}),exports_external.object({type:exports_external.literal("response.content_part.done"),item_id:exports_external.string(),output_index:exports_external.number(),content_index:exports_external.number(),part:messageContentPartSchema}),exports_external.object({type:exports_external.literal("response.output_text.delta"),item_id:exports_external.string(),output_index:exports_external.number(),content_index:exports_external.number(),delta:exports_external.string(),logprobs:exports_external.array(exports_external.any()).optional()}),exports_external.object({type:exports_external.literal("response.output_text.done"),item_id:exports_external.string(),output_index:exports_external.number(),content_index:exports_external.number(),text:exports_external.string(),logprobs:exports_external.array(exports_external.any()).optional(),annotations:exports_external.array(annotationSchema).optional()}),exports_external.object({type:exports_external.literal("response.output_text.annotation.added"),item_id:exports_external.string(),output_index:exports_external.number(),content_index:exports_external.number(),annotation_index:exports_external.number(),annotation:annotationSchema}),exports_external.object({type:exports_external.literal("response.reasoning_summary_part.added"),item_id:exports_external.string(),output_index:exports_external.number(),summary_index:exports_external.number(),part:reasoningSummaryPartSchema}),exports_external.object({type:exports_external.literal("response.reasoning_summary_part.done"),item_id:exports_external.string(),output_index:exports_external.number(),summary_index:exports_external.number(),part:reasoningSummaryPartSchema}),exports_external.object({type:exports_external.literal("response.reasoning_summary_text.delta"),item_id:exports_external.string(),output_index:exports_external.number(),summary_index:exports_external.number(),delta:exports_external.string()}),exports_external.object({type:exports_external.literal("response.reasoning_summary_text.done"),item_id:exports_external.string(),output_index:exports_external.number(),summary_index:exports_external.number(),text:exports_external.string()}),exports_external.object({type:exports_external.literal("response.reasoning_text.delta"),item_id:exports_external.string(),output_index:exports_external.number(),content_index:exports_external.number(),delta:exports_external.string()}),exports_external.object({type:exports_external.literal("response.reasoning_text.done"),item_id:exports_external.string(),output_index:exports_external.number(),content_index:exports_external.number(),text:exports_external.string()}),exports_external.object({type:exports_external.literal("response.web_search_call.in_progress"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.web_search_call.searching"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.web_search_call.completed"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.x_search_call.in_progress"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.x_search_call.searching"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.x_search_call.completed"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.file_search_call.in_progress"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.file_search_call.searching"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.file_search_call.completed"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.code_execution_call.in_progress"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.code_execution_call.executing"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.code_execution_call.completed"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.code_interpreter_call.in_progress"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.code_interpreter_call.executing"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.code_interpreter_call.interpreting"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.code_interpreter_call.completed"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.code_interpreter_call_code.delta"),item_id:exports_external.string(),output_index:exports_external.number(),delta:exports_external.string()}),exports_external.object({type:exports_external.literal("response.code_interpreter_call_code.done"),item_id:exports_external.string(),output_index:exports_external.number(),code:exports_external.string()}),exports_external.object({type:exports_external.literal("response.custom_tool_call_input.delta"),item_id:exports_external.string(),output_index:exports_external.number(),delta:exports_external.string()}),exports_external.object({type:exports_external.literal("response.custom_tool_call_input.done"),item_id:exports_external.string(),output_index:exports_external.number(),input:exports_external.string()}),exports_external.object({type:exports_external.literal("response.function_call_arguments.delta"),item_id:exports_external.string(),output_index:exports_external.number(),delta:exports_external.string()}),exports_external.object({type:exports_external.literal("response.function_call_arguments.done"),item_id:exports_external.string(),output_index:exports_external.number(),arguments:exports_external.string()}),exports_external.object({type:exports_external.literal("response.mcp_call.in_progress"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.mcp_call.executing"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.mcp_call.completed"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.mcp_call.failed"),item_id:exports_external.string(),output_index:exports_external.number()}),exports_external.object({type:exports_external.literal("response.mcp_call_arguments.delta"),item_id:exports_external.string(),output_index:exports_external.number(),delta:exports_external.string()}),exports_external.object({type:exports_external.literal("response.mcp_call_arguments.done"),item_id:exports_external.string(),output_index:exports_external.number(),arguments:exports_external.string().optional()}),exports_external.object({type:exports_external.literal("response.mcp_call_output.delta"),item_id:exports_external.string(),output_index:exports_external.number(),delta:exports_external.string()}),exports_external.object({type:exports_external.literal("response.mcp_call_output.done"),item_id:exports_external.string(),output_index:exports_external.number(),output:exports_external.string().optional()}),exports_external.object({type:exports_external.literal("response.incomplete"),response:exports_external.object({incomplete_details:exports_external.object({reason:exports_external.string()}).nullish(),usage:xaiResponsesUsageSchema.nullish()})}),exports_external.object({type:exports_external.literal("response.failed"),response:exports_external.object({error:exports_external.object({code:exports_external.string().nullish(),message:exports_external.string()}).nullish(),incomplete_details:exports_external.object({reason:exports_external.string()}).nullish(),usage:xaiResponsesUsageSchema.nullish()})}),exports_external.object({type:exports_external.literal("error"),code:exports_external.string().nullish(),message:exports_external.string(),param:exports_external.string().nullish()}),exports_external.object({type:exports_external.literal("response.done"),response:xaiResponsesResponseSchema}),exports_external.object({type:exports_external.literal("response.completed"),response:xaiResponsesResponseSchema})]),xaiLanguageModelResponsesOptions=exports_external.object({reasoningEffort:exports_external.enum(["low","medium","high"]).optional(),logprobs:exports_external.boolean().optional(),topLogprobs:exports_external.number().int().min(0).max(8).optional(),store:exports_external.boolean().optional(),previousResponseId:exports_external.string().optional(),include:exports_external.array(exports_external.enum(["file_search_call.results"])).nullish()}),fileSearchArgsSchema6=lazySchema(()=>zodSchema(exports_external.object({vectorStoreIds:exports_external.array(exports_external.string()),maxNumResults:exports_external.number().optional()}))),fileSearchOutputSchema4=lazySchema(()=>zodSchema(exports_external.object({queries:exports_external.array(exports_external.string()),results:exports_external.array(exports_external.object({fileId:exports_external.string(),filename:exports_external.string(),score:exports_external.number().min(0).max(1),text:exports_external.string()})).nullable()}))),fileSearchToolFactory=createProviderToolFactoryWithOutputSchema({id:"xai.file_search",inputSchema:lazySchema(()=>zodSchema(exports_external.object({}))),outputSchema:fileSearchOutputSchema4}),mcpServerArgsSchema=lazySchema(()=>zodSchema(exports_external.object({serverUrl:exports_external.string().describe("The URL of the MCP server"),serverLabel:exports_external.string().optional().describe("A label for the MCP server"),serverDescription:exports_external.string().optional().describe("Description of the MCP server"),allowedTools:exports_external.array(exports_external.string()).optional().describe("List of allowed tool names"),headers:exports_external.record(exports_external.string(),exports_external.string()).optional().describe("Custom headers to send"),authorization:exports_external.string().optional().describe("Authorization header value")}))),mcpServerOutputSchema=lazySchema(()=>zodSchema(exports_external.object({name:exports_external.string(),arguments:exports_external.string(),result:exports_external.unknown()}))),mcpServerToolFactory=createProviderToolFactoryWithOutputSchema({id:"xai.mcp",inputSchema:lazySchema(()=>zodSchema(exports_external.object({}))),outputSchema:mcpServerOutputSchema}),webSearchArgsSchema4=lazySchema(()=>zodSchema(exports_external.object({allowedDomains:exports_external.array(exports_external.string()).max(5).optional(),excludedDomains:exports_external.array(exports_external.string()).max(5).optional(),enableImageUnderstanding:exports_external.boolean().optional()}))),webSearchOutputSchema3=lazySchema(()=>zodSchema(exports_external.object({query:exports_external.string(),sources:exports_external.array(exports_external.object({title:exports_external.string(),url:exports_external.string(),snippet:exports_external.string()}))}))),webSearchToolFactory4=createProviderToolFactoryWithOutputSchema({id:"xai.web_search",inputSchema:lazySchema(()=>zodSchema(exports_external.object({}))),outputSchema:webSearchOutputSchema3}),xSearchArgsSchema=lazySchema(()=>zodSchema(exports_external.object({allowedXHandles:exports_external.array(exports_external.string()).max(10).optional(),excludedXHandles:exports_external.array(exports_external.string()).max(10).optional(),fromDate:exports_external.string().optional(),toDate:exports_external.string().optional(),enableImageUnderstanding:exports_external.boolean().optional(),enableVideoUnderstanding:exports_external.boolean().optional()}))),xSearchOutputSchema=lazySchema(()=>zodSchema(exports_external.object({query:exports_external.string(),posts:exports_external.array(exports_external.object({author:exports_external.string(),text:exports_external.string(),url:exports_external.string(),likes:exports_external.number()}))}))),xSearchToolFactory=createProviderToolFactoryWithOutputSchema({id:"xai.x_search",inputSchema:lazySchema(()=>zodSchema(exports_external.object({}))),outputSchema:xSearchOutputSchema});codeExecutionOutputSchema=exports_external.object({output:exports_external.string().describe("the output of the code execution"),error:exports_external.string().optional().describe("any error that occurred")}),codeExecutionToolFactory=createProviderToolFactoryWithOutputSchema({id:"xai.code_execution",inputSchema:exports_external.object({}).describe("no input parameters"),outputSchema:codeExecutionOutputSchema}),viewImageOutputSchema=exports_external.object({description:exports_external.string().describe("description of the image"),objects:exports_external.array(exports_external.string()).optional().describe("objects detected in the image")}),viewImageToolFactory=createProviderToolFactoryWithOutputSchema({id:"xai.view_image",inputSchema:exports_external.object({}).describe("no input parameters"),outputSchema:viewImageOutputSchema}),viewXVideoOutputSchema=exports_external.object({transcript:exports_external.string().optional().describe("transcript of the video"),description:exports_external.string().describe("description of the video content"),duration:exports_external.number().optional().describe("duration in seconds")}),viewXVideoToolFactory=createProviderToolFactoryWithOutputSchema({id:"xai.view_x_video",inputSchema:exports_external.object({}).describe("no input parameters"),outputSchema:viewXVideoOutputSchema}),xaiTools={codeExecution:codeExecution3,fileSearch:fileSearch6,mcpServer,viewImage,viewXVideo,webSearch:webSearch3,xSearch},nonEmptyStringSchema=exports_external.string().min(1),resolutionSchema=exports_external.enum(["480p","720p"]),modeSchema=exports_external.enum(["edit-video","extend-video","reference-to-video"]),baseFields={pollIntervalMs:exports_external.number().positive().nullish(),pollTimeoutMs:exports_external.number().positive().nullish(),resolution:resolutionSchema.nullish()},editVideoSchema=exports_external.object({...baseFields,mode:exports_external.literal("edit-video"),videoUrl:nonEmptyStringSchema,referenceImageUrls:exports_external.undefined().optional()}),extendVideoSchema=exports_external.object({...baseFields,mode:exports_external.literal("extend-video"),videoUrl:nonEmptyStringSchema,referenceImageUrls:exports_external.undefined().optional()}),referenceToVideoSchema=exports_external.object({...baseFields,mode:exports_external.literal("reference-to-video"),referenceImageUrls:exports_external.array(nonEmptyStringSchema).min(1).max(7),videoUrl:exports_external.undefined().optional()}),autoDetectSchema=exports_external.object({...baseFields,mode:exports_external.undefined().optional(),videoUrl:nonEmptyStringSchema.optional(),referenceImageUrls:exports_external.array(nonEmptyStringSchema).min(1).max(7).optional()}),xaiVideoModelOptions=exports_external.union([editVideoSchema,extendVideoSchema,referenceToVideoSchema,autoDetectSchema]),runtimeSchema=exports_external.object({mode:modeSchema.optional(),videoUrl:nonEmptyStringSchema.optional(),referenceImageUrls:exports_external.array(nonEmptyStringSchema).min(1).max(7).optional(),...baseFields}).passthrough(),xaiVideoModelOptionsSchema=lazySchema(()=>zodSchema(runtimeSchema)),RESOLUTION_MAP={"1280x720":"720p","854x480":"480p","640x480":"480p"};xaiCreateVideoResponseSchema=exports_external.object({request_id:exports_external.string().nullish()}),xaiVideoStatusResponseSchema=exports_external.object({status:exports_external.string().nullish(),video:exports_external.object({url:exports_external.string(),duration:exports_external.number().nullish(),respect_moderation:exports_external.boolean().nullish()}).nullish(),model:exports_external.string().nullish(),usage:exports_external.object({cost_in_usd_ticks:exports_external.number().nullish()}).nullish(),progress:exports_external.number().nullish(),error:exports_external.object({code:exports_external.string().nullish(),message:exports_external.string().nullish()}).nullish()});xai=createXai()});function prepareXaiCall(context){let model=createProvider9(context.options,context.debug).chat(context.request.model.modelId),reasoningEffort=resolveLowHighReasoningEffort(context.request.reasoning);return{model,callOptions:{prompt:messagesToLanguageModelPrompt(context.request.messages),tools:mapToolDefinitionsToLanguageModelTools(context.request.tools,{schemaProfile:"strictTopLevelObject"}),maxOutputTokens:context.request.maxOutputTokens,temperature:context.request.temperature,topP:context.request.topP,stopSequences:context.request.stop,abortSignal:context.request.signal,...reasoningEffort?{providerOptions:{xai:{reasoningEffort}}}:{}},debug:context.debug}}function createProvider9(options,debug){let stripAuthorization=!options.apiKey&&!hasHeader(options.headers,"authorization");return warnIfPlaceholderApiKey({provider:"xAI",shouldWarn:stripAuthorization,logger:options.logger}),createXai({apiKey:options.apiKey??PLACEHOLDER_API_KEY9,baseURL:normalizeBaseUrl8(options.baseUrl),headers:options.headers,fetch:createProviderFetch({fetch:options.fetch,stripHeaders:["authorization"],stripWhen:stripAuthorization,debug})})}function normalizeBaseUrl8(baseUrl){return(baseUrl??DEFAULT_BASE_URL7).replace(/\/$/,"")}var DEFAULT_BASE_URL7="https://api.x.ai/v1",PLACEHOLDER_API_KEY9="dim-placeholder-key",xaiDriver,createXaiAdapter;var init_xai=__esm(()=>{init_create_provider_factory();init_reasoning();init_dist();init_dist11();xaiDriver={async generate(context){return generateWithAiSdk(prepareXaiCall(context))},stream(context){return streamWithAiSdk(prepareXaiCall(context))},normalizeError(error48){if(APICallError.isInstance(error48))return createApiCallErrorPayload({code:"xai_http_error",provider:"xAI",error:error48});return createRequestErrorPayload({code:"xai_request_error",error:error48})}};createXaiAdapter=createProviderFactory({defaultProvider:"xai",driver:xaiDriver})});function sliceMessagesForXaiResponses(messages,usePreviousResponseId=!1){return sliceMessagesForResponses(messages,XAI_RESPONSES_STATE_KEY,usePreviousResponseId)}function createXaiResponsesAssistantMetadata(result){return createResponsesAssistantMetadata({result,stateKey:XAI_RESPONSES_STATE_KEY,providerMetadataKey:"xai"})}function prepareXaiResponsesCall(context){let model=createProvider10(context.options,context.debug).responses(context.request.model.modelId),{messages,previousResponseId}=sliceMessagesForXaiResponses(context.request.messages,context.options.usePreviousResponseId),reasoningEffort=resolveLowMediumHighReasoningEffort(context.request.reasoning),xaiProviderOptions={...reasoningEffort?{reasoningEffort}:{},...previousResponseId?{previousResponseId}:{}};return{model,callOptions:{prompt:messagesToLanguageModelPrompt(messages),tools:mapToolDefinitionsToLanguageModelTools(context.request.tools,{schemaProfile:"strictTopLevelObject"}),maxOutputTokens:context.request.maxOutputTokens,temperature:context.request.temperature,topP:context.request.topP,stopSequences:context.request.stop,abortSignal:context.request.signal,...Object.keys(xaiProviderOptions).length>0?{providerOptions:{xai:xaiProviderOptions}}:{}},debug:context.debug,createAssistantMetadata:createXaiResponsesAssistantMetadata}}function createProvider10(options,debug){let stripAuthorization=!options.apiKey&&!hasHeader(options.headers,"authorization");return warnIfPlaceholderApiKey({provider:"xAI Responses",shouldWarn:stripAuthorization,logger:options.logger}),createXai({apiKey:options.apiKey??PLACEHOLDER_API_KEY10,baseURL:normalizeBaseUrl9(options.baseUrl),headers:options.headers,fetch:createProviderFetch({fetch:options.fetch,stripHeaders:["authorization"],stripWhen:stripAuthorization,debug})})}function normalizeBaseUrl9(baseUrl){return(baseUrl??DEFAULT_BASE_URL8).replace(/\/$/,"")}var XAI_RESPONSES_STATE_KEY="xaiResponses",DEFAULT_BASE_URL8="https://api.x.ai/v1",PLACEHOLDER_API_KEY10="dim-placeholder-key",xaiResponsesDriver,createXaiResponsesAdapter;var init_xai_responses=__esm(()=>{init_create_provider_factory();init_reasoning();init_responses_state();init_dist();init_dist11();xaiResponsesDriver={async generate(context){return generateWithAiSdk(prepareXaiResponsesCall(context))},stream(context){return streamWithAiSdk(prepareXaiResponsesCall(context))},normalizeError(error48){if(APICallError.isInstance(error48))return createApiCallErrorPayload({code:"xai_responses_http_error",provider:"xAI Responses",error:error48});return createRequestErrorPayload({code:"xai_responses_request_error",error:error48})}};createXaiResponsesAdapter=createProviderFactory({defaultProvider:"xai-responses",driver:xaiResponsesDriver})});function prepareOpenAICompatibleCall(context){let model=createOpenAICompatibleProvider(context.options,context.debug).chatModel(context.request.model.modelId),zenmuxProviderOptions=buildReasoningEffortProviderOptions(context.request.reasoning,ZENMUX_REASONING_EFFORTS);return{model,callOptions:{prompt:messagesToLanguageModelPrompt(context.request.messages),tools:mapToolDefinitionsToLanguageModelTools(context.request.tools,{schemaProfile:"strictTopLevelObject"}),maxOutputTokens:context.request.maxOutputTokens,temperature:context.request.temperature,topP:context.request.topP,stopSequences:context.request.stop,abortSignal:context.request.signal,...zenmuxProviderOptions?{providerOptions:{[OPENAI_COMPATIBLE_PROVIDER_NAME]:zenmuxProviderOptions}}:{}},debug:context.debug}}function getAnthropicRouteContext(context){if(!shouldRouteToAnthropic(context.request.model.modelId))return;return{...context,options:toAnthropicOptions(context.options),request:{...context.request,reasoning:toAnthropicReasoning(context.request.reasoning)}}}function shouldRouteToAnthropic(modelId){return modelId.startsWith("anthropic/")}function toAnthropicOptions(options){return{...copyProviderFactoryBaseOptions(options),apiKey:options.apiKey,baseUrl:DEFAULT_ANTHROPIC_BASE_URL,fetch:options.fetch,headers:resolveZenMuxHeaders(options)}}function copyProviderFactoryBaseOptions(options){return{defaultModel:options.defaultModel,provider:options.provider,streamMode:options.streamMode,debug:options.debug,logger:options.logger}}function resolveZenMuxHeaders(options){let merged=new Map;if(options.organization)merged.set("zenmux-organization",["ZenMux-Organization",options.organization]);if(options.project)merged.set("zenmux-project",["ZenMux-Project",options.project]);for(let[key,value]of Object.entries(options.headers??{}))merged.set(key.toLowerCase(),[key,value]);if(merged.size===0)return;return Object.fromEntries(merged.values())}function toAnthropicReasoning(reasoning){if(!reasoning)return reasoning;if(reasoning.enabled===!1)return reasoning;if(hasExplicitReasoningBudget(reasoning))return reasoning;let rawEffort=reasoning.effort;if(typeof rawEffort!=="string")return reasoning;let budgetTokens=ANTHROPIC_REASONING_BUDGETS[rawEffort];if(!budgetTokens)return reasoning;return{...reasoning,budgetTokens}}function hasExplicitReasoningBudget(reasoning){return"budgetTokens"in reasoning}function createOpenAICompatibleProvider(options,debug){let stripAuthorization=!options.apiKey&&!hasHeader(options.headers,"authorization");return warnIfPlaceholderApiKey({provider:"ZenMux",shouldWarn:stripAuthorization,logger:options.logger}),createOpenAICompatible({name:OPENAI_COMPATIBLE_PROVIDER_NAME,apiKey:options.apiKey??PLACEHOLDER_API_KEY11,baseURL:DEFAULT_BASE_URL9,includeUsage:!0,headers:resolveZenMuxHeaders(options),fetch:createProviderFetch({fetch:options.fetch,stripHeaders:["authorization"],stripWhen:stripAuthorization,debug})})}function warnIfIgnoredBaseUrl(options){if(!options.baseUrl||ignoredBaseUrlWarningShown)return;ignoredBaseUrlWarningShown=!0,options.logger?.emit({level:"warn",source:"provider.config",message:"ZenMux adapter now ignores baseUrl and always routes through the official ZenMux endpoints. Remove baseUrl to avoid configuration drift.",metadata:{provider:"zenmux",kind:"ignored_option",option:"baseUrl"}})}var DEFAULT_BASE_URL9="https://zenmux.ai/api/v1",DEFAULT_ANTHROPIC_BASE_URL="https://zenmux.ai/api/anthropic",OPENAI_COMPATIBLE_PROVIDER_NAME="zenmux",PLACEHOLDER_API_KEY11="dim-placeholder-key",ZENMUX_REASONING_EFFORTS,ANTHROPIC_REASONING_BUDGETS,ignoredBaseUrlWarningShown=!1,zenmuxDriver,createZenMuxAdapter;var init_zenmux=__esm(()=>{init_create_provider_factory();init_reasoning();init_driver();init_dist();init_dist4();ZENMUX_REASONING_EFFORTS=["minimal","low","medium","high"],ANTHROPIC_REASONING_BUDGETS={none:512,minimal:512,low:1024,medium:2048,high:4096,xhigh:4096},zenmuxDriver={async generate(context){warnIfIgnoredBaseUrl(context.options);let anthropicContext=getAnthropicRouteContext(context);if(anthropicContext&&anthropicDriver.generate)return anthropicDriver.generate(anthropicContext);return generateWithAiSdk(prepareOpenAICompatibleCall(context))},stream(context){warnIfIgnoredBaseUrl(context.options);let anthropicContext=getAnthropicRouteContext(context);if(anthropicContext&&anthropicDriver.stream)return anthropicDriver.stream(anthropicContext);return streamWithAiSdk(prepareOpenAICompatibleCall(context))},normalizeError(error48){if(APICallError.isInstance(error48))return createApiCallErrorPayload({code:"zenmux_http_error",provider:"ZenMux",error:error48});return createRequestErrorPayload({code:"zenmux_request_error",error:error48})}};createZenMuxAdapter=createProviderFactory({defaultProvider:"zenmux",driver:zenmuxDriver})});import{createRequire as createRequire2}from"node:module";import path6 from"node:path";import{fileURLToPath,pathToFileURL}from"node:url";function isTruthyEnv(value){if(!value)return!1;let normalized=value.trim().toLowerCase();return normalized.length>0&&normalized!=="0"&&normalized!=="false"&&normalized!=="off"}function normalizeFactoryId(id,label){if(typeof id!=="string"||id.trim().length===0)throw TypeError(`${label} is required`);return id.trim()}function normalizeModuleFactorySource(source,factoryId){if(!source||source.type!=="module")throw TypeError(`Process factory "${factoryId}" must declare a module source`);if(typeof source.specifier!=="string"||source.specifier.trim().length===0)throw TypeError(`Process factory "${factoryId}" module specifier is required`);if(typeof source.exportName!=="string"||source.exportName.trim().length===0)throw TypeError(`Process factory "${factoryId}" exportName is required`);return{type:"module",specifier:normalizeModuleSpecifier(source.specifier),exportName:source.exportName.trim()}}function normalizeModuleSpecifier(specifier){let trimmed=specifier.trim();if(trimmed.startsWith("file://"))return normalizeFileUrlSpecifier(trimmed);if(isRelativeModuleSpecifier(trimmed))throw TypeError("Process factory module specifiers must use a package specifier, absolute path, or file URL; relative paths are not stable across child processes");if(path6.isAbsolute(trimmed))return pathToFileURL(trimmed).toString();return trimmed}function normalizeFileUrlSpecifier(specifier){try{return pathToFileURL(fileURLToPath(specifier)).toString()}catch{throw TypeError(`Invalid process factory file URL: ${specifier}`)}}function isRelativeModuleSpecifier(specifier){return specifier.startsWith("./")||specifier.startsWith("../")||specifier.startsWith(".\\")||specifier.startsWith("..\\")}function normalizeRuntimeProfile(profile){if(!profile||typeof profile!=="object")throw TypeError("Process runtime profile must be an object");if(typeof profile.id!=="string"||profile.id.trim().length===0)throw TypeError("Process runtime profile id is required");if(!profile.model||typeof profile.model.factoryId!=="string"||profile.model.factoryId.trim().length===0)throw TypeError(`Process runtime profile "${profile.id}" requires a model factoryId`);if(profile.plugins&&!Array.isArray(profile.plugins))throw TypeError(`Process runtime profile "${profile.id}" plugins must be an array`);return structuredClone({...profile,id:profile.id.trim(),model:{factoryId:profile.model.factoryId.trim(),options:profile.model.options?structuredClone(profile.model.options):void 0},plugins:profile.plugins?.map((plugin)=>{if(!plugin||typeof plugin.factoryId!=="string"||plugin.factoryId.trim().length===0)throw TypeError(`Process runtime profile "${profile.id}" contains an invalid plugin factoryId`);return{factoryId:plugin.factoryId.trim(),options:plugin.options?structuredClone(plugin.options):void 0}})??[],metadata:profile.metadata?structuredClone(profile.metadata):void 0,reasoning:profile.reasoning?structuredClone(profile.reasoning):void 0,cache:profile.cache?structuredClone(profile.cache):void 0,compaction:profile.compaction?structuredClone(profile.compaction):void 0})}var require2,SUBAGENT_PROCESS_DEBUG,SubagentProcessRegistry=class{modelFactories=new Map;pluginFactories=new Map;profiles=new Map;constructor(){for(let id of builtinSubagentProcessModelFactoryIds)this.modelFactories.set(id,{id,source:{type:"builtin"}})}registerModelFactory(registration){let normalized={id:normalizeFactoryId(registration.id,"Process model factory id"),source:normalizeModuleFactorySource(registration.source,registration.id)};if(this.modelFactories.get(normalized.id)?.source.type==="builtin")throw Error(`Cannot override built-in process model factory "${normalized.id}"`);return this.modelFactories.set(normalized.id,normalized),this}registerPluginFactory(registration){let normalized={id:normalizeFactoryId(registration.id,"Process plugin factory id"),source:normalizeModuleFactorySource(registration.source,registration.id)};return this.pluginFactories.set(normalized.id,normalized),this}registerProfile(profile){let normalized=normalizeRuntimeProfile(profile);return this.profiles.set(normalized.id,normalized),this}getProfile(profileId){let profile=this.profiles.get(profileId);return profile?structuredClone(profile):void 0}hasModelFactory(factoryId){return this.modelFactories.has(factoryId)}hasPluginFactory(factoryId){return this.pluginFactories.has(factoryId)}createBootstrap(profileId){let profile=this.profiles.get(profileId);if(!profile)throw Error(`Unknown subagent process profile: ${profileId}`);let modelFactory=this.modelFactories.get(profile.model.factoryId);if(!modelFactory)throw Error(`Unknown process model factory "${profile.model.factoryId}" for profile "${profileId}"`);let pluginFactories=profile.plugins?.map((descriptor)=>{let registration=this.pluginFactories.get(descriptor.factoryId);if(!registration)throw Error(`Unknown process plugin factory "${descriptor.factoryId}" for profile "${profileId}"`);return structuredClone(registration)})??[];return{profile:structuredClone(profile),modelFactory:structuredClone(modelFactory),pluginFactories}}};var init_dist12=__esm(()=>{init_tool_result_output();init_subagent_process_builtins();init_aihubmix();init_aihubmix_responses();init_driver();init_anthropic();init_deepseek();init_gemini();init_moonshotai();init_openai();init_openai_responses();init_xai();init_xai_responses();init_zenmux();require2=createRequire2(import.meta.url),SUBAGENT_PROCESS_DEBUG=isTruthyEnv(process.env.DIM_SUBAGENT_PROCESS_DEBUG)});function denyToolCall(reason,result){return{type:"deny",reason,result}}function askToolCall(request,toolCall){return{type:"ask",request,toolCall}}function finalizeRun(finalMessage,additionalContext){return{type:"finalize",finalMessage,additionalContext}}var init_dist13=()=>{};var exports_dist={};__export(exports_dist,{createAutoCompactPlugin:()=>createAutoCompactPlugin});function createAutoCompactPlugin(options={}){let resolved=resolveOptions(options);return{manifest:{id:options.id??"auto-compact",version:"0.2.0",apiVersion:1,permissions:{model:!0},capabilities:["auto-compact"]},setup(context){return{inspector:{getConfig:async()=>{let config2={maxSummaryTokens:resolved.maxSummaryTokens,summaryInputMaxTokens:resolved.summaryInputMaxTokens,summaryPrompt:resolved.summaryPrompt,retainMessages:resolved.retainMessages,compaction:{auto:resolved.compaction.auto,prune:resolved.compaction.prune,reserved:resolved.compaction.reserved}};if(resolved.summaryModel)config2.summaryModel={provider:resolved.summaryModel.provider,modelId:resolved.summaryModel.modelId};return config2},getSessionState:async(sessionId)=>structuredClone(readPluginState(await context.services.pluginState.get(sessionId)))},createSessionController:(controllerContext)=>createAutoCompactController({options:resolved,logger:context.services.logger,model:context.services.model,context:controllerContext})}}}}function createAutoCompactController(input){return{readPlanningOptions(){return{auto:input.options.compaction.auto,retainMessages:input.options.retainMessages,reservedTokens:input.options.compaction.reserved,summaryTokenReserve:input.options.maxSummaryTokens}},async compact(request){let sessionStatus=input.context.getStatus(),summaryModel=input.options.summaryModel??sessionStatus.model;if(!summaryModel){let result={status:"skipped",reasonCode:"missing_summary_model",reasonMessage:"Auto compact summary model is unavailable",diagnostics:{}};return await persistPluginState(input.context,{strategy:"controller-v2",...input.options.summaryModel?{summaryModel:input.options.summaryModel}:{},lastResult:createPersistedResult(request,result)}),result}try{let summary=await generateSummary({contextStatus:sessionStatus,summaryModel,maxSummaryTokens:input.options.maxSummaryTokens,summaryInputMaxTokens:input.options.summaryInputMaxTokens,summaryPrompt:input.options.summaryPrompt,existingSystemSegments:request.plan.existingSystemSegments,compactedMessages:request.plan.compactedMessages,summaryInputMode:request.summaryInputMode,pruneToolOutputs:input.options.compaction.prune,sessionId:input.context.sessionId,usageKind:request.plan.trigger==="manual"?"manual_compaction":"auto_compaction",model:input.model,logger:input.logger}),result=summary.status==="normalized"?{status:"compacted",summary:summary.summary,diagnostics:{summaryNormalization:summary.summaryNormalization,summaryInputTokens:summary.summaryInputTokens,summaryOutputTokensEstimate:summary.summaryOutputTokensEstimate,summaryChars:summary.summaryChars,summaryCallCount:summary.summaryCallCount,summaryChunkCount:summary.summaryChunkCount,prunedToolOutputCount:summary.prunedToolOutputCount,preservedToolOutputCount:summary.preservedToolOutputCount}}:summary.status==="empty_body_preserve_previous"?{status:"skipped",reasonCode:"empty_summary_preserved_previous",reasonMessage:"Summary generation produced an empty body and preserved the existing continuation summary",diagnostics:{}}:{status:"failed",reasonCode:"invalid_summary_contract",reasonMessage:"Auto compact summary body cannot be empty",diagnostics:{}};return await persistPluginState(input.context,{strategy:"controller-v2",summaryModel,lastResult:createPersistedResult(request,result)}),result}catch(error48){let result={status:"failed",reasonCode:readErrorCode2(error48)??"summary_generation_failed",reasonMessage:readErrorMessage2(error48),diagnostics:{}};return await persistPluginState(input.context,{strategy:"controller-v2",summaryModel,lastResult:createPersistedResult(request,result)}),result}}}}function resolveOptions(options){return{summaryModel:options.summaryModel,maxSummaryTokens:positiveIntegerOr(options.maxSummaryTokens,1024),summaryInputMaxTokens:Math.max(1280,positiveIntegerOr(options.summaryInputMaxTokens,16000)),summaryPrompt:options.summaryPrompt?.trim()||`You have been working on the task described above but have not yet completed it. Write a continuation summary that will allow you (or another instance of yourself) to resume work efficiently in a future context window where the conversation history will be replaced with this summary. Your summary should be structured, concise, and actionable. Include:
|
|
116
116
|
|
|
117
117
|
Task Overview
|
|
118
118
|
The user's core request and success criteria
|
|
@@ -167,12 +167,12 @@ output omitted for compaction summary (originalChars=${text.length})`,prunedTool
|
|
|
167
167
|
`)),normalization:blockMatches.length===1&&match?.index===0&&match[0].length===trimmed.length?"wrapped_block":"extracted_block"}}let stripped=stripContinuationSummaryTagFragments(trimmed).trim();if(!stripped)return{status:"empty_body"};return{status:"normalized",summary:renderCanonicalContinuationSummary(stripped),normalization:stripped===trimmed?"plain_text":"extracted_block"}}function renderCanonicalContinuationSummary(body){return`<continuation_summary>
|
|
168
168
|
${body}
|
|
169
169
|
</continuation_summary>`}function stripContinuationSummaryTagFragments(text){return text.replace(CONTINUATION_SUMMARY_TAG_FRAGMENT_PATTERN,`
|
|
170
|
-
`)}function mergeSummaryNormalizationModes(left,right){let rank={plain_text:0,wrapped_block:1,extracted_block:2};return rank[left]>=rank[right]?left:right}async function persistPluginState(context,state){await context.pluginState.replace(context.sessionId,{version:2,data:serializePluginState(state),updatedAt:Date.now()})}function readPluginState(entry){if(!entry||entry.version!==2)return{strategy:"controller-v2"};if(!isAutoCompactPluginStateData(entry.data))return{strategy:"controller-v2"};return structuredClone(entry.data)}function serializePluginState(state){let serialized={strategy:state.strategy};if(state.summaryModel)serialized.summaryModel={provider:state.summaryModel.provider,modelId:state.summaryModel.modelId};if(state.lastResult){if(serialized.lastResult={trigger:state.lastResult.trigger,status:state.lastResult.status,compactedMessageCount:state.lastResult.compactedMessageCount,retainedMessageCount:state.lastResult.retainedMessageCount,updatedAt:state.lastResult.updatedAt},state.lastResult.reasonCode)serialized.lastResult.reasonCode=state.lastResult.reasonCode;if(state.lastResult.reasonMessage)serialized.lastResult.reasonMessage=state.lastResult.reasonMessage;if(state.lastResult.summaryNormalization)serialized.lastResult.summaryNormalization=state.lastResult.summaryNormalization;if(typeof state.lastResult.summaryInputTokens==="number")serialized.lastResult.summaryInputTokens=state.lastResult.summaryInputTokens;if(typeof state.lastResult.summaryOutputTokensEstimate==="number")serialized.lastResult.summaryOutputTokensEstimate=state.lastResult.summaryOutputTokensEstimate;if(typeof state.lastResult.summaryChars==="number")serialized.lastResult.summaryChars=state.lastResult.summaryChars;if(typeof state.lastResult.summaryCallCount==="number")serialized.lastResult.summaryCallCount=state.lastResult.summaryCallCount;if(typeof state.lastResult.summaryChunkCount==="number")serialized.lastResult.summaryChunkCount=state.lastResult.summaryChunkCount;if(typeof state.lastResult.prunedToolOutputCount==="number")serialized.lastResult.prunedToolOutputCount=state.lastResult.prunedToolOutputCount;if(typeof state.lastResult.preservedToolOutputCount==="number")serialized.lastResult.preservedToolOutputCount=state.lastResult.preservedToolOutputCount}return serialized}function createPersistedResult(request,result){return{trigger:request.plan.trigger,status:result.status,compactedMessageCount:request.plan.compactedMessages.length,retainedMessageCount:request.plan.retainedMessages.length,updatedAt:Date.now(),...result.reasonCode?{reasonCode:result.reasonCode}:{},...result.reasonMessage?{reasonMessage:result.reasonMessage}:{},...result.diagnostics.summaryNormalization?{summaryNormalization:result.diagnostics.summaryNormalization}:{},...typeof result.diagnostics.summaryInputTokens==="number"?{summaryInputTokens:result.diagnostics.summaryInputTokens}:{},...typeof result.diagnostics.summaryOutputTokensEstimate==="number"?{summaryOutputTokensEstimate:result.diagnostics.summaryOutputTokensEstimate}:{},...typeof result.diagnostics.summaryChars==="number"?{summaryChars:result.diagnostics.summaryChars}:{},...typeof result.diagnostics.summaryCallCount==="number"?{summaryCallCount:result.diagnostics.summaryCallCount}:{},...typeof result.diagnostics.summaryChunkCount==="number"?{summaryChunkCount:result.diagnostics.summaryChunkCount}:{},...typeof result.diagnostics.prunedToolOutputCount==="number"?{prunedToolOutputCount:result.diagnostics.prunedToolOutputCount}:{},...typeof result.diagnostics.preservedToolOutputCount==="number"?{preservedToolOutputCount:result.diagnostics.preservedToolOutputCount}:{}}}function positiveIntegerOr(value,fallback){if(!Number.isFinite(value)||value===void 0||value<=0)return fallback;return Math.floor(value)}function isAutoCompactPluginStateData(value){let candidate=readAutoCompactPluginStateDataCandidate(value);if(!candidate)return!1;if(candidate.strategy!=="controller-v2")return!1;if(candidate.summaryModel!==void 0&&!isModelRef(candidate.summaryModel))return!1;if(candidate.lastResult!==void 0&&!isAutoCompactPersistedResult(candidate.lastResult))return!1;return!0}function isAutoCompactPersistedResult(value){let candidate=readAutoCompactPersistedResultCandidate(value);if(!candidate)return!1;if(candidate.trigger!=="manual"&&candidate.trigger!=="threshold")return!1;if(candidate.status!=="compacted"&&candidate.status!=="skipped"&&candidate.status!=="failed")return!1;if(typeof candidate.compactedMessageCount!=="number")return!1;if(typeof candidate.retainedMessageCount!=="number")return!1;if(typeof candidate.updatedAt!=="number")return!1;if(candidate.reasonCode!==void 0&&typeof candidate.reasonCode!=="string")return!1;if(candidate.reasonMessage!==void 0&&typeof candidate.reasonMessage!=="string")return!1;if(candidate.summaryNormalization!==void 0&&candidate.summaryNormalization!=="plain_text"&&candidate.summaryNormalization!=="wrapped_block"&&candidate.summaryNormalization!=="extracted_block")return!1;if(candidate.summaryInputTokens!==void 0&&typeof candidate.summaryInputTokens!=="number")return!1;if(candidate.summaryOutputTokensEstimate!==void 0&&typeof candidate.summaryOutputTokensEstimate!=="number")return!1;if(candidate.summaryChars!==void 0&&typeof candidate.summaryChars!=="number")return!1;if(candidate.summaryCallCount!==void 0&&typeof candidate.summaryCallCount!=="number")return!1;if(candidate.summaryChunkCount!==void 0&&typeof candidate.summaryChunkCount!=="number")return!1;if(candidate.prunedToolOutputCount!==void 0&&typeof candidate.prunedToolOutputCount!=="number")return!1;if(candidate.preservedToolOutputCount!==void 0&&typeof candidate.preservedToolOutputCount!=="number")return!1;return!0}function isModelRef(value){let candidate=readModelRefCandidate(value);return typeof candidate?.provider==="string"&&typeof candidate.modelId==="string"}function createCodedError(code,message){let error48=Error(message);return error48.code=code,error48}function readErrorCode2(error48){let candidate=readErrorCodeCandidate(error48);return typeof candidate?.code==="string"?candidate.code:void 0}function readErrorMessage2(error48){return error48 instanceof Error?error48.message:String(error48)}function readAutoCompactPluginStateDataCandidate(value){if(!value||typeof value!=="object"||Array.isArray(value))return;return value}function readAutoCompactPersistedResultCandidate(value){if(!value||typeof value!=="object"||Array.isArray(value))return;return value}function readModelRefCandidate(value){if(!value||typeof value!=="object"||Array.isArray(value))return;return value}function readErrorCodeCandidate(value){if(!value||typeof value!=="object"||Array.isArray(value))return;return value}var CONTINUATION_SUMMARY_BLOCK_PATTERN,CONTINUATION_SUMMARY_TAG_FRAGMENT_PATTERN;var init_dist14=__esm(()=>{CONTINUATION_SUMMARY_BLOCK_PATTERN=/<continuation_summary>([\s\S]*?)<\/continuation_summary>/g,CONTINUATION_SUMMARY_TAG_FRAGMENT_PATTERN=/<\/?continuation_summary>?/g});var exports_dist2={};__export(exports_dist2,{createGrepGlobPlugin:()=>createGrepGlobPlugin});import{stat as stat2}from"node:fs/promises";import path12 from"node:path";function createGrepGlobPlugin(options={}){return{manifest:{id:options.id??"grep-glob",version:"0.1.0",apiVersion:1,permissions:{fs:"read"},capabilities:["grep","glob"]},setup(){return{inspector:{getConfig:async()=>({id:options.id??"grep-glob",toolNames:["glob","grep"],promptSegments:[...GREP_GLOB_PROMPT_SEGMENTS]})},tools:[new GlobTool,new GrepTool],promptContributors:[()=>GREP_GLOB_PROMPT_SEGMENTS]}}}}function normalizeGrepArgs(args){let include=args.include??args.glob??void 0,outputMode=args.outputMode??args.output_mode??"content";if(outputMode!=="content"&&outputMode!=="files"&&outputMode!=="count")throw Error("outputMode must be one of: content, files, count");let sharedContext=args.context??args["-C"]??void 0,beforeContext=args.beforeContext??args["-B"]??sharedContext??0,afterContext=args.afterContext??args["-A"]??sharedContext??0,ignoreCase=args.ignoreCase??args["-i"]??!1,lineNumbers=args.lineNumbers??args["-n"]??!0,headLimit=args.headLimit??args.head_limit??DEFAULT_GREP_HEAD_LIMIT,offset=args.offset??0,multiline=args.multiline??!1,timeoutMs=args.timeoutMs??DEFAULT_GREP_TIMEOUT_MS2;if(!Number.isInteger(beforeContext)||beforeContext<0)throw Error("beforeContext must be a non-negative integer");if(!Number.isInteger(afterContext)||afterContext<0)throw Error("afterContext must be a non-negative integer");if(!Number.isInteger(headLimit)||headLimit<0)throw Error("headLimit must be a non-negative integer");if(!Number.isInteger(offset)||offset<0)throw Error("offset must be a non-negative integer");if(!Number.isInteger(timeoutMs)||timeoutMs<=0)throw Error("timeoutMs must be a positive integer");return{pattern:args.pattern,path:args.path??void 0,include:typeof include==="string"?include:void 0,outputMode,beforeContext,afterContext,ignoreCase,lineNumbers,headLimit,offset,multiline,timeoutMs}}function resolveGlobSortBy(value){if(value===void 0)return"mtime";if(value==="path"||value==="mtime")return value;throw Error("sortBy must be one of: path, mtime")}function getBoundedContentMatchLimit(args){if(args.outputMode!=="content"||args.headLimit===0)return;return args.offset+args.headLimit}async function resolveSearchRoot(searchPath,cwd,toolName){if(searchPath===void 0)return{root:cwd};if(!cwd)throw Error(`${toolName} path overrides require a cwd in the tool execution context`);let basePath=path12.resolve(cwd),resolvedPath=path12.resolve(basePath,searchPath);if(!isPathInsideBase(basePath,resolvedPath))throw Error(`${toolName} path must stay within the current working directory`);try{if((await stat2(resolvedPath)).isFile())return{root:path12.dirname(resolvedPath),fileFilter:path12.basename(resolvedPath)}}catch{}return{root:resolvedPath}}function isPathInsideBase(basePath,candidatePath){let relative=path12.relative(basePath,candidatePath);return relative===""||!relative.startsWith("..")&&!path12.isAbsolute(relative)}function groupMatchesByFile(matches){let groups=new Map;for(let match of matches){let group=groups.get(match.path);if(group){group.matches.push(match),group.matchCount+=1;continue}groups.set(match.path,{path:match.path,matchCount:1,matches:[match]})}return Array.from(groups.values())}function formatGlobOutput(result){if(result.numFiles===0)return"No files found";let lines=[result.truncated?`Found ${result.numFiles} files (showing 1-${result.files.length})`:`Found ${result.numFiles} files`];for(let filePath of result.files)lines.push(filePath);return lines.join(`
|
|
170
|
+
`)}function mergeSummaryNormalizationModes(left,right){let rank={plain_text:0,wrapped_block:1,extracted_block:2};return rank[left]>=rank[right]?left:right}async function persistPluginState(context,state){await context.pluginState.replace(context.sessionId,{version:2,data:serializePluginState(state),updatedAt:Date.now()})}function readPluginState(entry){if(!entry||entry.version!==2)return{strategy:"controller-v2"};if(!isAutoCompactPluginStateData(entry.data))return{strategy:"controller-v2"};return structuredClone(entry.data)}function serializePluginState(state){let serialized={strategy:state.strategy};if(state.summaryModel)serialized.summaryModel={provider:state.summaryModel.provider,modelId:state.summaryModel.modelId};if(state.lastResult){if(serialized.lastResult={trigger:state.lastResult.trigger,status:state.lastResult.status,compactedMessageCount:state.lastResult.compactedMessageCount,retainedMessageCount:state.lastResult.retainedMessageCount,updatedAt:state.lastResult.updatedAt},state.lastResult.reasonCode)serialized.lastResult.reasonCode=state.lastResult.reasonCode;if(state.lastResult.reasonMessage)serialized.lastResult.reasonMessage=state.lastResult.reasonMessage;if(state.lastResult.summaryNormalization)serialized.lastResult.summaryNormalization=state.lastResult.summaryNormalization;if(typeof state.lastResult.summaryInputTokens==="number")serialized.lastResult.summaryInputTokens=state.lastResult.summaryInputTokens;if(typeof state.lastResult.summaryOutputTokensEstimate==="number")serialized.lastResult.summaryOutputTokensEstimate=state.lastResult.summaryOutputTokensEstimate;if(typeof state.lastResult.summaryChars==="number")serialized.lastResult.summaryChars=state.lastResult.summaryChars;if(typeof state.lastResult.summaryCallCount==="number")serialized.lastResult.summaryCallCount=state.lastResult.summaryCallCount;if(typeof state.lastResult.summaryChunkCount==="number")serialized.lastResult.summaryChunkCount=state.lastResult.summaryChunkCount;if(typeof state.lastResult.prunedToolOutputCount==="number")serialized.lastResult.prunedToolOutputCount=state.lastResult.prunedToolOutputCount;if(typeof state.lastResult.preservedToolOutputCount==="number")serialized.lastResult.preservedToolOutputCount=state.lastResult.preservedToolOutputCount}return serialized}function createPersistedResult(request,result){return{trigger:request.plan.trigger,status:result.status,compactedMessageCount:request.plan.compactedMessages.length,retainedMessageCount:request.plan.retainedMessages.length,updatedAt:Date.now(),...result.reasonCode?{reasonCode:result.reasonCode}:{},...result.reasonMessage?{reasonMessage:result.reasonMessage}:{},...result.diagnostics.summaryNormalization?{summaryNormalization:result.diagnostics.summaryNormalization}:{},...typeof result.diagnostics.summaryInputTokens==="number"?{summaryInputTokens:result.diagnostics.summaryInputTokens}:{},...typeof result.diagnostics.summaryOutputTokensEstimate==="number"?{summaryOutputTokensEstimate:result.diagnostics.summaryOutputTokensEstimate}:{},...typeof result.diagnostics.summaryChars==="number"?{summaryChars:result.diagnostics.summaryChars}:{},...typeof result.diagnostics.summaryCallCount==="number"?{summaryCallCount:result.diagnostics.summaryCallCount}:{},...typeof result.diagnostics.summaryChunkCount==="number"?{summaryChunkCount:result.diagnostics.summaryChunkCount}:{},...typeof result.diagnostics.prunedToolOutputCount==="number"?{prunedToolOutputCount:result.diagnostics.prunedToolOutputCount}:{},...typeof result.diagnostics.preservedToolOutputCount==="number"?{preservedToolOutputCount:result.diagnostics.preservedToolOutputCount}:{}}}function positiveIntegerOr(value,fallback){if(!Number.isFinite(value)||value===void 0||value<=0)return fallback;return Math.floor(value)}function isAutoCompactPluginStateData(value){let candidate=readAutoCompactPluginStateDataCandidate(value);if(!candidate)return!1;if(candidate.strategy!=="controller-v2")return!1;if(candidate.summaryModel!==void 0&&!isModelRef(candidate.summaryModel))return!1;if(candidate.lastResult!==void 0&&!isAutoCompactPersistedResult(candidate.lastResult))return!1;return!0}function isAutoCompactPersistedResult(value){let candidate=readAutoCompactPersistedResultCandidate(value);if(!candidate)return!1;if(candidate.trigger!=="manual"&&candidate.trigger!=="threshold")return!1;if(candidate.status!=="compacted"&&candidate.status!=="skipped"&&candidate.status!=="failed")return!1;if(typeof candidate.compactedMessageCount!=="number")return!1;if(typeof candidate.retainedMessageCount!=="number")return!1;if(typeof candidate.updatedAt!=="number")return!1;if(candidate.reasonCode!==void 0&&typeof candidate.reasonCode!=="string")return!1;if(candidate.reasonMessage!==void 0&&typeof candidate.reasonMessage!=="string")return!1;if(candidate.summaryNormalization!==void 0&&candidate.summaryNormalization!=="plain_text"&&candidate.summaryNormalization!=="wrapped_block"&&candidate.summaryNormalization!=="extracted_block")return!1;if(candidate.summaryInputTokens!==void 0&&typeof candidate.summaryInputTokens!=="number")return!1;if(candidate.summaryOutputTokensEstimate!==void 0&&typeof candidate.summaryOutputTokensEstimate!=="number")return!1;if(candidate.summaryChars!==void 0&&typeof candidate.summaryChars!=="number")return!1;if(candidate.summaryCallCount!==void 0&&typeof candidate.summaryCallCount!=="number")return!1;if(candidate.summaryChunkCount!==void 0&&typeof candidate.summaryChunkCount!=="number")return!1;if(candidate.prunedToolOutputCount!==void 0&&typeof candidate.prunedToolOutputCount!=="number")return!1;if(candidate.preservedToolOutputCount!==void 0&&typeof candidate.preservedToolOutputCount!=="number")return!1;return!0}function isModelRef(value){let candidate=readModelRefCandidate(value);return typeof candidate?.provider==="string"&&typeof candidate.modelId==="string"}function createCodedError(code,message){let error48=Error(message);return error48.code=code,error48}function readErrorCode2(error48){let candidate=readErrorCodeCandidate(error48);return typeof candidate?.code==="string"?candidate.code:void 0}function readErrorMessage2(error48){return error48 instanceof Error?error48.message:String(error48)}function readAutoCompactPluginStateDataCandidate(value){if(!value||typeof value!=="object"||Array.isArray(value))return;return value}function readAutoCompactPersistedResultCandidate(value){if(!value||typeof value!=="object"||Array.isArray(value))return;return value}function readModelRefCandidate(value){if(!value||typeof value!=="object"||Array.isArray(value))return;return value}function readErrorCodeCandidate(value){if(!value||typeof value!=="object"||Array.isArray(value))return;return value}var CONTINUATION_SUMMARY_BLOCK_PATTERN,CONTINUATION_SUMMARY_TAG_FRAGMENT_PATTERN;var init_dist14=__esm(()=>{CONTINUATION_SUMMARY_BLOCK_PATTERN=/<continuation_summary>([\s\S]*?)<\/continuation_summary>/g,CONTINUATION_SUMMARY_TAG_FRAGMENT_PATTERN=/<\/?continuation_summary>?/g});var exports_dist2={};__export(exports_dist2,{createGrepGlobPlugin:()=>createGrepGlobPlugin});import{stat as stat2}from"node:fs/promises";import path12 from"node:path";function createGrepGlobPlugin(options={}){return{manifest:{id:options.id??"grep-glob",version:"0.1.0",apiVersion:1,permissions:{fs:"read"},capabilities:["grep","glob"]},setup(){return{inspector:{getConfig:async()=>({id:options.id??"grep-glob",toolNames:["glob","grep"],promptSegments:[...GREP_GLOB_PROMPT_SEGMENTS]})},tools:[new GlobTool,new GrepTool],promptContributors:[()=>GREP_GLOB_PROMPT_SEGMENTS]}}}}function normalizeGrepArgs(args){let include=args.include??args.glob??void 0,outputMode=args.outputMode??args.output_mode??"content";if(outputMode!=="content"&&outputMode!=="files"&&outputMode!=="count")throw Error("outputMode must be one of: content, files, count");let sharedContext=args.context??args["-C"]??void 0,beforeContext=args.beforeContext??args["-B"]??sharedContext??0,afterContext=args.afterContext??args["-A"]??sharedContext??0,ignoreCase=args.ignoreCase??args["-i"]??!1,lineNumbers=args.lineNumbers??args["-n"]??!0,headLimit=args.headLimit??args.head_limit??DEFAULT_GREP_HEAD_LIMIT,offset=args.offset??0,multiline=args.multiline??!1,timeoutMs=args.timeoutMs??DEFAULT_GREP_TIMEOUT_MS2;if(!Number.isInteger(beforeContext)||beforeContext<0)throw Error("beforeContext must be a non-negative integer");if(!Number.isInteger(afterContext)||afterContext<0)throw Error("afterContext must be a non-negative integer");if(!Number.isInteger(headLimit)||headLimit<0)throw Error("headLimit must be a non-negative integer");if(!Number.isInteger(offset)||offset<0)throw Error("offset must be a non-negative integer");if(!Number.isInteger(timeoutMs)||timeoutMs<=0)throw Error("timeoutMs must be a positive integer");return{pattern:args.pattern,path:args.path??void 0,include:typeof include==="string"?include:void 0,outputMode,beforeContext,afterContext,ignoreCase,lineNumbers,headLimit,offset,multiline,timeoutMs}}function resolveGlobSortBy(value){if(value===void 0)return"mtime";if(value==="path"||value==="mtime")return value;throw Error("sortBy must be one of: path, mtime")}function getBoundedContentMatchLimit(args){if(args.outputMode!=="content"||args.headLimit===0)return;return args.offset+args.headLimit}async function resolveSearchRoot(searchPath,cwd){if(searchPath===void 0)return{root:cwd};let basePath=path12.resolve(cwd??process.cwd()),resolvedPath=path12.isAbsolute(searchPath)?path12.normalize(searchPath):path12.resolve(basePath,searchPath);try{if((await stat2(resolvedPath)).isFile())return{root:path12.dirname(resolvedPath),fileFilter:path12.basename(resolvedPath)}}catch{}return{root:resolvedPath}}function groupMatchesByFile(matches){let groups=new Map;for(let match of matches){let group=groups.get(match.path);if(group){group.matches.push(match),group.matchCount+=1;continue}groups.set(match.path,{path:match.path,matchCount:1,matches:[match]})}return Array.from(groups.values())}function formatGlobOutput(result){if(result.numFiles===0)return"No files found";let lines=[result.truncated?`Found ${result.numFiles} files (showing 1-${result.files.length})`:`Found ${result.numFiles} files`];for(let filePath of result.files)lines.push(filePath);return lines.join(`
|
|
171
171
|
`)}function applyHeadLimit(items,headLimit,offset){let start=Math.min(offset,items.length);if(headLimit===0)return{items:items.slice(start),truncated:!1};let end=Math.min(items.length,start+headLimit);return{items:items.slice(start,end),truncated:end<items.length}}function formatContentOutput(groups,options){if(options.totalMatches===0)return"No files found";let lines=[buildSummaryLine("matches",options.totalMatches,options.totalFiles,{offset:options.offset,headLimit:options.headLimit,truncated:options.truncated,totalsAreLowerBounds:options.totalsAreLowerBounds})];for(let[index,group]of groups.entries()){lines.push(""),lines.push(`${group.path}:`);let rendered=renderGroupedMatches(group.matches,options.lineNumbers);if(lines.push(...rendered),index===groups.length-1)continue}if(groups.length===0)lines.push(""),lines.push("No matches in the requested page.");return lines.join(`
|
|
172
172
|
`)}function formatFilesOutput(files,options){if(options.totalFiles===0)return"No files found";let lines=[buildSummaryLine("files",options.totalMatches,options.totalFiles,{offset:options.offset,headLimit:options.headLimit,truncated:options.truncated})];for(let file2 of files)lines.push(file2.path);return lines.join(`
|
|
173
173
|
`)}function formatCountOutput(files,options){if(options.totalFiles===0)return"No files found";let lines=[buildSummaryLine("counts",options.totalMatches,options.totalFiles,{offset:options.offset,headLimit:options.headLimit,truncated:options.truncated})];for(let file2 of files)lines.push(`${file2.path}: ${file2.matchCount}`);return lines.join(`
|
|
174
174
|
`)}function buildSummaryLine(mode,totalMatches,totalFiles,options){let summary=mode==="files"?options.totalsAreLowerBounds?`Found at least ${totalFiles} files with matches`:`Found ${totalFiles} files with matches`:options.totalsAreLowerBounds?`Found at least ${totalMatches} matches in at least ${totalFiles} files`:`Found ${totalMatches} matches in ${totalFiles} files`;if(!options.truncated)return summary;if(options.headLimit===0)return summary;return`${summary} (showing ${Math.min(options.offset+1,Math.max(1,totalMatches))}-${Math.min(mode==="files"?totalFiles:totalMatches,options.offset+options.headLimit)})`}function renderGroupedMatches(matches,lineNumbers){let lines=[],lastRenderedLineNumber=0;for(let match of matches){for(let contextLine of match.beforeContext??[]){if(contextLine.lineNumber<=lastRenderedLineNumber)continue;lines.push(formatContextLine(contextLine.lineNumber,contextLine.line,lineNumbers)),lastRenderedLineNumber=contextLine.lineNumber}let matchEndLineNumber=match.endLineNumber??match.lineNumber;if(match.lineNumber>lastRenderedLineNumber)lines.push(formatMatchLine(match.lineNumber,matchEndLineNumber,match.line,lineNumbers));lastRenderedLineNumber=Math.max(lastRenderedLineNumber,matchEndLineNumber);for(let contextLine of match.afterContext??[]){if(contextLine.lineNumber<=lastRenderedLineNumber)continue;lines.push(formatContextLine(contextLine.lineNumber,contextLine.line,lineNumbers)),lastRenderedLineNumber=contextLine.lineNumber}}return lines.length>0?lines:[" (no visible matches in this page)"]}function formatContextLine(lineNumber,line,lineNumbers){if(!lineNumbers)return` - ${line}`;return` ${lineNumber}- ${line}`}function formatMatchLine(lineNumber,endLineNumber,line,lineNumbers){if(!lineNumbers)return` > ${line}`;if(endLineNumber!==lineNumber)return` ${lineNumber}-${endLineNumber}: ${line}`;return` ${lineNumber}: ${line}`}function serializeMatch(match){let serialized={path:match.path,lineNumber:match.lineNumber,line:match.line};if(match.endLineNumber!==void 0)serialized.endLineNumber=match.endLineNumber;if(match.truncated!==void 0)serialized.truncated=match.truncated;if(match.beforeContext!==void 0)serialized.beforeContext=match.beforeContext.map((line)=>({lineNumber:line.lineNumber,line:line.line}));if(match.afterContext!==void 0)serialized.afterContext=match.afterContext.map((line)=>({lineNumber:line.lineNumber,line:line.line}));return serialized}var DEFAULT_GLOB_LIMIT=100,DEFAULT_GREP_HEAD_LIMIT=100,DEFAULT_GREP_TIMEOUT_MS2=3000,GREP_GLOB_PROMPT_SEGMENTS,GlobTool,GrepTool;var init_dist15=__esm(()=>{init_dist12();GREP_GLOB_PROMPT_SEGMENTS=[["When using the official grep/glob tools:","- Narrow searches with path or include whenever possible.","- For open-ended discovery, use glob first and grep second.","- Avoid multiline, large context windows, and whole-repo regex scans unless necessary.","- If grep times out, narrow the search scope before retrying."].join(`
|
|
175
|
-
`)],GlobTool=class extends BaseTool{constructor(){super({name:"glob",description:"List files that match a glob pattern.",inputSchema:{type:"object",properties:{pattern:{type:"string",description:"Glob pattern to match."},path:{type:"string",description:"Optional directory to search in. Defaults to the current working directory."},limit:{type:"number",description:"Optional maximum number of matches."},sortBy:{type:"string",enum:["path","mtime"],description:'Optional sort order. Defaults to "mtime".'}},required:["pattern"]}})}async execute(args,context){let fileSystem=context.services?.fileSystem;if(!fileSystem)throw Error("FileSystemGateway is not available in the tool execution context");if(!args.pattern)throw Error("pattern must be a non-empty string");let limit=args.limit??DEFAULT_GLOB_LIMIT,sortBy=resolveGlobSortBy(args.sortBy),{root:searchRoot,fileFilter}=await resolveSearchRoot(args.path??void 0,context.cwd,"glob"),result=await fileSystem.glob(fileFilter??args.pattern,{cwd:searchRoot,limit,sortBy});return createToolResult({content:[{type:"text",text:formatGlobOutput(result)}],structuredContent:{pattern:args.pattern,path:searchRoot??context.cwd??process.cwd(),sortBy,files:result.files,numFiles:result.numFiles,truncated:result.truncated,durationMs:result.durationMs}})}},GrepTool=class extends BaseTool{constructor(){super({name:"grep",description:"Search file contents with a regex pattern. Narrow path or include to keep searches fast.",inputSchema:{type:"object",properties:{pattern:{type:"string",description:"Regex pattern to search for in file contents. Prefer specific patterns and a narrow path/include on large repos."},path:{type:"string",description:"Optional directory to search in. Defaults to the current working directory."},include:{type:"string",description:'Optional glob pattern to limit searched files, for example "*.{ts,tsx}".'},glob:{type:"string",description:"Alias for include."},outputMode:{type:"string",enum:["content","files","count"],description:'Output style. Defaults to "content".'},output_mode:{type:"string",enum:["content","files","count"],description:"Alias for outputMode."},beforeContext:{type:"number",description:"Number of context lines to show before each match."},afterContext:{type:"number",description:"Number of context lines to show after each match."},context:{type:"number",description:"Shared context line count used for both beforeContext and afterContext."},"-B":{type:"number",description:"Alias for beforeContext."},"-A":{type:"number",description:"Alias for afterContext."},"-C":{type:"number",description:"Alias for context."},ignoreCase:{type:"boolean",description:"When true, perform a case-insensitive search."},"-i":{type:"boolean",description:"Alias for ignoreCase."},lineNumbers:{type:"boolean",description:"When true, include line numbers in content output."},"-n":{type:"boolean",description:"Alias for lineNumbers."},headLimit:{type:"number",description:"Maximum number of matches or files to return. Use 0 for no tool-level limit."},head_limit:{type:"number",description:"Alias for headLimit."},offset:{type:"number",description:"Number of matches or files to skip before rendering results."},multiline:{type:"boolean",description:"When true, allow regex matches to span multiple lines."},timeoutMs:{type:"number",description:`Optional regex search timeout in milliseconds. Defaults to ${DEFAULT_GREP_TIMEOUT_MS2}.`}},required:["pattern"]}})}async execute(args,context){let fileSystem=context.services?.fileSystem;if(!fileSystem)throw Error("FileSystemGateway is not available in the tool execution context");if(!args.pattern)throw Error("pattern must be a non-empty string");let normalized=normalizeGrepArgs(args),{root:searchRoot,fileFilter}=await resolveSearchRoot(normalized.path,context.cwd,"grep"),boundedMatchLimit=getBoundedContentMatchLimit(normalized),rawMatches=await fileSystem.grep(normalized.pattern,{cwd:searchRoot,include:fileFilter??normalized.include,fixedStrings:!1,ignoreCase:normalized.ignoreCase,multiline:normalized.multiline,beforeContext:normalized.beforeContext,afterContext:normalized.afterContext,sortBy:"mtime",timeoutMs:normalized.timeoutMs,limit:boundedMatchLimit===void 0?void 0:boundedMatchLimit+1}),totalsAreLowerBounds=boundedMatchLimit!==void 0&&rawMatches.length>boundedMatchLimit,matches=totalsAreLowerBounds?rawMatches.slice(0,boundedMatchLimit):rawMatches,groups=groupMatchesByFile(matches),rawGroups=groupMatchesByFile(rawMatches),totalMatches=rawMatches.length,totalFiles=rawGroups.length;if(normalized.outputMode==="content"){let page2=applyHeadLimit(matches,normalized.headLimit,normalized.offset),pageGroups=groupMatchesByFile(page2.items),truncated=page2.truncated||totalsAreLowerBounds;return createToolResult({content:[{type:"text",text:formatContentOutput(pageGroups,{totalMatches,totalFiles,offset:normalized.offset,headLimit:normalized.headLimit,truncated,lineNumbers:normalized.lineNumbers,totalsAreLowerBounds})}],structuredContent:{pattern:normalized.pattern,outputMode:normalized.outputMode,totalMatches,totalFiles,returnedMatches:page2.items.length,returnedFiles:pageGroups.length,headLimit:normalized.headLimit,offset:normalized.offset,truncated,totalsAreLowerBounds,files:pageGroups.map((group)=>({path:group.path,matchCount:group.matchCount,matches:group.matches.map(serializeMatch)}))}})}let page=applyHeadLimit(groups.map((group)=>({path:group.path,matchCount:group.matchCount})),normalized.headLimit,normalized.offset);if(normalized.outputMode==="files")return createToolResult({content:[{type:"text",text:formatFilesOutput(page.items,{totalMatches,totalFiles,offset:normalized.offset,headLimit:normalized.headLimit,truncated:page.truncated})}],structuredContent:{pattern:normalized.pattern,outputMode:normalized.outputMode,totalMatches,totalFiles,returnedMatches:page.items.reduce((sum,item)=>sum+item.matchCount,0),returnedFiles:page.items.length,headLimit:normalized.headLimit,offset:normalized.offset,truncated:page.truncated,files:page.items.map((item)=>({...item}))}});return createToolResult({content:[{type:"text",text:formatCountOutput(page.items,{totalMatches,totalFiles,offset:normalized.offset,headLimit:normalized.headLimit,truncated:page.truncated})}],structuredContent:{pattern:normalized.pattern,outputMode:normalized.outputMode,totalMatches,totalFiles,returnedMatches:page.items.reduce((sum,item)=>sum+item.matchCount,0),returnedFiles:page.items.length,headLimit:normalized.headLimit,offset:normalized.offset,truncated:page.truncated,counts:page.items.map((item)=>({path:item.path,count:item.matchCount}))}})}}});var exports_dist3={};__export(exports_dist3,{createPlanModePlugin:()=>createPlanModePlugin});import{mkdir as mkdir5,readFile as readFile5,rm as rm3,writeFile as writeFile5}from"node:fs/promises";import path13 from"node:path";function createPlanModePlugin(options={}){let normalized=normalizeOptions(options);return{manifest:{id:normalized.id,version:"1.0.0",apiVersion:1,permissions:{fs:!0},capabilities:["plan-mode"]},setup(context){let hostDataDir=context.hostDataDir;if(!hostDataDir)throw Error("createPlanModePlugin requires createAgent({ hostDataDir }) so plan drafts can be stored outside the workspace");let planReadTool=new PlanReadTool(hostDataDir,normalized.activationMetadataKey),planWriteTool=new PlanWriteTool(hostDataDir,normalized.activationMetadataKey);return{inspector:{getConfig:async()=>({id:normalized.id,modeName:normalized.modeName,description:normalized.description,activationMetadataKey:normalized.activationMetadataKey,allowedExecPatterns:normalized.allowedExecPatterns.map((rule)=>({pattern:rule.pattern,action:rule.action})),extraVisibleTools:[...normalized.extraVisibleTools]}),getSessionState:async(sessionId)=>{let state=readStateEntry(await context.services.pluginState.get(sessionId));return{active:state.active??!1,pendingActive:state.pendingActive??!1,draftPath:planDraftPath(hostDataDir,sessionId)}}},modes:[{name:normalized.modeName,description:normalized.description}],tools:[planReadTool,planWriteTool],createSessionController:(controllerContext)=>new DefaultPlanModeSessionController(normalized,controllerContext,hostDataDir),hooks:[{descriptor:{name:"run.start"},middleware:[async({payload,context:runtimeContext})=>{if(await reconcilePendingActivation(runtimeContext),await isPlanModeActiveForCurrentRun(runtimeContext,normalized.activationMetadataKey))await ensureDraftMetadata(hostDataDir,payload.sessionId);return payload}]},{descriptor:{name:"prompt.resolve"},middleware:[async({payload,context:runtimeContext})=>{if(!await isPlanModeActiveForCurrentRun(runtimeContext,normalized.activationMetadataKey))return payload;let sessionId=runtimeContext.sessionId;if(!sessionId)return payload;return{...payload,promptSegments:[buildReminderPrompt(hostDataDir,sessionId),...payload.promptSegments]}}]},{descriptor:{name:"toolset.resolve"},middleware:[async({payload,context:runtimeContext})=>{if(!await isPlanModeActiveForCurrentRun(runtimeContext,normalized.activationMetadataKey))return{...payload,tools:payload.tools.filter((tool2)=>tool2.name!==PLAN_READ_TOOL_NAME&&tool2.name!==PLAN_WRITE_TOOL_NAME)};let allowed=createAllowedToolNameSet(normalized);return{...payload,tools:payload.tools.filter((tool2)=>allowed.has(tool2.name))}}]},{descriptor:{name:"tool.beforeExecute"},middleware:[async({payload,context:runtimeContext})=>{let toolName=payload.toolCall.function.name;if(!await isPlanModeActiveForCurrentRun(runtimeContext,normalized.activationMetadataKey)){if(toolName===PLAN_READ_TOOL_NAME||toolName===PLAN_WRITE_TOOL_NAME)return denyToolCall("Plan mode is not active for this session.");return payload}if(IMMUTABLY_BLOCKED_TOOL_NAMES.has(toolName))return denyToolCall(`Plan mode blocks ${toolName}. Use ${PLAN_WRITE_TOOL_NAME} to update the plan draft instead.`);if(toolName===PLAN_READ_TOOL_NAME||toolName===PLAN_WRITE_TOOL_NAME)return payload;if(toolName==="exec"){let execInput;try{execInput=readExecToolInput(payload.toolCall.function.arguments)}catch(error48){return denyToolCall(`Plan mode could not parse exec tool input: ${error48 instanceof Error?error48.message:String(error48)}`)}let decision=classifyExecCommand(execInput,normalized.allowedExecPatterns);if(decision.action==="allow")return payload;if(decision.action==="ask")return askToolCall({message:decision.reason??`Plan mode requires approval for exec command: ${formatExecInput(execInput)}`});return denyToolCall(decision.reason??`Plan mode blocked exec command: ${formatExecInput(execInput)}`)}if(!createAllowedToolNameSet(normalized).has(toolName))return denyToolCall(`Plan mode blocks tool ${toolName}. Disable plan mode before implementation.`);return payload}]}]}}}}function normalizeOptions(options){return{id:options.id??"plan-mode",modeName:options.modeName??"plan",description:options.description??"Analyze and plan only. The runtime blocks implementation tools until the mode is disabled.",activationMetadataKey:options.activationMetadataKey??"planMode",allowedExecPatterns:[...DEFAULT_ALLOWED_EXEC_PATTERNS,...options.allowedExecPatterns??[]],extraVisibleTools:dedupeToolNames(options.extraVisibleTools??[])}}function dedupeToolNames(names){let seen=new Set,deduped=[];for(let name15 of names){if(!name15.trim())continue;if(IMMUTABLY_BLOCKED_TOOL_NAMES.has(name15))continue;if(seen.has(name15))continue;seen.add(name15),deduped.push(name15)}return deduped}function createAllowedToolNameSet(options){return new Set([...DEFAULT_VISIBLE_TOOL_NAMES,PLAN_READ_TOOL_NAME,PLAN_WRITE_TOOL_NAME,...options.extraVisibleTools])}function buildReminderPrompt(hostDataDir,sessionId){return["PLAN MODE ACTIVE","","You are in planning mode.","","Rules:","- Analyze and plan only. Do not implement repository changes.","- `write`, `edit`, and `patch` style tools are blocked.","- `exec` accepts argv arrays and is restricted to read-only inspection commands.","- Build, test, lint, install, and typecheck commands are blocked in plan mode.",`- The only writable artifact is the plan draft at: ${planDraftPath(hostDataDir,sessionId)}`,`- Use \`${PLAN_WRITE_TOOL_NAME}\` to update the plan draft and \`${PLAN_READ_TOOL_NAME}\` to inspect it.`,"- If implementation is required, disable plan mode first."].join(`
|
|
175
|
+
`)],GlobTool=class extends BaseTool{constructor(){super({name:"glob",description:"List files that match a glob pattern.",inputSchema:{type:"object",properties:{pattern:{type:"string",description:"Glob pattern to match."},path:{type:"string",description:"Optional file or directory path to search in. Relative paths resolve against the current working directory."},limit:{type:"number",description:"Optional maximum number of matches."},sortBy:{type:"string",enum:["path","mtime"],description:'Optional sort order. Defaults to "mtime".'}},required:["pattern"]}})}async execute(args,context){let fileSystem=context.services?.fileSystem;if(!fileSystem)throw Error("FileSystemGateway is not available in the tool execution context");if(!args.pattern)throw Error("pattern must be a non-empty string");let limit=args.limit??DEFAULT_GLOB_LIMIT,sortBy=resolveGlobSortBy(args.sortBy),{root:searchRoot,fileFilter}=await resolveSearchRoot(args.path??void 0,context.cwd),result=await fileSystem.glob(fileFilter??args.pattern,{cwd:searchRoot,limit,sortBy});return createToolResult({content:[{type:"text",text:formatGlobOutput(result)}],structuredContent:{pattern:args.pattern,path:searchRoot??context.cwd??process.cwd(),sortBy,files:result.files,numFiles:result.numFiles,truncated:result.truncated,durationMs:result.durationMs}})}},GrepTool=class extends BaseTool{constructor(){super({name:"grep",description:"Search file contents with a regex pattern. Narrow path or include to keep searches fast.",inputSchema:{type:"object",properties:{pattern:{type:"string",description:"Regex pattern to search for in file contents. Prefer specific patterns and a narrow path/include on large repos."},path:{type:"string",description:"Optional file or directory path to search in. Relative paths resolve against the current working directory."},include:{type:"string",description:'Optional glob pattern to limit searched files, for example "*.{ts,tsx}".'},glob:{type:"string",description:"Alias for include."},outputMode:{type:"string",enum:["content","files","count"],description:'Output style. Defaults to "content".'},output_mode:{type:"string",enum:["content","files","count"],description:"Alias for outputMode."},beforeContext:{type:"number",description:"Number of context lines to show before each match."},afterContext:{type:"number",description:"Number of context lines to show after each match."},context:{type:"number",description:"Shared context line count used for both beforeContext and afterContext."},"-B":{type:"number",description:"Alias for beforeContext."},"-A":{type:"number",description:"Alias for afterContext."},"-C":{type:"number",description:"Alias for context."},ignoreCase:{type:"boolean",description:"When true, perform a case-insensitive search."},"-i":{type:"boolean",description:"Alias for ignoreCase."},lineNumbers:{type:"boolean",description:"When true, include line numbers in content output."},"-n":{type:"boolean",description:"Alias for lineNumbers."},headLimit:{type:"number",description:"Maximum number of matches or files to return. Use 0 for no tool-level limit."},head_limit:{type:"number",description:"Alias for headLimit."},offset:{type:"number",description:"Number of matches or files to skip before rendering results."},multiline:{type:"boolean",description:"When true, allow regex matches to span multiple lines."},timeoutMs:{type:"number",description:`Optional regex search timeout in milliseconds. Defaults to ${DEFAULT_GREP_TIMEOUT_MS2}.`}},required:["pattern"]}})}async execute(args,context){let fileSystem=context.services?.fileSystem;if(!fileSystem)throw Error("FileSystemGateway is not available in the tool execution context");if(!args.pattern)throw Error("pattern must be a non-empty string");let normalized=normalizeGrepArgs(args),{root:searchRoot,fileFilter}=await resolveSearchRoot(normalized.path,context.cwd),boundedMatchLimit=getBoundedContentMatchLimit(normalized),rawMatches=await fileSystem.grep(normalized.pattern,{cwd:searchRoot,include:fileFilter??normalized.include,fixedStrings:!1,ignoreCase:normalized.ignoreCase,multiline:normalized.multiline,beforeContext:normalized.beforeContext,afterContext:normalized.afterContext,sortBy:"mtime",timeoutMs:normalized.timeoutMs,limit:boundedMatchLimit===void 0?void 0:boundedMatchLimit+1}),totalsAreLowerBounds=boundedMatchLimit!==void 0&&rawMatches.length>boundedMatchLimit,matches=totalsAreLowerBounds?rawMatches.slice(0,boundedMatchLimit):rawMatches,groups=groupMatchesByFile(matches),rawGroups=groupMatchesByFile(rawMatches),totalMatches=rawMatches.length,totalFiles=rawGroups.length;if(normalized.outputMode==="content"){let page2=applyHeadLimit(matches,normalized.headLimit,normalized.offset),pageGroups=groupMatchesByFile(page2.items),truncated=page2.truncated||totalsAreLowerBounds;return createToolResult({content:[{type:"text",text:formatContentOutput(pageGroups,{totalMatches,totalFiles,offset:normalized.offset,headLimit:normalized.headLimit,truncated,lineNumbers:normalized.lineNumbers,totalsAreLowerBounds})}],structuredContent:{pattern:normalized.pattern,outputMode:normalized.outputMode,totalMatches,totalFiles,returnedMatches:page2.items.length,returnedFiles:pageGroups.length,headLimit:normalized.headLimit,offset:normalized.offset,truncated,totalsAreLowerBounds,files:pageGroups.map((group)=>({path:group.path,matchCount:group.matchCount,matches:group.matches.map(serializeMatch)}))}})}let page=applyHeadLimit(groups.map((group)=>({path:group.path,matchCount:group.matchCount})),normalized.headLimit,normalized.offset);if(normalized.outputMode==="files")return createToolResult({content:[{type:"text",text:formatFilesOutput(page.items,{totalMatches,totalFiles,offset:normalized.offset,headLimit:normalized.headLimit,truncated:page.truncated})}],structuredContent:{pattern:normalized.pattern,outputMode:normalized.outputMode,totalMatches,totalFiles,returnedMatches:page.items.reduce((sum,item)=>sum+item.matchCount,0),returnedFiles:page.items.length,headLimit:normalized.headLimit,offset:normalized.offset,truncated:page.truncated,files:page.items.map((item)=>({...item}))}});return createToolResult({content:[{type:"text",text:formatCountOutput(page.items,{totalMatches,totalFiles,offset:normalized.offset,headLimit:normalized.headLimit,truncated:page.truncated})}],structuredContent:{pattern:normalized.pattern,outputMode:normalized.outputMode,totalMatches,totalFiles,returnedMatches:page.items.reduce((sum,item)=>sum+item.matchCount,0),returnedFiles:page.items.length,headLimit:normalized.headLimit,offset:normalized.offset,truncated:page.truncated,counts:page.items.map((item)=>({path:item.path,count:item.matchCount}))}})}}});var exports_dist3={};__export(exports_dist3,{createPlanModePlugin:()=>createPlanModePlugin});import{mkdir as mkdir5,readFile as readFile5,rm as rm3,writeFile as writeFile5}from"node:fs/promises";import path13 from"node:path";function createPlanModePlugin(options={}){let normalized=normalizeOptions(options);return{manifest:{id:normalized.id,version:"1.0.0",apiVersion:1,permissions:{fs:!0},capabilities:["plan-mode"]},setup(context){let hostDataDir=context.hostDataDir;if(!hostDataDir)throw Error("createPlanModePlugin requires createAgent({ hostDataDir }) so plan drafts can be stored outside the workspace");let planReadTool=new PlanReadTool(hostDataDir,normalized.activationMetadataKey),planWriteTool=new PlanWriteTool(hostDataDir,normalized.activationMetadataKey);return{inspector:{getConfig:async()=>({id:normalized.id,modeName:normalized.modeName,description:normalized.description,activationMetadataKey:normalized.activationMetadataKey,allowedExecPatterns:normalized.allowedExecPatterns.map((rule)=>({pattern:rule.pattern,action:rule.action})),extraVisibleTools:[...normalized.extraVisibleTools]}),getSessionState:async(sessionId)=>{let state=readStateEntry(await context.services.pluginState.get(sessionId));return{active:state.active??!1,pendingActive:state.pendingActive??!1,draftPath:planDraftPath(hostDataDir,sessionId)}}},modes:[{name:normalized.modeName,description:normalized.description}],tools:[planReadTool,planWriteTool],createSessionController:(controllerContext)=>new DefaultPlanModeSessionController(normalized,controllerContext,hostDataDir),hooks:[{descriptor:{name:"run.start"},middleware:[async({payload,context:runtimeContext})=>{if(await reconcilePendingActivation(runtimeContext),await isPlanModeActiveForCurrentRun(runtimeContext,normalized.activationMetadataKey))await ensureDraftMetadata(hostDataDir,payload.sessionId);return payload}]},{descriptor:{name:"prompt.resolve"},middleware:[async({payload,context:runtimeContext})=>{if(!await isPlanModeActiveForCurrentRun(runtimeContext,normalized.activationMetadataKey))return payload;let sessionId=runtimeContext.sessionId;if(!sessionId)return payload;return{...payload,promptSegments:[buildReminderPrompt(hostDataDir,sessionId),...payload.promptSegments]}}]},{descriptor:{name:"toolset.resolve"},middleware:[async({payload,context:runtimeContext})=>{if(!await isPlanModeActiveForCurrentRun(runtimeContext,normalized.activationMetadataKey))return{...payload,tools:payload.tools.filter((tool2)=>tool2.name!==PLAN_READ_TOOL_NAME&&tool2.name!==PLAN_WRITE_TOOL_NAME)};let allowed=createAllowedToolNameSet(normalized);return{...payload,tools:payload.tools.filter((tool2)=>allowed.has(tool2.name))}}]},{descriptor:{name:"tool.beforeExecute"},middleware:[async({payload,context:runtimeContext})=>{let toolName=payload.toolCall.function.name;if(!await isPlanModeActiveForCurrentRun(runtimeContext,normalized.activationMetadataKey)){if(toolName===PLAN_READ_TOOL_NAME||toolName===PLAN_WRITE_TOOL_NAME)return denyToolCall("Plan mode is not active for this session.");return payload}if(IMMUTABLY_BLOCKED_TOOL_NAMES.has(toolName))return denyToolCall(`Plan mode blocks ${toolName}. Use ${PLAN_WRITE_TOOL_NAME} to update the plan draft instead.`);if(toolName===PLAN_READ_TOOL_NAME||toolName===PLAN_WRITE_TOOL_NAME)return payload;if(toolName==="exec"){let execInput;try{execInput=readExecToolInput(payload.toolCall.function.arguments)}catch(error48){return denyToolCall(`Plan mode could not parse exec tool input: ${error48 instanceof Error?error48.message:String(error48)}`)}let decision=classifyExecCommand(execInput,normalized.allowedExecPatterns);if(decision.action==="allow")return payload;if(decision.action==="ask")return askToolCall({message:decision.reason??`Plan mode requires approval for exec command: ${formatExecInput(execInput)}`});return denyToolCall(decision.reason??`Plan mode blocked exec command: ${formatExecInput(execInput)}`)}if(!createAllowedToolNameSet(normalized).has(toolName))return denyToolCall(`Plan mode blocks tool ${toolName}. Disable plan mode before implementation.`);return payload}]}]}}}}function normalizeOptions(options){return{id:options.id??"plan-mode",modeName:options.modeName??"plan",description:options.description??"Analyze and plan only. The runtime blocks implementation tools until the mode is disabled.",activationMetadataKey:options.activationMetadataKey??"planMode",allowedExecPatterns:[...DEFAULT_ALLOWED_EXEC_PATTERNS,...options.allowedExecPatterns??[]],extraVisibleTools:dedupeToolNames(options.extraVisibleTools??[])}}function dedupeToolNames(names){let seen=new Set,deduped=[];for(let name15 of names){if(!name15.trim())continue;if(IMMUTABLY_BLOCKED_TOOL_NAMES.has(name15))continue;if(seen.has(name15))continue;seen.add(name15),deduped.push(name15)}return deduped}function createAllowedToolNameSet(options){return new Set([...DEFAULT_VISIBLE_TOOL_NAMES,PLAN_READ_TOOL_NAME,PLAN_WRITE_TOOL_NAME,...options.extraVisibleTools])}function buildReminderPrompt(hostDataDir,sessionId){return["PLAN MODE ACTIVE","","You are in planning mode.","","Rules:","- Analyze and plan only. Do not implement repository changes.","- `write`, `edit`, and `patch` style tools are blocked.","- `exec` accepts argv arrays and is restricted to read-only inspection commands.","- Build, test, lint, install, and typecheck commands are blocked in plan mode.",`- The only writable artifact is the plan draft at: ${planDraftPath(hostDataDir,sessionId)}`,`- Use \`${PLAN_WRITE_TOOL_NAME}\` to update the plan draft and \`${PLAN_READ_TOOL_NAME}\` to inspect it.`,"- If implementation is required, disable plan mode first."].join(`
|
|
176
176
|
`)}function resolvePlanModeStatus(state,metadata,isRunning,activationMetadataKey,hostDataDir,sessionId){let metadataActive=metadata?.[activationMetadataKey]===!0,persistedActive=state.active??metadataActive,pendingActive=typeof state.pendingActive==="boolean"?state.pendingActive:void 0;return{active:!isRunning&&pendingActive!==void 0?pendingActive:persistedActive,pendingActive:isRunning?pendingActive:void 0,draftPath:planDraftPath(hostDataDir,sessionId)}}async function isPlanModeActiveForCurrentRun(context,activationMetadataKey){if(!context.sessionId)return!1;return readStateEntry(await context.services.pluginState.get(context.sessionId)).active??context.metadata?.[activationMetadataKey]===!0}async function reconcilePendingActivation(context){if(!context.sessionId)return;let current=readStateEntry(await context.services.pluginState.get(context.sessionId));if(typeof current.pendingActive!=="boolean")return;let next={...current,active:current.pendingActive,pendingActive:void 0};await context.services.pluginState.replace(context.sessionId,createStateEntry(next))}function createStateEntry(state){let data={active:state.active??!1};if(typeof state.pendingActive==="boolean")data.pendingActive=state.pendingActive;return{version:1,data,updatedAt:Date.now()}}function readStateEntry(entry){if(!entry)return{};let data=entry.data;return{active:typeof data.active==="boolean"?data.active:void 0,pendingActive:typeof data.pendingActive==="boolean"?data.pendingActive:void 0}}function classifyExecCommand(input,rules){if(input.action==="poll"||input.action==="terminate")return{action:"allow"};let command=normalizeExecPatternInput(input.command);if(!command)return{action:"deny",reason:"Plan mode requires exec command to be a non-empty string array."};for(let deniedPrefix of HARD_DENIED_COMMAND_PREFIXES)if(matchesPrefix(command,deniedPrefix))return{action:"deny",reason:`Plan mode blocks exec command: ${command}`};let decision={action:"deny",reason:`Plan mode blocked exec command: ${command}`};for(let rule of rules){if(!matchesCommandPattern(command,rule.pattern))continue;decision={action:rule.action,reason:rule.action==="allow"?void 0:rule.action==="ask"?`Plan mode requires approval for exec command: ${command}`:`Plan mode blocked exec command: ${command}`}}return decision}function matchesPrefix(command,prefix){return command===prefix.trim()||command.startsWith(`${prefix.trim()} `)}function matchesCommandPattern(command,pattern){let escaped=pattern.replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp(`^${escaped}$`).test(command)}function readExecToolInput(args){let action=readExecAction(args.action,args),command=readExecCommand(args.command);if(action==="start"){if(!command)throw Error("Plan mode requires exec command to be a non-empty string array.");return{action,command}}let processId=args.processId;if(typeof processId!=="number"||!Number.isInteger(processId)||processId<=0)throw Error(`Plan mode requires exec ${action} processId to be a positive integer.`);return{action,processId}}function readExecAction(value,args){if(value===void 0){if("command"in args&&!("processId"in args))return"start";if("processId"in args&&!("command"in args))return"poll";throw Error("Plan mode requires exec to include either command or processId.")}if(value==="start"||value==="poll"||value==="terminate")return value;throw Error("Plan mode only allows exec action to be start, poll, or terminate.")}function readExecCommand(value){if(value===void 0)return;if(!Array.isArray(value)||value.length===0)throw Error("Plan mode requires exec command to be a non-empty string array.");if(value.some((entry)=>typeof entry!=="string"))throw Error("Plan mode requires every exec command entry to be a string.");if(typeof value[0]==="string"&&value[0].trim().length===0)throw Error("Plan mode requires exec command[0] to be a non-empty string.");return[...value]}function normalizeExecPatternInput(command){if(!command||command.length===0)return"";return command.map((part)=>part.trim()).join(" ").trim().replace(/\s+/g," ")}function formatExecInput(input){if(input.action==="start")return normalizeExecPatternInput(input.command);return`${input.action} process ${input.processId??"unknown"}`}function draftDirectory(hostDataDir,sessionId){return path13.join(path13.resolve(hostDataDir),"plans",encodeURIComponent(sessionId))}function planDraftPath(hostDataDir,sessionId){return path13.join(draftDirectory(hostDataDir,sessionId),"plan.md")}function draftMetaPath(hostDataDir,sessionId){return path13.join(draftDirectory(hostDataDir,sessionId),"meta.json")}async function ensureDraftMetadata(hostDataDir,sessionId){let directory=draftDirectory(hostDataDir,sessionId),metaPath=draftMetaPath(hostDataDir,sessionId),current=await readDraftMetadata(hostDataDir,sessionId),now=Date.now(),next={sessionId,mode:"plan",createdAt:current?.createdAt??now,updatedAt:now};await mkdir5(directory,{recursive:!0}),await writeFile5(metaPath,JSON.stringify(next,null,2),"utf8")}async function writeDraft(hostDataDir,sessionId,content){await ensureDraftMetadata(hostDataDir,sessionId),await writeFile5(planDraftPath(hostDataDir,sessionId),content,"utf8"),await ensureDraftMetadata(hostDataDir,sessionId)}async function readDraftMetadata(hostDataDir,sessionId){try{let raw=await readFile5(draftMetaPath(hostDataDir,sessionId),"utf8"),parsed=JSON.parse(raw);if(typeof parsed.sessionId!=="string")return;if(parsed.mode!=="plan")return;if(typeof parsed.createdAt!=="number"||typeof parsed.updatedAt!=="number")return;return{sessionId:parsed.sessionId,mode:"plan",createdAt:parsed.createdAt,updatedAt:parsed.updatedAt}}catch{return}}async function readTextIfExists2(filePath){try{return await readFile5(filePath,"utf8")}catch{return}}async function assertActiveToolContext(context,activationMetadataKey){let state=context.services?readStateEntry(await context.services.pluginState.get(context.sessionId)):{},metadataActive=context.metadata?.[activationMetadataKey]===!0;if(!(state.active??metadataActive))throw Error("Plan mode is not active for this session.")}var PLAN_READ_TOOL_NAME="plan_read",PLAN_WRITE_TOOL_NAME="plan_write",DEFAULT_VISIBLE_TOOL_NAMES,IMMUTABLY_BLOCKED_TOOL_NAMES,DEFAULT_ALLOWED_EXEC_PATTERNS,HARD_DENIED_COMMAND_PREFIXES,DefaultPlanModeSessionController=class{options;context;hostDataDir;constructor(options,context,hostDataDir){this.options=options,this.context=context,this.hostDataDir=hostDataDir}async getState(){return resolvePlanModeStatus(readStateEntry(await this.context.pluginState.get(this.context.sessionId)),this.context.metadata,this.context.isRunning(),this.options.activationMetadataKey,this.hostDataDir,this.context.sessionId)}async enable(){return this.updateState((state)=>{if(this.context.isRunning())return{...state,pendingActive:!0};return{...state,active:!0,pendingActive:void 0}})}async disable(){return this.updateState((state)=>{if(this.context.isRunning())return{...state,pendingActive:!1};return{...state,active:!1,pendingActive:void 0}})}async clearDraft(){return await rm3(draftDirectory(this.hostDataDir,this.context.sessionId),{recursive:!0,force:!0}),this.getState()}async updateState(mutate){let next=mutate(readStateEntry(await this.context.pluginState.get(this.context.sessionId)));if(await this.context.pluginState.replace(this.context.sessionId,createStateEntry(next)),!this.context.isRunning())await this.context.save();return resolvePlanModeStatus(next,this.context.metadata,this.context.isRunning(),this.options.activationMetadataKey,this.hostDataDir,this.context.sessionId)}},PlanReadTool,PlanWriteTool;var init_dist16=__esm(()=>{init_dist12();init_dist13();DEFAULT_VISIBLE_TOOL_NAMES=["read","grep","glob","exec"],IMMUTABLY_BLOCKED_TOOL_NAMES=new Set(["write","edit","patch"]),DEFAULT_ALLOWED_EXEC_PATTERNS=[{pattern:"pwd",action:"allow"},{pattern:"ls",action:"allow"},{pattern:"ls *",action:"allow"},{pattern:"find *",action:"allow"},{pattern:"cat *",action:"allow"},{pattern:"head *",action:"allow"},{pattern:"tail *",action:"allow"},{pattern:"wc *",action:"allow"},{pattern:"stat *",action:"allow"},{pattern:"file *",action:"allow"},{pattern:"sed -n *",action:"allow"},{pattern:"rg *",action:"allow"},{pattern:"grep *",action:"allow"},{pattern:"fd *",action:"allow"},{pattern:"git status",action:"allow"},{pattern:"git status *",action:"allow"},{pattern:"git diff",action:"allow"},{pattern:"git diff *",action:"allow"},{pattern:"git show *",action:"allow"},{pattern:"git log",action:"allow"},{pattern:"git log *",action:"allow"},{pattern:"git branch",action:"allow"},{pattern:"git branch *",action:"allow"},{pattern:"git rev-parse *",action:"allow"},{pattern:"git ls-files",action:"allow"},{pattern:"git ls-files *",action:"allow"},{pattern:"git grep *",action:"allow"},{pattern:"git blame *",action:"allow"},{pattern:"git shortlog",action:"allow"},{pattern:"git shortlog *",action:"allow"},{pattern:"git describe",action:"allow"},{pattern:"git describe *",action:"allow"},{pattern:"git cat-file *",action:"allow"},{pattern:"git ls-tree *",action:"allow"},{pattern:"git show-ref",action:"allow"},{pattern:"git show-ref *",action:"allow"},{pattern:"git ls-remote",action:"allow"},{pattern:"git ls-remote *",action:"allow"},{pattern:"git for-each-ref",action:"allow"},{pattern:"git for-each-ref *",action:"allow"},{pattern:"git rev-list *",action:"allow"},{pattern:"git merge-base *",action:"allow"},{pattern:"git diff-tree *",action:"allow"},{pattern:"git cherry",action:"allow"},{pattern:"git cherry *",action:"allow"},{pattern:"git name-rev *",action:"allow"},{pattern:"git check-ignore *",action:"allow"},{pattern:"git tag",action:"allow"},{pattern:"git tag -l",action:"allow"},{pattern:"git tag -l *",action:"allow"},{pattern:"git tag --list",action:"allow"},{pattern:"git tag --list *",action:"allow"},{pattern:"git remote",action:"allow"},{pattern:"git remote -v",action:"allow"},{pattern:"git remote show *",action:"allow"},{pattern:"git remote get-url *",action:"allow"},{pattern:"git reflog",action:"allow"},{pattern:"git reflog show *",action:"allow"},{pattern:"git stash list",action:"allow"},{pattern:"git stash list *",action:"allow"},{pattern:"git stash show *",action:"allow"},{pattern:"git config --get *",action:"allow"},{pattern:"git config --get-regexp *",action:"allow"},{pattern:"git config --list",action:"allow"},{pattern:"git config -l",action:"allow"},{pattern:"head",action:"allow"},{pattern:"tail",action:"allow"},{pattern:"wc",action:"allow"},{pattern:"cat",action:"allow"},{pattern:"sort",action:"allow"},{pattern:"sort *",action:"allow"},{pattern:"uniq",action:"allow"},{pattern:"uniq *",action:"allow"},{pattern:"cut *",action:"allow"},{pattern:"tr *",action:"allow"},{pattern:"awk *",action:"allow"},{pattern:"jq",action:"allow"},{pattern:"jq *",action:"allow"},{pattern:"yq",action:"allow"},{pattern:"yq *",action:"allow"},{pattern:"xargs grep *",action:"allow"},{pattern:"xargs rg *",action:"allow"},{pattern:"du *",action:"allow"},{pattern:"df",action:"allow"},{pattern:"df *",action:"allow"},{pattern:"tree",action:"allow"},{pattern:"tree *",action:"allow"},{pattern:"which *",action:"allow"},{pattern:"echo",action:"allow"},{pattern:"echo *",action:"allow"},{pattern:"realpath *",action:"allow"},{pattern:"basename *",action:"allow"},{pattern:"dirname *",action:"allow"}],HARD_DENIED_COMMAND_PREFIXES=["touch","mkdir","rm","mv","cp","ln","chmod","chown","git add","git commit","git push","git checkout","git switch","git restore","git apply","npm ","pnpm ","yarn ","bun "];PlanReadTool=class extends BaseTool{hostDataDir;activationMetadataKey;constructor(hostDataDir,activationMetadataKey){super({name:PLAN_READ_TOOL_NAME,description:"Read the current plan draft for this session.",inputSchema:{type:"object",properties:{}}});this.hostDataDir=hostDataDir,this.activationMetadataKey=activationMetadataKey}async execute(_args,context){await assertActiveToolContext(context,this.activationMetadataKey);let sessionId=context.sessionId,draftPath=planDraftPath(this.hostDataDir,sessionId),content=await readTextIfExists2(draftPath);return createToolResult({content:[{type:"text",text:content??`No plan draft has been written yet.
|
|
177
177
|
Path: ${draftPath}`}],structuredContent:{path:draftPath,hasDraft:content!==null}})}},PlanWriteTool=class extends BaseTool{hostDataDir;activationMetadataKey;constructor(hostDataDir,activationMetadataKey){super({name:PLAN_WRITE_TOOL_NAME,description:"Write the current plan draft for this session.",inputSchema:{type:"object",properties:{content:{type:"string",description:"Markdown content to write into the plan draft."},mode:{type:"string",enum:["append","replace"],description:"Whether to append to or replace the current draft."}},required:["content"]}});this.hostDataDir=hostDataDir,this.activationMetadataKey=activationMetadataKey}async execute(args,context){await assertActiveToolContext(context,this.activationMetadataKey);let sessionId=context.sessionId;if(typeof args.content!=="string")throw Error("content must be a string");let mode=(args.mode??"append")==="replace"?"replace":"append",draftPath=planDraftPath(this.hostDataDir,sessionId),existing=mode==="append"?await readTextIfExists2(draftPath)??"":"",next=mode==="append"?`${existing}${args.content}`:args.content;return await writeDraft(this.hostDataDir,sessionId,next),createToolResult({content:[{type:"text",text:`Updated plan draft at ${draftPath}`}],structuredContent:{path:draftPath,bytes:Buffer.byteLength(next,"utf8"),mode}})}}});var require_identity=__commonJS((exports)=>{var ALIAS=Symbol.for("yaml.alias"),DOC=Symbol.for("yaml.document"),MAP=Symbol.for("yaml.map"),PAIR=Symbol.for("yaml.pair"),SCALAR=Symbol.for("yaml.scalar"),SEQ=Symbol.for("yaml.seq"),NODE_TYPE=Symbol.for("yaml.node.type"),isAlias=(node)=>!!node&&typeof node==="object"&&node[NODE_TYPE]===ALIAS,isDocument=(node)=>!!node&&typeof node==="object"&&node[NODE_TYPE]===DOC,isMap=(node)=>!!node&&typeof node==="object"&&node[NODE_TYPE]===MAP,isPair=(node)=>!!node&&typeof node==="object"&&node[NODE_TYPE]===PAIR,isScalar=(node)=>!!node&&typeof node==="object"&&node[NODE_TYPE]===SCALAR,isSeq=(node)=>!!node&&typeof node==="object"&&node[NODE_TYPE]===SEQ;function isCollection(node){if(node&&typeof node==="object")switch(node[NODE_TYPE]){case MAP:case SEQ:return!0}return!1}function isNode(node){if(node&&typeof node==="object")switch(node[NODE_TYPE]){case ALIAS:case MAP:case SCALAR:case SEQ:return!0}return!1}var hasAnchor=(node)=>(isScalar(node)||isCollection(node))&&!!node.anchor;exports.ALIAS=ALIAS;exports.DOC=DOC;exports.MAP=MAP;exports.NODE_TYPE=NODE_TYPE;exports.PAIR=PAIR;exports.SCALAR=SCALAR;exports.SEQ=SEQ;exports.hasAnchor=hasAnchor;exports.isAlias=isAlias;exports.isCollection=isCollection;exports.isDocument=isDocument;exports.isMap=isMap;exports.isNode=isNode;exports.isPair=isPair;exports.isScalar=isScalar;exports.isSeq=isSeq});var require_visit=__commonJS((exports)=>{var identity=require_identity(),BREAK=Symbol("break visit"),SKIP=Symbol("skip children"),REMOVE=Symbol("remove node");function visit2(node,visitor){let visitor_=initVisitor(visitor);if(identity.isDocument(node)){if(visit_(null,node.contents,visitor_,Object.freeze([node]))===REMOVE)node.contents=null}else visit_(null,node,visitor_,Object.freeze([]))}visit2.BREAK=BREAK;visit2.SKIP=SKIP;visit2.REMOVE=REMOVE;function visit_(key,node,visitor,path14){let ctrl=callVisitor(key,node,visitor,path14);if(identity.isNode(ctrl)||identity.isPair(ctrl))return replaceNode(key,path14,ctrl),visit_(key,ctrl,visitor,path14);if(typeof ctrl!=="symbol"){if(identity.isCollection(node)){path14=Object.freeze(path14.concat(node));for(let i=0;i<node.items.length;++i){let ci=visit_(i,node.items[i],visitor,path14);if(typeof ci==="number")i=ci-1;else if(ci===BREAK)return BREAK;else if(ci===REMOVE)node.items.splice(i,1),i-=1}}else if(identity.isPair(node)){path14=Object.freeze(path14.concat(node));let ck=visit_("key",node.key,visitor,path14);if(ck===BREAK)return BREAK;else if(ck===REMOVE)node.key=null;let cv=visit_("value",node.value,visitor,path14);if(cv===BREAK)return BREAK;else if(cv===REMOVE)node.value=null}}return ctrl}async function visitAsync(node,visitor){let visitor_=initVisitor(visitor);if(identity.isDocument(node)){if(await visitAsync_(null,node.contents,visitor_,Object.freeze([node]))===REMOVE)node.contents=null}else await visitAsync_(null,node,visitor_,Object.freeze([]))}visitAsync.BREAK=BREAK;visitAsync.SKIP=SKIP;visitAsync.REMOVE=REMOVE;async function visitAsync_(key,node,visitor,path14){let ctrl=await callVisitor(key,node,visitor,path14);if(identity.isNode(ctrl)||identity.isPair(ctrl))return replaceNode(key,path14,ctrl),visitAsync_(key,ctrl,visitor,path14);if(typeof ctrl!=="symbol"){if(identity.isCollection(node)){path14=Object.freeze(path14.concat(node));for(let i=0;i<node.items.length;++i){let ci=await visitAsync_(i,node.items[i],visitor,path14);if(typeof ci==="number")i=ci-1;else if(ci===BREAK)return BREAK;else if(ci===REMOVE)node.items.splice(i,1),i-=1}}else if(identity.isPair(node)){path14=Object.freeze(path14.concat(node));let ck=await visitAsync_("key",node.key,visitor,path14);if(ck===BREAK)return BREAK;else if(ck===REMOVE)node.key=null;let cv=await visitAsync_("value",node.value,visitor,path14);if(cv===BREAK)return BREAK;else if(cv===REMOVE)node.value=null}}return ctrl}function initVisitor(visitor){if(typeof visitor==="object"&&(visitor.Collection||visitor.Node||visitor.Value))return Object.assign({Alias:visitor.Node,Map:visitor.Node,Scalar:visitor.Node,Seq:visitor.Node},visitor.Value&&{Map:visitor.Value,Scalar:visitor.Value,Seq:visitor.Value},visitor.Collection&&{Map:visitor.Collection,Seq:visitor.Collection},visitor);return visitor}function callVisitor(key,node,visitor,path14){if(typeof visitor==="function")return visitor(key,node,path14);if(identity.isMap(node))return visitor.Map?.(key,node,path14);if(identity.isSeq(node))return visitor.Seq?.(key,node,path14);if(identity.isPair(node))return visitor.Pair?.(key,node,path14);if(identity.isScalar(node))return visitor.Scalar?.(key,node,path14);if(identity.isAlias(node))return visitor.Alias?.(key,node,path14);return}function replaceNode(key,path14,node){let parent=path14[path14.length-1];if(identity.isCollection(parent))parent.items[key]=node;else if(identity.isPair(parent))if(key==="key")parent.key=node;else parent.value=node;else if(identity.isDocument(parent))parent.contents=node;else{let pt=identity.isAlias(parent)?"alias":"scalar";throw Error(`Cannot replace node with ${pt} parent`)}}exports.visit=visit2;exports.visitAsync=visitAsync});var require_directives=__commonJS((exports)=>{var identity=require_identity(),visit2=require_visit(),escapeChars={"!":"%21",",":"%2C","[":"%5B","]":"%5D","{":"%7B","}":"%7D"},escapeTagName=(tn)=>tn.replace(/[!,[\]{}]/g,(ch)=>escapeChars[ch]);class Directives{constructor(yaml,tags){this.docStart=null,this.docEnd=!1,this.yaml=Object.assign({},Directives.defaultYaml,yaml),this.tags=Object.assign({},Directives.defaultTags,tags)}clone(){let copy=new Directives(this.yaml,this.tags);return copy.docStart=this.docStart,copy}atDocument(){let res=new Directives(this.yaml,this.tags);switch(this.yaml.version){case"1.1":this.atNextDocument=!0;break;case"1.2":this.atNextDocument=!1,this.yaml={explicit:Directives.defaultYaml.explicit,version:"1.2"},this.tags=Object.assign({},Directives.defaultTags);break}return res}add(line,onError){if(this.atNextDocument)this.yaml={explicit:Directives.defaultYaml.explicit,version:"1.1"},this.tags=Object.assign({},Directives.defaultTags),this.atNextDocument=!1;let parts=line.trim().split(/[ \t]+/),name15=parts.shift();switch(name15){case"%TAG":{if(parts.length!==2){if(onError(0,"%TAG directive should contain exactly two parts"),parts.length<2)return!1}let[handle,prefix]=parts;return this.tags[handle]=prefix,!0}case"%YAML":{if(this.yaml.explicit=!0,parts.length!==1)return onError(0,"%YAML directive should contain exactly one part"),!1;let[version2]=parts;if(version2==="1.1"||version2==="1.2")return this.yaml.version=version2,!0;else{let isValid2=/^\d+\.\d+$/.test(version2);return onError(6,`Unsupported YAML version ${version2}`,isValid2),!1}}default:return onError(0,`Unknown directive ${name15}`,!0),!1}}tagName(source,onError){if(source==="!")return"!";if(source[0]!=="!")return onError(`Not a valid tag: ${source}`),null;if(source[1]==="<"){let verbatim=source.slice(2,-1);if(verbatim==="!"||verbatim==="!!")return onError(`Verbatim tags aren't resolved, so ${source} is invalid.`),null;if(source[source.length-1]!==">")onError("Verbatim tags must end with a >");return verbatim}let[,handle,suffix]=source.match(/^(.*!)([^!]*)$/s);if(!suffix)onError(`The ${source} tag has no suffix`);let prefix=this.tags[handle];if(prefix)try{return prefix+decodeURIComponent(suffix)}catch(error48){return onError(String(error48)),null}if(handle==="!")return source;return onError(`Could not resolve tag: ${source}`),null}tagString(tag){for(let[handle,prefix]of Object.entries(this.tags))if(tag.startsWith(prefix))return handle+escapeTagName(tag.substring(prefix.length));return tag[0]==="!"?tag:`!<${tag}>`}toString(doc2){let lines=this.yaml.explicit?[`%YAML ${this.yaml.version||"1.2"}`]:[],tagEntries=Object.entries(this.tags),tagNames;if(doc2&&tagEntries.length>0&&identity.isNode(doc2.contents)){let tags={};visit2.visit(doc2.contents,(_key,node)=>{if(identity.isNode(node)&&node.tag)tags[node.tag]=!0}),tagNames=Object.keys(tags)}else tagNames=[];for(let[handle,prefix]of tagEntries){if(handle==="!!"&&prefix==="tag:yaml.org,2002:")continue;if(!doc2||tagNames.some((tn)=>tn.startsWith(prefix)))lines.push(`%TAG ${handle} ${prefix}`)}return lines.join(`
|
|
178
178
|
`)}}Directives.defaultYaml={explicit:!1,version:"1.2"};Directives.defaultTags={"!!":"tag:yaml.org,2002:"};exports.Directives=Directives});var require_anchors=__commonJS((exports)=>{var identity=require_identity(),visit2=require_visit();function anchorIsValid(anchor){if(/[\x00-\x19\s,[\]{}]/.test(anchor)){let msg=`Anchor must not contain whitespace or control characters: ${JSON.stringify(anchor)}`;throw Error(msg)}return!0}function anchorNames(root){let anchors=new Set;return visit2.visit(root,{Value(_key,node){if(node.anchor)anchors.add(node.anchor)}}),anchors}function findNewAnchor(prefix,exclude){for(let i=1;;++i){let name15=`${prefix}${i}`;if(!exclude.has(name15))return name15}}function createNodeAnchors(doc2,prefix){let aliasObjects=[],sourceObjects=new Map,prevAnchors=null;return{onAnchor:(source)=>{aliasObjects.push(source),prevAnchors??(prevAnchors=anchorNames(doc2));let anchor=findNewAnchor(prefix,prevAnchors);return prevAnchors.add(anchor),anchor},setAnchors:()=>{for(let source of aliasObjects){let ref=sourceObjects.get(source);if(typeof ref==="object"&&ref.anchor&&(identity.isScalar(ref.node)||identity.isCollection(ref.node)))ref.node.anchor=ref.anchor;else{let error48=Error("Failed to resolve repeated object (this should not happen)");throw error48.source=source,error48}}},sourceObjects}}exports.anchorIsValid=anchorIsValid;exports.anchorNames=anchorNames;exports.createNodeAnchors=createNodeAnchors;exports.findNewAnchor=findNewAnchor});var require_applyReviver=__commonJS((exports)=>{function applyReviver(reviver,obj,key,val){if(val&&typeof val==="object")if(Array.isArray(val))for(let i=0,len=val.length;i<len;++i){let v0=val[i],v1=applyReviver(reviver,val,String(i),v0);if(v1===void 0)delete val[i];else if(v1!==v0)val[i]=v1}else if(val instanceof Map)for(let k of Array.from(val.keys())){let v0=val.get(k),v1=applyReviver(reviver,val,k,v0);if(v1===void 0)val.delete(k);else if(v1!==v0)val.set(k,v1)}else if(val instanceof Set)for(let v0 of Array.from(val)){let v1=applyReviver(reviver,val,v0,v0);if(v1===void 0)val.delete(v0);else if(v1!==v0)val.delete(v0),val.add(v1)}else for(let[k,v0]of Object.entries(val)){let v1=applyReviver(reviver,val,k,v0);if(v1===void 0)delete val[k];else if(v1!==v0)val[k]=v1}return reviver.call(obj,key,val)}exports.applyReviver=applyReviver});var require_toJS=__commonJS((exports)=>{var identity=require_identity();function toJS(value,arg,ctx){if(Array.isArray(value))return value.map((v,i)=>toJS(v,String(i),ctx));if(value&&typeof value.toJSON==="function"){if(!ctx||!identity.hasAnchor(value))return value.toJSON(arg,ctx);let data={aliasCount:0,count:1,res:void 0};ctx.anchors.set(value,data),ctx.onCreate=(res2)=>{data.res=res2,delete ctx.onCreate};let res=value.toJSON(arg,ctx);if(ctx.onCreate)ctx.onCreate(res);return res}if(typeof value==="bigint"&&!ctx?.keep)return Number(value);return value}exports.toJS=toJS});var require_Node=__commonJS((exports)=>{var applyReviver=require_applyReviver(),identity=require_identity(),toJS=require_toJS();class NodeBase{constructor(type){Object.defineProperty(this,identity.NODE_TYPE,{value:type})}clone(){let copy=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));if(this.range)copy.range=this.range.slice();return copy}toJS(doc2,{mapAsMap,maxAliasCount,onAnchor,reviver}={}){if(!identity.isDocument(doc2))throw TypeError("A document argument is required");let ctx={anchors:new Map,doc:doc2,keep:!0,mapAsMap:mapAsMap===!0,mapKeyWarned:!1,maxAliasCount:typeof maxAliasCount==="number"?maxAliasCount:100},res=toJS.toJS(this,"",ctx);if(typeof onAnchor==="function")for(let{count,res:res2}of ctx.anchors.values())onAnchor(res2,count);return typeof reviver==="function"?applyReviver.applyReviver(reviver,{"":res},"",res):res}}exports.NodeBase=NodeBase});var require_Alias=__commonJS((exports)=>{var anchors=require_anchors(),visit2=require_visit(),identity=require_identity(),Node2=require_Node(),toJS=require_toJS();class Alias extends Node2.NodeBase{constructor(source){super(identity.ALIAS);this.source=source,Object.defineProperty(this,"tag",{set(){throw Error("Alias nodes cannot have tags")}})}resolve(doc2,ctx){let nodes;if(ctx?.aliasResolveCache)nodes=ctx.aliasResolveCache;else if(nodes=[],visit2.visit(doc2,{Node:(_key,node)=>{if(identity.isAlias(node)||identity.hasAnchor(node))nodes.push(node)}}),ctx)ctx.aliasResolveCache=nodes;let found=void 0;for(let node of nodes){if(node===this)break;if(node.anchor===this.source)found=node}return found}toJSON(_arg,ctx){if(!ctx)return{source:this.source};let{anchors:anchors2,doc:doc2,maxAliasCount}=ctx,source=this.resolve(doc2,ctx);if(!source){let msg=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw ReferenceError(msg)}let data=anchors2.get(source);if(!data)toJS.toJS(source,null,ctx),data=anchors2.get(source);if(data?.res===void 0)throw ReferenceError("This should not happen: Alias anchor was not resolved?");if(maxAliasCount>=0){if(data.count+=1,data.aliasCount===0)data.aliasCount=getAliasCount(doc2,source,anchors2);if(data.count*data.aliasCount>maxAliasCount)throw ReferenceError("Excessive alias count indicates a resource exhaustion attack")}return data.res}toString(ctx,_onComment,_onChompKeep){let src=`*${this.source}`;if(ctx){if(anchors.anchorIsValid(this.source),ctx.options.verifyAliasOrder&&!ctx.anchors.has(this.source)){let msg=`Unresolved alias (the anchor must be set before the alias): ${this.source}`;throw Error(msg)}if(ctx.implicitKey)return`${src} `}return src}}function getAliasCount(doc2,node,anchors2){if(identity.isAlias(node)){let source=node.resolve(doc2),anchor=anchors2&&source&&anchors2.get(source);return anchor?anchor.count*anchor.aliasCount:0}else if(identity.isCollection(node)){let count=0;for(let item of node.items){let c=getAliasCount(doc2,item,anchors2);if(c>count)count=c}return count}else if(identity.isPair(node)){let kc=getAliasCount(doc2,node.key,anchors2),vc=getAliasCount(doc2,node.value,anchors2);return Math.max(kc,vc)}return 1}exports.Alias=Alias});var require_Scalar=__commonJS((exports)=>{var identity=require_identity(),Node2=require_Node(),toJS=require_toJS(),isScalarValue=(value)=>!value||typeof value!=="function"&&typeof value!=="object";class Scalar extends Node2.NodeBase{constructor(value){super(identity.SCALAR);this.value=value}toJSON(arg,ctx){return ctx?.keep?this.value:toJS.toJS(this.value,arg,ctx)}toString(){return String(this.value)}}Scalar.BLOCK_FOLDED="BLOCK_FOLDED";Scalar.BLOCK_LITERAL="BLOCK_LITERAL";Scalar.PLAIN="PLAIN";Scalar.QUOTE_DOUBLE="QUOTE_DOUBLE";Scalar.QUOTE_SINGLE="QUOTE_SINGLE";exports.Scalar=Scalar;exports.isScalarValue=isScalarValue});var require_createNode=__commonJS((exports)=>{var Alias=require_Alias(),identity=require_identity(),Scalar=require_Scalar(),defaultTagPrefix="tag:yaml.org,2002:";function findTagObject(value,tagName,tags){if(tagName){let match=tags.filter((t)=>t.tag===tagName),tagObj=match.find((t)=>!t.format)??match[0];if(!tagObj)throw Error(`Tag ${tagName} not found`);return tagObj}return tags.find((t)=>t.identify?.(value)&&!t.format)}function createNode(value,tagName,ctx){if(identity.isDocument(value))value=value.contents;if(identity.isNode(value))return value;if(identity.isPair(value)){let map2=ctx.schema[identity.MAP].createNode?.(ctx.schema,null,ctx);return map2.items.push(value),map2}if(value instanceof String||value instanceof Number||value instanceof Boolean||typeof BigInt<"u"&&value instanceof BigInt)value=value.valueOf();let{aliasDuplicateObjects,onAnchor,onTagObj,schema:schema2,sourceObjects}=ctx,ref=void 0;if(aliasDuplicateObjects&&value&&typeof value==="object")if(ref=sourceObjects.get(value),ref)return ref.anchor??(ref.anchor=onAnchor(value)),new Alias.Alias(ref.anchor);else ref={anchor:null,node:null},sourceObjects.set(value,ref);if(tagName?.startsWith("!!"))tagName=defaultTagPrefix+tagName.slice(2);let tagObj=findTagObject(value,tagName,schema2.tags);if(!tagObj){if(value&&typeof value.toJSON==="function")value=value.toJSON();if(!value||typeof value!=="object"){let node2=new Scalar.Scalar(value);if(ref)ref.node=node2;return node2}tagObj=value instanceof Map?schema2[identity.MAP]:(Symbol.iterator in Object(value))?schema2[identity.SEQ]:schema2[identity.MAP]}if(onTagObj)onTagObj(tagObj),delete ctx.onTagObj;let node=tagObj?.createNode?tagObj.createNode(ctx.schema,value,ctx):typeof tagObj?.nodeClass?.from==="function"?tagObj.nodeClass.from(ctx.schema,value,ctx):new Scalar.Scalar(value);if(tagName)node.tag=tagName;else if(!tagObj.default)node.tag=tagObj.tag;if(ref)ref.node=node;return node}exports.createNode=createNode});var require_Collection=__commonJS((exports)=>{var createNode=require_createNode(),identity=require_identity(),Node2=require_Node();function collectionFromPath(schema2,path14,value){let v=value;for(let i=path14.length-1;i>=0;--i){let k=path14[i];if(typeof k==="number"&&Number.isInteger(k)&&k>=0){let a=[];a[k]=v,v=a}else v=new Map([[k,v]])}return createNode.createNode(v,void 0,{aliasDuplicateObjects:!1,keepUndefined:!1,onAnchor:()=>{throw Error("This should not happen, please report a bug.")},schema:schema2,sourceObjects:new Map})}var isEmptyPath=(path14)=>path14==null||typeof path14==="object"&&!!path14[Symbol.iterator]().next().done;class Collection extends Node2.NodeBase{constructor(type,schema2){super(type);Object.defineProperty(this,"schema",{value:schema2,configurable:!0,enumerable:!1,writable:!0})}clone(schema2){let copy=Object.create(Object.getPrototypeOf(this),Object.getOwnPropertyDescriptors(this));if(schema2)copy.schema=schema2;if(copy.items=copy.items.map((it)=>identity.isNode(it)||identity.isPair(it)?it.clone(schema2):it),this.range)copy.range=this.range.slice();return copy}addIn(path14,value){if(isEmptyPath(path14))this.add(value);else{let[key,...rest]=path14,node=this.get(key,!0);if(identity.isCollection(node))node.addIn(rest,value);else if(node===void 0&&this.schema)this.set(key,collectionFromPath(this.schema,rest,value));else throw Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`)}}deleteIn(path14){let[key,...rest]=path14;if(rest.length===0)return this.delete(key);let node=this.get(key,!0);if(identity.isCollection(node))return node.deleteIn(rest);else throw Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`)}getIn(path14,keepScalar){let[key,...rest]=path14,node=this.get(key,!0);if(rest.length===0)return!keepScalar&&identity.isScalar(node)?node.value:node;else return identity.isCollection(node)?node.getIn(rest,keepScalar):void 0}hasAllNullValues(allowScalar){return this.items.every((node)=>{if(!identity.isPair(node))return!1;let n=node.value;return n==null||allowScalar&&identity.isScalar(n)&&n.value==null&&!n.commentBefore&&!n.comment&&!n.tag})}hasIn(path14){let[key,...rest]=path14;if(rest.length===0)return this.has(key);let node=this.get(key,!0);return identity.isCollection(node)?node.hasIn(rest):!1}setIn(path14,value){let[key,...rest]=path14;if(rest.length===0)this.set(key,value);else{let node=this.get(key,!0);if(identity.isCollection(node))node.setIn(rest,value);else if(node===void 0&&this.schema)this.set(key,collectionFromPath(this.schema,rest,value));else throw Error(`Expected YAML collection at ${key}. Remaining path: ${rest}`)}}}exports.Collection=Collection;exports.collectionFromPath=collectionFromPath;exports.isEmptyPath=isEmptyPath});var require_stringifyComment=__commonJS((exports)=>{var stringifyComment=(str)=>str.replace(/^(?!$)(?: $)?/gm,"#");function indentComment(comment,indent){if(/^\n+$/.test(comment))return comment.substring(1);return indent?comment.replace(/^(?! *$)/gm,indent):comment}var lineComment=(str,indent,comment)=>str.endsWith(`
|
|
@@ -312,10 +312,10 @@ ${end.comment}`:end.comment}this.doc.range[2]=end.offset;break}default:this.erro
|
|
|
312
312
|
`)+1;while(nl!==0)this.onNewLine(this.offset+nl),nl=this.source.indexOf(`
|
|
313
313
|
`,nl)+1}yield*this.pop();break;default:yield*this.pop(),yield*this.step()}}*blockMap(map2){let it=map2.items[map2.items.length-1];switch(this.type){case"newline":if(this.onKeyLine=!1,it.value){let end="end"in it.value?it.value.end:void 0;if((Array.isArray(end)?end[end.length-1]:void 0)?.type==="comment")end?.push(this.sourceToken);else map2.items.push({start:[this.sourceToken]})}else if(it.sep)it.sep.push(this.sourceToken);else it.start.push(this.sourceToken);return;case"space":case"comment":if(it.value)map2.items.push({start:[this.sourceToken]});else if(it.sep)it.sep.push(this.sourceToken);else{if(this.atIndentedComment(it.start,map2.indent)){let end=map2.items[map2.items.length-2]?.value?.end;if(Array.isArray(end)){Array.prototype.push.apply(end,it.start),end.push(this.sourceToken),map2.items.pop();return}}it.start.push(this.sourceToken)}return}if(this.indent>=map2.indent){let atMapIndent=!this.onKeyLine&&this.indent===map2.indent,atNextItem=atMapIndent&&(it.sep||it.explicitKey)&&this.type!=="seq-item-ind",start=[];if(atNextItem&&it.sep&&!it.value){let nl=[];for(let i=0;i<it.sep.length;++i){let st=it.sep[i];switch(st.type){case"newline":nl.push(i);break;case"space":break;case"comment":if(st.indent>map2.indent)nl.length=0;break;default:nl.length=0}}if(nl.length>=2)start=it.sep.splice(nl[1])}switch(this.type){case"anchor":case"tag":if(atNextItem||it.value)start.push(this.sourceToken),map2.items.push({start}),this.onKeyLine=!0;else if(it.sep)it.sep.push(this.sourceToken);else it.start.push(this.sourceToken);return;case"explicit-key-ind":if(!it.sep&&!it.explicitKey)it.start.push(this.sourceToken),it.explicitKey=!0;else if(atNextItem||it.value)start.push(this.sourceToken),map2.items.push({start,explicitKey:!0});else this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken],explicitKey:!0}]});this.onKeyLine=!0;return;case"map-value-ind":if(it.explicitKey)if(!it.sep)if(includesToken(it.start,"newline"))Object.assign(it,{key:null,sep:[this.sourceToken]});else{let start2=getFirstKeyStartProps(it.start);this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:start2,key:null,sep:[this.sourceToken]}]})}else if(it.value)map2.items.push({start:[],key:null,sep:[this.sourceToken]});else if(includesToken(it.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start,key:null,sep:[this.sourceToken]}]});else if(isFlowToken(it.key)&&!includesToken(it.sep,"newline")){let start2=getFirstKeyStartProps(it.start),key=it.key,sep=it.sep;sep.push(this.sourceToken),delete it.key,delete it.sep,this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:start2,key,sep}]})}else if(start.length>0)it.sep=it.sep.concat(start,this.sourceToken);else it.sep.push(this.sourceToken);else if(!it.sep)Object.assign(it,{key:null,sep:[this.sourceToken]});else if(it.value||atNextItem)map2.items.push({start,key:null,sep:[this.sourceToken]});else if(includesToken(it.sep,"map-value-ind"))this.stack.push({type:"block-map",offset:this.offset,indent:this.indent,items:[{start:[],key:null,sep:[this.sourceToken]}]});else it.sep.push(this.sourceToken);this.onKeyLine=!0;return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let fs2=this.flowScalar(this.type);if(atNextItem||it.value)map2.items.push({start,key:fs2,sep:[]}),this.onKeyLine=!0;else if(it.sep)this.stack.push(fs2);else Object.assign(it,{key:fs2,sep:[]}),this.onKeyLine=!0;return}default:{let bv=this.startBlockValue(map2);if(bv){if(bv.type==="block-seq"){if(!it.explicitKey&&it.sep&&!includesToken(it.sep,"newline")){yield*this.pop({type:"error",offset:this.offset,message:"Unexpected block-seq-ind on same line with key",source:this.source});return}}else if(atMapIndent)map2.items.push({start});this.stack.push(bv);return}}}}yield*this.pop(),yield*this.step()}*blockSequence(seq){let it=seq.items[seq.items.length-1];switch(this.type){case"newline":if(it.value){let end="end"in it.value?it.value.end:void 0;if((Array.isArray(end)?end[end.length-1]:void 0)?.type==="comment")end?.push(this.sourceToken);else seq.items.push({start:[this.sourceToken]})}else it.start.push(this.sourceToken);return;case"space":case"comment":if(it.value)seq.items.push({start:[this.sourceToken]});else{if(this.atIndentedComment(it.start,seq.indent)){let end=seq.items[seq.items.length-2]?.value?.end;if(Array.isArray(end)){Array.prototype.push.apply(end,it.start),end.push(this.sourceToken),seq.items.pop();return}}it.start.push(this.sourceToken)}return;case"anchor":case"tag":if(it.value||this.indent<=seq.indent)break;it.start.push(this.sourceToken);return;case"seq-item-ind":if(this.indent!==seq.indent)break;if(it.value||includesToken(it.start,"seq-item-ind"))seq.items.push({start:[this.sourceToken]});else it.start.push(this.sourceToken);return}if(this.indent>seq.indent){let bv=this.startBlockValue(seq);if(bv){this.stack.push(bv);return}}yield*this.pop(),yield*this.step()}*flowCollection(fc){let it=fc.items[fc.items.length-1];if(this.type==="flow-error-end"){let top;do yield*this.pop(),top=this.peek(1);while(top?.type==="flow-collection")}else if(fc.end.length===0){switch(this.type){case"comma":case"explicit-key-ind":if(!it||it.sep)fc.items.push({start:[this.sourceToken]});else it.start.push(this.sourceToken);return;case"map-value-ind":if(!it||it.value)fc.items.push({start:[],key:null,sep:[this.sourceToken]});else if(it.sep)it.sep.push(this.sourceToken);else Object.assign(it,{key:null,sep:[this.sourceToken]});return;case"space":case"comment":case"newline":case"anchor":case"tag":if(!it||it.value)fc.items.push({start:[this.sourceToken]});else if(it.sep)it.sep.push(this.sourceToken);else it.start.push(this.sourceToken);return;case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":{let fs2=this.flowScalar(this.type);if(!it||it.value)fc.items.push({start:[],key:fs2,sep:[]});else if(it.sep)this.stack.push(fs2);else Object.assign(it,{key:fs2,sep:[]});return}case"flow-map-end":case"flow-seq-end":fc.end.push(this.sourceToken);return}let bv=this.startBlockValue(fc);if(bv)this.stack.push(bv);else yield*this.pop(),yield*this.step()}else{let parent=this.peek(2);if(parent.type==="block-map"&&(this.type==="map-value-ind"&&parent.indent===fc.indent||this.type==="newline"&&!parent.items[parent.items.length-1].sep))yield*this.pop(),yield*this.step();else if(this.type==="map-value-ind"&&parent.type!=="flow-collection"){let prev=getPrevProps(parent),start=getFirstKeyStartProps(prev);fixFlowSeqItems(fc);let sep=fc.end.splice(1,fc.end.length);sep.push(this.sourceToken);let map2={type:"block-map",offset:fc.offset,indent:fc.indent,items:[{start,key:fc,sep}]};this.onKeyLine=!0,this.stack[this.stack.length-1]=map2}else yield*this.lineEnd(fc)}}flowScalar(type){if(this.onNewLine){let nl=this.source.indexOf(`
|
|
314
314
|
`)+1;while(nl!==0)this.onNewLine(this.offset+nl),nl=this.source.indexOf(`
|
|
315
|
-
`,nl)+1}return{type,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(parent){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;let prev=getPrevProps(parent),start=getFirstKeyStartProps(prev);return start.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let prev=getPrevProps(parent),start=getFirstKeyStartProps(prev);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(start,indent){if(this.type!=="comment")return!1;if(this.indent<=indent)return!1;return start.every((st)=>st.type==="newline"||st.type==="space")}*documentEnd(docEnd){if(this.type!=="doc-mode"){if(docEnd.end)docEnd.end.push(this.sourceToken);else docEnd.end=[this.sourceToken];if(this.type==="newline")yield*this.pop()}}*lineEnd(token){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;case"space":case"comment":default:if(token.end)token.end.push(this.sourceToken);else token.end=[this.sourceToken];if(this.type==="newline")yield*this.pop()}}}exports.Parser=Parser});var require_public_api=__commonJS((exports)=>{var composer=require_composer(),Document=require_Document(),errors4=require_errors(),log=require_log(),identity=require_identity(),lineCounter=require_line_counter(),parser=require_parser();function parseOptions(options){let prettyErrors=options.prettyErrors!==!1;return{lineCounter:options.lineCounter||prettyErrors&&new lineCounter.LineCounter||null,prettyErrors}}function parseAllDocuments(source,options={}){let{lineCounter:lineCounter2,prettyErrors}=parseOptions(options),parser$1=new parser.Parser(lineCounter2?.addNewLine),composer$1=new composer.Composer(options),docs=Array.from(composer$1.compose(parser$1.parse(source)));if(prettyErrors&&lineCounter2)for(let doc2 of docs)doc2.errors.forEach(errors4.prettifyError(source,lineCounter2)),doc2.warnings.forEach(errors4.prettifyError(source,lineCounter2));if(docs.length>0)return docs;return Object.assign([],{empty:!0},composer$1.streamInfo())}function parseDocument(source,options={}){let{lineCounter:lineCounter2,prettyErrors}=parseOptions(options),parser$1=new parser.Parser(lineCounter2?.addNewLine),composer$1=new composer.Composer(options),doc2=null;for(let _doc of composer$1.compose(parser$1.parse(source),!0,source.length))if(!doc2)doc2=_doc;else if(doc2.options.logLevel!=="silent"){doc2.errors.push(new errors4.YAMLParseError(_doc.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}if(prettyErrors&&lineCounter2)doc2.errors.forEach(errors4.prettifyError(source,lineCounter2)),doc2.warnings.forEach(errors4.prettifyError(source,lineCounter2));return doc2}function parse5(src,reviver,options){let _reviver=void 0;if(typeof reviver==="function")_reviver=reviver;else if(options===void 0&&reviver&&typeof reviver==="object")options=reviver;let doc2=parseDocument(src,options);if(!doc2)return null;if(doc2.warnings.forEach((warning)=>log.warn(doc2.options.logLevel,warning)),doc2.errors.length>0)if(doc2.options.logLevel!=="silent")throw doc2.errors[0];else doc2.errors=[];return doc2.toJS(Object.assign({reviver:_reviver},options))}function stringify(value,replacer,options){let _replacer=null;if(typeof replacer==="function"||Array.isArray(replacer))_replacer=replacer;else if(options===void 0&&replacer)options=replacer;if(typeof options==="string")options=options.length;if(typeof options==="number"){let indent=Math.round(options);options=indent<1?void 0:indent>8?{indent:8}:{indent}}if(value===void 0){let{keepUndefined}=options??replacer??{};if(!keepUndefined)return}if(identity.isDocument(value)&&!_replacer)return value.toString(options);return new Document.Document(value,_replacer,options).toString(options)}exports.parse=parse5;exports.parseAllDocuments=parseAllDocuments;exports.parseDocument=parseDocument;exports.stringify=stringify});var composer,Document,Schema,errors4,Alias,identity,Pair,Scalar,YAMLMap,YAMLSeq,cst,lexer,lineCounter,parser,publicApi,visit2,$Composer,$Document,$Schema,$YAMLError,$YAMLParseError,$YAMLWarning,$Alias,$isAlias,$isCollection,$isDocument,$isMap,$isNode,$isPair,$isScalar,$isSeq,$Pair,$Scalar,$YAMLMap,$YAMLSeq,$Lexer,$LineCounter,$Parser,$parse,$parseAllDocuments,$parseDocument,$stringify,$visit,$visitAsync;var init_dist17=__esm(()=>{composer=require_composer(),Document=require_Document(),Schema=require_Schema(),errors4=require_errors(),Alias=require_Alias(),identity=require_identity(),Pair=require_Pair(),Scalar=require_Scalar(),YAMLMap=require_YAMLMap(),YAMLSeq=require_YAMLSeq(),cst=require_cst(),lexer=require_lexer(),lineCounter=require_line_counter(),parser=require_parser(),publicApi=require_public_api(),visit2=require_visit();$Composer=composer.Composer,$Document=Document.Document,$Schema=Schema.Schema,$YAMLError=errors4.YAMLError,$YAMLParseError=errors4.YAMLParseError,$YAMLWarning=errors4.YAMLWarning,$Alias=Alias.Alias,$isAlias=identity.isAlias,$isCollection=identity.isCollection,$isDocument=identity.isDocument,$isMap=identity.isMap,$isNode=identity.isNode,$isPair=identity.isPair,$isScalar=identity.isScalar,$isSeq=identity.isSeq,$Pair=Pair.Pair,$Scalar=Scalar.Scalar,$YAMLMap=YAMLMap.YAMLMap,$YAMLSeq=YAMLSeq.YAMLSeq,$Lexer=lexer.Lexer,$LineCounter=lineCounter.LineCounter,$Parser=parser.Parser,$parse=publicApi.parse,$parseAllDocuments=publicApi.parseAllDocuments,$parseDocument=publicApi.parseDocument,$stringify=publicApi.stringify,$visit=visit2.visit,$visitAsync=visit2.visitAsync});var exports_dist4={};__export(exports_dist4,{installSkillBundle:()=>installSkillBundle,createSkillsPlugin:()=>createSkillsPlugin});import{cp,mkdir as mkdir6,readFile as readFile6,rm as rm4,stat as stat3}from"node:fs/promises";import os2 from"node:os";import path14 from"node:path";function createSkillsPlugin(options={}){return{manifest:{id:DEFAULT_PLUGIN_ID,version:"0.2.0",apiVersion:1,permissions:{fs:"read"},capabilities:["skills"]},setup(context){let resolvedRoots=resolveRoots(context.cwd,options),catalog=createCatalogLoader(context,resolvedRoots),promptCache={};return{inspector:{getConfig:async()=>({pluginId:DEFAULT_PLUGIN_ID,roots:[...resolvedRoots],userSkillsDir:resolveConfiguredPath(context.cwd??process.cwd(),options.userSkillsDir??defaultUserSkillsDir()),includeWorkspaceCompatRoot:options.includeWorkspaceCompatRoot!==!1}),getSessionState:async(_sessionId)=>{return createStatus(await catalog.load())}},tools:[new SkillTool(catalog)],promptContributors:[async(_input)=>{return[buildMetadataPrompt(await catalog.load(),promptCache)]}],createSessionController:()=>new DefaultSkillsSessionController({catalog})}}}}async function installSkillBundle(sourceDir,options={}){let resolvedSourceDir=path14.resolve(sourceDir),skillFilePath=path14.join(resolvedSourceDir,SKILL_FILE_NAME),{parsed}=parseSkillFile(await readFile6(skillFilePath,"utf8"));if(!parsed)throw Error(`Invalid skill bundle: ${skillFilePath}`);let targetRoot=resolveConfiguredPath(process.cwd(),options.targetRoot??defaultUserSkillsDir()),targetDir=path14.join(targetRoot,parsed.name),replaced=await existsPath(targetDir);if(replaced&&options.replaceExisting!==!0)throw Error(`Skill already installed: ${targetDir}`);if(await mkdir6(targetRoot,{recursive:!0}),replaced)await rm4(targetDir,{recursive:!0,force:!0});return await cp(resolvedSourceDir,targetDir,{recursive:!0}),{name:parsed.name,sourceDir:resolvedSourceDir,targetDir,targetRoot,replaced}}function createCatalogLoader(context,resolvedRoots){let cachedCatalog;return{load(){return cachedCatalog??=scanCatalog(context,resolvedRoots),cachedCatalog},refresh(){return cachedCatalog=scanCatalog(context,resolvedRoots),cachedCatalog}}}async function scanCatalog(context,roots){let byName=new Map;for(let skillsDir of roots){if(!await context.services.fileSystem.exists(skillsDir))continue;let skillFiles=sortPaths((await context.services.fileSystem.glob(`**/${SKILL_FILE_NAME}`,{cwd:skillsDir,limit:DEFAULT_DISCOVERY_LIMIT})).files);for(let skillFilePath of skillFiles){let source;try{source=await context.services.fileSystem.readText(skillFilePath)}catch{continue}let{parsed,warnings}=parseSkillFile(source);if(!parsed){let invalidWarning=warnings[0],metadata={path:skillFilePath,reason:invalidWarning?.reason??"invalid_skill_file"};if(invalidWarning?.detail)metadata.detail=invalidWarning.detail;context.services.logger.emit({level:"warn",source:"skills.catalog",message:`Skipping invalid skill file: ${skillFilePath}`,metadata});continue}for(let warning of warnings){let metadata={path:skillFilePath,name:parsed.name,reason:warning.reason};if(warning.detail)metadata.detail=warning.detail;context.services.logger.emit({level:"warn",source:"skills.catalog",message:`Skill '${parsed.name}' metadata warning at ${skillFilePath}`,metadata})}if(byName.has(parsed.name)){context.services.logger.emit({level:"warn",source:"skills.catalog",message:`Skipping duplicate skill '${parsed.name}' from ${skillFilePath}`,metadata:{path:skillFilePath,reason:"duplicate_skill_name",name:parsed.name,keptPath:byName.get(parsed.name)?.skillFilePath}});continue}let rootPath=path14.dirname(skillFilePath);byName.set(parsed.name,{name:parsed.name,description:parsed.description,rootPath,skillsDir,skillFilePath,allowedTools:parsed.allowedTools,body:parsed.body})}}let orderedSkills=[...byName.values()].sort((left,right)=>left.name.localeCompare(right.name));return{byName,summaries:orderedSkills.map((skill)=>({name:skill.name,description:skill.description,allowedTools:skill.allowedTools})),roots,signature:JSON.stringify({roots,skills:orderedSkills.map((skill)=>({name:skill.name,description:skill.description,skillFilePath:skill.skillFilePath,allowedTools:skill.allowedTools}))})}}function parseSkillFile(source){let warnings=[],match=/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/u.exec(source);if(!match)return warnings.push({reason:"invalid_skill_file",detail:"missing_frontmatter"}),{warnings};let frontmatterValue;try{frontmatterValue=$parse(match[1])}catch(error48){return warnings.push({reason:"invalid_skill_file",detail:error48 instanceof Error?error48.message:"frontmatter_parse_error"}),{warnings}}let frontmatter=readSkillFrontmatter(frontmatterValue);if(!frontmatter)return warnings.push({reason:"invalid_skill_file",detail:"frontmatter_not_object"}),{warnings};let name15=readYamlString(frontmatter.name),description=readYamlString(frontmatter.description),body=match[2].trim();if(!name15||!description||!body)return warnings.push({reason:"invalid_skill_file",detail:"missing_required_fields"}),{warnings};return{parsed:{name:name15,description,body,allowedTools:readAllowedTools(frontmatter.allowedTools,warnings)},warnings}}function readAllowedTools(value,warnings){if(value===void 0)return[];let entries=Array.isArray(value)?value:typeof value==="string"?[value]:void 0;if(!entries)return warnings.push({reason:"invalid_allowed_tools",detail:"allowed_tools_must_be_array_or_string"}),[];let normalized=[];for(let entry of entries){if(typeof entry!=="string"){warnings.push({reason:"invalid_allowed_tools",detail:"allowed_tools_entry_must_be_string"});continue}let mapped=readAllowedToolName(entry,warnings);if(!mapped)continue;normalized.push(mapped)}return sortNames(normalized)}function readAllowedToolName(value,warnings){let trimmed=value.trim();if(!trimmed)return;let scopeMatch=/^([A-Za-z0-9._-]+)\((.+)\)$/u.exec(trimmed),rawName=scopeMatch?.[1]??trimmed,rawScope=scopeMatch?.[2],normalizedName=rawName.toLowerCase();if(rawScope)warnings.push({reason:"allowed_tool_scope_ignored",detail:`${trimmed} -> ${normalizedName}`});switch(normalizedName){case"read":return"read";case"grep":return"grep";case"glob":return"glob";case"bash":case"exec":case"shell":return"exec";default:return normalizedName}}function buildMetadataPrompt(catalog,promptCache){let cacheKey=catalog.signature;if(promptCache.metadataKey===cacheKey&&promptCache.metadataPrompt)return promptCache.metadataPrompt;let prompt=["## Available Skills","",...catalog.summaries.length>0?formatSkillMetadataLines(catalog.summaries):["- No skills discovered."],"",`Use the \`${TOOL_NAME_SKILL}\` tool to load a skill's full instructions.`].join(`
|
|
315
|
+
`,nl)+1}return{type,offset:this.offset,indent:this.indent,source:this.source}}startBlockValue(parent){switch(this.type){case"alias":case"scalar":case"single-quoted-scalar":case"double-quoted-scalar":return this.flowScalar(this.type);case"block-scalar-header":return{type:"block-scalar",offset:this.offset,indent:this.indent,props:[this.sourceToken],source:""};case"flow-map-start":case"flow-seq-start":return{type:"flow-collection",offset:this.offset,indent:this.indent,start:this.sourceToken,items:[],end:[]};case"seq-item-ind":return{type:"block-seq",offset:this.offset,indent:this.indent,items:[{start:[this.sourceToken]}]};case"explicit-key-ind":{this.onKeyLine=!0;let prev=getPrevProps(parent),start=getFirstKeyStartProps(prev);return start.push(this.sourceToken),{type:"block-map",offset:this.offset,indent:this.indent,items:[{start,explicitKey:!0}]}}case"map-value-ind":{this.onKeyLine=!0;let prev=getPrevProps(parent),start=getFirstKeyStartProps(prev);return{type:"block-map",offset:this.offset,indent:this.indent,items:[{start,key:null,sep:[this.sourceToken]}]}}}return null}atIndentedComment(start,indent){if(this.type!=="comment")return!1;if(this.indent<=indent)return!1;return start.every((st)=>st.type==="newline"||st.type==="space")}*documentEnd(docEnd){if(this.type!=="doc-mode"){if(docEnd.end)docEnd.end.push(this.sourceToken);else docEnd.end=[this.sourceToken];if(this.type==="newline")yield*this.pop()}}*lineEnd(token){switch(this.type){case"comma":case"doc-start":case"doc-end":case"flow-seq-end":case"flow-map-end":case"map-value-ind":yield*this.pop(),yield*this.step();break;case"newline":this.onKeyLine=!1;case"space":case"comment":default:if(token.end)token.end.push(this.sourceToken);else token.end=[this.sourceToken];if(this.type==="newline")yield*this.pop()}}}exports.Parser=Parser});var require_public_api=__commonJS((exports)=>{var composer=require_composer(),Document=require_Document(),errors4=require_errors(),log=require_log(),identity=require_identity(),lineCounter=require_line_counter(),parser=require_parser();function parseOptions(options){let prettyErrors=options.prettyErrors!==!1;return{lineCounter:options.lineCounter||prettyErrors&&new lineCounter.LineCounter||null,prettyErrors}}function parseAllDocuments(source,options={}){let{lineCounter:lineCounter2,prettyErrors}=parseOptions(options),parser$1=new parser.Parser(lineCounter2?.addNewLine),composer$1=new composer.Composer(options),docs=Array.from(composer$1.compose(parser$1.parse(source)));if(prettyErrors&&lineCounter2)for(let doc2 of docs)doc2.errors.forEach(errors4.prettifyError(source,lineCounter2)),doc2.warnings.forEach(errors4.prettifyError(source,lineCounter2));if(docs.length>0)return docs;return Object.assign([],{empty:!0},composer$1.streamInfo())}function parseDocument(source,options={}){let{lineCounter:lineCounter2,prettyErrors}=parseOptions(options),parser$1=new parser.Parser(lineCounter2?.addNewLine),composer$1=new composer.Composer(options),doc2=null;for(let _doc of composer$1.compose(parser$1.parse(source),!0,source.length))if(!doc2)doc2=_doc;else if(doc2.options.logLevel!=="silent"){doc2.errors.push(new errors4.YAMLParseError(_doc.range.slice(0,2),"MULTIPLE_DOCS","Source contains multiple documents; please use YAML.parseAllDocuments()"));break}if(prettyErrors&&lineCounter2)doc2.errors.forEach(errors4.prettifyError(source,lineCounter2)),doc2.warnings.forEach(errors4.prettifyError(source,lineCounter2));return doc2}function parse5(src,reviver,options){let _reviver=void 0;if(typeof reviver==="function")_reviver=reviver;else if(options===void 0&&reviver&&typeof reviver==="object")options=reviver;let doc2=parseDocument(src,options);if(!doc2)return null;if(doc2.warnings.forEach((warning)=>log.warn(doc2.options.logLevel,warning)),doc2.errors.length>0)if(doc2.options.logLevel!=="silent")throw doc2.errors[0];else doc2.errors=[];return doc2.toJS(Object.assign({reviver:_reviver},options))}function stringify(value,replacer,options){let _replacer=null;if(typeof replacer==="function"||Array.isArray(replacer))_replacer=replacer;else if(options===void 0&&replacer)options=replacer;if(typeof options==="string")options=options.length;if(typeof options==="number"){let indent=Math.round(options);options=indent<1?void 0:indent>8?{indent:8}:{indent}}if(value===void 0){let{keepUndefined}=options??replacer??{};if(!keepUndefined)return}if(identity.isDocument(value)&&!_replacer)return value.toString(options);return new Document.Document(value,_replacer,options).toString(options)}exports.parse=parse5;exports.parseAllDocuments=parseAllDocuments;exports.parseDocument=parseDocument;exports.stringify=stringify});var composer,Document,Schema,errors4,Alias,identity,Pair,Scalar,YAMLMap,YAMLSeq,cst,lexer,lineCounter,parser,publicApi,visit2,$Composer,$Document,$Schema,$YAMLError,$YAMLParseError,$YAMLWarning,$Alias,$isAlias,$isCollection,$isDocument,$isMap,$isNode,$isPair,$isScalar,$isSeq,$Pair,$Scalar,$YAMLMap,$YAMLSeq,$Lexer,$LineCounter,$Parser,$parse,$parseAllDocuments,$parseDocument,$stringify,$visit,$visitAsync;var init_dist17=__esm(()=>{composer=require_composer(),Document=require_Document(),Schema=require_Schema(),errors4=require_errors(),Alias=require_Alias(),identity=require_identity(),Pair=require_Pair(),Scalar=require_Scalar(),YAMLMap=require_YAMLMap(),YAMLSeq=require_YAMLSeq(),cst=require_cst(),lexer=require_lexer(),lineCounter=require_line_counter(),parser=require_parser(),publicApi=require_public_api(),visit2=require_visit();$Composer=composer.Composer,$Document=Document.Document,$Schema=Schema.Schema,$YAMLError=errors4.YAMLError,$YAMLParseError=errors4.YAMLParseError,$YAMLWarning=errors4.YAMLWarning,$Alias=Alias.Alias,$isAlias=identity.isAlias,$isCollection=identity.isCollection,$isDocument=identity.isDocument,$isMap=identity.isMap,$isNode=identity.isNode,$isPair=identity.isPair,$isScalar=identity.isScalar,$isSeq=identity.isSeq,$Pair=Pair.Pair,$Scalar=Scalar.Scalar,$YAMLMap=YAMLMap.YAMLMap,$YAMLSeq=YAMLSeq.YAMLSeq,$Lexer=lexer.Lexer,$LineCounter=lineCounter.LineCounter,$Parser=parser.Parser,$parse=publicApi.parse,$parseAllDocuments=publicApi.parseAllDocuments,$parseDocument=publicApi.parseDocument,$stringify=publicApi.stringify,$visit=visit2.visit,$visitAsync=visit2.visitAsync});var exports_dist4={};__export(exports_dist4,{installSkillBundle:()=>installSkillBundle,createSkillsPlugin:()=>createSkillsPlugin});import{cp,mkdir as mkdir6,readFile as readFile6,rm as rm4,stat as stat3}from"node:fs/promises";import os2 from"node:os";import path14 from"node:path";function createSkillsPlugin(options={}){return{manifest:{id:DEFAULT_PLUGIN_ID,version:"0.2.0",apiVersion:1,permissions:{fs:"read"},capabilities:["skills"]},setup(context){let resolvedRoots=resolveRoots(context.cwd,options),catalog=createCatalogLoader(context,resolvedRoots),promptCache={};return{inspector:{getConfig:async()=>({pluginId:DEFAULT_PLUGIN_ID,roots:[...resolvedRoots],userSkillsDir:resolveConfiguredPath(context.cwd??process.cwd(),options.userSkillsDir??defaultUserSkillsDir()),includeWorkspaceCompatRoot:options.includeWorkspaceCompatRoot!==!1}),getSessionState:async(_sessionId)=>{return createStatus(await catalog.load())}},tools:[new SkillTool(catalog)],promptContributors:[async(_input)=>{return[buildMetadataPrompt(await catalog.load(),promptCache)]}],createSessionController:()=>new DefaultSkillsSessionController({catalog})}}}}async function installSkillBundle(sourceDir,options={}){let resolvedSourceDir=path14.resolve(sourceDir),skillFilePath=path14.join(resolvedSourceDir,SKILL_FILE_NAME),{parsed}=parseSkillFile(await readFile6(skillFilePath,"utf8"));if(!parsed)throw Error(`Invalid skill bundle: ${skillFilePath}`);let targetRoot=resolveConfiguredPath(process.cwd(),options.targetRoot??defaultUserSkillsDir()),targetDir=path14.join(targetRoot,parsed.name),replaced=await existsPath(targetDir);if(replaced&&options.replaceExisting!==!0)throw Error(`Skill already installed: ${targetDir}`);if(await mkdir6(targetRoot,{recursive:!0}),replaced)await rm4(targetDir,{recursive:!0,force:!0});return await cp(resolvedSourceDir,targetDir,{recursive:!0}),{name:parsed.name,sourceDir:resolvedSourceDir,targetDir,targetRoot,replaced}}function createCatalogLoader(context,resolvedRoots){let cachedCatalog;return{load(){return cachedCatalog??=scanCatalog(context,resolvedRoots),cachedCatalog},refresh(){return cachedCatalog=scanCatalog(context,resolvedRoots),cachedCatalog}}}async function scanCatalog(context,roots){let byName=new Map;for(let skillsDir of roots){if(!await context.services.fileSystem.exists(skillsDir))continue;let skillFiles=sortPaths((await context.services.fileSystem.glob(`**/${SKILL_FILE_NAME}`,{cwd:skillsDir,limit:DEFAULT_DISCOVERY_LIMIT})).files);for(let skillFilePath of skillFiles){let source;try{source=await context.services.fileSystem.readText(skillFilePath)}catch{continue}let{parsed,warnings}=parseSkillFile(source);if(!parsed){let invalidWarning=warnings[0],metadata={path:skillFilePath,reason:invalidWarning?.reason??"invalid_skill_file"};if(invalidWarning?.detail)metadata.detail=invalidWarning.detail;context.services.logger.emit({level:"warn",source:"skills.catalog",message:`Skipping invalid skill file: ${skillFilePath}`,metadata});continue}for(let warning of warnings){let metadata={path:skillFilePath,name:parsed.name,reason:warning.reason};if(warning.detail)metadata.detail=warning.detail;context.services.logger.emit({level:"warn",source:"skills.catalog",message:`Skill '${parsed.name}' metadata warning at ${skillFilePath}`,metadata})}if(byName.has(parsed.name)){context.services.logger.emit({level:"warn",source:"skills.catalog",message:`Skipping duplicate skill '${parsed.name}' from ${skillFilePath}`,metadata:{path:skillFilePath,reason:"duplicate_skill_name",name:parsed.name,keptPath:byName.get(parsed.name)?.skillFilePath}});continue}let rootPath=path14.dirname(skillFilePath);byName.set(parsed.name,{name:parsed.name,description:parsed.description,rootPath,skillsDir,skillFilePath,allowedTools:parsed.allowedTools,body:parsed.body})}}let orderedSkills=[...byName.values()].sort((left,right)=>left.name.localeCompare(right.name));return{byName,summaries:orderedSkills.map((skill)=>({name:skill.name,description:skill.description,allowedTools:skill.allowedTools,skillFilePath:skill.skillFilePath})),roots,signature:JSON.stringify({roots,skills:orderedSkills.map((skill)=>({name:skill.name,description:skill.description,skillFilePath:skill.skillFilePath,allowedTools:skill.allowedTools}))})}}function parseSkillFile(source){let warnings=[],match=/^---\r?\n([\s\S]*?)\r?\n---\r?\n?([\s\S]*)$/u.exec(source);if(!match)return warnings.push({reason:"invalid_skill_file",detail:"missing_frontmatter"}),{warnings};let frontmatterValue;try{frontmatterValue=$parse(match[1])}catch(error48){return warnings.push({reason:"invalid_skill_file",detail:error48 instanceof Error?error48.message:"frontmatter_parse_error"}),{warnings}}let frontmatter=readSkillFrontmatter(frontmatterValue);if(!frontmatter)return warnings.push({reason:"invalid_skill_file",detail:"frontmatter_not_object"}),{warnings};let name15=readYamlString(frontmatter.name),description=readYamlString(frontmatter.description),body=match[2].trim();if(!name15||!description||!body)return warnings.push({reason:"invalid_skill_file",detail:"missing_required_fields"}),{warnings};return{parsed:{name:name15,description,body,allowedTools:readAllowedTools(frontmatter.allowedTools,warnings)},warnings}}function readAllowedTools(value,warnings){if(value===void 0)return[];let entries=Array.isArray(value)?value:typeof value==="string"?[value]:void 0;if(!entries)return warnings.push({reason:"invalid_allowed_tools",detail:"allowed_tools_must_be_array_or_string"}),[];let normalized=[];for(let entry of entries){if(typeof entry!=="string"){warnings.push({reason:"invalid_allowed_tools",detail:"allowed_tools_entry_must_be_string"});continue}let mapped=readAllowedToolName(entry,warnings);if(!mapped)continue;normalized.push(mapped)}return sortNames(normalized)}function readAllowedToolName(value,warnings){let trimmed=value.trim();if(!trimmed)return;let scopeMatch=/^([A-Za-z0-9._-]+)\((.+)\)$/u.exec(trimmed),rawName=scopeMatch?.[1]??trimmed,rawScope=scopeMatch?.[2],normalizedName=rawName.toLowerCase();if(rawScope)warnings.push({reason:"allowed_tool_scope_ignored",detail:`${trimmed} -> ${normalizedName}`});switch(normalizedName){case"read":return"read";case"grep":return"grep";case"glob":return"glob";case"bash":case"exec":case"shell":return"exec";default:return normalizedName}}function buildMetadataPrompt(catalog,promptCache){let cacheKey=catalog.signature;if(promptCache.metadataKey===cacheKey&&promptCache.metadataPrompt)return promptCache.metadataPrompt;let skillLines=catalog.summaries.length>0?formatSkillMetadataLines(catalog.summaries):["- No skills discovered."],prompt=["<skills_instructions>","## Skills",`A skill is a local instruction bundle stored in a SKILL.md file. Use the \`${TOOL_NAME_SKILL}\` tool to load the full instructions before applying a skill.`,"","### Available skills",...skillLines,"","### How to use skills","- Discovery: The list above is the skills available in this session. Each entry includes a name and description.",`- Trigger rules: If the task clearly matches a skill description, call the \`${TOOL_NAME_SKILL}\` tool before task work. If the user names a skill with a \`skill: name\` marker, call the \`${TOOL_NAME_SKILL}\` tool with that skill name.`,`- Loading: Use \`${TOOL_NAME_SKILL}({ "skill_name": "<name>" })\` to load the full SKILL.md instructions. After the tool returns, follow the loaded instructions.`,"- Multiple matches: When multiple skills apply, load the smallest set that covers the request and apply them in a practical order.","- Missing or blocked: If a named skill is unavailable or cannot be loaded, say so briefly and continue with the best fallback.","- Context hygiene: Load full skill instructions only for skills you will use for the current turn.","- Safety and fallback: If a loaded skill cannot be applied cleanly, state the issue briefly and continue with the next-best approach.","</skills_instructions>"].join(`
|
|
316
316
|
`);return promptCache.metadataKey=cacheKey,promptCache.metadataPrompt=prompt,prompt}function formatSkillMetadataLines(skills){let fullLines=skills.map((skill)=>formatSkillMetadataLine(skill,!0));if(countJoinedChars(fullLines)<=SKILL_METADATA_DESCRIPTION_CHAR_BUDGET)return fullLines;let usedChars=countJoinedChars(skills.map((skill)=>formatSkillMetadataLine(skill,!1))),retainedDescriptions=new Set,candidates=[...skills].sort((left,right)=>{let byDescriptionLength=left.description.length-right.description.length;return byDescriptionLength===0?left.name.localeCompare(right.name):byDescriptionLength});for(let skill of candidates){let delta=`: ${skill.description}`.length;if(usedChars+delta>SKILL_METADATA_DESCRIPTION_CHAR_BUDGET)continue;retainedDescriptions.add(skill.name),usedChars+=delta}return skills.map((skill)=>formatSkillMetadataLine(skill,retainedDescriptions.has(skill.name)))}function formatSkillMetadataLine(skill,includeDescription){return includeDescription?`- ${skill.name}: ${skill.description}`:`- ${skill.name}`}function countJoinedChars(lines){return lines.join(`
|
|
317
317
|
`).length}function formatLoadedSkillResult(skill){let lines=[`Skill: ${skill.name}`,`Skill Path: ${skill.skillFilePath}`];if(skill.allowedTools.length>0)lines.push(`Allowed Tools: ${skill.allowedTools.join(", ")}`);return lines.push("","Instructions:",substituteSkillVariables(skill.body,skill)),lines.join(`
|
|
318
|
-
`)}function substituteSkillVariables(body,skill){return body.split("${SKILL_ROOT}").join(skill.rootPath).split("${SKILLS_DIR}").join(skill.skillsDir)}function resolveRoots(cwd,options){let baseCwd=cwd??process.cwd(),explicitRoots=(options.roots??[]).map((root)=>resolveConfiguredPath(baseCwd,root)),userSkillsDir=resolveConfiguredPath(baseCwd,options.userSkillsDir??defaultUserSkillsDir()),workspaceCompatRoot=path14.resolve(baseCwd,".agents/skills"),resolved=[...explicitRoots,userSkillsDir,...options.includeWorkspaceCompatRoot===!1?[]:[workspaceCompatRoot]],seen=new Set,uniqueRoots=[];for(let root of resolved){let normalized=path14.normalize(root);if(seen.has(normalized))continue;seen.add(normalized),uniqueRoots.push(normalized)}return uniqueRoots}function defaultUserSkillsDir(){return path14.join(os2.homedir(),".agents/skills")}function resolveConfiguredPath(baseCwd,targetPath){if(targetPath==="~")return os2.homedir();if(targetPath.startsWith("~/"))return path14.join(os2.homedir(),targetPath.slice(2));return path14.resolve(baseCwd,targetPath)}function createStatus(catalog){return{availableSkills:catalog.summaries}}function readYamlString(value){if(typeof value!=="string")return;let normalized=value.trim();return normalized.length>0?normalized:void 0}function readSkillFrontmatter(value){if(!value||typeof value!=="object"||Array.isArray(value))return;return value}function sortNames(names){return[...new Set(names)].sort((left,right)=>left.localeCompare(right))}function sortPaths(paths){return[...paths].sort((left,right)=>left.localeCompare(right))}async function existsPath(targetPath){try{return await stat3(targetPath),!0}catch{return!1}}var DEFAULT_PLUGIN_ID="skills",DEFAULT_DISCOVERY_LIMIT=256,TOOL_NAME_SKILL="skill",SKILL_FILE_NAME="SKILL.md",DefaultSkillsSessionController=class{catalog;constructor(dependencies){this.catalog=dependencies.catalog}async getState(){return createStatus(await this.catalog.load())}async refreshCatalog(){return createStatus(await this.catalog.refresh())}},SkillTool,SKILL_METADATA_DESCRIPTION_CHAR_BUDGET=4000;var init_dist18=__esm(()=>{init_dist12();init_dist17();SkillTool=class extends BaseTool{catalog;constructor(catalog){super({name:TOOL_NAME_SKILL,description:"Load a skill's full instructions by name.",inputSchema:{type:"object",properties:{skill_name:{type:"string",description:"Skill name to load."}},required:["skill_name"]},maxResultSizeChars:1/0});this.catalog=catalog}async execute(args,_context){let skillName=typeof args.skill_name==="string"?args.skill_name.trim():"";if(!skillName)throw Error("skill_name must be a non-empty string");let skill=(await this.catalog.load()).byName.get(skillName);if(!skill)return createToolResult({content:[{type:"text",text:`Unknown skill: ${skillName}`}],structuredContent:{success:!1,skillName,message:`Unknown skill: ${skillName}`},isError:!0});return createToolResult({content:[{type:"text",text:formatLoadedSkillResult(skill)}],structuredContent:{success:!0,name:skill.name,description:skill.description,allowedTools:skill.allowedTools,skillFilePath:skill.skillFilePath}})}}});var require_code=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.regexpCode=exports.getEsmExportName=exports.getProperty=exports.safeStringify=exports.stringify=exports.strConcat=exports.addCodeArg=exports.str=exports._=exports.nil=exports._Code=exports.Name=exports.IDENTIFIER=exports._CodeOrName=void 0;class _CodeOrName{}exports._CodeOrName=_CodeOrName;exports.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;class Name extends _CodeOrName{constructor(s){super();if(!exports.IDENTIFIER.test(s))throw Error("CodeGen: name must be a valid identifier");this.str=s}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}}exports.Name=Name;class _Code extends _CodeOrName{constructor(code){super();this._items=typeof code==="string"?[code]:code}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let item=this._items[0];return item===""||item==='""'}get str(){var _a16;return(_a16=this._str)!==null&&_a16!==void 0?_a16:this._str=this._items.reduce((s,c)=>`${s}${c}`,"")}get names(){var _a16;return(_a16=this._names)!==null&&_a16!==void 0?_a16:this._names=this._items.reduce((names,c)=>{if(c instanceof Name)names[c.str]=(names[c.str]||0)+1;return names},{})}}exports._Code=_Code;exports.nil=new _Code("");function _(strs,...args){let code=[strs[0]],i=0;while(i<args.length)addCodeArg(code,args[i]),code.push(strs[++i]);return new _Code(code)}exports._=_;var plus=new _Code("+");function str(strs,...args){let expr=[safeStringify(strs[0])],i=0;while(i<args.length)expr.push(plus),addCodeArg(expr,args[i]),expr.push(plus,safeStringify(strs[++i]));return optimize(expr),new _Code(expr)}exports.str=str;function addCodeArg(code,arg){if(arg instanceof _Code)code.push(...arg._items);else if(arg instanceof Name)code.push(arg);else code.push(interpolate(arg))}exports.addCodeArg=addCodeArg;function optimize(expr){let i=1;while(i<expr.length-1){if(expr[i]===plus){let res=mergeExprItems(expr[i-1],expr[i+1]);if(res!==void 0){expr.splice(i-1,3,res);continue}expr[i++]="+"}i++}}function mergeExprItems(a,b){if(b==='""')return a;if(a==='""')return b;if(typeof a=="string"){if(b instanceof Name||a[a.length-1]!=='"')return;if(typeof b!="string")return`${a.slice(0,-1)}${b}"`;if(b[0]==='"')return a.slice(0,-1)+b.slice(1);return}if(typeof b=="string"&&b[0]==='"'&&!(a instanceof Name))return`"${a}${b.slice(1)}`;return}function strConcat(c1,c2){return c2.emptyStr()?c1:c1.emptyStr()?c2:str`${c1}${c2}`}exports.strConcat=strConcat;function interpolate(x){return typeof x=="number"||typeof x=="boolean"||x===null?x:safeStringify(Array.isArray(x)?x.join(","):x)}function stringify(x){return new _Code(safeStringify(x))}exports.stringify=stringify;function safeStringify(x){return JSON.stringify(x).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}exports.safeStringify=safeStringify;function getProperty(key){return typeof key=="string"&&exports.IDENTIFIER.test(key)?new _Code(`.${key}`):_`[${key}]`}exports.getProperty=getProperty;function getEsmExportName(key){if(typeof key=="string"&&exports.IDENTIFIER.test(key))return new _Code(`${key}`);throw Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`)}exports.getEsmExportName=getEsmExportName;function regexpCode(rx){return new _Code(rx.toString())}exports.regexpCode=regexpCode});var require_scope=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.ValueScope=exports.ValueScopeName=exports.Scope=exports.varKinds=exports.UsedValueState=void 0;var code_1=require_code();class ValueError extends Error{constructor(name15){super(`CodeGen: "code" for ${name15} not defined`);this.value=name15.value}}var UsedValueState;(function(UsedValueState2){UsedValueState2[UsedValueState2.Started=0]="Started",UsedValueState2[UsedValueState2.Completed=1]="Completed"})(UsedValueState||(exports.UsedValueState=UsedValueState={}));exports.varKinds={const:new code_1.Name("const"),let:new code_1.Name("let"),var:new code_1.Name("var")};class Scope{constructor({prefixes,parent}={}){this._names={},this._prefixes=prefixes,this._parent=parent}toName(nameOrPrefix){return nameOrPrefix instanceof code_1.Name?nameOrPrefix:this.name(nameOrPrefix)}name(prefix){return new code_1.Name(this._newName(prefix))}_newName(prefix){let ng=this._names[prefix]||this._nameGroup(prefix);return`${prefix}${ng.index++}`}_nameGroup(prefix){var _a16,_b16;if(((_b16=(_a16=this._parent)===null||_a16===void 0?void 0:_a16._prefixes)===null||_b16===void 0?void 0:_b16.has(prefix))||this._prefixes&&!this._prefixes.has(prefix))throw Error(`CodeGen: prefix "${prefix}" is not allowed in this scope`);return this._names[prefix]={prefix,index:0}}}exports.Scope=Scope;class ValueScopeName extends code_1.Name{constructor(prefix,nameStr){super(nameStr);this.prefix=prefix}setValue(value,{property,itemIndex}){this.value=value,this.scopePath=code_1._`.${new code_1.Name(property)}[${itemIndex}]`}}exports.ValueScopeName=ValueScopeName;var line=code_1._`\n`;class ValueScope extends Scope{constructor(opts){super(opts);this._values={},this._scope=opts.scope,this.opts={...opts,_n:opts.lines?line:code_1.nil}}get(){return this._scope}name(prefix){return new ValueScopeName(prefix,this._newName(prefix))}value(nameOrPrefix,value){var _a16;if(value.ref===void 0)throw Error("CodeGen: ref must be passed in value");let name15=this.toName(nameOrPrefix),{prefix}=name15,valueKey=(_a16=value.key)!==null&&_a16!==void 0?_a16:value.ref,vs=this._values[prefix];if(vs){let _name=vs.get(valueKey);if(_name)return _name}else vs=this._values[prefix]=new Map;vs.set(valueKey,name15);let s=this._scope[prefix]||(this._scope[prefix]=[]),itemIndex=s.length;return s[itemIndex]=value.ref,name15.setValue(value,{property:prefix,itemIndex}),name15}getValue(prefix,keyOrRef){let vs=this._values[prefix];if(!vs)return;return vs.get(keyOrRef)}scopeRefs(scopeName,values=this._values){return this._reduceValues(values,(name15)=>{if(name15.scopePath===void 0)throw Error(`CodeGen: name "${name15}" has no value`);return code_1._`${scopeName}${name15.scopePath}`})}scopeCode(values=this._values,usedValues,getCode){return this._reduceValues(values,(name15)=>{if(name15.value===void 0)throw Error(`CodeGen: name "${name15}" has no value`);return name15.value.code},usedValues,getCode)}_reduceValues(values,valueCode,usedValues={},getCode){let code=code_1.nil;for(let prefix in values){let vs=values[prefix];if(!vs)continue;let nameSet=usedValues[prefix]=usedValues[prefix]||new Map;vs.forEach((name15)=>{if(nameSet.has(name15))return;nameSet.set(name15,UsedValueState.Started);let c=valueCode(name15);if(c){let def=this.opts.es5?exports.varKinds.var:exports.varKinds.const;code=code_1._`${code}${def} ${name15} = ${c};${this.opts._n}`}else if(c=getCode===null||getCode===void 0?void 0:getCode(name15))code=code_1._`${code}${c}${this.opts._n}`;else throw new ValueError(name15);nameSet.set(name15,UsedValueState.Completed)})}return code}}exports.ValueScope=ValueScope});var require_codegen=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.or=exports.and=exports.not=exports.CodeGen=exports.operators=exports.varKinds=exports.ValueScopeName=exports.ValueScope=exports.Scope=exports.Name=exports.regexpCode=exports.stringify=exports.getProperty=exports.nil=exports.strConcat=exports.str=exports._=void 0;var code_1=require_code(),scope_1=require_scope(),code_2=require_code();Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return code_2._}});Object.defineProperty(exports,"str",{enumerable:!0,get:function(){return code_2.str}});Object.defineProperty(exports,"strConcat",{enumerable:!0,get:function(){return code_2.strConcat}});Object.defineProperty(exports,"nil",{enumerable:!0,get:function(){return code_2.nil}});Object.defineProperty(exports,"getProperty",{enumerable:!0,get:function(){return code_2.getProperty}});Object.defineProperty(exports,"stringify",{enumerable:!0,get:function(){return code_2.stringify}});Object.defineProperty(exports,"regexpCode",{enumerable:!0,get:function(){return code_2.regexpCode}});Object.defineProperty(exports,"Name",{enumerable:!0,get:function(){return code_2.Name}});var scope_2=require_scope();Object.defineProperty(exports,"Scope",{enumerable:!0,get:function(){return scope_2.Scope}});Object.defineProperty(exports,"ValueScope",{enumerable:!0,get:function(){return scope_2.ValueScope}});Object.defineProperty(exports,"ValueScopeName",{enumerable:!0,get:function(){return scope_2.ValueScopeName}});Object.defineProperty(exports,"varKinds",{enumerable:!0,get:function(){return scope_2.varKinds}});exports.operators={GT:new code_1._Code(">"),GTE:new code_1._Code(">="),LT:new code_1._Code("<"),LTE:new code_1._Code("<="),EQ:new code_1._Code("==="),NEQ:new code_1._Code("!=="),NOT:new code_1._Code("!"),OR:new code_1._Code("||"),AND:new code_1._Code("&&"),ADD:new code_1._Code("+")};class Node2{optimizeNodes(){return this}optimizeNames(_names,_constants){return this}}class Def extends Node2{constructor(varKind,name15,rhs){super();this.varKind=varKind,this.name=name15,this.rhs=rhs}render({es5,_n}){let varKind=es5?scope_1.varKinds.var:this.varKind,rhs=this.rhs===void 0?"":` = ${this.rhs}`;return`${varKind} ${this.name}${rhs};`+_n}optimizeNames(names,constants){if(!names[this.name.str])return;if(this.rhs)this.rhs=optimizeExpr(this.rhs,names,constants);return this}get names(){return this.rhs instanceof code_1._CodeOrName?this.rhs.names:{}}}class Assign extends Node2{constructor(lhs,rhs,sideEffects){super();this.lhs=lhs,this.rhs=rhs,this.sideEffects=sideEffects}render({_n}){return`${this.lhs} = ${this.rhs};`+_n}optimizeNames(names,constants){if(this.lhs instanceof code_1.Name&&!names[this.lhs.str]&&!this.sideEffects)return;return this.rhs=optimizeExpr(this.rhs,names,constants),this}get names(){let names=this.lhs instanceof code_1.Name?{}:{...this.lhs.names};return addExprNames(names,this.rhs)}}class AssignOp extends Assign{constructor(lhs,op,rhs,sideEffects){super(lhs,rhs,sideEffects);this.op=op}render({_n}){return`${this.lhs} ${this.op}= ${this.rhs};`+_n}}class Label extends Node2{constructor(label){super();this.label=label,this.names={}}render({_n}){return`${this.label}:`+_n}}class Break extends Node2{constructor(label){super();this.label=label,this.names={}}render({_n}){return`break${this.label?` ${this.label}`:""};`+_n}}class Throw extends Node2{constructor(error48){super();this.error=error48}render({_n}){return`throw ${this.error};`+_n}get names(){return this.error.names}}class AnyCode extends Node2{constructor(code){super();this.code=code}render({_n}){return`${this.code};`+_n}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(names,constants){return this.code=optimizeExpr(this.code,names,constants),this}get names(){return this.code instanceof code_1._CodeOrName?this.code.names:{}}}class ParentNode extends Node2{constructor(nodes=[]){super();this.nodes=nodes}render(opts){return this.nodes.reduce((code,n)=>code+n.render(opts),"")}optimizeNodes(){let{nodes}=this,i=nodes.length;while(i--){let n=nodes[i].optimizeNodes();if(Array.isArray(n))nodes.splice(i,1,...n);else if(n)nodes[i]=n;else nodes.splice(i,1)}return nodes.length>0?this:void 0}optimizeNames(names,constants){let{nodes}=this,i=nodes.length;while(i--){let n=nodes[i];if(n.optimizeNames(names,constants))continue;subtractNames(names,n.names),nodes.splice(i,1)}return nodes.length>0?this:void 0}get names(){return this.nodes.reduce((names,n)=>addNames(names,n.names),{})}}class BlockNode extends ParentNode{render(opts){return"{"+opts._n+super.render(opts)+"}"+opts._n}}class Root extends ParentNode{}class Else extends BlockNode{}Else.kind="else";class If extends BlockNode{constructor(condition,nodes){super(nodes);this.condition=condition}render(opts){let code=`if(${this.condition})`+super.render(opts);if(this.else)code+="else "+this.else.render(opts);return code}optimizeNodes(){super.optimizeNodes();let cond=this.condition;if(cond===!0)return this.nodes;let e=this.else;if(e){let ns=e.optimizeNodes();e=this.else=Array.isArray(ns)?new Else(ns):ns}if(e){if(cond===!1)return e instanceof If?e:e.nodes;if(this.nodes.length)return this;return new If(not(cond),e instanceof If?[e]:e.nodes)}if(cond===!1||!this.nodes.length)return;return this}optimizeNames(names,constants){var _a16;if(this.else=(_a16=this.else)===null||_a16===void 0?void 0:_a16.optimizeNames(names,constants),!(super.optimizeNames(names,constants)||this.else))return;return this.condition=optimizeExpr(this.condition,names,constants),this}get names(){let names=super.names;if(addExprNames(names,this.condition),this.else)addNames(names,this.else.names);return names}}If.kind="if";class For extends BlockNode{}For.kind="for";class ForLoop extends For{constructor(iteration){super();this.iteration=iteration}render(opts){return`for(${this.iteration})`+super.render(opts)}optimizeNames(names,constants){if(!super.optimizeNames(names,constants))return;return this.iteration=optimizeExpr(this.iteration,names,constants),this}get names(){return addNames(super.names,this.iteration.names)}}class ForRange extends For{constructor(varKind,name15,from,to){super();this.varKind=varKind,this.name=name15,this.from=from,this.to=to}render(opts){let varKind=opts.es5?scope_1.varKinds.var:this.varKind,{name:name15,from,to}=this;return`for(${varKind} ${name15}=${from}; ${name15}<${to}; ${name15}++)`+super.render(opts)}get names(){let names=addExprNames(super.names,this.from);return addExprNames(names,this.to)}}class ForIter extends For{constructor(loop,varKind,name15,iterable){super();this.loop=loop,this.varKind=varKind,this.name=name15,this.iterable=iterable}render(opts){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(opts)}optimizeNames(names,constants){if(!super.optimizeNames(names,constants))return;return this.iterable=optimizeExpr(this.iterable,names,constants),this}get names(){return addNames(super.names,this.iterable.names)}}class Func extends BlockNode{constructor(name15,args,async){super();this.name=name15,this.args=args,this.async=async}render(opts){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(opts)}}Func.kind="func";class Return extends ParentNode{render(opts){return"return "+super.render(opts)}}Return.kind="return";class Try extends BlockNode{render(opts){let code="try"+super.render(opts);if(this.catch)code+=this.catch.render(opts);if(this.finally)code+=this.finally.render(opts);return code}optimizeNodes(){var _a16,_b16;return super.optimizeNodes(),(_a16=this.catch)===null||_a16===void 0||_a16.optimizeNodes(),(_b16=this.finally)===null||_b16===void 0||_b16.optimizeNodes(),this}optimizeNames(names,constants){var _a16,_b16;return super.optimizeNames(names,constants),(_a16=this.catch)===null||_a16===void 0||_a16.optimizeNames(names,constants),(_b16=this.finally)===null||_b16===void 0||_b16.optimizeNames(names,constants),this}get names(){let names=super.names;if(this.catch)addNames(names,this.catch.names);if(this.finally)addNames(names,this.finally.names);return names}}class Catch extends BlockNode{constructor(error48){super();this.error=error48}render(opts){return`catch(${this.error})`+super.render(opts)}}Catch.kind="catch";class Finally extends BlockNode{render(opts){return"finally"+super.render(opts)}}Finally.kind="finally";class CodeGen{constructor(extScope,opts={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...opts,_n:opts.lines?`
|
|
318
|
+
`)}function substituteSkillVariables(body,skill){return body.split("${SKILL_ROOT}").join(skill.rootPath).split("${SKILLS_DIR}").join(skill.skillsDir)}function resolveRoots(cwd,options){let baseCwd=cwd??process.cwd(),explicitRoots=(options.roots??[]).map((root)=>resolveConfiguredPath(baseCwd,root)),userSkillsDir=resolveConfiguredPath(baseCwd,options.userSkillsDir??defaultUserSkillsDir()),workspaceCompatRoot=path14.resolve(baseCwd,".agents/skills"),resolved=[...explicitRoots,userSkillsDir,...options.includeWorkspaceCompatRoot===!1?[]:[workspaceCompatRoot]],seen=new Set,uniqueRoots=[];for(let root of resolved){let normalized=path14.normalize(root);if(seen.has(normalized))continue;seen.add(normalized),uniqueRoots.push(normalized)}return uniqueRoots}function defaultUserSkillsDir(){return path14.join(os2.homedir(),".agents/skills")}function resolveConfiguredPath(baseCwd,targetPath){if(targetPath==="~")return os2.homedir();if(targetPath.startsWith("~/"))return path14.join(os2.homedir(),targetPath.slice(2));return path14.resolve(baseCwd,targetPath)}function createStatus(catalog){return{availableSkills:catalog.summaries.map((skill)=>({name:skill.name,description:skill.description,allowedTools:skill.allowedTools}))}}function readYamlString(value){if(typeof value!=="string")return;let normalized=value.trim();return normalized.length>0?normalized:void 0}function readSkillFrontmatter(value){if(!value||typeof value!=="object"||Array.isArray(value))return;return value}function sortNames(names){return[...new Set(names)].sort((left,right)=>left.localeCompare(right))}function sortPaths(paths){return[...paths].sort((left,right)=>left.localeCompare(right))}async function existsPath(targetPath){try{return await stat3(targetPath),!0}catch{return!1}}var DEFAULT_PLUGIN_ID="skills",DEFAULT_DISCOVERY_LIMIT=256,TOOL_NAME_SKILL="skill",SKILL_FILE_NAME="SKILL.md",DefaultSkillsSessionController=class{catalog;constructor(dependencies){this.catalog=dependencies.catalog}async getState(){return createStatus(await this.catalog.load())}async refreshCatalog(){return createStatus(await this.catalog.refresh())}},SkillTool,SKILL_METADATA_DESCRIPTION_CHAR_BUDGET=4000;var init_dist18=__esm(()=>{init_dist12();init_dist17();SkillTool=class extends BaseTool{catalog;constructor(catalog){super({name:TOOL_NAME_SKILL,description:"Load and apply a named skill's full SKILL.md instructions. Call this before task work when the current request matches a listed skill, names a skill, or includes a skill: name marker.",inputSchema:{type:"object",properties:{skill_name:{type:"string",description:"Skill name to load from the listed skills catalog."}},required:["skill_name"]},maxResultSizeChars:1/0});this.catalog=catalog}async execute(args,_context){let skillName=typeof args.skill_name==="string"?args.skill_name.trim():"";if(!skillName)throw Error("skill_name must be a non-empty string");let skill=(await this.catalog.load()).byName.get(skillName);if(!skill)return createToolResult({content:[{type:"text",text:`Unknown skill: ${skillName}`}],structuredContent:{success:!1,skillName,message:`Unknown skill: ${skillName}`},isError:!0});return createToolResult({content:[{type:"text",text:formatLoadedSkillResult(skill)}],structuredContent:{success:!0,name:skill.name,description:skill.description,allowedTools:skill.allowedTools,skillFilePath:skill.skillFilePath}})}}});var require_code=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.regexpCode=exports.getEsmExportName=exports.getProperty=exports.safeStringify=exports.stringify=exports.strConcat=exports.addCodeArg=exports.str=exports._=exports.nil=exports._Code=exports.Name=exports.IDENTIFIER=exports._CodeOrName=void 0;class _CodeOrName{}exports._CodeOrName=_CodeOrName;exports.IDENTIFIER=/^[a-z$_][a-z$_0-9]*$/i;class Name extends _CodeOrName{constructor(s){super();if(!exports.IDENTIFIER.test(s))throw Error("CodeGen: name must be a valid identifier");this.str=s}toString(){return this.str}emptyStr(){return!1}get names(){return{[this.str]:1}}}exports.Name=Name;class _Code extends _CodeOrName{constructor(code){super();this._items=typeof code==="string"?[code]:code}toString(){return this.str}emptyStr(){if(this._items.length>1)return!1;let item=this._items[0];return item===""||item==='""'}get str(){var _a16;return(_a16=this._str)!==null&&_a16!==void 0?_a16:this._str=this._items.reduce((s,c)=>`${s}${c}`,"")}get names(){var _a16;return(_a16=this._names)!==null&&_a16!==void 0?_a16:this._names=this._items.reduce((names,c)=>{if(c instanceof Name)names[c.str]=(names[c.str]||0)+1;return names},{})}}exports._Code=_Code;exports.nil=new _Code("");function _(strs,...args){let code=[strs[0]],i=0;while(i<args.length)addCodeArg(code,args[i]),code.push(strs[++i]);return new _Code(code)}exports._=_;var plus=new _Code("+");function str(strs,...args){let expr=[safeStringify(strs[0])],i=0;while(i<args.length)expr.push(plus),addCodeArg(expr,args[i]),expr.push(plus,safeStringify(strs[++i]));return optimize(expr),new _Code(expr)}exports.str=str;function addCodeArg(code,arg){if(arg instanceof _Code)code.push(...arg._items);else if(arg instanceof Name)code.push(arg);else code.push(interpolate(arg))}exports.addCodeArg=addCodeArg;function optimize(expr){let i=1;while(i<expr.length-1){if(expr[i]===plus){let res=mergeExprItems(expr[i-1],expr[i+1]);if(res!==void 0){expr.splice(i-1,3,res);continue}expr[i++]="+"}i++}}function mergeExprItems(a,b){if(b==='""')return a;if(a==='""')return b;if(typeof a=="string"){if(b instanceof Name||a[a.length-1]!=='"')return;if(typeof b!="string")return`${a.slice(0,-1)}${b}"`;if(b[0]==='"')return a.slice(0,-1)+b.slice(1);return}if(typeof b=="string"&&b[0]==='"'&&!(a instanceof Name))return`"${a}${b.slice(1)}`;return}function strConcat(c1,c2){return c2.emptyStr()?c1:c1.emptyStr()?c2:str`${c1}${c2}`}exports.strConcat=strConcat;function interpolate(x){return typeof x=="number"||typeof x=="boolean"||x===null?x:safeStringify(Array.isArray(x)?x.join(","):x)}function stringify(x){return new _Code(safeStringify(x))}exports.stringify=stringify;function safeStringify(x){return JSON.stringify(x).replace(/\u2028/g,"\\u2028").replace(/\u2029/g,"\\u2029")}exports.safeStringify=safeStringify;function getProperty(key){return typeof key=="string"&&exports.IDENTIFIER.test(key)?new _Code(`.${key}`):_`[${key}]`}exports.getProperty=getProperty;function getEsmExportName(key){if(typeof key=="string"&&exports.IDENTIFIER.test(key))return new _Code(`${key}`);throw Error(`CodeGen: invalid export name: ${key}, use explicit $id name mapping`)}exports.getEsmExportName=getEsmExportName;function regexpCode(rx){return new _Code(rx.toString())}exports.regexpCode=regexpCode});var require_scope=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.ValueScope=exports.ValueScopeName=exports.Scope=exports.varKinds=exports.UsedValueState=void 0;var code_1=require_code();class ValueError extends Error{constructor(name15){super(`CodeGen: "code" for ${name15} not defined`);this.value=name15.value}}var UsedValueState;(function(UsedValueState2){UsedValueState2[UsedValueState2.Started=0]="Started",UsedValueState2[UsedValueState2.Completed=1]="Completed"})(UsedValueState||(exports.UsedValueState=UsedValueState={}));exports.varKinds={const:new code_1.Name("const"),let:new code_1.Name("let"),var:new code_1.Name("var")};class Scope{constructor({prefixes,parent}={}){this._names={},this._prefixes=prefixes,this._parent=parent}toName(nameOrPrefix){return nameOrPrefix instanceof code_1.Name?nameOrPrefix:this.name(nameOrPrefix)}name(prefix){return new code_1.Name(this._newName(prefix))}_newName(prefix){let ng=this._names[prefix]||this._nameGroup(prefix);return`${prefix}${ng.index++}`}_nameGroup(prefix){var _a16,_b16;if(((_b16=(_a16=this._parent)===null||_a16===void 0?void 0:_a16._prefixes)===null||_b16===void 0?void 0:_b16.has(prefix))||this._prefixes&&!this._prefixes.has(prefix))throw Error(`CodeGen: prefix "${prefix}" is not allowed in this scope`);return this._names[prefix]={prefix,index:0}}}exports.Scope=Scope;class ValueScopeName extends code_1.Name{constructor(prefix,nameStr){super(nameStr);this.prefix=prefix}setValue(value,{property,itemIndex}){this.value=value,this.scopePath=code_1._`.${new code_1.Name(property)}[${itemIndex}]`}}exports.ValueScopeName=ValueScopeName;var line=code_1._`\n`;class ValueScope extends Scope{constructor(opts){super(opts);this._values={},this._scope=opts.scope,this.opts={...opts,_n:opts.lines?line:code_1.nil}}get(){return this._scope}name(prefix){return new ValueScopeName(prefix,this._newName(prefix))}value(nameOrPrefix,value){var _a16;if(value.ref===void 0)throw Error("CodeGen: ref must be passed in value");let name15=this.toName(nameOrPrefix),{prefix}=name15,valueKey=(_a16=value.key)!==null&&_a16!==void 0?_a16:value.ref,vs=this._values[prefix];if(vs){let _name=vs.get(valueKey);if(_name)return _name}else vs=this._values[prefix]=new Map;vs.set(valueKey,name15);let s=this._scope[prefix]||(this._scope[prefix]=[]),itemIndex=s.length;return s[itemIndex]=value.ref,name15.setValue(value,{property:prefix,itemIndex}),name15}getValue(prefix,keyOrRef){let vs=this._values[prefix];if(!vs)return;return vs.get(keyOrRef)}scopeRefs(scopeName,values=this._values){return this._reduceValues(values,(name15)=>{if(name15.scopePath===void 0)throw Error(`CodeGen: name "${name15}" has no value`);return code_1._`${scopeName}${name15.scopePath}`})}scopeCode(values=this._values,usedValues,getCode){return this._reduceValues(values,(name15)=>{if(name15.value===void 0)throw Error(`CodeGen: name "${name15}" has no value`);return name15.value.code},usedValues,getCode)}_reduceValues(values,valueCode,usedValues={},getCode){let code=code_1.nil;for(let prefix in values){let vs=values[prefix];if(!vs)continue;let nameSet=usedValues[prefix]=usedValues[prefix]||new Map;vs.forEach((name15)=>{if(nameSet.has(name15))return;nameSet.set(name15,UsedValueState.Started);let c=valueCode(name15);if(c){let def=this.opts.es5?exports.varKinds.var:exports.varKinds.const;code=code_1._`${code}${def} ${name15} = ${c};${this.opts._n}`}else if(c=getCode===null||getCode===void 0?void 0:getCode(name15))code=code_1._`${code}${c}${this.opts._n}`;else throw new ValueError(name15);nameSet.set(name15,UsedValueState.Completed)})}return code}}exports.ValueScope=ValueScope});var require_codegen=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.or=exports.and=exports.not=exports.CodeGen=exports.operators=exports.varKinds=exports.ValueScopeName=exports.ValueScope=exports.Scope=exports.Name=exports.regexpCode=exports.stringify=exports.getProperty=exports.nil=exports.strConcat=exports.str=exports._=void 0;var code_1=require_code(),scope_1=require_scope(),code_2=require_code();Object.defineProperty(exports,"_",{enumerable:!0,get:function(){return code_2._}});Object.defineProperty(exports,"str",{enumerable:!0,get:function(){return code_2.str}});Object.defineProperty(exports,"strConcat",{enumerable:!0,get:function(){return code_2.strConcat}});Object.defineProperty(exports,"nil",{enumerable:!0,get:function(){return code_2.nil}});Object.defineProperty(exports,"getProperty",{enumerable:!0,get:function(){return code_2.getProperty}});Object.defineProperty(exports,"stringify",{enumerable:!0,get:function(){return code_2.stringify}});Object.defineProperty(exports,"regexpCode",{enumerable:!0,get:function(){return code_2.regexpCode}});Object.defineProperty(exports,"Name",{enumerable:!0,get:function(){return code_2.Name}});var scope_2=require_scope();Object.defineProperty(exports,"Scope",{enumerable:!0,get:function(){return scope_2.Scope}});Object.defineProperty(exports,"ValueScope",{enumerable:!0,get:function(){return scope_2.ValueScope}});Object.defineProperty(exports,"ValueScopeName",{enumerable:!0,get:function(){return scope_2.ValueScopeName}});Object.defineProperty(exports,"varKinds",{enumerable:!0,get:function(){return scope_2.varKinds}});exports.operators={GT:new code_1._Code(">"),GTE:new code_1._Code(">="),LT:new code_1._Code("<"),LTE:new code_1._Code("<="),EQ:new code_1._Code("==="),NEQ:new code_1._Code("!=="),NOT:new code_1._Code("!"),OR:new code_1._Code("||"),AND:new code_1._Code("&&"),ADD:new code_1._Code("+")};class Node2{optimizeNodes(){return this}optimizeNames(_names,_constants){return this}}class Def extends Node2{constructor(varKind,name15,rhs){super();this.varKind=varKind,this.name=name15,this.rhs=rhs}render({es5,_n}){let varKind=es5?scope_1.varKinds.var:this.varKind,rhs=this.rhs===void 0?"":` = ${this.rhs}`;return`${varKind} ${this.name}${rhs};`+_n}optimizeNames(names,constants){if(!names[this.name.str])return;if(this.rhs)this.rhs=optimizeExpr(this.rhs,names,constants);return this}get names(){return this.rhs instanceof code_1._CodeOrName?this.rhs.names:{}}}class Assign extends Node2{constructor(lhs,rhs,sideEffects){super();this.lhs=lhs,this.rhs=rhs,this.sideEffects=sideEffects}render({_n}){return`${this.lhs} = ${this.rhs};`+_n}optimizeNames(names,constants){if(this.lhs instanceof code_1.Name&&!names[this.lhs.str]&&!this.sideEffects)return;return this.rhs=optimizeExpr(this.rhs,names,constants),this}get names(){let names=this.lhs instanceof code_1.Name?{}:{...this.lhs.names};return addExprNames(names,this.rhs)}}class AssignOp extends Assign{constructor(lhs,op,rhs,sideEffects){super(lhs,rhs,sideEffects);this.op=op}render({_n}){return`${this.lhs} ${this.op}= ${this.rhs};`+_n}}class Label extends Node2{constructor(label){super();this.label=label,this.names={}}render({_n}){return`${this.label}:`+_n}}class Break extends Node2{constructor(label){super();this.label=label,this.names={}}render({_n}){return`break${this.label?` ${this.label}`:""};`+_n}}class Throw extends Node2{constructor(error48){super();this.error=error48}render({_n}){return`throw ${this.error};`+_n}get names(){return this.error.names}}class AnyCode extends Node2{constructor(code){super();this.code=code}render({_n}){return`${this.code};`+_n}optimizeNodes(){return`${this.code}`?this:void 0}optimizeNames(names,constants){return this.code=optimizeExpr(this.code,names,constants),this}get names(){return this.code instanceof code_1._CodeOrName?this.code.names:{}}}class ParentNode extends Node2{constructor(nodes=[]){super();this.nodes=nodes}render(opts){return this.nodes.reduce((code,n)=>code+n.render(opts),"")}optimizeNodes(){let{nodes}=this,i=nodes.length;while(i--){let n=nodes[i].optimizeNodes();if(Array.isArray(n))nodes.splice(i,1,...n);else if(n)nodes[i]=n;else nodes.splice(i,1)}return nodes.length>0?this:void 0}optimizeNames(names,constants){let{nodes}=this,i=nodes.length;while(i--){let n=nodes[i];if(n.optimizeNames(names,constants))continue;subtractNames(names,n.names),nodes.splice(i,1)}return nodes.length>0?this:void 0}get names(){return this.nodes.reduce((names,n)=>addNames(names,n.names),{})}}class BlockNode extends ParentNode{render(opts){return"{"+opts._n+super.render(opts)+"}"+opts._n}}class Root extends ParentNode{}class Else extends BlockNode{}Else.kind="else";class If extends BlockNode{constructor(condition,nodes){super(nodes);this.condition=condition}render(opts){let code=`if(${this.condition})`+super.render(opts);if(this.else)code+="else "+this.else.render(opts);return code}optimizeNodes(){super.optimizeNodes();let cond=this.condition;if(cond===!0)return this.nodes;let e=this.else;if(e){let ns=e.optimizeNodes();e=this.else=Array.isArray(ns)?new Else(ns):ns}if(e){if(cond===!1)return e instanceof If?e:e.nodes;if(this.nodes.length)return this;return new If(not(cond),e instanceof If?[e]:e.nodes)}if(cond===!1||!this.nodes.length)return;return this}optimizeNames(names,constants){var _a16;if(this.else=(_a16=this.else)===null||_a16===void 0?void 0:_a16.optimizeNames(names,constants),!(super.optimizeNames(names,constants)||this.else))return;return this.condition=optimizeExpr(this.condition,names,constants),this}get names(){let names=super.names;if(addExprNames(names,this.condition),this.else)addNames(names,this.else.names);return names}}If.kind="if";class For extends BlockNode{}For.kind="for";class ForLoop extends For{constructor(iteration){super();this.iteration=iteration}render(opts){return`for(${this.iteration})`+super.render(opts)}optimizeNames(names,constants){if(!super.optimizeNames(names,constants))return;return this.iteration=optimizeExpr(this.iteration,names,constants),this}get names(){return addNames(super.names,this.iteration.names)}}class ForRange extends For{constructor(varKind,name15,from,to){super();this.varKind=varKind,this.name=name15,this.from=from,this.to=to}render(opts){let varKind=opts.es5?scope_1.varKinds.var:this.varKind,{name:name15,from,to}=this;return`for(${varKind} ${name15}=${from}; ${name15}<${to}; ${name15}++)`+super.render(opts)}get names(){let names=addExprNames(super.names,this.from);return addExprNames(names,this.to)}}class ForIter extends For{constructor(loop,varKind,name15,iterable){super();this.loop=loop,this.varKind=varKind,this.name=name15,this.iterable=iterable}render(opts){return`for(${this.varKind} ${this.name} ${this.loop} ${this.iterable})`+super.render(opts)}optimizeNames(names,constants){if(!super.optimizeNames(names,constants))return;return this.iterable=optimizeExpr(this.iterable,names,constants),this}get names(){return addNames(super.names,this.iterable.names)}}class Func extends BlockNode{constructor(name15,args,async){super();this.name=name15,this.args=args,this.async=async}render(opts){return`${this.async?"async ":""}function ${this.name}(${this.args})`+super.render(opts)}}Func.kind="func";class Return extends ParentNode{render(opts){return"return "+super.render(opts)}}Return.kind="return";class Try extends BlockNode{render(opts){let code="try"+super.render(opts);if(this.catch)code+=this.catch.render(opts);if(this.finally)code+=this.finally.render(opts);return code}optimizeNodes(){var _a16,_b16;return super.optimizeNodes(),(_a16=this.catch)===null||_a16===void 0||_a16.optimizeNodes(),(_b16=this.finally)===null||_b16===void 0||_b16.optimizeNodes(),this}optimizeNames(names,constants){var _a16,_b16;return super.optimizeNames(names,constants),(_a16=this.catch)===null||_a16===void 0||_a16.optimizeNames(names,constants),(_b16=this.finally)===null||_b16===void 0||_b16.optimizeNames(names,constants),this}get names(){let names=super.names;if(this.catch)addNames(names,this.catch.names);if(this.finally)addNames(names,this.finally.names);return names}}class Catch extends BlockNode{constructor(error48){super();this.error=error48}render(opts){return`catch(${this.error})`+super.render(opts)}}Catch.kind="catch";class Finally extends BlockNode{render(opts){return"finally"+super.render(opts)}}Finally.kind="finally";class CodeGen{constructor(extScope,opts={}){this._values={},this._blockStarts=[],this._constants={},this.opts={...opts,_n:opts.lines?`
|
|
319
319
|
`:""},this._extScope=extScope,this._scope=new scope_1.Scope({parent:extScope}),this._nodes=[new Root]}toString(){return this._root.render(this.opts)}name(prefix){return this._scope.name(prefix)}scopeName(prefix){return this._extScope.name(prefix)}scopeValue(prefixOrName,value){let name15=this._extScope.value(prefixOrName,value);return(this._values[name15.prefix]||(this._values[name15.prefix]=new Set)).add(name15),name15}getScopeValue(prefix,keyOrRef){return this._extScope.getValue(prefix,keyOrRef)}scopeRefs(scopeName){return this._extScope.scopeRefs(scopeName,this._values)}scopeCode(){return this._extScope.scopeCode(this._values)}_def(varKind,nameOrPrefix,rhs,constant){let name15=this._scope.toName(nameOrPrefix);if(rhs!==void 0&&constant)this._constants[name15.str]=rhs;return this._leafNode(new Def(varKind,name15,rhs)),name15}const(nameOrPrefix,rhs,_constant){return this._def(scope_1.varKinds.const,nameOrPrefix,rhs,_constant)}let(nameOrPrefix,rhs,_constant){return this._def(scope_1.varKinds.let,nameOrPrefix,rhs,_constant)}var(nameOrPrefix,rhs,_constant){return this._def(scope_1.varKinds.var,nameOrPrefix,rhs,_constant)}assign(lhs,rhs,sideEffects){return this._leafNode(new Assign(lhs,rhs,sideEffects))}add(lhs,rhs){return this._leafNode(new AssignOp(lhs,exports.operators.ADD,rhs))}code(c){if(typeof c=="function")c();else if(c!==code_1.nil)this._leafNode(new AnyCode(c));return this}object(...keyValues){let code=["{"];for(let[key,value]of keyValues){if(code.length>1)code.push(",");if(code.push(key),key!==value||this.opts.es5)code.push(":"),(0,code_1.addCodeArg)(code,value)}return code.push("}"),new code_1._Code(code)}if(condition,thenBody,elseBody){if(this._blockNode(new If(condition)),thenBody&&elseBody)this.code(thenBody).else().code(elseBody).endIf();else if(thenBody)this.code(thenBody).endIf();else if(elseBody)throw Error('CodeGen: "else" body without "then" body');return this}elseIf(condition){return this._elseNode(new If(condition))}else(){return this._elseNode(new Else)}endIf(){return this._endBlockNode(If,Else)}_for(node,forBody){if(this._blockNode(node),forBody)this.code(forBody).endFor();return this}for(iteration,forBody){return this._for(new ForLoop(iteration),forBody)}forRange(nameOrPrefix,from,to,forBody,varKind=this.opts.es5?scope_1.varKinds.var:scope_1.varKinds.let){let name15=this._scope.toName(nameOrPrefix);return this._for(new ForRange(varKind,name15,from,to),()=>forBody(name15))}forOf(nameOrPrefix,iterable,forBody,varKind=scope_1.varKinds.const){let name15=this._scope.toName(nameOrPrefix);if(this.opts.es5){let arr=iterable instanceof code_1.Name?iterable:this.var("_arr",iterable);return this.forRange("_i",0,code_1._`${arr}.length`,(i)=>{this.var(name15,code_1._`${arr}[${i}]`),forBody(name15)})}return this._for(new ForIter("of",varKind,name15,iterable),()=>forBody(name15))}forIn(nameOrPrefix,obj,forBody,varKind=this.opts.es5?scope_1.varKinds.var:scope_1.varKinds.const){if(this.opts.ownProperties)return this.forOf(nameOrPrefix,code_1._`Object.keys(${obj})`,forBody);let name15=this._scope.toName(nameOrPrefix);return this._for(new ForIter("in",varKind,name15,obj),()=>forBody(name15))}endFor(){return this._endBlockNode(For)}label(label){return this._leafNode(new Label(label))}break(label){return this._leafNode(new Break(label))}return(value){let node=new Return;if(this._blockNode(node),this.code(value),node.nodes.length!==1)throw Error('CodeGen: "return" should have one node');return this._endBlockNode(Return)}try(tryBody,catchCode,finallyCode){if(!catchCode&&!finallyCode)throw Error('CodeGen: "try" without "catch" and "finally"');let node=new Try;if(this._blockNode(node),this.code(tryBody),catchCode){let error48=this.name("e");this._currNode=node.catch=new Catch(error48),catchCode(error48)}if(finallyCode)this._currNode=node.finally=new Finally,this.code(finallyCode);return this._endBlockNode(Catch,Finally)}throw(error48){return this._leafNode(new Throw(error48))}block(body,nodeCount){if(this._blockStarts.push(this._nodes.length),body)this.code(body).endBlock(nodeCount);return this}endBlock(nodeCount){let len=this._blockStarts.pop();if(len===void 0)throw Error("CodeGen: not in self-balancing block");let toClose=this._nodes.length-len;if(toClose<0||nodeCount!==void 0&&toClose!==nodeCount)throw Error(`CodeGen: wrong number of nodes: ${toClose} vs ${nodeCount} expected`);return this._nodes.length=len,this}func(name15,args=code_1.nil,async,funcBody){if(this._blockNode(new Func(name15,args,async)),funcBody)this.code(funcBody).endFunc();return this}endFunc(){return this._endBlockNode(Func)}optimize(n=1){while(n-- >0)this._root.optimizeNodes(),this._root.optimizeNames(this._root.names,this._constants)}_leafNode(node){return this._currNode.nodes.push(node),this}_blockNode(node){this._currNode.nodes.push(node),this._nodes.push(node)}_endBlockNode(N1,N2){let n=this._currNode;if(n instanceof N1||N2&&n instanceof N2)return this._nodes.pop(),this;throw Error(`CodeGen: not in block "${N2?`${N1.kind}/${N2.kind}`:N1.kind}"`)}_elseNode(node){let n=this._currNode;if(!(n instanceof If))throw Error('CodeGen: "else" without "if"');return this._currNode=n.else=node,this}get _root(){return this._nodes[0]}get _currNode(){let ns=this._nodes;return ns[ns.length-1]}set _currNode(node){let ns=this._nodes;ns[ns.length-1]=node}}exports.CodeGen=CodeGen;function addNames(names,from){for(let n in from)names[n]=(names[n]||0)+(from[n]||0);return names}function addExprNames(names,from){return from instanceof code_1._CodeOrName?addNames(names,from.names):names}function optimizeExpr(expr,names,constants){if(expr instanceof code_1.Name)return replaceName(expr);if(!canOptimize(expr))return expr;return new code_1._Code(expr._items.reduce((items,c)=>{if(c instanceof code_1.Name)c=replaceName(c);if(c instanceof code_1._Code)items.push(...c._items);else items.push(c);return items},[]));function replaceName(n){let c=constants[n.str];if(c===void 0||names[n.str]!==1)return n;return delete names[n.str],c}function canOptimize(e){return e instanceof code_1._Code&&e._items.some((c)=>c instanceof code_1.Name&&names[c.str]===1&&constants[c.str]!==void 0)}}function subtractNames(names,from){for(let n in from)names[n]=(names[n]||0)-(from[n]||0)}function not(x){return typeof x=="boolean"||typeof x=="number"||x===null?!x:code_1._`!${par(x)}`}exports.not=not;var andCode=mappend(exports.operators.AND);function and(...args){return args.reduce(andCode)}exports.and=and;var orCode=mappend(exports.operators.OR);function or(...args){return args.reduce(orCode)}exports.or=or;function mappend(op){return(x,y)=>x===code_1.nil?y:y===code_1.nil?x:code_1._`${par(x)} ${op} ${par(y)}`}function par(x){return x instanceof code_1.Name?x:code_1._`(${x})`}});var require_util=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.checkStrictMode=exports.getErrorPath=exports.Type=exports.useFunc=exports.setEvaluated=exports.evaluatedPropsToName=exports.mergeEvaluated=exports.eachItem=exports.unescapeJsonPointer=exports.escapeJsonPointer=exports.escapeFragment=exports.unescapeFragment=exports.schemaRefOrVal=exports.schemaHasRulesButRef=exports.schemaHasRules=exports.checkUnknownRules=exports.alwaysValidSchema=exports.toHash=void 0;var codegen_1=require_codegen(),code_1=require_code();function toHash(arr){let hash2={};for(let item of arr)hash2[item]=!0;return hash2}exports.toHash=toHash;function alwaysValidSchema(it,schema2){if(typeof schema2=="boolean")return schema2;if(Object.keys(schema2).length===0)return!0;return checkUnknownRules(it,schema2),!schemaHasRules(schema2,it.self.RULES.all)}exports.alwaysValidSchema=alwaysValidSchema;function checkUnknownRules(it,schema2=it.schema){let{opts,self:self2}=it;if(!opts.strictSchema)return;if(typeof schema2==="boolean")return;let rules=self2.RULES.keywords;for(let key in schema2)if(!rules[key])checkStrictMode(it,`unknown keyword: "${key}"`)}exports.checkUnknownRules=checkUnknownRules;function schemaHasRules(schema2,rules){if(typeof schema2=="boolean")return!schema2;for(let key in schema2)if(rules[key])return!0;return!1}exports.schemaHasRules=schemaHasRules;function schemaHasRulesButRef(schema2,RULES){if(typeof schema2=="boolean")return!schema2;for(let key in schema2)if(key!=="$ref"&&RULES.all[key])return!0;return!1}exports.schemaHasRulesButRef=schemaHasRulesButRef;function schemaRefOrVal({topSchemaRef,schemaPath},schema2,keyword,$data){if(!$data){if(typeof schema2=="number"||typeof schema2=="boolean")return schema2;if(typeof schema2=="string")return codegen_1._`${schema2}`}return codegen_1._`${topSchemaRef}${schemaPath}${(0,codegen_1.getProperty)(keyword)}`}exports.schemaRefOrVal=schemaRefOrVal;function unescapeFragment(str){return unescapeJsonPointer(decodeURIComponent(str))}exports.unescapeFragment=unescapeFragment;function escapeFragment(str){return encodeURIComponent(escapeJsonPointer(str))}exports.escapeFragment=escapeFragment;function escapeJsonPointer(str){if(typeof str=="number")return`${str}`;return str.replace(/~/g,"~0").replace(/\//g,"~1")}exports.escapeJsonPointer=escapeJsonPointer;function unescapeJsonPointer(str){return str.replace(/~1/g,"/").replace(/~0/g,"~")}exports.unescapeJsonPointer=unescapeJsonPointer;function eachItem(xs,f){if(Array.isArray(xs))for(let x of xs)f(x);else f(xs)}exports.eachItem=eachItem;function makeMergeEvaluated({mergeNames,mergeToName,mergeValues:mergeValues3,resultToName}){return(gen,from,to,toName)=>{let res=to===void 0?from:to instanceof codegen_1.Name?(from instanceof codegen_1.Name?mergeNames(gen,from,to):mergeToName(gen,from,to),to):from instanceof codegen_1.Name?(mergeToName(gen,to,from),from):mergeValues3(from,to);return toName===codegen_1.Name&&!(res instanceof codegen_1.Name)?resultToName(gen,res):res}}exports.mergeEvaluated={props:makeMergeEvaluated({mergeNames:(gen,from,to)=>gen.if(codegen_1._`${to} !== true && ${from} !== undefined`,()=>{gen.if(codegen_1._`${from} === true`,()=>gen.assign(to,!0),()=>gen.assign(to,codegen_1._`${to} || {}`).code(codegen_1._`Object.assign(${to}, ${from})`))}),mergeToName:(gen,from,to)=>gen.if(codegen_1._`${to} !== true`,()=>{if(from===!0)gen.assign(to,!0);else gen.assign(to,codegen_1._`${to} || {}`),setEvaluated(gen,to,from)}),mergeValues:(from,to)=>from===!0?!0:{...from,...to},resultToName:evaluatedPropsToName}),items:makeMergeEvaluated({mergeNames:(gen,from,to)=>gen.if(codegen_1._`${to} !== true && ${from} !== undefined`,()=>gen.assign(to,codegen_1._`${from} === true ? true : ${to} > ${from} ? ${to} : ${from}`)),mergeToName:(gen,from,to)=>gen.if(codegen_1._`${to} !== true`,()=>gen.assign(to,from===!0?!0:codegen_1._`${to} > ${from} ? ${to} : ${from}`)),mergeValues:(from,to)=>from===!0?!0:Math.max(from,to),resultToName:(gen,items)=>gen.var("items",items)})};function evaluatedPropsToName(gen,ps){if(ps===!0)return gen.var("props",!0);let props=gen.var("props",codegen_1._`{}`);if(ps!==void 0)setEvaluated(gen,props,ps);return props}exports.evaluatedPropsToName=evaluatedPropsToName;function setEvaluated(gen,props,ps){Object.keys(ps).forEach((p)=>gen.assign(codegen_1._`${props}${(0,codegen_1.getProperty)(p)}`,!0))}exports.setEvaluated=setEvaluated;var snippets={};function useFunc(gen,f){return gen.scopeValue("func",{ref:f,code:snippets[f.code]||(snippets[f.code]=new code_1._Code(f.code))})}exports.useFunc=useFunc;var Type;(function(Type2){Type2[Type2.Num=0]="Num",Type2[Type2.Str=1]="Str"})(Type||(exports.Type=Type={}));function getErrorPath(dataProp,dataPropType,jsPropertySyntax){if(dataProp instanceof codegen_1.Name){let isNumber=dataPropType===Type.Num;return jsPropertySyntax?isNumber?codegen_1._`"[" + ${dataProp} + "]"`:codegen_1._`"['" + ${dataProp} + "']"`:isNumber?codegen_1._`"/" + ${dataProp}`:codegen_1._`"/" + ${dataProp}.replace(/~/g, "~0").replace(/\\//g, "~1")`}return jsPropertySyntax?(0,codegen_1.getProperty)(dataProp).toString():"/"+escapeJsonPointer(dataProp)}exports.getErrorPath=getErrorPath;function checkStrictMode(it,msg,mode=it.opts.strictSchema){if(!mode)return;if(msg=`strict mode: ${msg}`,mode===!0)throw Error(msg);it.self.logger.warn(msg)}exports.checkStrictMode=checkStrictMode});var require_names=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});var codegen_1=require_codegen(),names={data:new codegen_1.Name("data"),valCxt:new codegen_1.Name("valCxt"),instancePath:new codegen_1.Name("instancePath"),parentData:new codegen_1.Name("parentData"),parentDataProperty:new codegen_1.Name("parentDataProperty"),rootData:new codegen_1.Name("rootData"),dynamicAnchors:new codegen_1.Name("dynamicAnchors"),vErrors:new codegen_1.Name("vErrors"),errors:new codegen_1.Name("errors"),this:new codegen_1.Name("this"),self:new codegen_1.Name("self"),scope:new codegen_1.Name("scope"),json:new codegen_1.Name("json"),jsonPos:new codegen_1.Name("jsonPos"),jsonLen:new codegen_1.Name("jsonLen"),jsonPart:new codegen_1.Name("jsonPart")};exports.default=names});var require_errors2=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.extendErrors=exports.resetErrorsCount=exports.reportExtraError=exports.reportError=exports.keyword$DataError=exports.keywordError=void 0;var codegen_1=require_codegen(),util_1=require_util(),names_1=require_names();exports.keywordError={message:({keyword})=>codegen_1.str`must pass "${keyword}" keyword validation`};exports.keyword$DataError={message:({keyword,schemaType})=>schemaType?codegen_1.str`"${keyword}" keyword must be ${schemaType} ($data)`:codegen_1.str`"${keyword}" keyword is invalid ($data)`};function reportError2(cxt,error48=exports.keywordError,errorPaths,overrideAllErrors){let{it}=cxt,{gen,compositeRule,allErrors}=it,errObj=errorObjectCode(cxt,error48,errorPaths);if(overrideAllErrors!==null&&overrideAllErrors!==void 0?overrideAllErrors:compositeRule||allErrors)addError(gen,errObj);else returnErrors(it,codegen_1._`[${errObj}]`)}exports.reportError=reportError2;function reportExtraError(cxt,error48=exports.keywordError,errorPaths){let{it}=cxt,{gen,compositeRule,allErrors}=it,errObj=errorObjectCode(cxt,error48,errorPaths);if(addError(gen,errObj),!(compositeRule||allErrors))returnErrors(it,names_1.default.vErrors)}exports.reportExtraError=reportExtraError;function resetErrorsCount(gen,errsCount){gen.assign(names_1.default.errors,errsCount),gen.if(codegen_1._`${names_1.default.vErrors} !== null`,()=>gen.if(errsCount,()=>gen.assign(codegen_1._`${names_1.default.vErrors}.length`,errsCount),()=>gen.assign(names_1.default.vErrors,null)))}exports.resetErrorsCount=resetErrorsCount;function extendErrors({gen,keyword,schemaValue,data,errsCount,it}){if(errsCount===void 0)throw Error("ajv implementation error");let err=gen.name("err");gen.forRange("i",errsCount,names_1.default.errors,(i)=>{if(gen.const(err,codegen_1._`${names_1.default.vErrors}[${i}]`),gen.if(codegen_1._`${err}.instancePath === undefined`,()=>gen.assign(codegen_1._`${err}.instancePath`,(0,codegen_1.strConcat)(names_1.default.instancePath,it.errorPath))),gen.assign(codegen_1._`${err}.schemaPath`,codegen_1.str`${it.errSchemaPath}/${keyword}`),it.opts.verbose)gen.assign(codegen_1._`${err}.schema`,schemaValue),gen.assign(codegen_1._`${err}.data`,data)})}exports.extendErrors=extendErrors;function addError(gen,errObj){let err=gen.const("err",errObj);gen.if(codegen_1._`${names_1.default.vErrors} === null`,()=>gen.assign(names_1.default.vErrors,codegen_1._`[${err}]`),codegen_1._`${names_1.default.vErrors}.push(${err})`),gen.code(codegen_1._`${names_1.default.errors}++`)}function returnErrors(it,errs){let{gen,validateName,schemaEnv}=it;if(schemaEnv.$async)gen.throw(codegen_1._`new ${it.ValidationError}(${errs})`);else gen.assign(codegen_1._`${validateName}.errors`,errs),gen.return(!1)}var E={keyword:new codegen_1.Name("keyword"),schemaPath:new codegen_1.Name("schemaPath"),params:new codegen_1.Name("params"),propertyName:new codegen_1.Name("propertyName"),message:new codegen_1.Name("message"),schema:new codegen_1.Name("schema"),parentSchema:new codegen_1.Name("parentSchema")};function errorObjectCode(cxt,error48,errorPaths){let{createErrors}=cxt.it;if(createErrors===!1)return codegen_1._`{}`;return errorObject(cxt,error48,errorPaths)}function errorObject(cxt,error48,errorPaths={}){let{gen,it}=cxt,keyValues=[errorInstancePath(it,errorPaths),errorSchemaPath(cxt,errorPaths)];return extraErrorProps(cxt,error48,keyValues),gen.object(...keyValues)}function errorInstancePath({errorPath},{instancePath}){let instPath=instancePath?codegen_1.str`${errorPath}${(0,util_1.getErrorPath)(instancePath,util_1.Type.Str)}`:errorPath;return[names_1.default.instancePath,(0,codegen_1.strConcat)(names_1.default.instancePath,instPath)]}function errorSchemaPath({keyword,it:{errSchemaPath}},{schemaPath,parentSchema}){let schPath=parentSchema?errSchemaPath:codegen_1.str`${errSchemaPath}/${keyword}`;if(schemaPath)schPath=codegen_1.str`${schPath}${(0,util_1.getErrorPath)(schemaPath,util_1.Type.Str)}`;return[E.schemaPath,schPath]}function extraErrorProps(cxt,{params,message},keyValues){let{keyword,data,schemaValue,it}=cxt,{opts,propertyName,topSchemaRef,schemaPath}=it;if(keyValues.push([E.keyword,keyword],[E.params,typeof params=="function"?params(cxt):params||codegen_1._`{}`]),opts.messages)keyValues.push([E.message,typeof message=="function"?message(cxt):message]);if(opts.verbose)keyValues.push([E.schema,schemaValue],[E.parentSchema,codegen_1._`${topSchemaRef}${schemaPath}`],[names_1.default.data,data]);if(propertyName)keyValues.push([E.propertyName,propertyName])}});var require_boolSchema=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.boolOrEmptySchema=exports.topBoolOrEmptySchema=void 0;var errors_1=require_errors2(),codegen_1=require_codegen(),names_1=require_names(),boolError={message:"boolean schema is false"};function topBoolOrEmptySchema(it){let{gen,schema:schema2,validateName}=it;if(schema2===!1)falseSchemaError(it,!1);else if(typeof schema2=="object"&&schema2.$async===!0)gen.return(names_1.default.data);else gen.assign(codegen_1._`${validateName}.errors`,null),gen.return(!0)}exports.topBoolOrEmptySchema=topBoolOrEmptySchema;function boolOrEmptySchema(it,valid){let{gen,schema:schema2}=it;if(schema2===!1)gen.var(valid,!1),falseSchemaError(it);else gen.var(valid,!0)}exports.boolOrEmptySchema=boolOrEmptySchema;function falseSchemaError(it,overrideAllErrors){let{gen,data}=it,cxt={gen,keyword:"false schema",data,schema:!1,schemaCode:!1,schemaValue:!1,params:{},it};(0,errors_1.reportError)(cxt,boolError,void 0,overrideAllErrors)}});var require_rules=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.getRules=exports.isJSONType=void 0;var _jsonTypes=["string","number","integer","boolean","null","object","array"],jsonTypes=new Set(_jsonTypes);function isJSONType(x){return typeof x=="string"&&jsonTypes.has(x)}exports.isJSONType=isJSONType;function getRules(){let groups={number:{type:"number",rules:[]},string:{type:"string",rules:[]},array:{type:"array",rules:[]},object:{type:"object",rules:[]}};return{types:{...groups,integer:!0,boolean:!0,null:!0},rules:[{rules:[]},groups.number,groups.string,groups.array,groups.object],post:{rules:[]},all:{},keywords:{}}}exports.getRules=getRules});var require_applicability=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.shouldUseRule=exports.shouldUseGroup=exports.schemaHasRulesForType=void 0;function schemaHasRulesForType({schema:schema2,self:self2},type){let group=self2.RULES.types[type];return group&&group!==!0&&shouldUseGroup(schema2,group)}exports.schemaHasRulesForType=schemaHasRulesForType;function shouldUseGroup(schema2,group){return group.rules.some((rule)=>shouldUseRule(schema2,rule))}exports.shouldUseGroup=shouldUseGroup;function shouldUseRule(schema2,rule){var _a16;return schema2[rule.keyword]!==void 0||((_a16=rule.definition.implements)===null||_a16===void 0?void 0:_a16.some((kwd)=>schema2[kwd]!==void 0))}exports.shouldUseRule=shouldUseRule});var require_dataType=__commonJS((exports)=>{Object.defineProperty(exports,"__esModule",{value:!0});exports.reportTypeError=exports.checkDataTypes=exports.checkDataType=exports.coerceAndCheckDataType=exports.getJSONTypes=exports.getSchemaTypes=exports.DataType=void 0;var rules_1=require_rules(),applicability_1=require_applicability(),errors_1=require_errors2(),codegen_1=require_codegen(),util_1=require_util(),DataType;(function(DataType2){DataType2[DataType2.Correct=0]="Correct",DataType2[DataType2.Wrong=1]="Wrong"})(DataType||(exports.DataType=DataType={}));function getSchemaTypes(schema2){let types2=getJSONTypes(schema2.type);if(types2.includes("null")){if(schema2.nullable===!1)throw Error("type: null contradicts nullable: false")}else{if(!types2.length&&schema2.nullable!==void 0)throw Error('"nullable" cannot be used without "type"');if(schema2.nullable===!0)types2.push("null")}return types2}exports.getSchemaTypes=getSchemaTypes;function getJSONTypes(ts){let types2=Array.isArray(ts)?ts:ts?[ts]:[];if(types2.every(rules_1.isJSONType))return types2;throw Error("type must be JSONType or JSONType[]: "+types2.join(","))}exports.getJSONTypes=getJSONTypes;function coerceAndCheckDataType(it,types2){let{gen,data,opts}=it,coerceTo=coerceToTypes(types2,opts.coerceTypes),checkTypes=types2.length>0&&!(coerceTo.length===0&&types2.length===1&&(0,applicability_1.schemaHasRulesForType)(it,types2[0]));if(checkTypes){let wrongType=checkDataTypes(types2,data,opts.strictNumbers,DataType.Wrong);gen.if(wrongType,()=>{if(coerceTo.length)coerceData(it,types2,coerceTo);else reportTypeError(it)})}return checkTypes}exports.coerceAndCheckDataType=coerceAndCheckDataType;var COERCIBLE=new Set(["string","number","integer","boolean","null"]);function coerceToTypes(types2,coerceTypes){return coerceTypes?types2.filter((t)=>COERCIBLE.has(t)||coerceTypes==="array"&&t==="array"):[]}function coerceData(it,types2,coerceTo){let{gen,data,opts}=it,dataType=gen.let("dataType",codegen_1._`typeof ${data}`),coerced=gen.let("coerced",codegen_1._`undefined`);if(opts.coerceTypes==="array")gen.if(codegen_1._`${dataType} == 'object' && Array.isArray(${data}) && ${data}.length == 1`,()=>gen.assign(data,codegen_1._`${data}[0]`).assign(dataType,codegen_1._`typeof ${data}`).if(checkDataTypes(types2,data,opts.strictNumbers),()=>gen.assign(coerced,data)));gen.if(codegen_1._`${coerced} !== undefined`);for(let t of coerceTo)if(COERCIBLE.has(t)||t==="array"&&opts.coerceTypes==="array")coerceSpecificType(t);gen.else(),reportTypeError(it),gen.endIf(),gen.if(codegen_1._`${coerced} !== undefined`,()=>{gen.assign(data,coerced),assignParentData(it,coerced)});function coerceSpecificType(t){switch(t){case"string":gen.elseIf(codegen_1._`${dataType} == "number" || ${dataType} == "boolean"`).assign(coerced,codegen_1._`"" + ${data}`).elseIf(codegen_1._`${data} === null`).assign(coerced,codegen_1._`""`);return;case"number":gen.elseIf(codegen_1._`${dataType} == "boolean" || ${data} === null
|
|
320
320
|
|| (${dataType} == "string" && ${data} && ${data} == +${data})`).assign(coerced,codegen_1._`+${data}`);return;case"integer":gen.elseIf(codegen_1._`${dataType} === "boolean" || ${data} === null
|
|
321
321
|
|| (${dataType} === "string" && ${data} && ${data} == +${data} && !(${data} % 1))`).assign(coerced,codegen_1._`+${data}`);return;case"boolean":gen.elseIf(codegen_1._`${data} === "false" || ${data} === 0 || ${data} === null`).assign(coerced,!1).elseIf(codegen_1._`${data} === "true" || ${data} === 1`).assign(coerced,!0);return;case"null":gen.elseIf(codegen_1._`${data} === "" || ${data} === 0 || ${data} === false`),gen.assign(coerced,null);return;case"array":gen.elseIf(codegen_1._`${dataType} === "string" || ${dataType} === "number"
|
|
@@ -871,7 +871,7 @@ Note that this is a reverse interface, and charges are based on the number of re
|
|
|
871
871
|
<p>${escapeHtml(error)}</p>
|
|
872
872
|
</div>
|
|
873
873
|
</body>
|
|
874
|
-
</html>`}function escapeHtml(value){return value.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function normalizeText(raw){return String(raw??"").trim()||void 0}function trimTrailingSlash(raw){return raw.replace(/\/+$/,"")}function normalizeHttpUrl(raw){let value=normalizeText(raw);if(!value)return;if(!/^https?:\/\//i.test(value))return;return trimTrailingSlash(value)}async function discoverOAuthMetadata(issuer,fetchImpl=globalThis.fetch){let discoveryUrl=`${issuer}/.well-known/openid-configuration`;try{let response=await fetchImpl(discoveryUrl,{headers:withNextApiOAuthHeaders()});if(!response.ok)return{};let payload=await response.json();return{authorizationEndpoint:normalizeHttpUrl(payload?.authorization_endpoint),tokenEndpoint:normalizeHttpUrl(payload?.token_endpoint)}}catch{return{}}}function readNextApiOAuthConfigInput(_env){let issuer=normalizeHttpUrl(NEXT_API_OAUTH_ISSUER),clientId=normalizeText(NEXT_API_OAUTH_CLIENT_ID),clientSecret=normalizeText(NEXT_API_OAUTH_CLIENT_SECRET);return{issuer,clientId,clientSecret,scope:NEXT_API_OAUTH_DEFAULT_SCOPE,relayBaseUrl:issuer?`${issuer}/v1`:void 0,port:NEXT_API_OAUTH_PORT}}function describeNextApiOAuthConfigError(env){let config=readNextApiOAuthConfigInput(env),missing=[];if(!config.issuer)missing.push("NEXT_API_OAUTH_ISSUER");if(!config.clientId)missing.push("NEXT_API_OAUTH_CLIENT_ID");if(!missing.length)return;return`Missing built-in DimCode OAuth configuration: ${missing.join(", ")}.`}async function resolveNextApiOAuthConfig(env,opts={}){let input=readNextApiOAuthConfigInput(env),configError=describeNextApiOAuthConfigError(env);if(configError)throw Error(configError);let discovered=await discoverOAuthMetadata(input.issuer,opts.fetch);return{issuer:input.issuer,clientId:input.clientId,clientSecret:input.clientSecret,scope:input.scope,relayBaseUrl:input.relayBaseUrl||`${input.issuer}/v1`,authorizationEndpoint:discovered.authorizationEndpoint||`${input.issuer}/oauth/authorize`,tokenEndpoint:discovered.tokenEndpoint||`${input.issuer}/oauth/token`,port:input.port}}function buildNextApiAuthorizeUrl(config,redirectUri,pkce,state){let params=new URLSearchParams({response_type:"code",client_id:config.clientId,redirect_uri:redirectUri,scope:config.scope,code_challenge:pkce.challenge,code_challenge_method:"S256",state});return`${config.authorizationEndpoint}?${params.toString()}`}async function resolveNextApiOAuthBrowserUrl(config,redirectUri,pkce,state){return buildNextApiAuthorizeUrl(config,redirectUri,pkce,state)}async function exchangeNextApiCodeForTokens(code,redirectUri,pkce,config,fetchImpl=globalThis.fetch){let body=new URLSearchParams({grant_type:"authorization_code",code,redirect_uri:redirectUri,client_id:config.clientId,code_verifier:pkce.verifier});if(config.clientSecret)body.set("client_secret",config.clientSecret);let response=await fetchImpl(config.tokenEndpoint,{method:"POST",headers:withNextApiOAuthHeaders({"Content-Type":"application/x-www-form-urlencoded"}),body:body.toString()});if(!response.ok){let detail="";try{let payload=await response.json(),errorCode=normalizeText(payload?.error),description=normalizeText(payload?.error_description);if(errorCode&&description)detail=`${errorCode}: ${description}`;else if(description)detail=description;else if(errorCode)detail=errorCode}catch{try{let text=normalizeText(await response.text());if(text)detail=text}catch{detail=""}}if(detail)throw Error(`Token exchange failed: ${response.status} ${detail}`);throw Error(`Token exchange failed: ${response.status}`)}return validateNextApiOAuthTokenResponse(await response.json(),{requireRefreshToken:!0,label:"Token exchange response"})}function buildNextApiOAuthTokenRecord(config,tokens){return{type:"oauth",refresh:tokens.refresh_token,access:tokens.access_token,expires:Date.now()+(tokens.expires_in??3600)*1000,email:extractEmail({access_token:tokens.access_token,refresh_token:tokens.refresh_token,expires_in:tokens.expires_in,id_token:tokens.id_token||""}),issuer:config.issuer,authorizationEndpoint:config.authorizationEndpoint,tokenEndpoint:config.tokenEndpoint,clientId:config.clientId,scope:tokens.scope||config.scope,relayBaseUrl:config.relayBaseUrl}}async function refreshNextApiAccessToken(tokens){let tokenEndpoint=normalizeHttpUrl(tokens.tokenEndpoint),clientId=normalizeText(tokens.clientId),refreshToken=normalizeText(tokens.refresh);if(!tokenEndpoint||!clientId||!refreshToken)throw Error("DimCode OAuth tokens are missing refresh metadata. Please run `dim auth dimcode-api-oauth` again.");let body=new URLSearchParams({grant_type:"refresh_token",refresh_token:refreshToken,client_id:clientId});body.set("client_secret",NEXT_API_OAUTH_CLIENT_SECRET);let response=await fetch(tokenEndpoint,{method:"POST",headers:withNextApiOAuthHeaders({"Content-Type":"application/x-www-form-urlencoded"}),body:body.toString()});if(!response.ok)throw Error(`Token refresh failed: ${response.status}`);let payload=validateNextApiOAuthTokenResponse(await response.json(),{label:"Token refresh response"});return{...stripOAuthTokenClientSecret(tokens)??tokens,access:payload.access_token,refresh:payload.refresh_token||tokens.refresh,expires:Date.now()+(payload.expires_in??3600)*1000,email:extractEmail({access_token:payload.access_token,refresh_token:payload.refresh_token||tokens.refresh,expires_in:payload.expires_in,id_token:payload.id_token||""})||tokens.email,scope:payload.scope||tokens.scope}}async function fetchNextApiOAuthModels(accessToken,relayBaseUrl){let baseUrl=normalizeHttpUrl(relayBaseUrl);if(!baseUrl)return[];let response=await fetch(`${baseUrl}/models`,{headers:withNextApiOAuthHeaders({Authorization:`Bearer ${accessToken}`})});if(!response.ok)throw Error(`Model discovery failed: ${response.status}`);let payload=await response.json();return(Array.isArray(payload?.data)?payload.data:[]).map((item)=>{let raw=item,id=normalizeText(raw?.id);if(!id)return null;let inputModalities=Array.isArray(raw?.modalities?.input)?raw.modalities.input.map((value)=>String(value??"").toLowerCase()):[];return{id,name:normalizeText(raw?.display_name??raw?.name??raw?.id),vision:typeof raw?.vision==="boolean"?raw.vision:inputModalities.includes("image"),reasoning:raw?.reasoning?.supported===!0?{supported:!0,default:raw.reasoning.default===!0}:void 0}}).filter((item)=>Boolean(item))}var nextApiOAuthServer,pendingNextApiOAuth,activeNextApiOAuthPort=NEXT_API_OAUTH_PORT;async function startNextApiOAuthServer(port=NEXT_API_OAUTH_PORT){if(nextApiOAuthServer)return{port:activeNextApiOAuthPort,redirectUri:`http://localhost:${activeNextApiOAuthPort}/auth/callback`};if(activeNextApiOAuthPort=port,typeof Bun<"u"){try{nextApiOAuthServer=Bun.serve({port:activeNextApiOAuthPort,fetch(request){return handleNextApiOAuthRequest(new URL(request.url))}})}catch(error){if(String(error?.message||"").includes("address already in use"))throw Error(`Port ${activeNextApiOAuthPort} is already in use. Please stop the process using this port and try again.`);throw error}return{port:activeNextApiOAuthPort,redirectUri:`http://localhost:${activeNextApiOAuthPort}/auth/callback`}}return nextApiOAuthServer=(await import("node:http")).createServer(async(req,res)=>{try{let url=new URL(req.url||"/",`http://localhost:${activeNextApiOAuthPort}`),webResponse=handleNextApiOAuthRequest(url),buffer=Buffer.from(await webResponse.arrayBuffer());res.statusCode=webResponse.status,webResponse.headers.forEach((value,key)=>res.setHeader(key,value)),res.end(buffer)}catch(error){res.statusCode=500,res.end(error?.message||"Internal Server Error")}}),await new Promise((resolve,reject)=>{nextApiOAuthServer.listen(activeNextApiOAuthPort,()=>resolve()),nextApiOAuthServer.on("error",(error)=>{if(error?.code==="EADDRINUSE"){reject(Error(`Port ${activeNextApiOAuthPort} is already in use. Please stop the process using this port and try again.`));return}reject(error)})}),{port:activeNextApiOAuthPort,redirectUri:`http://localhost:${activeNextApiOAuthPort}/auth/callback`}}function handleNextApiOAuthRequest(url){if(url.pathname==="/auth/callback"){let code=url.searchParams.get("code")||"",state=url.searchParams.get("state")||"",error=url.searchParams.get("error")||"",errorDescription=url.searchParams.get("error_description")||"";if(error){let errorMessage=errorDescription?`${error}: ${errorDescription}`:error;return pendingNextApiOAuth?.reject(Error(errorMessage)),pendingNextApiOAuth=void 0,new Response(htmlError(errorMessage),{status:400,headers:{"Content-Type":"text/html; charset=utf-8"}})}if(!code)return pendingNextApiOAuth?.reject(Error("Missing authorization code")),pendingNextApiOAuth=void 0,new Response(htmlError("Missing authorization code"),{status:400,headers:{"Content-Type":"text/html; charset=utf-8"}});if(!pendingNextApiOAuth||state!==pendingNextApiOAuth.state)return pendingNextApiOAuth?.reject(Error("Invalid OAuth state - possible CSRF attempt")),pendingNextApiOAuth=void 0,new Response(htmlError("Invalid OAuth state - possible CSRF attempt"),{status:400,headers:{"Content-Type":"text/html; charset=utf-8"}});let current=pendingNextApiOAuth;return pendingNextApiOAuth=void 0,clearTimeout(current.timeout),exchangeNextApiCodeForTokens(code,`http://localhost:${activeNextApiOAuthPort}/auth/callback`,current.pkce,current.config,current.fetch).then(current.resolve).catch(current.reject),new Response(HTML_SUCCESS,{status:200,headers:{"Content-Type":"text/html; charset=utf-8"}})}if(url.pathname==="/auth/cancel")return pendingNextApiOAuth?.reject(Error("Login cancelled")),pendingNextApiOAuth=void 0,new Response("Cancelled",{status:200});return new Response("Not Found",{status:404})}function stopNextApiOAuthServer(){if(nextApiOAuthServer){if(typeof nextApiOAuthServer.stop==="function")nextApiOAuthServer.stop();else if(typeof nextApiOAuthServer.close==="function")nextApiOAuthServer.close();nextApiOAuthServer=void 0}}function waitForNextApiOAuthCallback(pkce,state,config,opts={}){return new Promise((resolve,reject)=>{let timeout=setTimeout(()=>{if(pendingNextApiOAuth)pendingNextApiOAuth=void 0,reject(Error("OAuth callback timeout - authorization took too long"))},300000);pendingNextApiOAuth={state,pkce,config,...opts.fetch?{fetch:opts.fetch}:{},resolve,reject,timeout}})}function normalizeNonEmpty(value){return String(value??"").trim()||void 0}function dedupe(values){let next=[],seen=new Set;for(let value of values){let normalized=normalizeNonEmpty(value);if(!normalized||seen.has(normalized))continue;seen.add(normalized),next.push(normalized)}return next}function modelIdsFromList(models){if(!Array.isArray(models))return[];return dedupe(models.map((model)=>normalizeNonEmpty(model?.id)).filter(Boolean))}function includeRememberedModelIds(modelIds,rememberedModelId){return rememberedModelId?dedupe([...modelIds,rememberedModelId]):[...modelIds]}function buildProviderSelectionCandidates(input){let connections=input.connections??{},candidates=[],existingProviderIds=new Set;for(let builtin of listBuiltinProviders()){let providerId=String(builtin.id??"").trim();if(!providerId)continue;existingProviderIds.add(providerId);let connection=connections[providerId],connectionModels=modelIdsFromList(connection?.models),builtinModels=builtin.customModels?connectionModels:modelIdsFromList(builtin.models),defaultModelId=normalizeNonEmpty(getDefaultModelId(getBuiltinProvider(providerId))),rememberedModelId=normalizeNonEmpty(input.rememberedModels?.[providerId]),modelIds=builtin.customModels?connectionModels:dedupe([...builtinModels??[],...defaultModelId?[defaultModelId]:[]]),resolvedModelIds=includeRememberedModelIds(modelIds,rememberedModelId),hasApiKey=Boolean(normalizeNonEmpty(connection?.apiKey)),selectable=!1;if(providerId===NEXT_API_OAUTH_PROVIDER_ID)selectable=resolvedModelIds.length>0;else if(builtin.customModels)selectable=resolvedModelIds.length>0;else selectable=hasApiKey&&resolvedModelIds.length>0;candidates.push({id:providerId,modelIds:resolvedModelIds,selectable})}for(let provider of input.customProviders??[]){let providerId=normalizeNonEmpty(provider?.id);if(!providerId)continue;existingProviderIds.add(providerId);let modelIds=modelIdsFromList(provider?.models),rememberedModelId=normalizeNonEmpty(input.rememberedModels?.[providerId]),resolvedModelIds=includeRememberedModelIds(modelIds,rememberedModelId);candidates.push({id:providerId,modelIds:resolvedModelIds,selectable:Boolean(normalizeNonEmpty(provider?.apiKey))&&resolvedModelIds.length>0})}let hasNewCustomProviders=(input.customProviders??[]).length>0,legacyModelIds=modelIdsFromList(input.legacyCustom?.models),rememberedLegacyModelId=normalizeNonEmpty(input.rememberedModels?.custom),resolvedLegacyModelIds=includeRememberedModelIds(legacyModelIds,rememberedLegacyModelId);if(!hasNewCustomProviders&&Boolean(resolvedLegacyModelIds.length||normalizeNonEmpty(input.legacyCustom?.apiKey)||normalizeNonEmpty(input.legacyCustom?.baseUrl)))existingProviderIds.add("custom"),candidates.push({id:"custom",modelIds:resolvedLegacyModelIds,selectable:Boolean(normalizeNonEmpty(input.legacyCustom?.apiKey))&&resolvedLegacyModelIds.length>0});return{candidates,existingProviderIds}}function stripUnknownActiveModelSelections(activeModelByProvider,existingProviderIds){let next={};for(let[providerId,modelId]of Object.entries(activeModelByProvider??{})){if(!existingProviderIds.has(providerId))continue;let normalizedModelId=normalizeNonEmpty(modelId);if(!normalizedModelId)continue;next[providerId]=normalizedModelId}return next}function chooseCandidateModel(candidate,preferredModelId,rememberedModels){let normalizedPreferred=normalizeNonEmpty(preferredModelId);if(normalizedPreferred&&(candidate.modelIds.length===0||candidate.modelIds.includes(normalizedPreferred)))return normalizedPreferred;let remembered=normalizeNonEmpty(rememberedModels?.[candidate.id]);if(remembered&&(candidate.modelIds.length===0||candidate.modelIds.includes(remembered)))return remembered;return normalizeNonEmpty(candidate.modelIds[0])}function resolveProviderSelection(input){let selectable=input.candidates.filter((candidate)=>candidate.selectable&&candidate.modelIds.length>0),preferredProviderId=normalizeNonEmpty(input.preferredProviderId);if(preferredProviderId){let current=input.candidates.find((candidate)=>candidate.id===preferredProviderId);if(current){let modelId2=chooseCandidateModel(current,normalizeNonEmpty(input.preferredModelId),input.rememberedModels);if(modelId2)return{providerId:current.id,modelId:modelId2}}}let fallback=selectable[0];if(!fallback)return{};let modelId=chooseCandidateModel(fallback,void 0,input.rememberedModels);if(!modelId)return{};return{providerId:fallback.id,modelId}}function sanitizeWorkspaceProviderSelections(input){let selectableById=new Map(input.candidates.map((candidate)=>[candidate.id,candidate])),next={};for(let[cwd,selection]of Object.entries(input.workspaceSelections??{})){let providerId=normalizeNonEmpty(selection?.providerId);if(!providerId)continue;let candidate=selectableById.get(providerId);if(!candidate)continue;let modelId=chooseCandidateModel(candidate,normalizeNonEmpty(selection?.modelId),input.rememberedModels);next[cwd]={providerId,...modelId?{modelId}:{}}}return next}var SUPPORTED_INPUT_MODALITIES=new Set(["text","image"]);function normalizeText2(value){return String(value??"").trim()}function normalizeLookupKey(value){return normalizeText2(value).toLowerCase()}function normalizeModelInputModality(value){let normalized=normalizeText2(value).toLowerCase();if(!normalized)return null;if(!SUPPORTED_INPUT_MODALITIES.has(normalized))return null;return normalized}function normalizeInputModalities(value){let modalities=[];for(let entry of value??[]){let normalized=normalizeModelInputModality(entry);if(!normalized||modalities.includes(normalized))continue;modalities.push(normalized)}return modalities}function normalizeContextWindow(value){let contextWindow=Number(value);if(!Number.isFinite(contextWindow)||contextWindow<=0)return;return Math.floor(contextWindow)}function matchesModelId(model,modelId){let target=normalizeLookupKey(modelId);return normalizeLookupKey(model.id)===target||normalizeLookupKey(model.modelId)===target||normalizeLookupKey(model.name)===target}function cloneModelCapabilities(capabilities){if(!capabilities||typeof capabilities!=="object")return;let input=normalizeInputModalities(capabilities.modalities?.input),contextWindow=normalizeContextWindow(capabilities.contextWindow);if(input.length===0&&contextWindow==null)return;return{...input.length>0?{modalities:{input}}:{},...contextWindow!=null?{contextWindow}:{}}}function normalizeModelCapabilities(source){if(!source||typeof source!=="object")return;let input=normalizeInputModalities(source.modalities?.input),contextWindow=normalizeContextWindow(source.contextWindow??source.limit?.context);if(source.vision===!0&&!input.includes("image"))input.push("image");if(input.length===0&&contextWindow==null)return;return{...input.length>0?{modalities:{input}}:{},...contextWindow!=null?{contextWindow}:{}}}function hasImageInputCapability(capabilities){return cloneModelCapabilities(capabilities)?.modalities?.input?.includes("image")===!0}function resolveModelCapabilitiesForModelId(models,modelId){let normalizedModelId=normalizeText2(modelId);if(!normalizedModelId)return;let model=models?.find((entry)=>matchesModelId(entry,normalizedModelId));return normalizeModelCapabilities(model)}function mergeModelCapabilities(primary,fallback){if(!primary)return cloneModelCapabilities(fallback);if(!fallback)return cloneModelCapabilities(primary);let input=[...primary.modalities?.input??[],...fallback.modalities?.input??[]].filter((item,index,list)=>list.indexOf(item)===index),contextWindow=primary.contextWindow??fallback.contextWindow;if(input.length===0&&contextWindow==null)return;return{...input.length>0?{modalities:{input}}:{},...contextWindow!=null?{contextWindow}:{}}}function resolveProviderModelCapabilities(input){let providerId=normalizeText2(input.providerId);if(!providerId)return;if(providerId.startsWith("cp_"))return mergeModelCapabilities(resolveModelCapabilitiesForModelId(input.customProviderModels,input.modelId),resolveModelCapabilitiesForModelId(input.fallbackModels,input.modelId));if(providerId==="custom")return mergeModelCapabilities(resolveModelCapabilitiesForModelId(input.legacyCustomModels,input.modelId),resolveModelCapabilitiesForModelId(input.fallbackModels,input.modelId));let primaryCapabilities=resolveModelCapabilitiesForModelId(input.connectionModels,input.modelId)??resolveModelCapabilitiesForModelId(input.builtinModels,input.modelId);return mergeModelCapabilities(primaryCapabilities,resolveModelCapabilitiesForModelId(input.fallbackModels,input.modelId))}async function fetchJson(url,init){let controller=new AbortController,timer=setTimeout(()=>controller.abort(),15000);try{let res=await fetch(url,{...init,signal:controller.signal});if(!res.ok){let body=await res.text().catch(()=>"");throw Error(`HTTP ${res.status}: ${body.slice(0,200)}`)}return await res.json()}finally{clearTimeout(timer)}}function stripTrailingSlash(url){return url.replace(/\/+$/,"")}async function fetchOpenAiModels(apiKey,baseUrl){let url=`${stripTrailingSlash(baseUrl||"https://api.openai.com/v1")}/models`,data=await fetchJson(url,{method:"GET",headers:{Authorization:`Bearer ${apiKey}`}});return(Array.isArray(data?.data)?data.data:[]).map((m)=>({id:String(m?.id??"").trim()})).filter((m)=>m.id)}async function fetchGeminiModels(apiKey,baseUrl){let base=stripTrailingSlash(baseUrl||"https://generativelanguage.googleapis.com"),results=[],pageToken;do{let params=new URLSearchParams({key:apiKey});if(pageToken)params.set("pageToken",pageToken);let url=`${base}/v1beta/models?${params}`,data=await fetchJson(url,{method:"GET"}),models=Array.isArray(data?.models)?data.models:[];for(let model of models){let methods=Array.isArray(model?.supportedGenerationMethods)?model.supportedGenerationMethods.map((v)=>String(v??"").toLowerCase()):[];if(methods.length&&!methods.includes("generatecontent"))continue;let rawName=String(model?.name??"").trim();if(!rawName)continue;let id=rawName.startsWith("models/")?rawName.slice(7):rawName;if(!id)continue;let displayName=String(model?.displayName??"").trim();results.push({id,name:displayName||void 0})}pageToken=data?.nextPageToken?String(data.nextPageToken):void 0}while(pageToken);return results}async function fetchAnthropicModels(apiKey,baseUrl){let url=`${stripTrailingSlash(baseUrl||"https://api.anthropic.com")}/v1/models`,data=await fetchJson(url,{method:"GET",headers:{"x-api-key":apiKey,"anthropic-version":"2023-06-01"}});return(Array.isArray(data?.data)?data.data:[]).map((m)=>({id:String(m?.id??"").trim(),name:String(m?.display_name??"").trim()||void 0})).filter((m)=>m.id)}async function fetchModelsForProviderAdapter(input){let apiKey=String(input.apiKey??"").trim();if(!apiKey)throw Error("API key is required");let adapter=input.adapter,baseUrl=String(input.baseUrl??"").trim()||void 0;if(adapter==="openai"||adapter==="openai-responses")return fetchOpenAiModels(apiKey,baseUrl);if(adapter==="gemini")return fetchGeminiModels(apiKey,baseUrl);if(adapter==="anthropic")return fetchAnthropicModels(apiKey,baseUrl);throw Error(`Unsupported adapter: ${adapter}`)}var providerModelCache=new Map,builtinProviderCache=new Map,builtinProvidersCache=null,customProviderFallbackCache=null,customProviderFallbackModelsCache=null,BUILTIN_PROVIDER_BASE_URL_EDITABLE_IDS=new Set(["anthropic","google","lm-studio","ollama","openai"]),providerJsonLoaders={openai:()=>openai_default,"dimcode-api-oauth":()=>next_api_oauth_default,openrouter:()=>openrouter_default2,aihubmix:()=>aihubmix_default,"bailian-coding-plan":()=>bailian_coding_plan_default,zhipuai:()=>zhipuai_default,"zhipuai-coding-plan":()=>zhipuai_coding_plan_default,zai:()=>zai_default,"zai-coding-plan":()=>zai_coding_plan_default,deepseek:()=>deepseek_default,zenmux:()=>zenmux_default2,moonshot:()=>moonshot_default,"moonshot-ai":()=>moonshot_ai_default,"kimi-for-coding":()=>kimi_for_coding_default,google:()=>google_default,anthropic:()=>anthropic_default,siliconflow:()=>siliconflow_default2,"siliconflow-com":()=>siliconflow_com_default2,ppinfra:()=>ppinfra_default,"ark-code":()=>ark_code_default,ollama:()=>ollama_default,"lm-studio":()=>lm_studio_default,xai:()=>xai_default,"minimax-cn":()=>minimax_cn_default,"minimax-cn-coding-plan":()=>minimax_cn_coding_plan_default,minimax:()=>minimax_default,"minimax-coding-plan":()=>minimax_coding_plan_default},embeddedModelFiles={"models/aihubmix.json":aihubmix_default2,"models/custom-provider.json":custom_provider_default2,"models/openrouter.json":openrouter_default,"models/siliconflow.json":siliconflow_default,"models/siliconflow-com.json":siliconflow_com_default,"models/zenmux.json":zenmux_default};function loadModelsFromFile(modelsFile,providerId){let cached=providerModelCache.get(providerId);if(cached)return cached;let embedded=embeddedModelFiles[modelsFile];if(embedded){let models=Array.isArray(embedded)?embedded:[];return providerModelCache.set(providerId,models),models}console.warn(`[providers] No embedded models for ${providerId} (${modelsFile})`);let empty=[];return providerModelCache.set(providerId,empty),empty}function resolveProviderDefinition(raw){if(Array.isArray(raw.models))return raw;let modelsFile=String(raw.modelsFile??"").trim();if(modelsFile){let meta2={...raw};delete meta2.models,delete meta2.modelsFile;let provider={...meta2,models:[]},cached=null;return Object.defineProperty(provider,"models",{enumerable:!0,get(){if(!cached)cached=loadModelsFromFile(modelsFile,provider.id);return cached}}),provider}let meta={...raw};return delete meta.models,delete meta.modelsFile,{...meta,models:[]}}function resolveBuiltinProvider(id){let cached=builtinProviderCache.get(id);if(cached)return cached;let loader=providerJsonLoaders[id];if(!loader)throw Error(`[providers] Missing provider loader for ${id}`);let raw=loader(),resolved=resolveProviderDefinition(raw);return builtinProviderCache.set(id,resolved),resolved}function resolveCustomProviderFallbackCatalog(){if(!customProviderFallbackCache)customProviderFallbackCache=resolveProviderDefinition(custom_provider_default);return customProviderFallbackCache}function listAllBuiltinProviders(){if(!builtinProvidersCache)builtinProvidersCache=BUILTIN_PROVIDER_IDS.map((id)=>resolveBuiltinProvider(id));return builtinProvidersCache}function listBuiltinProviders(){return listAllBuiltinProviders()}function isBuiltinProviderId(id){return BUILTIN_PROVIDER_IDS.includes(id)}function isLegacyCustomProviderId(id){return String(id??"").trim()==="custom"}function isCustomProviderId(id){let s=String(id??"").trim();return s.startsWith("cp_")&&s.length>3}function normalizeProviderId(id){let s=String(id??"").trim();if(!s)return;let aliasMap={zhipu:"zhipuai",kimi:"moonshot-ai"};if(aliasMap[s])return aliasMap[s];if(isLegacyCustomProviderId(s))return"custom";if(isCustomProviderId(s))return s;return isBuiltinProviderId(s)?s:void 0}function getBuiltinProvider(id){let normalized=normalizeProviderId(id);if(!normalized||normalized==="custom"||isCustomProviderId(normalized))return;return resolveBuiltinProvider(normalized)}function getProviderDisplayName(provider){return String(provider?.name??"").trim()||String(provider?.id??"").trim()}function getModelDisplayName(model){let display=String(model?.display_name??"").trim();if(display)return display;return String(model?.name??"").trim()||String(model?.id??"").trim()}function getDefaultModelId(provider){if(!provider)return;let explicit=String(provider?.defaultModelId??"").trim();if(explicit)return explicit;let byReasoning=provider.models.find((m)=>Boolean(m?.reasoning?.default));return String(byReasoning?.id??provider.models[0]?.id??"").trim()||void 0}function getProviderBaseUrl(provider){if(!provider)return;return String(provider.api??"").trim()||void 0}function isBuiltinProviderBaseUrlEditable(id){let normalized=normalizeProviderId(id);if(!normalized||normalized==="custom"||isCustomProviderId(normalized))return!1;return BUILTIN_PROVIDER_BASE_URL_EDITABLE_IDS.has(normalized)}function resolveBuiltinProviderBaseUrl(provider,candidateBaseUrl){if(!provider)return;let builtinBaseUrl=getProviderBaseUrl(provider);if(!isBuiltinProviderBaseUrlEditable(provider.id))return builtinBaseUrl;return String(candidateBaseUrl??"").trim()||builtinBaseUrl}function getProviderAdapter(provider){if(provider?.adapter==="gemini"||provider?.adapter==="anthropic"||provider?.adapter==="openai-responses")return provider.adapter;return"openai"}function usesCcMock(provider){return Boolean(provider?.ccmock)}function normalizeModelId(raw){return String(raw??"").trim()}function normalizeModelLookupKey(raw){return normalizeModelId(raw).toLowerCase()}function listModelIdAliases(rawId){let normalized=normalizeModelId(rawId);if(!normalized)return[];let aliases=[normalized],parts=normalized.split("/").map((s)=>s.trim()).filter(Boolean),tail=parts[parts.length-1];if(tail&&tail!==normalized)aliases.push(tail);return aliases}function matchCatalogModel(models,rawId){let aliases=listModelIdAliases(rawId);if(!aliases.length)return;let aliasKeys=aliases.map((alias)=>normalizeModelLookupKey(alias)),exact=models.find((m)=>normalizeModelLookupKey(m?.id)===aliasKeys[0]);if(exact)return exact;return models.find((model)=>{return listModelIdAliases(model?.id).map((alias)=>normalizeModelLookupKey(alias)).some((alias)=>aliasKeys.includes(alias))})}function normalizePositiveLimit(value){if(typeof value!=="number"||!Number.isFinite(value)||value<=0)return;return Math.floor(value)}function isAdapterCompatible(candidate,target){if(!target)return!0;if(candidate===target)return!0;return candidate==="openai"&&target==="openai-responses"||candidate==="openai-responses"&&target==="openai"}function normalizeModelLimit(limit){if(!limit)return;let context=normalizePositiveLimit(limit.context),output=normalizePositiveLimit(limit.output);if(context==null&&output==null)return;return{...context!=null?{context}:{},...output!=null?{output}:{}}}function getModelLimitForModels(models,modelId){if(!Array.isArray(models)||!models.length)return;let match=matchCatalogModel(models,modelId);return normalizeModelLimit(match?.limit)}function getModelContextWindowForModels(models,modelId){return getModelLimitForModels(models,modelId)?.context}function inferBuiltinModelContextWindow(modelId,adapter){let normalized=normalizeModelId(modelId);if(!normalized)return;let bestMatch,fallbackContextWindow=getCustomProviderModelFallbackLimitForModelId(normalized)?.context;if(typeof fallbackContextWindow==="number"&&fallbackContextWindow>0)bestMatch=fallbackContextWindow;for(let provider of listBuiltinProviders()){if(!isAdapterCompatible(getProviderAdapter(provider),adapter))continue;let contextWindow=getModelContextWindowForModels(provider.models,normalized);if(typeof contextWindow!=="number"||contextWindow<=0)continue;if(bestMatch==null||contextWindow>bestMatch)bestMatch=contextWindow}return bestMatch}function resolveCustomProviderModels(providerId,customProviders){let customProvider=(customProviders??[]).find((provider)=>String(provider?.id??"").trim()===providerId);return Array.isArray(customProvider?.models)?customProvider.models:[]}function shouldInferCustomProviderFallbackMetadata(adapter){if(!adapter)return!0;return adapter==="openai"||adapter==="openai-responses"||adapter==="gemini"||adapter==="anthropic"}function mergeModelLimits(primary,fallback){let context=primary?.context??fallback?.context,output=primary?.output??fallback?.output;if(context==null&&output==null)return;return{...context!=null?{context}:{},...output!=null?{output}:{}}}function resolveProviderSelectionModelLimit(opts){let providerId=normalizeProviderId(opts.providerId);if(!providerId)return;if(isCustomProviderId(providerId)){let customProvider=(opts.customProviders??[]).find((provider)=>String(provider?.id??"").trim()===providerId),customModels=Array.isArray(customProvider?.models)?customProvider.models:[],selectedModelId2=normalizeModelId(opts.modelId)||normalizeModelId(customModels[0]?.id);if(!selectedModelId2)return;let inferredLimit=shouldInferCustomProviderFallbackMetadata(customProvider?.adapter)?getCustomProviderModelFallbackLimitForModelId(selectedModelId2):void 0;return selectedModelId2?mergeModelLimits(getModelLimitForModels(customModels,selectedModelId2),inferredLimit):void 0}let builtin=getBuiltinProvider(providerId);if(!builtin)return;let connectionModels=opts.connections?.[providerId]?.models,selectedModelId=normalizeModelId(opts.modelId)||normalizeModelId(connectionModels?.[0]?.id)||normalizeModelId(getDefaultModelId(builtin));return selectedModelId?mergeModelLimits(getModelLimitForModels(connectionModels,selectedModelId),builtin.customModels?getCustomProviderModelFallbackLimitForModelId(selectedModelId):getModelLimitForModels(builtin.models,selectedModelId)):void 0}function resolveProviderSelectionContextWindow(opts){return resolveProviderSelectionModelLimit(opts)?.context}function resolveProviderSelectionMaxOutputTokens(opts){let configuredMaxOutputTokens=resolveProviderSelectionConfiguredMaxOutputTokens(opts);if(typeof configuredMaxOutputTokens==="number"&&configuredMaxOutputTokens>0)return configuredMaxOutputTokens;let limit=resolveProviderSelectionModelLimit(opts),output=limit?.output;if(output==null)return;let contextWindow=limit?.context;if(contextWindow==null||contextWindow<=0)return output;let cappedOutputTokens=Math.max(1,Math.floor(contextWindow*0.5));return output>cappedOutputTokens?cappedOutputTokens:output}function resolveProviderSelectionConfiguredMaxOutputTokens(opts){let providerId=normalizeProviderId(opts.providerId);if(!providerId)return;if(isCustomProviderId(providerId)){let customModels=resolveCustomProviderModels(providerId,opts.customProviders),selectedModelId2=normalizeModelId(opts.modelId)||normalizeModelId(customModels[0]?.id);if(!selectedModelId2)return;let primaryModel2=matchCatalogModel(customModels,selectedModelId2),primaryOutput2=normalizeModelLimit(primaryModel2?.limit)?.output;if(primaryOutput2==null)return;if(primaryModel2?.outputIsUserDefined===!0)return primaryOutput2;let fallbackOutput2=getCustomProviderModelFallbackLimitForModelId(selectedModelId2)?.output;return fallbackOutput2==null||primaryOutput2!==fallbackOutput2?primaryOutput2:void 0}let builtin=getBuiltinProvider(providerId);if(!builtin)return;let connectionModels=opts.connections?.[providerId]?.models,selectedModelId=normalizeModelId(opts.modelId)||normalizeModelId(connectionModels?.[0]?.id)||normalizeModelId(getDefaultModelId(builtin));if(!selectedModelId)return;let primaryModel=matchCatalogModel(connectionModels??[],selectedModelId),primaryOutput=normalizeModelLimit(primaryModel?.limit)?.output;if(primaryOutput==null)return;if(primaryModel?.outputIsUserDefined===!0)return primaryOutput;let fallbackOutput=builtin.customModels?getCustomProviderModelFallbackLimitForModelId(selectedModelId)?.output:getModelLimitForModels(builtin.models,selectedModelId)?.output;return fallbackOutput==null||primaryOutput!==fallbackOutput?primaryOutput:void 0}function listCustomProviderCatalogModels(){return resolveCustomProviderFallbackCatalog().models}function listCustomProviderModelFallbackModels(){if(!customProviderFallbackModelsCache)customProviderFallbackModelsCache=[...listCustomProviderCatalogModels(),...getBuiltinProvider("aihubmix")?.models??[]];return customProviderFallbackModelsCache}function getCustomProviderCatalogLimitForModelId(modelId){return getModelLimitForModels(listCustomProviderCatalogModels(),modelId)}function getAihubmixLimitForModelId(modelId){let provider=getBuiltinProvider("aihubmix");if(!provider||!Array.isArray(provider.models)||!provider.models.length)return;return getModelLimitForModels(provider.models,modelId)}function getCustomProviderModelFallbackLimitForModelId(modelId){return getCustomProviderCatalogLimitForModelId(modelId)??getAihubmixLimitForModelId(modelId)}function getModelCapabilitiesForModels(models,modelId){if(!Array.isArray(models)||!models.length)return;let match=matchCatalogModel(models,modelId);if(!match)return;let vision=typeof match.vision==="boolean"?match.vision:void 0,reasoning=match.reasoning?.supported?{supported:!0,default:match.reasoning.default}:void 0;if(vision==null&&reasoning==null)return;return{...vision!=null?{vision}:{},...reasoning!=null?{reasoning}:{}}}function getCustomProviderCatalogCapabilitiesForModelId(modelId){return getModelCapabilitiesForModels(listCustomProviderCatalogModels(),modelId)}function getAihubmixCapabilitiesForModelId(modelId){let provider=getBuiltinProvider("aihubmix");return getModelCapabilitiesForModels(provider?.models,modelId)}function getCustomProviderModelFallbackCapabilitiesForModelId(modelId){return getCustomProviderCatalogCapabilitiesForModelId(modelId)??getAihubmixCapabilitiesForModelId(modelId)}function extractReasoningCapability(model){let reasoning=model?.extra_capabilities?.reasoning;if(!reasoning||!reasoning.supported)return;return reasoning}function getCustomProviderModelFallbackReasoningEffortCapability(modelId){let customProviderMatch=matchCatalogModel(listCustomProviderCatalogModels(),modelId),customProviderCap=extractReasoningCapability(customProviderMatch);if(customProviderCap)return customProviderCap;let aihubmixProvider=getBuiltinProvider("aihubmix"),aihubmixMatch=matchCatalogModel(aihubmixProvider?.models??[],modelId);return extractReasoningCapability(aihubmixMatch)}function resolveModelReasoningEffortCapability(opts){let providerId=normalizeProviderId(opts.providerId),modelId=normalizeModelId(opts.modelId);if(!providerId||!modelId)return;if(isCustomProviderId(providerId)){let customProvider=(opts.customProviders??[]).find((provider)=>String(provider?.id??"").trim()===providerId),match=matchCatalogModel(customProvider?.models??[],modelId),customCap=extractReasoningCapability(match);if(customCap)return customCap;return shouldInferCustomProviderFallbackMetadata(customProvider?.adapter)?getCustomProviderModelFallbackReasoningEffortCapability(modelId):void 0}let builtin=getBuiltinProvider(providerId);if(!builtin)return;let connectionModels=opts.connections?.[providerId]?.models,fromConnection=matchCatalogModel(connectionModels??[],modelId),connectionCap=extractReasoningCapability(fromConnection);if(connectionCap)return connectionCap;if(builtin.customModels)return getCustomProviderModelFallbackReasoningEffortCapability(modelId);let builtinMatch=matchCatalogModel(builtin.models,modelId);return extractReasoningCapability(builtinMatch)}function modelSupportsThinkingContinuation(modelId){let normalized=normalizeModelId(modelId);if(!normalized)return!1;let customProviderContinuation=matchCatalogModel(listCustomProviderModelFallbackModels(),normalized)?.extra_capabilities?.reasoning?.continuation;if(Array.isArray(customProviderContinuation)&&customProviderContinuation.includes("thinking_blocks"))return!0;for(let provider of listBuiltinProviders()){let continuation=matchCatalogModel(provider.models,normalized)?.extra_capabilities?.reasoning?.continuation;if(Array.isArray(continuation)&&continuation.includes("thinking_blocks"))return!0}return!1}function readConfigHome2(value){if(typeof value!=="string")return;return value.trim()||void 0}function readOptionalString(value){if(typeof value==="string")return value.trim()||void 0;if(typeof value==="number"||typeof value==="boolean")return String(value).trim()||void 0;return}function readOptionalNumber(value){if(typeof value==="number"&&Number.isFinite(value))return value;if(typeof value==="string"){let trimmed=value.trim();if(!trimmed)return;let parsed=Number(trimmed);return Number.isFinite(parsed)?parsed:void 0}return}var DEFAULT_TOOLS_CONFIG={websearch:{apiKey:"",apiEndpoint:"https://google.serper.dev/search?format=json",numResults:10},mcpServers:[]};async function loadDimcodeUserTools(env){let[{homedir},path2]=await Promise.all([import("node:os"),import("node:path")]),dimcodeHome=readConfigHome2(env.DIMCODE_HOME),dir=dimcodeHome?path2.resolve(dimcodeHome):path2.resolve(homedir(),".dimcode"),filePath=path2.join(dir,"tools.json");try{let{readFile:readFile2}=await import("node:fs/promises"),raw=await readFile2(filePath,"utf8"),parsed=JSON.parse(raw);if(parsed&&typeof parsed==="object"&&parsed.version===1)return{dir,filePath,tools:parsed}}catch{}return{dir,filePath,tools:{version:1,updatedAt:0}}}async function saveDimcodeUserTools(filePath,tools){let[{mkdir:mkdir2,writeFile:writeFile2,rename,chmod:chmod2},path2]=await Promise.all([import("node:fs/promises"),import("node:path")]),dir=path2.dirname(filePath);await mkdir2(dir,{recursive:!0});let pid=globalThis.process?.pid??"p",nonce=`${Date.now()}-${Math.random().toString(16).slice(2)}`,tmp=`${filePath}.${pid}.${nonce}.tmp`,data=`${JSON.stringify(tools,null,2)}
|
|
874
|
+
</html>`}function escapeHtml(value){return value.replace(/&/g,"&").replace(/</g,"<").replace(/>/g,">").replace(/"/g,""").replace(/'/g,"'")}function normalizeText(raw){return String(raw??"").trim()||void 0}function trimTrailingSlash(raw){return raw.replace(/\/+$/,"")}function normalizeHttpUrl(raw){let value=normalizeText(raw);if(!value)return;if(!/^https?:\/\//i.test(value))return;return trimTrailingSlash(value)}async function discoverOAuthMetadata(issuer,fetchImpl=globalThis.fetch){let discoveryUrl=`${issuer}/.well-known/openid-configuration`;try{let response=await fetchImpl(discoveryUrl,{headers:withNextApiOAuthHeaders()});if(!response.ok)return{};let payload=await response.json();return{authorizationEndpoint:normalizeHttpUrl(payload?.authorization_endpoint),tokenEndpoint:normalizeHttpUrl(payload?.token_endpoint)}}catch{return{}}}function readNextApiOAuthConfigInput(_env){let issuer=normalizeHttpUrl(NEXT_API_OAUTH_ISSUER),clientId=normalizeText(NEXT_API_OAUTH_CLIENT_ID),clientSecret=normalizeText(NEXT_API_OAUTH_CLIENT_SECRET);return{issuer,clientId,clientSecret,scope:NEXT_API_OAUTH_DEFAULT_SCOPE,relayBaseUrl:issuer?`${issuer}/v1`:void 0,port:NEXT_API_OAUTH_PORT}}function describeNextApiOAuthConfigError(env){let config=readNextApiOAuthConfigInput(env),missing=[];if(!config.issuer)missing.push("NEXT_API_OAUTH_ISSUER");if(!config.clientId)missing.push("NEXT_API_OAUTH_CLIENT_ID");if(!missing.length)return;return`Missing built-in DimCode OAuth configuration: ${missing.join(", ")}.`}async function resolveNextApiOAuthConfig(env,opts={}){let input=readNextApiOAuthConfigInput(env),configError=describeNextApiOAuthConfigError(env);if(configError)throw Error(configError);let discovered=await discoverOAuthMetadata(input.issuer,opts.fetch);return{issuer:input.issuer,clientId:input.clientId,clientSecret:input.clientSecret,scope:input.scope,relayBaseUrl:input.relayBaseUrl||`${input.issuer}/v1`,authorizationEndpoint:discovered.authorizationEndpoint||`${input.issuer}/oauth/authorize`,tokenEndpoint:discovered.tokenEndpoint||`${input.issuer}/oauth/token`,port:input.port}}function buildNextApiAuthorizeUrl(config,redirectUri,pkce,state){let params=new URLSearchParams({response_type:"code",client_id:config.clientId,redirect_uri:redirectUri,scope:config.scope,code_challenge:pkce.challenge,code_challenge_method:"S256",state});return`${config.authorizationEndpoint}?${params.toString()}`}async function resolveNextApiOAuthBrowserUrl(config,redirectUri,pkce,state){return buildNextApiAuthorizeUrl(config,redirectUri,pkce,state)}async function exchangeNextApiCodeForTokens(code,redirectUri,pkce,config,fetchImpl=globalThis.fetch){let body=new URLSearchParams({grant_type:"authorization_code",code,redirect_uri:redirectUri,client_id:config.clientId,code_verifier:pkce.verifier});if(config.clientSecret)body.set("client_secret",config.clientSecret);let response=await fetchImpl(config.tokenEndpoint,{method:"POST",headers:withNextApiOAuthHeaders({"Content-Type":"application/x-www-form-urlencoded"}),body:body.toString()});if(!response.ok){let detail="";try{let payload=await response.json(),errorCode=normalizeText(payload?.error),description=normalizeText(payload?.error_description);if(errorCode&&description)detail=`${errorCode}: ${description}`;else if(description)detail=description;else if(errorCode)detail=errorCode}catch{try{let text=normalizeText(await response.text());if(text)detail=text}catch{detail=""}}if(detail)throw Error(`Token exchange failed: ${response.status} ${detail}`);throw Error(`Token exchange failed: ${response.status}`)}return validateNextApiOAuthTokenResponse(await response.json(),{requireRefreshToken:!0,label:"Token exchange response"})}function buildNextApiOAuthTokenRecord(config,tokens){return{type:"oauth",refresh:tokens.refresh_token,access:tokens.access_token,expires:Date.now()+(tokens.expires_in??3600)*1000,email:extractEmail({access_token:tokens.access_token,refresh_token:tokens.refresh_token,expires_in:tokens.expires_in,id_token:tokens.id_token||""}),issuer:config.issuer,authorizationEndpoint:config.authorizationEndpoint,tokenEndpoint:config.tokenEndpoint,clientId:config.clientId,scope:tokens.scope||config.scope,relayBaseUrl:config.relayBaseUrl}}async function refreshNextApiAccessToken(tokens){let tokenEndpoint=normalizeHttpUrl(tokens.tokenEndpoint),clientId=normalizeText(tokens.clientId),refreshToken=normalizeText(tokens.refresh);if(!tokenEndpoint||!clientId||!refreshToken)throw Error("DimCode OAuth tokens are missing refresh metadata. Please run `dim auth dimcode-api-oauth` again.");let body=new URLSearchParams({grant_type:"refresh_token",refresh_token:refreshToken,client_id:clientId});body.set("client_secret",NEXT_API_OAUTH_CLIENT_SECRET);let response=await fetch(tokenEndpoint,{method:"POST",headers:withNextApiOAuthHeaders({"Content-Type":"application/x-www-form-urlencoded"}),body:body.toString()});if(!response.ok)throw Error(`Token refresh failed: ${response.status}`);let payload=validateNextApiOAuthTokenResponse(await response.json(),{label:"Token refresh response"});return{...stripOAuthTokenClientSecret(tokens)??tokens,access:payload.access_token,refresh:payload.refresh_token||tokens.refresh,expires:Date.now()+(payload.expires_in??3600)*1000,email:extractEmail({access_token:payload.access_token,refresh_token:payload.refresh_token||tokens.refresh,expires_in:payload.expires_in,id_token:payload.id_token||""})||tokens.email,scope:payload.scope||tokens.scope}}async function fetchNextApiOAuthModels(accessToken,relayBaseUrl){let baseUrl=normalizeHttpUrl(relayBaseUrl);if(!baseUrl)return[];let response=await fetch(`${baseUrl}/models`,{headers:withNextApiOAuthHeaders({Authorization:`Bearer ${accessToken}`})});if(!response.ok)throw Error(`Model discovery failed: ${response.status}`);let payload=await response.json();return(Array.isArray(payload?.data)?payload.data:[]).map((item)=>{let raw=item,id=normalizeText(raw?.id);if(!id)return null;let inputModalities=Array.isArray(raw?.modalities?.input)?raw.modalities.input.map((value)=>String(value??"").toLowerCase()):[];return{id,name:normalizeText(raw?.display_name??raw?.name??raw?.id),vision:typeof raw?.vision==="boolean"?raw.vision:inputModalities.includes("image"),reasoning:raw?.reasoning?.supported===!0?{supported:!0,default:raw.reasoning.default===!0}:void 0}}).filter((item)=>Boolean(item))}var nextApiOAuthServer,pendingNextApiOAuth,activeNextApiOAuthPort=NEXT_API_OAUTH_PORT;async function startNextApiOAuthServer(port=NEXT_API_OAUTH_PORT){if(nextApiOAuthServer)return{port:activeNextApiOAuthPort,redirectUri:`http://localhost:${activeNextApiOAuthPort}/auth/callback`};if(activeNextApiOAuthPort=port,typeof Bun<"u"){try{nextApiOAuthServer=Bun.serve({port:activeNextApiOAuthPort,fetch(request){return handleNextApiOAuthRequest(new URL(request.url))}})}catch(error){if(String(error?.message||"").includes("address already in use"))throw Error(`Port ${activeNextApiOAuthPort} is already in use. Please stop the process using this port and try again.`);throw error}return{port:activeNextApiOAuthPort,redirectUri:`http://localhost:${activeNextApiOAuthPort}/auth/callback`}}return nextApiOAuthServer=(await import("node:http")).createServer(async(req,res)=>{try{let url=new URL(req.url||"/",`http://localhost:${activeNextApiOAuthPort}`),webResponse=handleNextApiOAuthRequest(url),buffer=Buffer.from(await webResponse.arrayBuffer());res.statusCode=webResponse.status,webResponse.headers.forEach((value,key)=>res.setHeader(key,value)),res.end(buffer)}catch(error){res.statusCode=500,res.end(error?.message||"Internal Server Error")}}),await new Promise((resolve,reject)=>{nextApiOAuthServer.listen(activeNextApiOAuthPort,()=>resolve()),nextApiOAuthServer.on("error",(error)=>{if(error?.code==="EADDRINUSE"){reject(Error(`Port ${activeNextApiOAuthPort} is already in use. Please stop the process using this port and try again.`));return}reject(error)})}),{port:activeNextApiOAuthPort,redirectUri:`http://localhost:${activeNextApiOAuthPort}/auth/callback`}}function handleNextApiOAuthRequest(url){if(url.pathname==="/auth/callback"){let code=url.searchParams.get("code")||"",state=url.searchParams.get("state")||"",error=url.searchParams.get("error")||"",errorDescription=url.searchParams.get("error_description")||"";if(error){let errorMessage=errorDescription?`${error}: ${errorDescription}`:error;return pendingNextApiOAuth?.reject(Error(errorMessage)),pendingNextApiOAuth=void 0,new Response(htmlError(errorMessage),{status:400,headers:{"Content-Type":"text/html; charset=utf-8"}})}if(!code)return pendingNextApiOAuth?.reject(Error("Missing authorization code")),pendingNextApiOAuth=void 0,new Response(htmlError("Missing authorization code"),{status:400,headers:{"Content-Type":"text/html; charset=utf-8"}});if(!pendingNextApiOAuth||state!==pendingNextApiOAuth.state)return pendingNextApiOAuth?.reject(Error("Invalid OAuth state - possible CSRF attempt")),pendingNextApiOAuth=void 0,new Response(htmlError("Invalid OAuth state - possible CSRF attempt"),{status:400,headers:{"Content-Type":"text/html; charset=utf-8"}});let current=pendingNextApiOAuth;return pendingNextApiOAuth=void 0,clearTimeout(current.timeout),exchangeNextApiCodeForTokens(code,`http://localhost:${activeNextApiOAuthPort}/auth/callback`,current.pkce,current.config,current.fetch).then(current.resolve).catch(current.reject),new Response(HTML_SUCCESS,{status:200,headers:{"Content-Type":"text/html; charset=utf-8"}})}if(url.pathname==="/auth/cancel")return pendingNextApiOAuth?.reject(Error("Login cancelled")),pendingNextApiOAuth=void 0,new Response("Cancelled",{status:200});return new Response("Not Found",{status:404})}function stopNextApiOAuthServer(){if(nextApiOAuthServer){if(typeof nextApiOAuthServer.stop==="function")nextApiOAuthServer.stop();else if(typeof nextApiOAuthServer.close==="function")nextApiOAuthServer.close();nextApiOAuthServer=void 0}}function waitForNextApiOAuthCallback(pkce,state,config,opts={}){return new Promise((resolve,reject)=>{let timeout=setTimeout(()=>{if(pendingNextApiOAuth)pendingNextApiOAuth=void 0,reject(Error("OAuth callback timeout - authorization took too long"))},300000);pendingNextApiOAuth={state,pkce,config,...opts.fetch?{fetch:opts.fetch}:{},resolve,reject,timeout}})}function normalizeNonEmpty(value){return String(value??"").trim()||void 0}function dedupe(values){let next=[],seen=new Set;for(let value of values){let normalized=normalizeNonEmpty(value);if(!normalized||seen.has(normalized))continue;seen.add(normalized),next.push(normalized)}return next}function modelIdsFromList(models){if(!Array.isArray(models))return[];return dedupe(models.map((model)=>normalizeNonEmpty(model?.id)).filter(Boolean))}function includeRememberedModelIds(modelIds,rememberedModelId){return rememberedModelId?dedupe([...modelIds,rememberedModelId]):[...modelIds]}function buildProviderSelectionCandidates(input){let connections=input.connections??{},candidates=[],existingProviderIds=new Set;for(let builtin of listBuiltinProviders()){let providerId=String(builtin.id??"").trim();if(!providerId)continue;existingProviderIds.add(providerId);let connection=connections[providerId],connectionModels=modelIdsFromList(connection?.models),builtinModels=builtin.customModels?connectionModels:modelIdsFromList(builtin.models),defaultModelId=normalizeNonEmpty(getDefaultModelId(getBuiltinProvider(providerId))),rememberedModelId=normalizeNonEmpty(input.rememberedModels?.[providerId]),modelIds=builtin.customModels?connectionModels:dedupe([...builtinModels??[],...defaultModelId?[defaultModelId]:[]]),resolvedModelIds=includeRememberedModelIds(modelIds,rememberedModelId),hasApiKey=Boolean(normalizeNonEmpty(connection?.apiKey)),selectable=!1;if(providerId===NEXT_API_OAUTH_PROVIDER_ID)selectable=resolvedModelIds.length>0;else if(builtin.customModels)selectable=resolvedModelIds.length>0;else selectable=hasApiKey&&resolvedModelIds.length>0;candidates.push({id:providerId,modelIds:resolvedModelIds,selectable})}for(let provider of input.customProviders??[]){let providerId=normalizeNonEmpty(provider?.id);if(!providerId)continue;existingProviderIds.add(providerId);let modelIds=modelIdsFromList(provider?.models),rememberedModelId=normalizeNonEmpty(input.rememberedModels?.[providerId]),resolvedModelIds=includeRememberedModelIds(modelIds,rememberedModelId);candidates.push({id:providerId,modelIds:resolvedModelIds,selectable:Boolean(normalizeNonEmpty(provider?.apiKey))&&resolvedModelIds.length>0})}let hasNewCustomProviders=(input.customProviders??[]).length>0,legacyModelIds=modelIdsFromList(input.legacyCustom?.models),rememberedLegacyModelId=normalizeNonEmpty(input.rememberedModels?.custom),resolvedLegacyModelIds=includeRememberedModelIds(legacyModelIds,rememberedLegacyModelId);if(!hasNewCustomProviders&&Boolean(resolvedLegacyModelIds.length||normalizeNonEmpty(input.legacyCustom?.apiKey)||normalizeNonEmpty(input.legacyCustom?.baseUrl)))existingProviderIds.add("custom"),candidates.push({id:"custom",modelIds:resolvedLegacyModelIds,selectable:Boolean(normalizeNonEmpty(input.legacyCustom?.apiKey))&&resolvedLegacyModelIds.length>0});return{candidates,existingProviderIds}}function stripUnknownActiveModelSelections(activeModelByProvider,existingProviderIds){let next={};for(let[providerId,modelId]of Object.entries(activeModelByProvider??{})){if(!existingProviderIds.has(providerId))continue;let normalizedModelId=normalizeNonEmpty(modelId);if(!normalizedModelId)continue;next[providerId]=normalizedModelId}return next}function chooseCandidateModel(candidate,preferredModelId,rememberedModels){let normalizedPreferred=normalizeNonEmpty(preferredModelId);if(normalizedPreferred&&(candidate.modelIds.length===0||candidate.modelIds.includes(normalizedPreferred)))return normalizedPreferred;let remembered=normalizeNonEmpty(rememberedModels?.[candidate.id]);if(remembered&&(candidate.modelIds.length===0||candidate.modelIds.includes(remembered)))return remembered;return normalizeNonEmpty(candidate.modelIds[0])}function resolveProviderSelection(input){let selectable=input.candidates.filter((candidate)=>candidate.selectable&&candidate.modelIds.length>0),preferredProviderId=normalizeNonEmpty(input.preferredProviderId);if(preferredProviderId){let current=input.candidates.find((candidate)=>candidate.id===preferredProviderId);if(current){let modelId2=chooseCandidateModel(current,normalizeNonEmpty(input.preferredModelId),input.rememberedModels);if(modelId2)return{providerId:current.id,modelId:modelId2}}}let fallback=selectable[0];if(!fallback)return{};let modelId=chooseCandidateModel(fallback,void 0,input.rememberedModels);if(!modelId)return{};return{providerId:fallback.id,modelId}}function sanitizeWorkspaceProviderSelections(input){let selectableById=new Map(input.candidates.map((candidate)=>[candidate.id,candidate])),next={};for(let[cwd,selection]of Object.entries(input.workspaceSelections??{})){let providerId=normalizeNonEmpty(selection?.providerId);if(!providerId)continue;let candidate=selectableById.get(providerId);if(!candidate)continue;let modelId=chooseCandidateModel(candidate,normalizeNonEmpty(selection?.modelId),input.rememberedModels);next[cwd]={providerId,...modelId?{modelId}:{}}}return next}var SUPPORTED_INPUT_MODALITIES=new Set(["text","image"]);function normalizeText2(value){return String(value??"").trim()}function normalizeLookupKey(value){return normalizeText2(value).toLowerCase()}function normalizeModelInputModality(value){let normalized=normalizeText2(value).toLowerCase();if(!normalized)return null;if(!SUPPORTED_INPUT_MODALITIES.has(normalized))return null;return normalized}function normalizeInputModalities(value){let modalities=[];for(let entry of value??[]){let normalized=normalizeModelInputModality(entry);if(!normalized||modalities.includes(normalized))continue;modalities.push(normalized)}return modalities}function normalizeContextWindow(value){let contextWindow=Number(value);if(!Number.isFinite(contextWindow)||contextWindow<=0)return;return Math.floor(contextWindow)}function matchesModelId(model,modelId){let target=normalizeLookupKey(modelId);return normalizeLookupKey(model.id)===target||normalizeLookupKey(model.modelId)===target||normalizeLookupKey(model.name)===target}function cloneModelCapabilities(capabilities){if(!capabilities||typeof capabilities!=="object")return;let input=normalizeInputModalities(capabilities.modalities?.input),contextWindow=normalizeContextWindow(capabilities.contextWindow);if(input.length===0&&contextWindow==null)return;return{...input.length>0?{modalities:{input}}:{},...contextWindow!=null?{contextWindow}:{}}}function normalizeModelCapabilities(source){if(!source||typeof source!=="object")return;let input=normalizeInputModalities(source.modalities?.input),contextWindow=normalizeContextWindow(source.contextWindow??source.limit?.context);if(source.vision===!0&&!input.includes("image"))input.push("image");if(input.length===0&&contextWindow==null)return;return{...input.length>0?{modalities:{input}}:{},...contextWindow!=null?{contextWindow}:{}}}function hasImageInputCapability(capabilities){return cloneModelCapabilities(capabilities)?.modalities?.input?.includes("image")===!0}function resolveModelCapabilitiesForModelId(models,modelId){let normalizedModelId=normalizeText2(modelId);if(!normalizedModelId)return;let model=models?.find((entry)=>matchesModelId(entry,normalizedModelId));return normalizeModelCapabilities(model)}function mergeModelCapabilities(primary,fallback){if(!primary)return cloneModelCapabilities(fallback);if(!fallback)return cloneModelCapabilities(primary);let input=[...primary.modalities?.input??[],...fallback.modalities?.input??[]].filter((item,index,list)=>list.indexOf(item)===index),contextWindow=primary.contextWindow??fallback.contextWindow;if(input.length===0&&contextWindow==null)return;return{...input.length>0?{modalities:{input}}:{},...contextWindow!=null?{contextWindow}:{}}}function resolveProviderModelCapabilities(input){let providerId=normalizeText2(input.providerId);if(!providerId)return;if(providerId.startsWith("cp_"))return mergeModelCapabilities(resolveModelCapabilitiesForModelId(input.customProviderModels,input.modelId),resolveModelCapabilitiesForModelId(input.fallbackModels,input.modelId));if(providerId==="custom")return mergeModelCapabilities(resolveModelCapabilitiesForModelId(input.legacyCustomModels,input.modelId),resolveModelCapabilitiesForModelId(input.fallbackModels,input.modelId));let primaryCapabilities=resolveModelCapabilitiesForModelId(input.connectionModels,input.modelId)??resolveModelCapabilitiesForModelId(input.builtinModels,input.modelId);return mergeModelCapabilities(primaryCapabilities,resolveModelCapabilitiesForModelId(input.fallbackModels,input.modelId))}async function fetchJson(url,init){let controller=new AbortController,timer=setTimeout(()=>controller.abort(),15000);try{let res=await fetch(url,{...init,signal:controller.signal});if(!res.ok){let body=await res.text().catch(()=>"");throw Error(`HTTP ${res.status}: ${body.slice(0,200)}`)}return await res.json()}finally{clearTimeout(timer)}}function stripTrailingSlash(url){return url.replace(/\/+$/,"")}async function fetchOpenAiModels(apiKey,baseUrl){let url=`${stripTrailingSlash(baseUrl||"https://api.openai.com/v1")}/models`,data=await fetchJson(url,{method:"GET",headers:{Authorization:`Bearer ${apiKey}`}});return(Array.isArray(data?.data)?data.data:[]).map((m)=>({id:String(m?.id??"").trim()})).filter((m)=>m.id)}async function fetchGeminiModels(apiKey,baseUrl){let base=stripTrailingSlash(baseUrl||"https://generativelanguage.googleapis.com"),results=[],pageToken;do{let params=new URLSearchParams({key:apiKey});if(pageToken)params.set("pageToken",pageToken);let url=`${base}/v1beta/models?${params}`,data=await fetchJson(url,{method:"GET"}),models=Array.isArray(data?.models)?data.models:[];for(let model of models){let methods=Array.isArray(model?.supportedGenerationMethods)?model.supportedGenerationMethods.map((v)=>String(v??"").toLowerCase()):[];if(methods.length&&!methods.includes("generatecontent"))continue;let rawName=String(model?.name??"").trim();if(!rawName)continue;let id=rawName.startsWith("models/")?rawName.slice(7):rawName;if(!id)continue;let displayName=String(model?.displayName??"").trim();results.push({id,name:displayName||void 0})}pageToken=data?.nextPageToken?String(data.nextPageToken):void 0}while(pageToken);return results}async function fetchAnthropicModels(apiKey,baseUrl){let url=`${stripTrailingSlash(baseUrl||"https://api.anthropic.com")}/v1/models`,data=await fetchJson(url,{method:"GET",headers:{"x-api-key":apiKey,"anthropic-version":"2023-06-01"}});return(Array.isArray(data?.data)?data.data:[]).map((m)=>({id:String(m?.id??"").trim(),name:String(m?.display_name??"").trim()||void 0})).filter((m)=>m.id)}async function fetchModelsForProviderAdapter(input){let apiKey=String(input.apiKey??"").trim();if(!apiKey)throw Error("API key is required");let adapter=input.adapter,baseUrl=String(input.baseUrl??"").trim()||void 0;if(adapter==="openai"||adapter==="openai-responses")return fetchOpenAiModels(apiKey,baseUrl);if(adapter==="gemini")return fetchGeminiModels(apiKey,baseUrl);if(adapter==="anthropic")return fetchAnthropicModels(apiKey,baseUrl);throw Error(`Unsupported adapter: ${adapter}`)}var providerModelCache=new Map,builtinProviderCache=new Map,builtinProvidersCache=null,customProviderFallbackCache=null,customProviderFallbackModelsCache=null,BUILTIN_PROVIDER_BASE_URL_EDITABLE_IDS=new Set(["anthropic","google","lm-studio","ollama","openai"]),providerJsonLoaders={openai:()=>openai_default,"dimcode-api-oauth":()=>next_api_oauth_default,openrouter:()=>openrouter_default2,aihubmix:()=>aihubmix_default,"bailian-coding-plan":()=>bailian_coding_plan_default,zhipuai:()=>zhipuai_default,"zhipuai-coding-plan":()=>zhipuai_coding_plan_default,zai:()=>zai_default,"zai-coding-plan":()=>zai_coding_plan_default,deepseek:()=>deepseek_default,zenmux:()=>zenmux_default2,moonshot:()=>moonshot_default,"moonshot-ai":()=>moonshot_ai_default,"kimi-for-coding":()=>kimi_for_coding_default,google:()=>google_default,anthropic:()=>anthropic_default,siliconflow:()=>siliconflow_default2,"siliconflow-com":()=>siliconflow_com_default2,ppinfra:()=>ppinfra_default,"ark-code":()=>ark_code_default,ollama:()=>ollama_default,"lm-studio":()=>lm_studio_default,xai:()=>xai_default,"minimax-cn":()=>minimax_cn_default,"minimax-cn-coding-plan":()=>minimax_cn_coding_plan_default,minimax:()=>minimax_default,"minimax-coding-plan":()=>minimax_coding_plan_default},embeddedModelFiles={"models/aihubmix.json":aihubmix_default2,"models/custom-provider.json":custom_provider_default2,"models/openrouter.json":openrouter_default,"models/siliconflow.json":siliconflow_default,"models/siliconflow-com.json":siliconflow_com_default,"models/zenmux.json":zenmux_default};function loadModelsFromFile(modelsFile,providerId){let cached=providerModelCache.get(providerId);if(cached)return cached;let embedded=embeddedModelFiles[modelsFile];if(embedded){let models=Array.isArray(embedded)?embedded:[];return providerModelCache.set(providerId,models),models}console.warn(`[providers] No embedded models for ${providerId} (${modelsFile})`);let empty=[];return providerModelCache.set(providerId,empty),empty}function resolveProviderDefinition(raw){if(Array.isArray(raw.models))return raw;let modelsFile=String(raw.modelsFile??"").trim();if(modelsFile){let meta2={...raw};delete meta2.models,delete meta2.modelsFile;let provider={...meta2,models:[]},cached=null;return Object.defineProperty(provider,"models",{enumerable:!0,get(){if(!cached)cached=loadModelsFromFile(modelsFile,provider.id);return cached}}),provider}let meta={...raw};return delete meta.models,delete meta.modelsFile,{...meta,models:[]}}function resolveBuiltinProvider(id){let cached=builtinProviderCache.get(id);if(cached)return cached;let loader=providerJsonLoaders[id];if(!loader)throw Error(`[providers] Missing provider loader for ${id}`);let raw=loader(),resolved=resolveProviderDefinition(raw);return builtinProviderCache.set(id,resolved),resolved}function resolveCustomProviderFallbackCatalog(){if(!customProviderFallbackCache)customProviderFallbackCache=resolveProviderDefinition(custom_provider_default);return customProviderFallbackCache}function listAllBuiltinProviders(){if(!builtinProvidersCache)builtinProvidersCache=BUILTIN_PROVIDER_IDS.map((id)=>resolveBuiltinProvider(id));return builtinProvidersCache}function listBuiltinProviders(){return listAllBuiltinProviders()}function isBuiltinProviderId(id){return BUILTIN_PROVIDER_IDS.includes(id)}function isLegacyCustomProviderId(id){return String(id??"").trim()==="custom"}function isCustomProviderId(id){let s=String(id??"").trim();return s.startsWith("cp_")&&s.length>3}function normalizeProviderId(id){let s=String(id??"").trim();if(!s)return;let aliasMap={zhipu:"zhipuai",kimi:"moonshot-ai"};if(aliasMap[s])return aliasMap[s];if(isLegacyCustomProviderId(s))return"custom";if(isCustomProviderId(s))return s;return isBuiltinProviderId(s)?s:void 0}function getBuiltinProvider(id){let normalized=normalizeProviderId(id);if(!normalized||normalized==="custom"||isCustomProviderId(normalized))return;return resolveBuiltinProvider(normalized)}function getProviderDisplayName(provider){return String(provider?.name??"").trim()||String(provider?.id??"").trim()}function getModelDisplayName(model){let display=String(model?.display_name??"").trim();if(display)return display;return String(model?.name??"").trim()||String(model?.id??"").trim()}function getDefaultModelId(provider){if(!provider)return;let explicit=String(provider?.defaultModelId??"").trim();if(explicit)return explicit;let byReasoning=provider.models.find((m)=>Boolean(m?.reasoning?.default));return String(byReasoning?.id??provider.models[0]?.id??"").trim()||void 0}function getProviderBaseUrl(provider){if(!provider)return;return String(provider.api??"").trim()||void 0}function isBuiltinProviderBaseUrlEditable(id){let normalized=normalizeProviderId(id);if(!normalized||normalized==="custom"||isCustomProviderId(normalized))return!1;return BUILTIN_PROVIDER_BASE_URL_EDITABLE_IDS.has(normalized)}function resolveBuiltinProviderBaseUrl(provider,candidateBaseUrl){if(!provider)return;let builtinBaseUrl=getProviderBaseUrl(provider);if(!isBuiltinProviderBaseUrlEditable(provider.id))return builtinBaseUrl;return String(candidateBaseUrl??"").trim()||builtinBaseUrl}function getProviderAdapter(provider){if(provider?.adapter==="gemini"||provider?.adapter==="anthropic"||provider?.adapter==="openai-responses")return provider.adapter;return"openai"}function usesCcMock(provider){return Boolean(provider?.ccmock)}function normalizeModelId(raw){return String(raw??"").trim()}function normalizeModelLookupKey(raw){return normalizeModelId(raw).toLowerCase()}function listModelIdAliases(rawId){let normalized=normalizeModelId(rawId);if(!normalized)return[];let aliases=[normalized],parts=normalized.split("/").map((s)=>s.trim()).filter(Boolean),tail=parts[parts.length-1];if(tail&&tail!==normalized)aliases.push(tail);return aliases}function matchCatalogModel(models,rawId){let aliases=listModelIdAliases(rawId);if(!aliases.length)return;let aliasKeys=aliases.map((alias)=>normalizeModelLookupKey(alias)),exact=models.find((m)=>normalizeModelLookupKey(m?.id)===aliasKeys[0]);if(exact)return exact;return models.find((model)=>{return listModelIdAliases(model?.id).map((alias)=>normalizeModelLookupKey(alias)).some((alias)=>aliasKeys.includes(alias))})}function normalizePositiveLimit(value){if(typeof value!=="number"||!Number.isFinite(value)||value<=0)return;return Math.floor(value)}function isAdapterCompatible(candidate,target){if(!target)return!0;if(candidate===target)return!0;return candidate==="openai"&&target==="openai-responses"||candidate==="openai-responses"&&target==="openai"}function normalizeModelLimit(limit){if(!limit)return;let context=normalizePositiveLimit(limit.context),output=normalizePositiveLimit(limit.output);if(context==null&&output==null)return;return{...context!=null?{context}:{},...output!=null?{output}:{}}}function getModelLimitForModels(models,modelId){if(!Array.isArray(models)||!models.length)return;let match=matchCatalogModel(models,modelId);return normalizeModelLimit(match?.limit)}function getModelContextWindowForModels(models,modelId){return getModelLimitForModels(models,modelId)?.context}function inferBuiltinModelContextWindow(modelId,adapter){let normalized=normalizeModelId(modelId);if(!normalized)return;let bestMatch,fallbackContextWindow=getCustomProviderModelFallbackLimitForModelId(normalized)?.context;if(typeof fallbackContextWindow==="number"&&fallbackContextWindow>0)bestMatch=fallbackContextWindow;for(let provider of listBuiltinProviders()){if(!isAdapterCompatible(getProviderAdapter(provider),adapter))continue;let contextWindow=getModelContextWindowForModels(provider.models,normalized);if(typeof contextWindow!=="number"||contextWindow<=0)continue;if(bestMatch==null||contextWindow>bestMatch)bestMatch=contextWindow}return bestMatch}function shouldInferCustomProviderFallbackMetadata(adapter){if(!adapter)return!0;return adapter==="openai"||adapter==="openai-responses"||adapter==="gemini"||adapter==="anthropic"}function mergeModelLimits(primary,fallback){let context=primary?.context??fallback?.context,output=primary?.output??fallback?.output;if(context==null&&output==null)return;return{...context!=null?{context}:{},...output!=null?{output}:{}}}function isUserDefinedModel(model){return model?.userDefined===!0||model?.outputIsUserDefined===!0}function applyAutomaticMaxOutputCap(limit){if(!limit)return;let{context,output}=limit,cappedOutput=context!=null&&context>0&&output!=null?Math.min(output,Math.max(1,Math.floor(context*0.65))):output;if(context==null&&output==null)return;return{...context!=null?{context}:{},...cappedOutput!=null?{output:cappedOutput}:{}}}function mergeAutomaticModelLimits(catalog,discovered){return mergeModelLimits(catalog,discovered)}function resolveProviderSelectionModelLimit(opts){let providerId=normalizeProviderId(opts.providerId);if(!providerId)return;if(isCustomProviderId(providerId)){let customProvider=(opts.customProviders??[]).find((provider)=>String(provider?.id??"").trim()===providerId),customModels=Array.isArray(customProvider?.models)?customProvider.models:[],selectedModelId2=normalizeModelId(opts.modelId)||normalizeModelId(customModels[0]?.id);if(!selectedModelId2)return;let storedModel2=matchCatalogModel(customModels,selectedModelId2);if(isUserDefinedModel(storedModel2))return normalizeModelLimit(storedModel2?.limit);let catalogLimit2=shouldInferCustomProviderFallbackMetadata(customProvider?.adapter)?getCustomProviderModelFallbackLimitForModelId(selectedModelId2):void 0;return applyAutomaticMaxOutputCap(mergeAutomaticModelLimits(catalogLimit2,normalizeModelLimit(storedModel2?.limit)))}let builtin=getBuiltinProvider(providerId);if(!builtin)return;let connectionModels=opts.connections?.[providerId]?.models,selectedModelId=normalizeModelId(opts.modelId)||normalizeModelId(connectionModels?.[0]?.id)||normalizeModelId(getDefaultModelId(builtin));if(!selectedModelId)return;let storedModel=matchCatalogModel(connectionModels??[],selectedModelId);if(isUserDefinedModel(storedModel))return normalizeModelLimit(storedModel?.limit);let catalogLimit=builtin.customModels?getCustomProviderModelFallbackLimitForModelId(selectedModelId):getModelLimitForModels(builtin.models,selectedModelId),discoveredLimit=builtin.customModels?normalizeModelLimit(storedModel?.limit):void 0;return applyAutomaticMaxOutputCap(mergeAutomaticModelLimits(catalogLimit,discoveredLimit))}function resolveProviderSelectionContextWindow(opts){return resolveProviderSelectionModelLimit(opts)?.context}function resolveProviderSelectionMaxOutputTokens(opts){return resolveProviderSelectionModelLimit(opts)?.output}function listCustomProviderCatalogModels(){return resolveCustomProviderFallbackCatalog().models}function listCustomProviderModelFallbackModels(){if(!customProviderFallbackModelsCache)customProviderFallbackModelsCache=[...listCustomProviderCatalogModels(),...getBuiltinProvider("aihubmix")?.models??[]];return customProviderFallbackModelsCache}function getCustomProviderCatalogLimitForModelId(modelId){return getModelLimitForModels(listCustomProviderCatalogModels(),modelId)}function getAihubmixLimitForModelId(modelId){let provider=getBuiltinProvider("aihubmix");if(!provider||!Array.isArray(provider.models)||!provider.models.length)return;return getModelLimitForModels(provider.models,modelId)}function getCustomProviderModelFallbackLimitForModelId(modelId){return getCustomProviderCatalogLimitForModelId(modelId)??getAihubmixLimitForModelId(modelId)}function getModelCapabilitiesForModels(models,modelId){if(!Array.isArray(models)||!models.length)return;let match=matchCatalogModel(models,modelId);if(!match)return;let vision=typeof match.vision==="boolean"?match.vision:void 0,reasoning=match.reasoning?.supported?{supported:!0,default:match.reasoning.default}:void 0;if(vision==null&&reasoning==null)return;return{...vision!=null?{vision}:{},...reasoning!=null?{reasoning}:{}}}function getCustomProviderCatalogCapabilitiesForModelId(modelId){return getModelCapabilitiesForModels(listCustomProviderCatalogModels(),modelId)}function getAihubmixCapabilitiesForModelId(modelId){let provider=getBuiltinProvider("aihubmix");return getModelCapabilitiesForModels(provider?.models,modelId)}function getCustomProviderModelFallbackCapabilitiesForModelId(modelId){return getCustomProviderCatalogCapabilitiesForModelId(modelId)??getAihubmixCapabilitiesForModelId(modelId)}function extractReasoningCapability(model){let reasoning=model?.extra_capabilities?.reasoning;if(!reasoning||!reasoning.supported)return;return reasoning}function getCustomProviderModelFallbackReasoningEffortCapability(modelId){let customProviderMatch=matchCatalogModel(listCustomProviderCatalogModels(),modelId),customProviderCap=extractReasoningCapability(customProviderMatch);if(customProviderCap)return customProviderCap;let aihubmixProvider=getBuiltinProvider("aihubmix"),aihubmixMatch=matchCatalogModel(aihubmixProvider?.models??[],modelId);return extractReasoningCapability(aihubmixMatch)}function resolveModelReasoningEffortCapability(opts){let providerId=normalizeProviderId(opts.providerId),modelId=normalizeModelId(opts.modelId);if(!providerId||!modelId)return;if(isCustomProviderId(providerId)){let customProvider=(opts.customProviders??[]).find((provider)=>String(provider?.id??"").trim()===providerId),match=matchCatalogModel(customProvider?.models??[],modelId),customCap=extractReasoningCapability(match);if(customCap)return customCap;return shouldInferCustomProviderFallbackMetadata(customProvider?.adapter)?getCustomProviderModelFallbackReasoningEffortCapability(modelId):void 0}let builtin=getBuiltinProvider(providerId);if(!builtin)return;let connectionModels=opts.connections?.[providerId]?.models,fromConnection=matchCatalogModel(connectionModels??[],modelId),connectionCap=extractReasoningCapability(fromConnection);if(connectionCap)return connectionCap;if(builtin.customModels)return getCustomProviderModelFallbackReasoningEffortCapability(modelId);let builtinMatch=matchCatalogModel(builtin.models,modelId);return extractReasoningCapability(builtinMatch)}function modelSupportsThinkingContinuation(modelId){let normalized=normalizeModelId(modelId);if(!normalized)return!1;let customProviderContinuation=matchCatalogModel(listCustomProviderModelFallbackModels(),normalized)?.extra_capabilities?.reasoning?.continuation;if(Array.isArray(customProviderContinuation)&&customProviderContinuation.includes("thinking_blocks"))return!0;for(let provider of listBuiltinProviders()){let continuation=matchCatalogModel(provider.models,normalized)?.extra_capabilities?.reasoning?.continuation;if(Array.isArray(continuation)&&continuation.includes("thinking_blocks"))return!0}return!1}function readConfigHome2(value){if(typeof value!=="string")return;return value.trim()||void 0}function readOptionalString(value){if(typeof value==="string")return value.trim()||void 0;if(typeof value==="number"||typeof value==="boolean")return String(value).trim()||void 0;return}function readOptionalNumber(value){if(typeof value==="number"&&Number.isFinite(value))return value;if(typeof value==="string"){let trimmed=value.trim();if(!trimmed)return;let parsed=Number(trimmed);return Number.isFinite(parsed)?parsed:void 0}return}var DEFAULT_TOOLS_CONFIG={websearch:{apiKey:"",apiEndpoint:"https://google.serper.dev/search?format=json",numResults:10},mcpServers:[]};async function loadDimcodeUserTools(env){let[{homedir},path2]=await Promise.all([import("node:os"),import("node:path")]),dimcodeHome=readConfigHome2(env.DIMCODE_HOME),dir=dimcodeHome?path2.resolve(dimcodeHome):path2.resolve(homedir(),".dimcode"),filePath=path2.join(dir,"tools.json");try{let{readFile:readFile2}=await import("node:fs/promises"),raw=await readFile2(filePath,"utf8"),parsed=JSON.parse(raw);if(parsed&&typeof parsed==="object"&&parsed.version===1)return{dir,filePath,tools:parsed}}catch{}return{dir,filePath,tools:{version:1,updatedAt:0}}}async function saveDimcodeUserTools(filePath,tools){let[{mkdir:mkdir2,writeFile:writeFile2,rename,chmod:chmod2},path2]=await Promise.all([import("node:fs/promises"),import("node:path")]),dir=path2.dirname(filePath);await mkdir2(dir,{recursive:!0});let pid=globalThis.process?.pid??"p",nonce=`${Date.now()}-${Math.random().toString(16).slice(2)}`,tmp=`${filePath}.${pid}.${nonce}.tmp`,data=`${JSON.stringify(tools,null,2)}
|
|
875
875
|
`;await writeFile2(tmp,data,{encoding:"utf8",mode:384}),await rename(tmp,filePath);try{await chmod2(filePath,384)}catch{}}async function loadMcpJson(env){let[{homedir},path2]=await Promise.all([import("node:os"),import("node:path")]),dimcodeHome=readConfigHome2(env.DIMCODE_HOME),dir=dimcodeHome?path2.resolve(dimcodeHome):path2.resolve(homedir(),".dimcode"),filePath=path2.join(dir,"mcp.json");try{let{readFile:readFile2}=await import("node:fs/promises"),raw=await readFile2(filePath,"utf8"),parsed=JSON.parse(raw);if(parsed&&typeof parsed==="object"){let mcpServers=parsed.mcpServers;if(Array.isArray(mcpServers))return{dir,filePath,servers:mcpServers};if(mcpServers&&typeof mcpServers==="object"){let servers=[];for(let[name,value]of Object.entries(mcpServers))if(value&&typeof value==="object")servers.push({...value,name});return{dir,filePath,servers}}}}catch{}return{dir,filePath,servers:[]}}async function saveMcpJson(filePath,servers){let[{mkdir:mkdir2,writeFile:writeFile2,rename,chmod:chmod2},path2]=await Promise.all([import("node:fs/promises"),import("node:path")]),dir=path2.dirname(filePath);await mkdir2(dir,{recursive:!0});let pid=globalThis.process?.pid??"p",nonce=`${Date.now()}-${Math.random().toString(16).slice(2)}`,tmp=`${filePath}.${pid}.${nonce}.tmp`,data=`${JSON.stringify({mcpServers:servers},null,2)}
|
|
876
876
|
`;await writeFile2(tmp,data,{encoding:"utf8",mode:384}),await rename(tmp,filePath);try{await chmod2(filePath,384)}catch{}}function buildUserToolsFromStore(opts){let prevSettings=opts.prev.settings??{},{mcpServers:_unusedMcpServers,...nextSettings}=prevSettings,websearch=opts.store.state?.tools?.websearch??{};return{version:1,updatedAt:Date.now(),settings:{...nextSettings,websearch:{apiKey:websearch.apiKey??void 0,apiEndpoint:websearch.apiEndpoint??void 0,numResults:websearch.numResults??void 0}}}}function hydrateToolsStateFromConfig(config,state,mcpJsonServers){let saved=config.settings??{},websearch=saved.websearch??{},mcpServers=mcpJsonServers&&mcpJsonServers.length?mcpJsonServers:Array.isArray(saved.mcpServers)?saved.mcpServers:[];if(!state.tools)return;if(state.tools.websearch)state.tools.websearch.apiKey=readOptionalString(websearch.apiKey)??"",state.tools.websearch.apiEndpoint=readOptionalString(websearch.apiEndpoint)??DEFAULT_TOOLS_CONFIG.websearch.apiEndpoint,state.tools.websearch.numResults=readOptionalNumber(websearch.numResults)??DEFAULT_TOOLS_CONFIG.websearch.numResults;if(!state.mcp)state.mcp={servers:[]};state.mcp.servers=mcpServers.length?JSON.parse(JSON.stringify(mcpServers)):[...DEFAULT_TOOLS_CONFIG.mcpServers]}function normalizePath(value){let next=String(value??"").trim();return next?path2.resolve(next):void 0}function sanitizeMcpServerId(name){return name.trim().toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"")||"mcp"}function createUniqueMcpServerId(name,usedIds){let base=sanitizeMcpServerId(name);if(!usedIds.has(base))return usedIds.add(base),base;let index=2;while(usedIds.has(`${base}_${index}`))index+=1;let next=`${base}_${index}`;return usedIds.add(next),next}function resolveMcpServerId(server,usedIds){let explicitId=String(server.id??"").trim();if(explicitId&&!usedIds.has(explicitId))return usedIds.add(explicitId),explicitId;return createUniqueMcpServerId(server.name,usedIds)}function resolveConfigHome(env){let dimcodeHome=normalizePath(env?.DIMCODE_HOME);if(dimcodeHome)return dimcodeHome;if(env&&Object.prototype.hasOwnProperty.call(env,"HOME")){let userHome=normalizePath(env.HOME);return userHome?path2.resolve(userHome,CONFIG_DIR_NAME):void 0}return}function inferConfigHomeFromCacheDir(cacheDir){let resolved=path2.resolve(cacheDir);if(path2.basename(resolved)!==APP_DIR_NAME)return;let parent=path2.dirname(resolved);if(path2.basename(parent)!==CONFIG_DIR_NAME)return;return parent}function resolveStateDir(cacheDir,env){let explicit=normalizePath(env?.DIMCODE_STATE_DIR);if(explicit)return explicit;let configHome=resolveConfigHome(env)??inferConfigHomeFromCacheDir(cacheDir);if(configHome)return path2.resolve(configHome,STATE_DIR_NAME);return path2.resolve(cacheDir,STATE_DIR_NAME)}function applyStateDirEnv(opts){opts.env.DIMCODE_STATE_DIR=opts.stateDir,opts.contextEnv.DIMCODE_STATE_DIR=opts.stateDir}function toMcpServerConfigs(settings){if(!Array.isArray(settings))return[];let usedIds=new Set;return settings.map((server)=>{let id=resolveMcpServerId(server,usedIds);if(server.transport==="http"||server.transport==="sse")return{id,name:server.name,transport:server.transport,url:server.url,auth:server.auth?.token?{type:"bearer",token:server.auth.token}:void 0,headers:server.headers,requestTimeoutMs:server.requestTimeoutMs,enabled:server.enabled};return{id,name:server.name,transport:"stdio",command:server.command,args:server.args,env:server.env,cwd:server.cwd,autoRestart:server.autoRestart,requestTimeoutMs:server.requestTimeoutMs,restartDelayMs:server.restartDelayMs,maxRestarts:server.maxRestarts,restartWindowMs:server.restartWindowMs,enabled:server.enabled}})}function parseBool(value){let s=value.toLowerCase();if(!s)return;if(s==="1"||s==="true"||s==="yes"||s==="on")return!0;if(s==="0"||s==="false"||s==="no"||s==="off")return!1;return}function parseIntValue(value){if(!value)return;let n=Number.parseInt(value,10);return Number.isFinite(n)?n:void 0}function parseFloatValue(value){if(!value)return;let n=Number.parseFloat(value);return Number.isFinite(n)?n:void 0}function readProcessEnv(){return globalThis?.process?.env??{}}function resolveEnv(primary,fallback){return{...fallback??{},...primary??{}}}function prefixedEnvKeys(name){return[`DIMCODE_${name}`]}function createEnvReader(env,fallback){let merged=resolveEnv(env,fallback),strAny=(keys)=>{for(let key of keys){let raw=String(merged?.[key]??"").trim();if(raw)return raw}return""},str=(key,...aliases)=>{let raw=String(merged?.[key]??"").trim();if(raw)return raw;if(aliases.length)return strAny(aliases);return""},boolAny=(keys)=>{let raw=strAny(keys);return parseBool(raw)},bool=(key,...aliases)=>{let raw=str(key,...aliases);return parseBool(raw)},intAny=(keys)=>{let raw=strAny(keys);return parseIntValue(raw)},int=(key,...aliases)=>{let raw=str(key,...aliases);return parseIntValue(raw)},floatAny=(keys)=>{let raw=strAny(keys);return parseFloatValue(raw)};return{env:merged,str,strAny,bool,boolAny,int,intAny,float:(key,...aliases)=>{let raw=str(key,...aliases);return parseFloatValue(raw)},floatAny,prefixedStr:(name,...aliases)=>{return strAny([...prefixedEnvKeys(name),...aliases])},prefixedBool:(name,...aliases)=>{return boolAny([...prefixedEnvKeys(name),...aliases])},prefixedInt:(name,...aliases)=>{return intAny([...prefixedEnvKeys(name),...aliases])},prefixedFloat:(name,...aliases)=>{return floatAny([...prefixedEnvKeys(name),...aliases])}}}function readPrefixedEnv(env,name){let[primary]=prefixedEnvKeys(name),source=env??readProcessEnv();return String(source?.[primary]??"").trim()}function readPrefixedEnvFlag(env,name){return readPrefixedEnv(env,name).toLowerCase()}var KIMI_K25_TAIL="kimi-k2.5",KIMI_K25_ALIAS="k2p5",KIMI_K2_THINKING_TAIL="kimi-k2-thinking";function stripWrappingQuotes(value){let trimmed=value.trim();if(trimmed.startsWith('"')&&trimmed.endsWith('"')||trimmed.startsWith("'")&&trimmed.endsWith("'"))return trimmed.slice(1,-1).trim();return trimmed}function normalizeModelId2(raw){if(typeof raw!=="string")return"";return stripWrappingQuotes(raw).trim().toLowerCase()}function resolveModelQuirkOverrides(modelId){let normalized=normalizeModelId2(modelId);if(!normalized)return null;let tail=normalized.split("/").filter(Boolean).pop()||"";if(normalized===KIMI_K25_ALIAS||tail===KIMI_K25_TAIL)return{temperature:1,interleavedThinking:!0};if(tail===KIMI_K2_THINKING_TAIL)return{interleavedThinking:!0};return null}function resolveInitialApprovalMode(env){let raw=env.prefixedStr("TOOL_APPROVALS").toLowerCase();if(!raw)return env.prefixedBool("SKIP_APPROVAL")?"auto":"normal";if(raw==="auto"||raw==="all"||raw==="always")return"auto";if(raw==="strict"||raw==="manual")return"strict";return"normal"}function resolveInitialRunConfig(env){let model=env.prefixedStr("MODEL")||"deepseek-v3.1",overrides=resolveModelQuirkOverrides(model),temperature=typeof overrides?.temperature==="number"?overrides.temperature:env.prefixedFloat("TEMPERATURE")??0.7,interleaved_thinking=typeof overrides?.interleavedThinking==="boolean"?overrides.interleavedThinking:env.prefixedBool("INTERLEAVED_THINKING")??!1,reasoning_effort=(env.prefixedStr("REASONING_EFFORT")||"").trim();return{model,temperature,interleaved_thinking,...reasoning_effort?{reasoning_effort}:{}}}function resolveInitialSessionId(env){return env.prefixedStr("SESSION_ID")||""}import path28 from"node:path";import{appendFileSync,mkdirSync}from"node:fs";import path3 from"node:path";function isNodeLike(){let p=globalThis.process;return Boolean(p&&typeof p?.versions?.node==="string")}function isDebugEnabled(){if(!isNodeLike())return!1;let v=readPrefixedEnvFlag(void 0,"DEBUG");return v==="1"||v==="true"||v==="yes"||v==="on"}var ensuredDirs=new Set;function ensureDir(dir){if(ensuredDirs.has(dir))return;try{mkdirSync(dir,{recursive:!0})}catch{}ensuredDirs.add(dir)}function logsDir(){let raw=readPrefixedEnv(void 0,"DEBUG_LOG");if(raw)return path3.dirname(raw);return"./logs"}function formatLine(eventName,payload){let name=String(eventName??"").trim()||"event",line=`[${new Date().toISOString()}] ${name}`;if(payload!==void 0)try{line+=` ${JSON.stringify(payload)}`}catch{}return`${line}
|
|
877
877
|
`}function writeLine(filePath,line){try{appendFileSync(filePath,line)}catch{}}function debugLogPath(){let raw=readPrefixedEnv(void 0,"DEBUG_LOG");if(raw)return raw;let dir=logsDir();return ensureDir(dir),path3.join(dir,"dimcode-debug.log")}function debugLog(eventName,payload){if(!isDebugEnabled())return;writeLine(debugLogPath(),formatLine(eventName,payload))}function debugLogSubagent(eventName,payload){if(!isDebugEnabled())return;let dir=logsDir();ensureDir(dir);let filePath=path3.join(dir,"subagent-events.log");writeLine(filePath,formatLine(eventName,payload))}init_dist12();function isDevtoolsBuildEnabled(opts={}){return(typeof opts.injected==="boolean"?opts.injected:typeof __DIMCODE_DEVTOOLS_BUILD__==="boolean"?__DIMCODE_DEVTOOLS_BUILD__:void 0)===!0}function isPlainObject2(value){return Boolean(value)&&typeof value==="object"&&!Array.isArray(value)}function hasOwnIndex(value,index){return Object.prototype.hasOwnProperty.call(value,index)}function isJsonObject(value){return Boolean(value)&&typeof value==="object"&&!Array.isArray(value)}function shouldWarnOnJsonObjectDrop(){return String("development").trim().toLowerCase()!=="production"}function describeJsonValue(value){if(value===null)return"null";if(Array.isArray(value))return"array";return typeof value}function toJsonValue(value){if(value===null)return null;if(typeof value==="string"||typeof value==="boolean")return value;if(typeof value==="number")return Number.isFinite(value)?value:void 0;if(Array.isArray(value)){let items=[];for(let index=0;index<value.length;index+=1){let entry=hasOwnIndex(value,index)?value[index]:void 0,normalized=toJsonValue(entry);items.push(normalized===void 0?null:normalized)}return items}if(!isPlainObject2(value))return;let out={};for(let[key,entry]of Object.entries(value)){let normalized=toJsonValue(entry);if(normalized!==void 0)out[key]=normalized}return out}function toJsonObject(value){let normalized=toJsonValue(value);if(normalized!==void 0&&isJsonObject(normalized))return normalized;if(normalized!==void 0&&shouldWarnOnJsonObjectDrop())console.warn(`[dim-agent/json] toJsonObject dropped a non-object JSON ${describeJsonValue(normalized)} value.`);return{}}function toMetadataMap(value){return toJsonObject(value)}function cloneMetadataMap(value){return value?structuredClone(value):{}}function appendContentText(content,parts){if(typeof content==="string"){parts.push(content);return}if(Array.isArray(content)){for(let item of content)appendContentText(item,parts);return}if(!content||typeof content!=="object")return;let record2=content,type=typeof record2.type==="string"?record2.type:"";if(type==="text"||type==="input_text"||type==="output_text"){if(typeof record2.text==="string")parts.push(record2.text);return}if(typeof record2.text==="string"){parts.push(record2.text);return}if("content"in record2)appendContentText(record2.content,parts)}function normalizeSegment(content){if(typeof content!=="string")return"";return content.trim()}function stripLeadingSystemPrompt(content,systemPrompt){let normalizedContent=normalizeSegment(content),normalizedSystemPrompt=normalizeSegment(systemPrompt);if(!normalizedContent||!normalizedSystemPrompt)return normalizedContent;if(normalizedContent===normalizedSystemPrompt)return"";if(!normalizedContent.startsWith(normalizedSystemPrompt))return normalizedContent;let rest=normalizedContent.slice(normalizedSystemPrompt.length);if(!rest)return"";if(!/^\s*\n/.test(rest))return normalizedContent;return rest.replace(/^\s*\n\s*/,"").trim()}function pushUniqueSegment(segments,seen,content,systemPrompt){let normalized=stripLeadingSystemPrompt(normalizeSegment(content),systemPrompt);if(!normalized||seen.has(normalized))return;seen.add(normalized),segments.push(normalized)}function stripSummaryFromContent(content,marker16){let stripMarker=(text)=>{let markerIndex=text.indexOf(marker16);return markerIndex>=0?text.slice(0,markerIndex).trimEnd():text};if(typeof content==="string"){let cleaned=stripMarker(content);return cleaned.trim().length>0?[{type:"text",text:cleaned}]:[]}if(Array.isArray(content)){let blocks=[];for(let item of content){if(typeof item==="string"){let cleaned=stripMarker(item);if(cleaned.trim().length>0)blocks.push({type:"text",text:cleaned});continue}if(item&&typeof item==="object"&&"type"in item){let block=item;if(block.type==="text"){let text=typeof block.text==="string"?block.text:"",cleaned=stripMarker(text);if(cleaned.trim().length>0)blocks.push({...block,text:cleaned});continue}blocks.push(block)}}return blocks}if(content&&typeof content==="object"&&"type"in content){let block=content;if(block.type==="text"){let text=typeof block.text==="string"?block.text:"",cleaned=stripMarker(text);return cleaned.trim().length>0?[{...block,text:cleaned}]:[]}return[block]}return[]}function extractSystemMessageText(content){let parts=[];return appendContentText(content,parts),parts.join("")}function canonicalizeSystemMessages(input){let segments=[],seen=new Set,systemMessages=[],messages=[];pushUniqueSegment(segments,seen,input.systemPrompt);for(let message of input.messages){if(String(message?.role??"")==="system"){systemMessages.push(message),pushUniqueSegment(segments,seen,extractSystemMessageText(message?.content),input.systemPrompt);continue}messages.push(message)}return{systemPrompt:segments.join(`
|
|
@@ -1073,10 +1073,10 @@ ${DURABLE_COMPLETION_PROMPT}`},createRuntimeOwnedSubagentSession=async(runtimeCo
|
|
|
1073
1073
|
|
|
1074
1074
|
${firstUserQuery}
|
|
1075
1075
|
|
|
1076
|
-
${epoch}`).digest("hex");return record3.cachedPromptCacheKey={signature,value},value}function updateResponsesCompactionMetadata(record3,trigger){let current=readResponsesCompactionMetadata(record3.metadata);record3.metadata=toMetadataMap({...record3.metadata??{},[RESPONSES_COMPACTION_METADATA_KEY]:{epoch:current.epoch+1,lastTrigger:trigger,updatedAt:Date.now()}}),record3.cachedPromptCacheKey=void 0,record3.updatedAt=Date.now()}function injectOpenAIResponsesProviderOptions(record3,request){let runtimeConfig=runtimeConfigForActiveRun(record3);if(runtimeConfig.adapter!=="openai-responses")return request;let providerOptions={};if(request.providerOptions&&typeof request.providerOptions==="object")providerOptions={...request.providerOptions};let openaiProviderOptions={};if(providerOptions.openai&&typeof providerOptions.openai==="object"&&!Array.isArray(providerOptions.openai))openaiProviderOptions={...providerOptions.openai};let changed=!1,promptCacheKey=buildResponsesPromptCacheKey(record3,request);if(promptCacheKey)openaiProviderOptions.promptCacheKey=promptCacheKey,changed=!0;if(runtimeConfig.responsesUseSessionId===!0){let nextHeaders={},requestHeaders=openaiProviderOptions.requestHeaders;if(requestHeaders&&typeof requestHeaders==="object"&&!Array.isArray(requestHeaders)){for(let[key,value]of Object.entries(requestHeaders))if(typeof value==="string")nextHeaders[key]=value}nextHeaders.session_id=record3.sessionId,openaiProviderOptions.requestHeaders=nextHeaders,changed=!0}if(!changed)return request;return{...request,providerOptions:{...providerOptions,openai:openaiProviderOptions}}}function hasCompletedTodos2(todoSnapshot){return Array.isArray(todoSnapshot)&&todoSnapshot.length>0&&todoSnapshot.every((item)=>item.status==="completed")}function pushProviderRetryingEvent(record3,notice){let activeRun=record3.activeRun;if(!activeRun)return;activeRun.currentChannel?.push({type:"run.retrying",sessionId:record3.sessionId,runId:activeRun.runId,requestId:notice.requestId,...notice.provider?{provider:notice.provider}:{},...notice.modelId?{modelId:notice.modelId}:{},retry:notice.retry,maxRetries:notice.maxRetries,attempt:notice.attempt,maxAttempts:notice.maxAttempts,delayMs:notice.delayMs,error:structuredClone(enrichSessionErrorPayload(notice.error))})}function createProviderRetryNotificationPlugin(record3){return{manifest:{id:"dim-agent-provider-retry-notifications",version:"0.0.1",apiVersion:1,permissions:{},priority:-1e4},setup(){return{hooks:[{descriptor:{name:"model.request"},middleware:[({payload})=>({request:attachRetryNoticeSinkToModelRequest(payload.request,(notice)=>pushProviderRetryingEvent(record3,notice))})]}]}}}}function buildCompressionEventDiagnostics2(input){if(!input.notification&&!input.run)return;return{...input.run?{run:input.run}:{},...input.notification?{notification:input.notification}:{}}}function readCompressionNotificationTokensBefore2(notification){if(!notification)return;switch(notification.type){case"context.compaction.required":case"context.compacted":case"context.compaction.failed":return notification.metadata.estimatedInputTokensBefore;default:return}}function readCompressionNotificationThreshold2(notification){if(!notification)return;switch(notification.type){case"context.compaction.required":case"context.compacted":case"context.compaction.failed":return notification.metadata.thresholdTokens;default:return}}function readCompressionNotificationTokensAfter2(notification){if(!notification||notification.type!=="context.compacted")return;return notification.metadata.estimatedInputTokensAfter}function readCompressionNotificationRemovedMessages2(notification){if(!notification)return;switch(notification.type){case"context.compacted":case"context.compaction.failed":return notification.metadata.compactedMessageCount;default:return}}function readCompressionNotificationClearedToolOutputs2(notification){if(!notification)return;switch(notification.type){case"context.compacted":case"context.compaction.failed":return notification.metadata.prunedToolOutputCount;default:return}}function readCompressionNotificationReasonCode2(notification){if(!notification||notification.type!=="context.compaction.failed")return;return notification.metadata.reasonCode}function toCompressionEvent2(input){let metadata=input.metadata?toMetadataMap(input.metadata):void 0,notification=input.diagnostics?.notification,run=input.diagnostics?.run,tokensBefore=typeof metadata?.estimatedInputTokensBefore==="number"?metadata.estimatedInputTokensBefore:typeof metadata?.estimatedInputTokens==="number"?metadata.estimatedInputTokens:readCompressionNotificationTokensBefore2(notification)??run?.estimatedInputTokensBefore,threshold=typeof metadata?.thresholdTokens==="number"?metadata.thresholdTokens:readCompressionNotificationThreshold2(notification)??run?.thresholdTokens,tokensAfter=typeof metadata?.tokensAfter==="number"?metadata.tokensAfter:typeof metadata?.estimatedInputTokensAfter==="number"?metadata.estimatedInputTokensAfter:readCompressionNotificationTokensAfter2(notification)??run?.estimatedInputTokensAfter,removedMessages=typeof metadata?.removedMessages==="number"?metadata.removedMessages:typeof metadata?.compactedMessageCount==="number"?metadata.compactedMessageCount:readCompressionNotificationRemovedMessages2(notification)??run?.compactedMessageCount,clearedToolOutputs=typeof metadata?.clearedToolOutputs==="number"?metadata.clearedToolOutputs:typeof metadata?.prunedToolOutputCount==="number"?metadata.prunedToolOutputCount:readCompressionNotificationClearedToolOutputs2(notification)??run?.diagnostics.prunedToolOutputCount,reasonCode=typeof metadata?.reasonCode==="string"?metadata.reasonCode:readCompressionNotificationReasonCode2(notification)??run?.reasonCode,summaryGenerated=typeof metadata?.summaryGenerated==="boolean"?metadata.summaryGenerated:notification?.type==="context.compacted"||typeof run?.summary==="string";return{type:"context.compression",sessionId:input.sessionId,...input.runId?{runId:input.runId}:{},state:input.state,trigger:input.trigger,...input.label?{label:input.label}:{},...typeof tokensBefore==="number"?{tokensBefore}:{},...typeof threshold==="number"?{threshold}:{},...typeof tokensAfter==="number"?{tokensAfter}:{},...typeof removedMessages==="number"?{removedMessages}:{},...typeof clearedToolOutputs==="number"?{clearedToolOutputs}:{},...summaryGenerated?{summaryGenerated}:{},...typeof metadata?.elapsedMs==="number"?{elapsedMs:metadata.elapsedMs}:{},...reasonCode?{reasonCode}:{},...input.diagnostics?{diagnostics:input.diagnostics}:{},...metadata?{metadata}:{}}}class NativeAgentRuntime{options;snapshotStore;sessionStoreDir;hostDataDir;records=new Map;sharedMcpHub;backgroundExecTool=new StreamingExecTool;mcpInitialSyncAttempted=!1;sessions={list:async()=>await this.listSessionSnapshots(),get:async(sessionId)=>await this.getSessionSnapshot(sessionId),create:async(input)=>{let session=await this.createSession(input);return await this.getSessionSnapshot(session.id)},createWithMessages:async(messages,input)=>await this.createSessionWithMessages(messages,input),destroy:async(sessionId)=>await this.destroySession(sessionId),rename:async(sessionId,title)=>await this.renameSession(sessionId,title),updateMetadata:async(sessionId,metadata)=>await this.updateSessionMetadata(sessionId,metadata),interrupt:async(sessionId)=>{let session=await this.openSession(sessionId);if(!session)return!1;return await session.cancel()},getUsageSummary:async(sessionId)=>await this.getSessionUsageSummary(sessionId),getUsageLedger:async(sessionId)=>await this.getSessionUsageLedger(sessionId),getTurnUsage:async(sessionId,turnId)=>await this.getSessionTurnUsage(sessionId,turnId),listTurnUsages:async(sessionId)=>await this.listSessionTurnUsages(sessionId),listRequestUsages:async(sessionId,filter2)=>await this.listSessionRequestUsages(sessionId,filter2)};[AGENT_RUNTIME_INTERNALS]={getSessionState:async(sessionId)=>await this.getSessionStateInternal(sessionId),getSessionHandle:async(sessionId)=>await this.getSessionHandleInternal(sessionId),getMcpState:async()=>await this.getMcpState(),syncMcpServers:async(configs)=>await this.syncMcpServers(configs)};async getSessionState(sessionId){let state=await this.getSessionStateInternal(sessionId);if(!state)return;return projectPublicSessionState(state)}async getSessionHandle(sessionId){return await this.getSessionHandleInternal(sessionId)}async getMcpState(){return this.projectMcpState(this.sharedMcpHub.getState())}async syncMcpServers(configs){return await this.syncGlobalMcpServers(configs)}runtimeHub;sessionInteraction;sessionLoad;sessionLifecycle;sessionDelegation;sessionRunLoop;sessionControl;constructor(options){this.options=options,this.sessionStoreDir=path27.join(path27.resolve(options.stateDir),RUNTIME_SNAPSHOT_DIR),this.hostDataDir=options.hostDataDir?path27.resolve(options.hostDataDir):path27.resolve(options.stateDir),this.snapshotStore=new RuntimeSnapshotFileStore({directory:this.sessionStoreDir}),this.runtimeHub=getOrCreateDimRuntimeHub({stateDirPath:path27.resolve(options.stateDir)}),this.sharedMcpHub=new SharedAcpMcpHub({initialPhase:options.mcpInitialState??"ready"}),this.sessionInteraction=createRuntimeSessionInteractionController({options:this.options,updateResponsesCompactionMetadata}),this.sessionLoad=createRuntimeSessionLoadController({options:this.options,snapshotStore:this.snapshotStore,sessionStoreDir:this.sessionStoreDir,hostDataDir:this.hostDataDir,sharedMcpHub:this.sharedMcpHub,sanitizeRuntimeSnapshotMessages,normalizePositiveInteger:normalizePositiveInteger3,normalizeLastRequestBudget:(value)=>normalizeLastRequestBudget(value)??null,isDuplicateRequestBudget,handleAskUser:async(record3,request)=>await this.sessionInteraction.handleAskUser(record3,request),handleToolApproval:async(record3,request)=>await this.sessionInteraction.handleToolApproval(record3,request),resolveSubagentApprovalDecision:async(sessionId,request)=>await this.resolveSubagentApprovalDecision(sessionId,request),handleNotification:async(record3,notification,context)=>await this.handleNotification(record3,notification,context),syncPlanMode:async(record3)=>await this.syncPlanMode(record3),syncSessionMcpServers:async(record3)=>await this.syncSessionMcpServers(record3),createProviderRetryNotificationPlugin:(record3)=>createProviderRetryNotificationPlugin(record3),injectResponsesProviderOptions:(record3,request)=>injectOpenAIResponsesProviderOptions(record3,request)}),this.sessionLifecycle=createRuntimeSessionLifecycleController({records:this.records,snapshotStore:this.snapshotStore,sessionStoreDir:this.sessionStoreDir,ensureLoadedSession:async(record3,snapshot)=>await this.ensureLoadedSession(record3,snapshot),createRecordFromSnapshot:async(sessionId,snapshot)=>await this.createRecordFromSnapshot(sessionId,snapshot),normalizeRuntimeSnapshot:async(snapshot,sessionId)=>await this.normalizeRuntimeSnapshot(snapshot,sessionId),persistRecord:async(record3)=>await this.persistRecord(record3),cancelRecord:async(record3)=>await this.cancelRecord(record3),createSessionFacade:(record3)=>this.createSessionFacade(record3),resolveRuntimeConfig:async(input)=>await this.resolveRuntimeConfig(input),ensureInitialMcpSync:async()=>await this.ensureInitialMcpSync(),applyGlobalMcpServersToRecords:(configs)=>this.applyGlobalMcpServersToRecords(configs),deferGlobalMcpServersSync:(configs)=>this.sharedMcpHub.markDeferred(configs),readGlobalMcpServers:(record3)=>this.readGlobalMcpServers(record3),wrapSdkSnapshotForSave:(record3,snapshot)=>this.wrapSdkSnapshotForSave(record3,snapshot),canonicalizeSnapshotSystemMessages:(snapshot,systemPrompt)=>this.canonicalizeSnapshotSystemMessages(snapshot,systemPrompt),readSnapshotSystemPrompt:(snapshot)=>this.readSnapshotSystemPrompt(snapshot),shouldPersistRepairedRuntimeConfig:(snapshot,record3)=>this.sessionLoad.shouldPersistRepairedRuntimeConfig(snapshot,record3),readLatestRequestBudgetSnapshot:(record3)=>readLatestRequestBudgetSnapshot(record3),clearLastRequestBudget:(record3)=>clearLastRequestBudget(record3),cloneSessionUsageSummary:(summary)=>cloneSessionUsageSummary(summary),cloneSessionUsageLedger:(ledger)=>cloneSessionUsageLedger(ledger),cloneTurnUsageSummary:(summary)=>cloneTurnUsageSummary(summary)}),this.sessionDelegation=createRuntimeSessionDelegationController({options:this.options,processSessionItem:async(record3,runState,itemId,options2)=>await this.processSessionItem(record3,runState,itemId,options2),persistRecord:async(record3)=>await this.persistRecord(record3),buildSystemPrompt:async(cwd)=>await this.buildSystemPrompt(cwd),listSessionMcpServers:async(record3)=>await this.listSessionMcpServers(record3),createRuntimeOwnedSubagentSession:async(runtimeConfig,input)=>await this.createRuntimeOwnedSubagentSession(runtimeConfig,input)}),this.sessionRunLoop=createRuntimeSessionRunLoopController({readBackgroundExecTool:()=>this.backgroundExecTool,persistRecord:async(record3)=>await this.persistRecord(record3),flushPendingMcpSyncIfIdle:async()=>await this.flushPendingMcpSyncIfIdle(),orchestrateDelegation:async(record3,runState,intent)=>await this.orchestrateDelegation(record3,runState,intent),captureTodoSnapshotOnFinish:(record3,runState)=>this.captureTodoSnapshotOnFinish(record3,runState),clearRunState:(record3,runState)=>this.clearRunState(record3,runState)}),this.sessionControl=createRuntimeSessionControlController({sessionRunLoop:this.sessionRunLoop,ensureLoadedSession:async(record3,snapshot)=>await this.ensureLoadedSession(record3,snapshot),persistRecord:async(record3)=>await this.persistRecord(record3),readDefaultMcpServers:async()=>{if(!this.options.mcpServers)return[];return[...await maybeCall(this.options.mcpServers)]}})}readGlobalMcpServers(recordOverride){let desired=this.sharedMcpHub.getDesiredConfig();if(desired.length>0)return desired;if(recordOverride?.mcpServers.length)return recordOverride.mcpServers.map((server)=>({...server}));for(let record3 of this.records.values())if(record3.mcpServers.length>0)return record3.mcpServers.map((server)=>({...server}));return[]}applyGlobalMcpServersToRecords(configs){let next=configs.map((server)=>({...server}));for(let record3 of this.records.values())record3.mcpServers=next.map((server)=>({...server}))}async ensureInitialMcpSync(){if(this.mcpInitialSyncAttempted)return;this.mcpInitialSyncAttempted=!0;let seed=this.options.mcpServers?[...await maybeCall(this.options.mcpServers)]:[];if(!seed.length&&this.sharedMcpHub.getDesiredConfig().length===0)return;await this.sharedMcpHub.syncServers(seed),this.applyGlobalMcpServersToRecords(seed)}async syncGlobalMcpServers(configs){let next=await this.sharedMcpHub.syncServers(configs);return this.applyGlobalMcpServersToRecords(next.configs),this.projectMcpState(next)}async flushPendingMcpSyncIfIdle(){if(!this.sharedMcpHub.hasPendingSync())return;for(let record3 of this.records.values())if(record3.activeRun||record3.pendingAction)return;let next=await this.sharedMcpHub.flushPending();this.applyGlobalMcpServersToRecords(next.configs)}projectMcpState(state){return{phase:state.phase,configuredServers:state.configuredServers,connectedServers:state.connectedServers.map((entry)=>({id:entry.id,name:entry.name,transport:entry.transport,toolNames:[...entry.toolNames]})),failedServers:state.failedServers.map((entry)=>({id:entry.id,name:entry.name,transport:entry.transport,...entry.error!==void 0?{error:entry.error}:{}})),toolCount:state.toolCount,configs:state.configs.map((config2)=>({...config2}))}}runSubagent(spec){let subagentId=`subagent-${randomUUID6()}`,abortController=new AbortController,upstreamSignal=spec.signal;if(upstreamSignal)if(upstreamSignal.aborted)abortController.abort(upstreamSignal.reason);else upstreamSignal.addEventListener("abort",()=>{abortController.abort(upstreamSignal.reason)},{once:!0});let state={value:"pending"},{runtimeHub}=this,ownerSessionId=spec.ownerSessionId?.trim()||void 0,registry2=runtimeHub.subagentRegistry,handle={subagentId,ownerSessionId,get status(){return state.value},cancel:(_reason)=>{if(!abortController.signal.aborted)abortController.abort();let entry2=registry2.get(subagentId);if(entry2?.session&&entry2.itemId)try{entry2.session.cancelQueuedItem(entry2.itemId)}catch{}},result:void 0},entry={subagentId,ownerSessionId,abortController,handle,session:null,itemId:null,state};registry2.register(entry);let runPromise=(async()=>{let startedAt=Date.now();try{let runtimeConfig=await this.resolveRuntimeConfig({cwd:spec.cwd}),{pair}=await this.createRuntimeOwnedSubagentSession(runtimeConfig,{cwd:spec.cwd,description:spec.description,ownerSessionId,delegateTasksEnabled:!1,askUserEnabled:!1,approvalMode:"auto"});return await executeSubagentRun({entry,spec,pair,getSnapshotUsage:(snapshot)=>{if(!snapshot||typeof snapshot!=="object")return;return snapshot.usage??void 0},onFinish:()=>{registry2.unregister(subagentId)}})}catch(error48){registry2.unregister(subagentId);let cancelled=abortController.signal.aborted;state.value=cancelled?"cancelled":"failed";let message=error48 instanceof Error?error48.message:String(error48);return{summary:"",state:state.value,durationMs:Date.now()-startedAt,toolsUsed:0,...cancelled?{}:{error:{code:"subagent_execution_failed",message}}}}})();return Object.defineProperty(handle,"result",{value:runPromise,writable:!1,configurable:!1,enumerable:!0}),handle}async listSessionSnapshots(){return await this.sessionLifecycle.listSessionSnapshots()}async getSessionSnapshot(sessionId){return await this.sessionLifecycle.getSessionSnapshot(sessionId)}async getLiveSessionUsageSummary(record3){return await this.sessionLifecycle.getLiveSessionUsageSummary(record3)}async getLiveSessionUsageLedger(record3){return await this.sessionLifecycle.getLiveSessionUsageLedger(record3)}async getLiveSessionTurnUsage(record3,turnId){return await this.sessionLifecycle.getLiveSessionTurnUsage(record3,turnId)}async listLiveSessionTurnUsages(record3){return await this.sessionLifecycle.listLiveSessionTurnUsages(record3)}async listLiveSessionRequestUsages(record3,filter2){return await this.sessionLifecycle.listLiveSessionRequestUsages(record3,filter2)}async handleNotification(record3,notification,context){return await this.sessionInteraction.handleNotification(record3,notification,context)}async getSessionUsageSummary(sessionId){return await this.sessionLifecycle.getSessionUsageSummary(sessionId)}async getSessionUsageLedger(sessionId){return await this.sessionLifecycle.getSessionUsageLedger(sessionId)}async getSessionTurnUsage(sessionId,turnId){return await this.sessionLifecycle.getSessionTurnUsage(sessionId,turnId)}async listSessionTurnUsages(sessionId){return await this.sessionLifecycle.listSessionTurnUsages(sessionId)}async listSessionRequestUsages(sessionId,filter2){return await this.sessionLifecycle.listSessionRequestUsages(sessionId,filter2)}async listSessions(){return await this.sessionLifecycle.listSessions()}async openSession(sessionId){return await this.sessionLifecycle.openSession(sessionId)}async createSession(input){return await this.sessionLifecycle.createSession(input)}async destroySession(sessionId){await this.sessionLifecycle.destroySession(sessionId)}async unloadSession(sessionId,options){await this.sessionLifecycle.unloadSession(sessionId,options)}async createSessionWithMessages(messages,input){return await this.sessionLifecycle.createSessionWithMessages(messages,input)}async renameSession(sessionId,title){return await this.sessionLifecycle.renameSession(sessionId,title)}async updateSessionMetadata(sessionId,metadata){return await this.sessionLifecycle.updateSessionMetadata(sessionId,metadata)}async getSessionStateInternal(sessionId){return await this.sessionLifecycle.getSessionStateInternal(sessionId)}async getSessionHandleInternal(sessionId){return await this.sessionLifecycle.getSessionHandleInternal(sessionId)}async replaceSessionSnapshot(sessionId,snapshot,update){await this.sessionLifecycle.replaceSessionSnapshot(sessionId,snapshot,update)}async persistSession(sessionId){await this.sessionLifecycle.persistSession(sessionId)}createSessionFacade(record3){return{id:record3.sessionId,run:(input,options)=>this.startRun(record3,input,options),resume:(input,options)=>this.resumeRun(record3,input,options),steer:async(input)=>{if(await this.ensureLoadedSession(record3),!record3.activeRun||!record3.sdkSession)return!1;return record3.sdkSession.steer(input),!0},setMode:async(modeId)=>{await this.ensureLoadedSession(record3),this.assertSessionIdle(record3,"setMode"),record3.modeId=modeId,clearLastRequestBudget(record3),await this.syncPlanMode(record3),await this.persistRecord(record3)},updateConfig:async(update)=>{await this.ensureLoadedSession(record3);let resolvedUpdate=await this.prepareSessionConfigUpdate(record3,update),previousRuntimeConfig=record3.runtimeConfig,previousCwd=record3.cwd,previousGlobalMcpServers=this.sharedMcpHub.getDesiredConfig(),pendingMcpServersUpdate=Array.isArray(resolvedUpdate.mcpServers)?[...resolvedUpdate.mcpServers]:null,recordUpdate=pendingMcpServersUpdate?{...resolvedUpdate,mcpServers:void 0}:resolvedUpdate;applySessionConfigUpdate(record3,recordUpdate);let runtimeConfigChanged=JSON.stringify(previousRuntimeConfig)!==JSON.stringify(record3.runtimeConfig),cwdChanged=previousCwd!==record3.cwd,mcpServersChanged=pendingMcpServersUpdate!==null&&JSON.stringify(previousGlobalMcpServers)!==JSON.stringify(pendingMcpServersUpdate);if(runtimeConfigChanged||cwdChanged||mcpServersChanged)clearLastRequestBudget(record3);if(pendingMcpServersUpdate)this.applyGlobalMcpServersToRecords(pendingMcpServersUpdate);if(runtimeConfigChanged||cwdChanged)await this.reloadSession(record3);else if(mcpServersChanged&&!record3.activeRun&&!record3.pendingAction)await this.syncGlobalMcpServers(pendingMcpServersUpdate);else if(mcpServersChanged)this.sharedMcpHub.markDeferred(pendingMcpServersUpdate);await this.persistRecord(record3)},getUsageSummary:async()=>await this.getLiveSessionUsageSummary(record3),getUsageLedger:async()=>await this.getLiveSessionUsageLedger(record3),getTurnUsage:async(turnId)=>await this.getLiveSessionTurnUsage(record3,turnId),listTurnUsages:async()=>await this.listLiveSessionTurnUsages(record3),listRequestUsages:async(filter2)=>await this.listLiveSessionRequestUsages(record3,filter2),triggerManualCompaction:async()=>{if(await this.ensureLoadedSession(record3),this.assertSessionIdle(record3,"triggerManualCompaction"),!record3.sdkSession)return{success:!1,error:"Session is unavailable",errorCode:"session_unavailable",event:toCompressionEvent2({sessionId:record3.sessionId,state:"failed",trigger:"manual",label:"manual_compaction_failed_session_unavailable",metadata:{errorCode:"session_unavailable",error:"Session is unavailable"}})};let previousManualRequests=record3.sdkSession.listRequestUsages({kind:"manual_compaction"}).map((entry)=>structuredClone(entry)),previousManualRequestIds=new Set(previousManualRequests.map((entry)=>entry.id)),readManualCompactionUsage=()=>{let usageRequests=record3.sdkSession.listRequestUsages({kind:"manual_compaction"}).filter((entry)=>!previousManualRequestIds.has(entry.id)).map((entry)=>structuredClone(entry)),usageSummary=usageRequests[0]?cloneTurnUsageSummary(record3.sdkSession.getTurnUsage(usageRequests[0].turnId)):void 0;return{usageRequests,usageSummary}};try{let result=await triggerSdkManualCompaction(record3.sdkSession),manualUsage=readManualCompactionUsage();updateResponsesCompactionMetadata(record3,"manual_compaction_completed");let diagnostics=buildCompressionEventDiagnostics2({run:result});return await this.persistRecord(record3),{success:!0,summary:result.summary,messageCount:result.cursorAfter,run:result,...manualUsage.usageRequests.length>0?{usageRequests:manualUsage.usageRequests}:{},...manualUsage.usageSummary?{usageSummary:manualUsage.usageSummary}:{},event:toCompressionEvent2({sessionId:record3.sessionId,state:"completed",trigger:"manual",label:"manual_compaction_completed",diagnostics,metadata:{summaryGenerated:!0,messageCount:result.cursorAfter,summary:result.summary}})}}catch(error48){let manualUsage=readManualCompactionUsage(),message=error48 instanceof Error?error48.message:String(error48),errorCode=typeof error48?.code==="string"?String(error48.code):"manual_compaction_failed",compactionRun=error48?.result,diagnostics=buildCompressionEventDiagnostics2({...compactionRun?{run:compactionRun}:{}});return{success:!1,error:message,errorCode,...compactionRun?{run:compactionRun}:{},...manualUsage.usageRequests.length>0?{usageRequests:manualUsage.usageRequests}:{},...manualUsage.usageSummary?{usageSummary:manualUsage.usageSummary}:{},event:toCompressionEvent2({sessionId:record3.sessionId,state:"failed",trigger:"manual",label:"manual_compaction_failed",diagnostics,metadata:{errorCode,error:message}})}}},cancel:async()=>await this.cancelRecord(record3)}}startRun(record3,input,options){return this.sessionControl.startRun(record3,input,options)}resumeRun(record3,input,options){return this.sessionControl.resumeRun(record3,input,options)}async ensureLoadedSession(record3,snapshot){await this.sessionLoad.ensureLoadedSession(record3,snapshot)}async reloadSession(record3){await this.sessionLoad.reloadSession(record3)}async createRuntimeOwnedSubagentSession(runtimeConfig,input){return await this.sessionLoad.createRuntimeOwnedSubagentSession(runtimeConfig,input)}async resolveSubagentApprovalDecision(sessionId,request){let normalizedSessionId=sessionId?.trim();if(!normalizedSessionId||!this.options.onToolApproval)return{type:"approved"};return await this.options.onToolApproval({sessionId:normalizedSessionId,runId:`subagent:${normalizedSessionId}`,request})}assertSessionIdle(record3,operation){this.sessionControl.assertSessionIdle(record3,operation)}async processSessionItem(record3,runState,itemId,options){return await this.sessionRunLoop.processSessionItem(record3,runState,itemId,options)}async orchestrateDelegation(record3,runState,intent){return await this.sessionDelegation.orchestrateDelegation(record3,runState,intent)}clearRunState(record3,runState){if(record3.activeRun!==runState)return;runState.attachSignalCleanup?.(),runState.currentItemOutcome=void 0,runState.todoSnapshot=void 0,runState.forcedSummaryMode=void 0,runState.backgroundExecsByProcessId.clear(),runState.backgroundWaitStartedAtMs=void 0,runState.backgroundHeartbeatAtMs=void 0,runState.backgroundPollRoundRobinIndex=0,runState.initialUserInputText="",runState.completionEvidence=createRuntimeCompletionEvidence(),record3.activeRun=void 0,record3.pendingAction=void 0,this.flushPendingMcpSyncIfIdle().catch(()=>{})}captureTodoSnapshotOnFinish(record3,runState){let snapshot=runState.todoSnapshot;if(hasOpenTodos(snapshot)){record3.todoSnapshot=snapshot?snapshot.map((item)=>({...item})):void 0;return}if(hasCompletedTodos2(snapshot))record3.todoSnapshot=void 0}async cancelRecord(record3){return await this.sessionControl.cancelRecord(record3)}async syncPlanMode(record3){await this.sessionControl.syncPlanMode(record3)}async listSessionMcpServers(record3){return await this.sessionControl.listSessionMcpServers(record3)}async syncSessionMcpServers(record3){await this.sessionControl.syncSessionMcpServers(record3)}wrapSdkSnapshotForSave(record3,snapshot){return this.sessionLoad.wrapSdkSnapshotForSave(record3,snapshot)}async persistRecord(record3){await this.sessionLoad.persistRecord(record3)}async createRecordFromSnapshot(sessionId,snapshot){return await this.sessionLoad.createRecordFromSnapshot(sessionId,snapshot)}async normalizeRuntimeSnapshot(snapshot,sessionId=snapshot.sessionId){return await this.sessionLoad.normalizeRuntimeSnapshot(snapshot,sessionId)}async resolveRuntimeConfig(input){return await this.sessionLoad.resolveRuntimeConfig(input)}async prepareSessionConfigUpdate(record3,update){return await this.sessionLoad.prepareSessionConfigUpdate(record3,update)}async buildSystemPrompt(cwd){return await this.sessionLoad.buildSystemPrompt(cwd)}readSnapshotSystemPrompt(snapshot){return this.sessionLoad.readSnapshotSystemPrompt(snapshot)}canonicalizeSnapshotSystemMessages(snapshot,systemPrompt){return this.sessionLoad.canonicalizeSnapshotSystemMessages(snapshot,systemPrompt)}}async function createAgentRuntime(options){if(!options.stateDir?.trim())throw Error("createAgentRuntime requires a persistent stateDir");return new NativeAgentRuntime(options)}function normalizeText7(value){return value.replace(/\r/g,"").trimEnd()}var SESSION_QUEUE_LIMIT=5,VALID_QUEUE_STATUS=new Set(["idle","running","paused_confirm","error"]),VALID_ERROR_CODES=new Set(["network_error","timeout","canceled_by_user","rate_limited","config_unavailable","unknown"]);function sanitizeQueueText(text){let raw=normalizeText7(String(text??""));if(!raw)return"";let out="";for(let i=0;i<raw.length;i++){let code=raw.charCodeAt(i);if(code===9||code===10){out+=raw[i];continue}if(code<32||code===127)continue;out+=raw[i]}return out}function sortQueueItems(items){return[...items].sort((a,b)=>{if(a.kind!==b.kind)return a.kind==="steer"?-1:1;if(a.kind==="steer"&&b.kind==="steer"){let aSteeredAt=Number(a.steeredAt??a.createdAt??0),bSteeredAt=Number(b.steeredAt??b.createdAt??0);if(aSteeredAt!==bSteeredAt)return aSteeredAt-bSteeredAt}let aCreatedAt=Number(a.createdAt??0),bCreatedAt=Number(b.createdAt??0);if(aCreatedAt!==bCreatedAt)return aCreatedAt-bCreatedAt;return String(a.id).localeCompare(String(b.id))})}function normalizeQueueItem(raw){if(!raw||typeof raw!=="object")return null;let id=String(raw.id??"").trim(),text=sanitizeQueueText(raw.text);if(!id||!text)return null;let createdAt=Number(raw.createdAt??0),kind=String(raw.kind??"").trim()==="steer"?"steer":"user",steeredAt=Number(raw.steeredAt??0),cfg=raw.config,config2;if(cfg&&typeof cfg==="object"){let approvalsMode=cfg.approvalsMode==="auto"?"auto":cfg.approvalsMode==="normal"?"normal":cfg.approvalsMode==="strict"?"strict":void 0;config2={model:String(cfg.model??"").trim()||void 0,temperature:Number.isFinite(Number(cfg.temperature))?Number(cfg.temperature):void 0,interleavedThinking:typeof cfg.interleavedThinking==="boolean"?cfg.interleavedThinking:void 0,approvalsMode,providerId:String(cfg.providerId??"").trim()||void 0}}return{id,text,createdAt:Number.isFinite(createdAt)?createdAt:0,kind,steeredAt:kind==="steer"&&Number.isFinite(steeredAt)&&steeredAt>0?steeredAt:void 0,...config2?{config:config2}:{}}}function defaultSessionUiMetadata(){return{queue:[],queueLength:0,status:"idle",lastUpdatedAt:0,lastErrorCode:void 0,pinnedMessageIds:[],titleSuggestedAt:void 0}}function normalizeSessionUiMetadata(raw){let base=defaultSessionUiMetadata();if(!raw||typeof raw!=="object")return base;let obj=raw,queueRaw=Array.isArray(obj.queue)?obj.queue:[],queue=sortQueueItems(queueRaw.map(normalizeQueueItem).filter(Boolean).slice(0,SESSION_QUEUE_LIMIT)),status=VALID_QUEUE_STATUS.has(obj.status)?obj.status:base.status,lastUpdatedAt=Number(obj.lastUpdatedAt??0),lastErrorCode=VALID_ERROR_CODES.has(obj.lastErrorCode)?obj.lastErrorCode:void 0,pinnedMessageIds=Array.isArray(obj.pinnedMessageIds)?obj.pinnedMessageIds.map((id)=>String(id??"").trim()).filter(Boolean):[],titleSuggestedAt=Number(obj.titleSuggestedAt??0);return{queue,queueLength:queue.length,status,lastUpdatedAt:Number.isFinite(lastUpdatedAt)?lastUpdatedAt:0,lastErrorCode,pinnedMessageIds,titleSuggestedAt:Number.isFinite(titleSuggestedAt)&&titleSuggestedAt>0?titleSuggestedAt:void 0}}function readSessionUiMetadataFromSnapshot(snapshot){let meta3=snapshot?.metadata?.ui??snapshot?.metadata?.dimAgentRuntime?.metadata?.ui??null;return normalizeSessionUiMetadata(meta3)}function normalizeText8(value){return String(value??"").trim()}function parseBool3(value){let normalized=normalizeText8(value).toLowerCase();if(!normalized)return;if(normalized==="1"||normalized==="true"||normalized==="yes"||normalized==="on")return!0;if(normalized==="0"||normalized==="false"||normalized==="no"||normalized==="off")return!1;return}function readCliRuntimeConfig(env,configOpts){return resolveRuntimeConfigFromEnv(env,configOpts)}function buildRuntimeConfigFromContext(context,configOpts){let rc=context.runtimeConfig;if(!rc)return resolveRuntimeConfigFromEnv(context.env,configOpts);return{modelId:rc.modelId,...rc.adapter?{adapter:rc.adapter}:{},...rc.provider?{provider:rc.provider}:{},...rc.baseUrl?{baseUrl:rc.baseUrl}:{},...configOpts?.baseUrl&&!rc.baseUrl?{baseUrl:configOpts.baseUrl}:{},...rc.apiKey?{apiKey:rc.apiKey}:{},...rc.nextApiOAuth?{nextApiOAuth:!0}:{},...rc.responsesAutoPromptCacheKey?{responsesAutoPromptCacheKey:!0}:{},...rc.responsesUseSessionId?{responsesUseSessionId:!0}:{},...rc.modelCapabilities?{modelCapabilities:rc.modelCapabilities}:{},...rc.maxInputTokens?{maxInputTokens:rc.maxInputTokens}:{},...rc.maxOutputTokens?{maxOutputTokens:rc.maxOutputTokens}:{}}}function buildCliCreateAgentRuntimeOptions(opts){let configOpts=opts.baseUrl?{baseUrl:opts.baseUrl}:void 0,runtimeDebug=parseBool3(opts.processEnv?.DIMCODE_DEBUG??opts.context.env?.DIMCODE_DEBUG)===!0,runtimeConfig=buildRuntimeConfigFromContext(opts.context,configOpts);return{systemPrompt:opts.context.system,modelId:runtimeConfig.modelId,adapter:runtimeConfig.adapter,provider:runtimeConfig.provider,baseUrl:runtimeConfig.baseUrl,apiKey:runtimeConfig.apiKey,nextApiOAuth:runtimeConfig.nextApiOAuth,responsesAutoPromptCacheKey:runtimeConfig.responsesAutoPromptCacheKey,responsesUseSessionId:runtimeConfig.responsesUseSessionId,modelCapabilities:runtimeConfig.modelCapabilities,maxInputTokens:runtimeConfig.maxInputTokens,maxOutputTokens:runtimeConfig.maxOutputTokens,debug:runtimeDebug,stateDir:opts.stateDir,cliTools:!0,delegateTasks:!0,...opts.tools?{tools:opts.tools}:{},...opts.mcpServers?{mcpServers:opts.mcpServers}:{},...opts.mcpInitialState?{mcpInitialState:opts.mcpInitialState}:{},resolveRuntimeConfig:(input)=>{let current=buildRuntimeConfigFromContext(opts.context,configOpts),persistedWithoutTokenLimits=input.persisted?{...input.persisted,maxInputTokens:void 0,maxOutputTokens:void 0}:void 0;return input.requested?mergeRuntimeConfig(input.current??current,input.requested,{preferSourceMaxInputTokens:!0}):mergeRuntimeConfig(current,persistedWithoutTokenLimits,{preferSourceMaxInputTokens:!1})}}}async function createCliRuntime(opts){return await createAgentRuntime(buildCliCreateAgentRuntimeOptions(opts))}var RUNTIME_SESSION_METADATA_KEY2="dimAgentRuntime";function normalizeText9(value){return String(value??"").trim()}function normalizeModeId(value){return value==="plan"?"plan":"agent"}function normalizeToolApprovalMode(value){if(value==="auto"||value==="normal"||value==="strict")return value;if(value==="all")return"auto";return}function cloneJson(value){return JSON.parse(JSON.stringify(value??null))}function cloneMetadata2(value){return value?cloneJson(value):void 0}function cloneEnvRecord3(source){return Object.entries(source??{}).reduce((next,[key,value])=>{return next[key]=value,next},{})}function readTruthyFlag2(value){let normalized=normalizeText9(value).toLowerCase();return normalized==="1"||normalized==="true"||normalized==="yes"||normalized==="on"}function readNoInteractionFlag(config2){return readTruthyFlag2(config2?.env?.DIMCODE_NO_INTERACTION)}function runtimeConfigsMatch(left,right){return normalizeText9(left?.modelId)===normalizeText9(right?.modelId)&&normalizeText9(left?.adapter)===normalizeText9(right?.adapter)&&normalizeText9(left?.provider)===normalizeText9(right?.provider)&&normalizeText9(left?.baseUrl)===normalizeText9(right?.baseUrl)&&normalizeText9(left?.apiKey)===normalizeText9(right?.apiKey)&&Boolean(left?.nextApiOAuth)===Boolean(right?.nextApiOAuth)&&Boolean(left?.responsesAutoPromptCacheKey)===Boolean(right?.responsesAutoPromptCacheKey)&&Boolean(left?.responsesUseSessionId)===Boolean(right?.responsesUseSessionId)&&JSON.stringify(cloneModelCapabilities(left?.modelCapabilities)??null)===JSON.stringify(cloneModelCapabilities(right?.modelCapabilities)??null)&&Number(left?.maxInputTokens??0)===Number(right?.maxInputTokens??0)&&Number(left?.maxOutputTokens??0)===Number(right?.maxOutputTokens??0)&&readNoInteractionFlag(left)===readNoInteractionFlag(right)}function mcpServersMatch(left,right){return JSON.stringify(left??[])===JSON.stringify(right??[])}function parseRuntimeConfig(raw,fallback){let record3=raw??{},persisted={modelId:normalizeText9(record3.modelId)||fallback.modelId,...normalizeText9(record3.adapter)?{adapter:normalizeText9(record3.adapter)}:{},...normalizeText9(record3.provider)?{provider:normalizeText9(record3.provider)}:{},...normalizeText9(record3.baseUrl)?{baseUrl:normalizeText9(record3.baseUrl)}:{},...record3.nextApiOAuth===!0?{nextApiOAuth:!0}:{},...record3.responsesAutoPromptCacheKey===!0?{responsesAutoPromptCacheKey:!0}:{},...record3.responsesUseSessionId===!0?{responsesUseSessionId:!0}:{},...cloneModelCapabilities(record3.modelCapabilities)?{modelCapabilities:cloneModelCapabilities(record3.modelCapabilities)}:{},...Number(record3.maxInputTokens)>0?{maxInputTokens:Number(record3.maxInputTokens)}:{},...Number(record3.maxOutputTokens)>0?{maxOutputTokens:Number(record3.maxOutputTokens)}:{}};return mergeRuntimeConfig(fallback,{...persisted,maxInputTokens:void 0,maxOutputTokens:void 0},{preferSourceMaxInputTokens:!1})}function readRuntimeEnvelopeFromSnapshot(snapshot,fallback){let runtimeMeta=(snapshot?.metadata??{})[RUNTIME_SESSION_METADATA_KEY2]??{},runtimeConfig=runtimeMeta.runtimeConfig??{};return{runtimeConfig:snapshot?parseRuntimeConfig(runtimeMeta.runtimeConfig,{...fallback,modelId:normalizeText9(runtimeConfig.modelId)||fallback.modelId}):null,modeId:normalizeModeId(runtimeMeta.modeId),toolApprovalMode:normalizeToolApprovalMode(runtimeMeta.toolApprovalMode),mcpServers:Array.isArray(runtimeMeta.mcpServers)?cloneJson(runtimeMeta.mcpServers):[]}}function createCliAgent(opts){let stateDir=path28.resolve(opts.stateDir),pendingMode="agent",runtimePromise=null,pendingRuntimeConfigReloads=new Set,getStateEnv=()=>({...cloneEnvRecord3(opts.context.env??{}),...cloneEnvRecord3(opts.processEnv)}),getRuntimeConfig=()=>{let rc=opts.context.runtimeConfig;if(rc)return{modelId:rc.modelId,...rc.adapter?{adapter:rc.adapter}:{},...rc.provider?{provider:rc.provider}:{},...rc.baseUrl?{baseUrl:rc.baseUrl}:{},...!rc.baseUrl&&opts.baseUrl?{baseUrl:opts.baseUrl}:{},...rc.apiKey?{apiKey:rc.apiKey}:{},...rc.nextApiOAuth?{nextApiOAuth:!0}:{},...rc.responsesAutoPromptCacheKey?{responsesAutoPromptCacheKey:!0}:{},...rc.responsesUseSessionId?{responsesUseSessionId:!0}:{},...rc.modelCapabilities?{modelCapabilities:rc.modelCapabilities}:{},...rc.maxInputTokens?{maxInputTokens:rc.maxInputTokens}:{},...rc.maxOutputTokens?{maxOutputTokens:rc.maxOutputTokens}:{}};return readCliRuntimeConfig({...getStateEnv(),...cloneEnvRecord3(typeof process<"u"?process.env:void 0)},{baseUrl:opts.baseUrl})},logSessionPersistence=(sessionId)=>{let normalizedSessionId=normalizeText9(sessionId);if(!normalizedSessionId)return;debugLog("cli.session.persistence",{sessionId:normalizedSessionId,stateDir,snapshotPath:runtimeSnapshotPath(stateDir,normalizedSessionId)})},ensureRuntime=async()=>{if(runtimePromise)return await runtimePromise;runtimePromise=(async()=>{return await createCliRuntime({context:opts.context,stateDir,processEnv:opts.processEnv,tools:opts.tools,mcpServers:opts.mcpServers,mcpInitialState:opts.mcpInitialState})})();try{return await runtimePromise}catch(error48){throw runtimePromise=null,error48}},runtimeSessions={list:async()=>(await ensureRuntime()).sessions.list(),get:async(sessionId)=>(await ensureRuntime()).sessions.get(sessionId),create:async(input)=>(await ensureRuntime()).sessions.create(input),createWithMessages:async(messages,input)=>await(await ensureRuntime()).sessions.createWithMessages(messages,input),destroy:async(sessionId)=>await(await ensureRuntime()).sessions.destroy(sessionId),rename:async(sessionId,title)=>await(await ensureRuntime()).sessions.rename(sessionId,title),updateMetadata:async(sessionId,metadata)=>await(await ensureRuntime()).sessions.updateMetadata(sessionId,metadata),interrupt:async(sessionId)=>await(await ensureRuntime()).sessions.interrupt(sessionId),getUsageSummary:async(sessionId)=>await(await ensureRuntime()).sessions.getUsageSummary(sessionId),getUsageLedger:async(sessionId)=>await(await ensureRuntime()).sessions.getUsageLedger(sessionId),getTurnUsage:async(sessionId,turnId)=>await(await ensureRuntime()).sessions.getTurnUsage(sessionId,turnId),listTurnUsages:async(sessionId)=>await(await ensureRuntime()).sessions.listTurnUsages(sessionId),listRequestUsages:async(sessionId,filter2)=>await(await ensureRuntime()).sessions.listRequestUsages(sessionId,filter2)},runtimeFacade={sessions:runtimeSessions,listSessions:async()=>await(await ensureRuntime()).listSessions(),openSession:async(sessionId)=>await(await ensureRuntime()).openSession(sessionId),createSession:async(input)=>await(await ensureRuntime()).createSession(input),destroySession:async(sessionId)=>await(await ensureRuntime()).destroySession(sessionId),getSessionState:async(sessionId)=>await(await ensureRuntime()).getSessionState(sessionId),replaceSessionSnapshot:async(sessionId,snapshot,update)=>{await(await ensureRuntime()).replaceSessionSnapshot(sessionId,snapshot,update)},persistSession:async(sessionId)=>{await(await ensureRuntime()).persistSession(sessionId)},unloadSession:async(sessionId,options)=>await(await ensureRuntime()).unloadSession(sessionId,options),runSubagent:(spec)=>runSubagentViaFacade(spec),getSessionHandle:async(sessionId)=>await(await ensureRuntime()).getSessionHandle(sessionId),getMcpState:async()=>await(await ensureRuntime()).getMcpState(),syncMcpServers:async(configs)=>await(await ensureRuntime()).syncMcpServers(configs)};function runSubagentViaFacade(spec){let placeholderId=`subagent-pending-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`,resolvedHandle=null,cancelQueued=!1,resultPromise=(async()=>{let handle=(await ensureRuntime()).runSubagent(spec);if(resolvedHandle=handle,cancelQueued)handle.cancel();return await handle.result})();return{get subagentId(){return resolvedHandle?.subagentId??placeholderId},...spec.ownerSessionId?{ownerSessionId:spec.ownerSessionId}:{},get status(){return resolvedHandle?.status??"pending"},cancel:(reason)=>{if(resolvedHandle)resolvedHandle.cancel(reason);else cancelQueued=!0},result:resultPromise}}let openSession=async(sessionId)=>{let normalizedSessionId=normalizeText9(sessionId);if(!normalizedSessionId)return;return await(await ensureRuntime()).openSession(normalizedSessionId)},ensureSession=async(input)=>{let requestedSessionId=normalizeText9(input?.sessionId),runtime=requestedSessionId?await ensureRuntime():await ensureRuntime(),nextMode=normalizeModeId(input?.modeId??pendingMode),nextCwd=normalizeText9(input?.cwd)||normalizeText9(opts.context.cwd)||process.cwd(),nextRuntimeConfig=input?.runtimeConfig??getRuntimeConfig(),hasToolApprovalMode=Object.prototype.hasOwnProperty.call(input??{},"toolApprovalMode"),nextToolApprovalMode=normalizeToolApprovalMode(input?.toolApprovalMode),forceNoInteractionRuntimeConfigUpdate=readNoInteractionFlag(nextRuntimeConfig),hasMcpServers=Array.isArray(input?.mcpServers),nextMcpServers=Array.isArray(input?.mcpServers)?cloneJson(input.mcpServers):void 0,nextMetadata=cloneMetadata2(input?.metadata);if(requestedSessionId){let existing=await runtime.openSession(requestedSessionId);if(existing){let snapshot=await runtime.sessions.get(existing.id),envelope=readRuntimeEnvelopeFromSnapshot(snapshot,nextRuntimeConfig),runtimeMcpState=await runtime.getMcpState(),update={};if(normalizeText9(snapshot?.cwd)!==nextCwd)update.cwd=nextCwd;if(pendingRuntimeConfigReloads.delete(existing.id)||forceNoInteractionRuntimeConfigUpdate||!runtimeConfigsMatch(envelope.runtimeConfig,nextRuntimeConfig))update.runtimeConfig=nextRuntimeConfig;if(envelope.modeId!==nextMode)await existing.setMode(nextMode);if(hasToolApprovalMode&&envelope.toolApprovalMode!==nextToolApprovalMode)update.toolApprovalMode=nextToolApprovalMode;if(hasMcpServers&&Array.isArray(nextMcpServers)&&!mcpServersMatch(runtimeMcpState?.configs??envelope.mcpServers,nextMcpServers))update.mcpServers=nextMcpServers;if(nextMetadata)update.metadata=nextMetadata;if(Object.keys(update).length>0)await existing.updateConfig(update);return logSessionPersistence(existing.id),existing}}let created=await runtime.createSession({sessionId:requestedSessionId||void 0,cwd:nextCwd,modeId:nextMode,runtimeConfig:nextRuntimeConfig,...hasToolApprovalMode?{toolApprovalMode:nextToolApprovalMode}:{},...hasMcpServers?{mcpServers:nextMcpServers}:{},...nextMetadata?{metadata:nextMetadata}:{}});return logSessionPersistence(created.id),created};return{runtime:runtimeFacade,sessions:runtimeSessions,openSession,ensureSession,async steerSession(sessionId,input){let session=await openSession(sessionId);if(!session)return!1;return await session.steer(input)},setMode(modeId){pendingMode=normalizeModeId(modeId)},getMode(){return pendingMode},async triggerManualCompression(sessionId){let normalizedSessionId=normalizeText9(sessionId);if(!normalizedSessionId)return{success:!1,error:"Manual compaction requires an active session id"};return await(await ensureSession({sessionId:normalizedSessionId})).triggerManualCompaction()},invalidateSession(sessionId){let id=normalizeText9(sessionId);if(id)pendingRuntimeConfigReloads.add(id)},async getMcpState(){return await(await ensureRuntime()).getMcpState()},async syncMcpServers(configs){return await(await ensureRuntime()).syncMcpServers(configs)}}}function shouldInferCustomProviderFallbackMetadata2(adapter){if(!adapter)return!0;return adapter==="openai"||adapter==="openai-responses"||adapter==="gemini"||adapter==="anthropic"}function hasConfiguredModelMetadata(model){let limit=model.limit??{},hasContext=typeof limit.context==="number"&&Number.isFinite(limit.context),hasOutput=typeof limit.output==="number"&&Number.isFinite(limit.output);return hasContext||hasOutput||model.outputIsUserDefined===!0||typeof model.vision==="boolean"||model.reasoning?.supported===!0||model.extra_capabilities?.reasoning?.supported===!0}function inferCustomModelLimit(modelId,adapter){if(!shouldInferCustomProviderFallbackMetadata2(adapter))return;return getCustomProviderModelFallbackLimitForModelId(modelId)}function backfillCustomProviderModels(models,opts={}){if(!shouldInferCustomProviderFallbackMetadata2(opts.adapter))return[...models];let onlyIds=opts.onlyIds;return models.map((model)=>{let id=String(model?.id??"").trim();if(!id)return model;if(onlyIds&&!onlyIds.has(id))return model;if(hasConfiguredModelMetadata(model))return model;let currentLimit=model.limit??{},hasContext=typeof currentLimit.context==="number"&&Number.isFinite(currentLimit.context),hasOutput=typeof currentLimit.output==="number"&&Number.isFinite(currentLimit.output),hasVision=typeof model.vision==="boolean",hasReasoning=model.reasoning?.supported===!0,hasExtraReasoning=model.extra_capabilities?.reasoning?.supported===!0,inferredLimit=hasContext&&hasOutput?void 0:inferCustomModelLimit(id,opts.adapter),inferredCapabilities=hasVision&&hasReasoning?void 0:getCustomProviderModelFallbackCapabilitiesForModelId(id),inferredExtraReasoning=hasExtraReasoning?void 0:getCustomProviderModelFallbackReasoningEffortCapability(id),nextLimit={...currentLimit,...!hasContext&&typeof inferredLimit?.context==="number"?{context:inferredLimit.context}:{},...!hasOutput&&typeof inferredLimit?.output==="number"?{output:inferredLimit.output}:{}};return{...model,...Object.keys(nextLimit).length>0?{limit:nextLimit}:{},...!hasVision&&typeof inferredCapabilities?.vision==="boolean"?{vision:inferredCapabilities.vision}:{},...!hasReasoning&&inferredCapabilities?.reasoning?.supported?{reasoning:inferredCapabilities.reasoning}:{},...!hasExtraReasoning&&inferredExtraReasoning?{extra_capabilities:{...model.extra_capabilities??{},reasoning:inferredExtraReasoning}}:{}}})}var SYSTEM_SECTION_IDS=["system.sections.security","system.sections.code-safety","system.sections.url-policy","system.sections.tone-and-style","system.sections.professional-objectivity","system.sections.engineering-approach","system.sections.git-and-execution-guardrails","system.sections.doing-tasks","system.sections.capability-aware-guidance","system.sections.code-references"];function joinPromptSections(sections){return sections.filter((section)=>typeof section==="string"&§ion.trim().length>0).map((section)=>section.trim()).join(`
|
|
1076
|
+
${epoch}`).digest("hex");return record3.cachedPromptCacheKey={signature,value},value}function updateResponsesCompactionMetadata(record3,trigger){let current=readResponsesCompactionMetadata(record3.metadata);record3.metadata=toMetadataMap({...record3.metadata??{},[RESPONSES_COMPACTION_METADATA_KEY]:{epoch:current.epoch+1,lastTrigger:trigger,updatedAt:Date.now()}}),record3.cachedPromptCacheKey=void 0,record3.updatedAt=Date.now()}function injectOpenAIResponsesProviderOptions(record3,request){let runtimeConfig=runtimeConfigForActiveRun(record3);if(runtimeConfig.adapter!=="openai-responses")return request;let providerOptions={};if(request.providerOptions&&typeof request.providerOptions==="object")providerOptions={...request.providerOptions};let openaiProviderOptions={};if(providerOptions.openai&&typeof providerOptions.openai==="object"&&!Array.isArray(providerOptions.openai))openaiProviderOptions={...providerOptions.openai};let changed=!1,promptCacheKey=buildResponsesPromptCacheKey(record3,request);if(promptCacheKey)openaiProviderOptions.promptCacheKey=promptCacheKey,changed=!0;if(runtimeConfig.responsesUseSessionId===!0){let nextHeaders={},requestHeaders=openaiProviderOptions.requestHeaders;if(requestHeaders&&typeof requestHeaders==="object"&&!Array.isArray(requestHeaders)){for(let[key,value]of Object.entries(requestHeaders))if(typeof value==="string")nextHeaders[key]=value}nextHeaders.session_id=record3.sessionId,openaiProviderOptions.requestHeaders=nextHeaders,changed=!0}if(!changed)return request;return{...request,providerOptions:{...providerOptions,openai:openaiProviderOptions}}}function hasCompletedTodos2(todoSnapshot){return Array.isArray(todoSnapshot)&&todoSnapshot.length>0&&todoSnapshot.every((item)=>item.status==="completed")}function pushProviderRetryingEvent(record3,notice){let activeRun=record3.activeRun;if(!activeRun)return;activeRun.currentChannel?.push({type:"run.retrying",sessionId:record3.sessionId,runId:activeRun.runId,requestId:notice.requestId,...notice.provider?{provider:notice.provider}:{},...notice.modelId?{modelId:notice.modelId}:{},retry:notice.retry,maxRetries:notice.maxRetries,attempt:notice.attempt,maxAttempts:notice.maxAttempts,delayMs:notice.delayMs,error:structuredClone(enrichSessionErrorPayload(notice.error))})}function createProviderRetryNotificationPlugin(record3){return{manifest:{id:"dim-agent-provider-retry-notifications",version:"0.0.1",apiVersion:1,permissions:{},priority:-1e4},setup(){return{hooks:[{descriptor:{name:"model.request"},middleware:[({payload})=>({request:attachRetryNoticeSinkToModelRequest(payload.request,(notice)=>pushProviderRetryingEvent(record3,notice))})]}]}}}}function buildCompressionEventDiagnostics2(input){if(!input.notification&&!input.run)return;return{...input.run?{run:input.run}:{},...input.notification?{notification:input.notification}:{}}}function readCompressionNotificationTokensBefore2(notification){if(!notification)return;switch(notification.type){case"context.compaction.required":case"context.compacted":case"context.compaction.failed":return notification.metadata.estimatedInputTokensBefore;default:return}}function readCompressionNotificationThreshold2(notification){if(!notification)return;switch(notification.type){case"context.compaction.required":case"context.compacted":case"context.compaction.failed":return notification.metadata.thresholdTokens;default:return}}function readCompressionNotificationTokensAfter2(notification){if(!notification||notification.type!=="context.compacted")return;return notification.metadata.estimatedInputTokensAfter}function readCompressionNotificationRemovedMessages2(notification){if(!notification)return;switch(notification.type){case"context.compacted":case"context.compaction.failed":return notification.metadata.compactedMessageCount;default:return}}function readCompressionNotificationClearedToolOutputs2(notification){if(!notification)return;switch(notification.type){case"context.compacted":case"context.compaction.failed":return notification.metadata.prunedToolOutputCount;default:return}}function readCompressionNotificationReasonCode2(notification){if(!notification||notification.type!=="context.compaction.failed")return;return notification.metadata.reasonCode}function toCompressionEvent2(input){let metadata=input.metadata?toMetadataMap(input.metadata):void 0,notification=input.diagnostics?.notification,run=input.diagnostics?.run,tokensBefore=typeof metadata?.estimatedInputTokensBefore==="number"?metadata.estimatedInputTokensBefore:typeof metadata?.estimatedInputTokens==="number"?metadata.estimatedInputTokens:readCompressionNotificationTokensBefore2(notification)??run?.estimatedInputTokensBefore,threshold=typeof metadata?.thresholdTokens==="number"?metadata.thresholdTokens:readCompressionNotificationThreshold2(notification)??run?.thresholdTokens,tokensAfter=typeof metadata?.tokensAfter==="number"?metadata.tokensAfter:typeof metadata?.estimatedInputTokensAfter==="number"?metadata.estimatedInputTokensAfter:readCompressionNotificationTokensAfter2(notification)??run?.estimatedInputTokensAfter,removedMessages=typeof metadata?.removedMessages==="number"?metadata.removedMessages:typeof metadata?.compactedMessageCount==="number"?metadata.compactedMessageCount:readCompressionNotificationRemovedMessages2(notification)??run?.compactedMessageCount,clearedToolOutputs=typeof metadata?.clearedToolOutputs==="number"?metadata.clearedToolOutputs:typeof metadata?.prunedToolOutputCount==="number"?metadata.prunedToolOutputCount:readCompressionNotificationClearedToolOutputs2(notification)??run?.diagnostics.prunedToolOutputCount,reasonCode=typeof metadata?.reasonCode==="string"?metadata.reasonCode:readCompressionNotificationReasonCode2(notification)??run?.reasonCode,summaryGenerated=typeof metadata?.summaryGenerated==="boolean"?metadata.summaryGenerated:notification?.type==="context.compacted"||typeof run?.summary==="string";return{type:"context.compression",sessionId:input.sessionId,...input.runId?{runId:input.runId}:{},state:input.state,trigger:input.trigger,...input.label?{label:input.label}:{},...typeof tokensBefore==="number"?{tokensBefore}:{},...typeof threshold==="number"?{threshold}:{},...typeof tokensAfter==="number"?{tokensAfter}:{},...typeof removedMessages==="number"?{removedMessages}:{},...typeof clearedToolOutputs==="number"?{clearedToolOutputs}:{},...summaryGenerated?{summaryGenerated}:{},...typeof metadata?.elapsedMs==="number"?{elapsedMs:metadata.elapsedMs}:{},...reasonCode?{reasonCode}:{},...input.diagnostics?{diagnostics:input.diagnostics}:{},...metadata?{metadata}:{}}}class NativeAgentRuntime{options;snapshotStore;sessionStoreDir;hostDataDir;records=new Map;sharedMcpHub;backgroundExecTool=new StreamingExecTool;mcpInitialSyncAttempted=!1;sessions={list:async()=>await this.listSessionSnapshots(),get:async(sessionId)=>await this.getSessionSnapshot(sessionId),create:async(input)=>{let session=await this.createSession(input);return await this.getSessionSnapshot(session.id)},createWithMessages:async(messages,input)=>await this.createSessionWithMessages(messages,input),destroy:async(sessionId)=>await this.destroySession(sessionId),rename:async(sessionId,title)=>await this.renameSession(sessionId,title),updateMetadata:async(sessionId,metadata)=>await this.updateSessionMetadata(sessionId,metadata),interrupt:async(sessionId)=>{let session=await this.openSession(sessionId);if(!session)return!1;return await session.cancel()},getUsageSummary:async(sessionId)=>await this.getSessionUsageSummary(sessionId),getUsageLedger:async(sessionId)=>await this.getSessionUsageLedger(sessionId),getTurnUsage:async(sessionId,turnId)=>await this.getSessionTurnUsage(sessionId,turnId),listTurnUsages:async(sessionId)=>await this.listSessionTurnUsages(sessionId),listRequestUsages:async(sessionId,filter2)=>await this.listSessionRequestUsages(sessionId,filter2)};[AGENT_RUNTIME_INTERNALS]={getSessionState:async(sessionId)=>await this.getSessionStateInternal(sessionId),getSessionHandle:async(sessionId)=>await this.getSessionHandleInternal(sessionId),getMcpState:async()=>await this.getMcpState(),syncMcpServers:async(configs)=>await this.syncMcpServers(configs)};async getSessionState(sessionId){let state=await this.getSessionStateInternal(sessionId);if(!state)return;return projectPublicSessionState(state)}async getSessionHandle(sessionId){return await this.getSessionHandleInternal(sessionId)}async getMcpState(){return this.projectMcpState(this.sharedMcpHub.getState())}async syncMcpServers(configs){return await this.syncGlobalMcpServers(configs)}runtimeHub;sessionInteraction;sessionLoad;sessionLifecycle;sessionDelegation;sessionRunLoop;sessionControl;constructor(options){this.options=options,this.sessionStoreDir=path27.join(path27.resolve(options.stateDir),RUNTIME_SNAPSHOT_DIR),this.hostDataDir=options.hostDataDir?path27.resolve(options.hostDataDir):path27.resolve(options.stateDir),this.snapshotStore=new RuntimeSnapshotFileStore({directory:this.sessionStoreDir}),this.runtimeHub=getOrCreateDimRuntimeHub({stateDirPath:path27.resolve(options.stateDir)}),this.sharedMcpHub=new SharedAcpMcpHub({initialPhase:options.mcpInitialState??"ready"}),this.sessionInteraction=createRuntimeSessionInteractionController({options:this.options,updateResponsesCompactionMetadata}),this.sessionLoad=createRuntimeSessionLoadController({options:this.options,snapshotStore:this.snapshotStore,sessionStoreDir:this.sessionStoreDir,hostDataDir:this.hostDataDir,sharedMcpHub:this.sharedMcpHub,sanitizeRuntimeSnapshotMessages,normalizePositiveInteger:normalizePositiveInteger3,normalizeLastRequestBudget:(value)=>normalizeLastRequestBudget(value)??null,isDuplicateRequestBudget,handleAskUser:async(record3,request)=>await this.sessionInteraction.handleAskUser(record3,request),handleToolApproval:async(record3,request)=>await this.sessionInteraction.handleToolApproval(record3,request),resolveSubagentApprovalDecision:async(sessionId,request)=>await this.resolveSubagentApprovalDecision(sessionId,request),handleNotification:async(record3,notification,context)=>await this.handleNotification(record3,notification,context),syncPlanMode:async(record3)=>await this.syncPlanMode(record3),syncSessionMcpServers:async(record3)=>await this.syncSessionMcpServers(record3),createProviderRetryNotificationPlugin:(record3)=>createProviderRetryNotificationPlugin(record3),injectResponsesProviderOptions:(record3,request)=>injectOpenAIResponsesProviderOptions(record3,request)}),this.sessionLifecycle=createRuntimeSessionLifecycleController({records:this.records,snapshotStore:this.snapshotStore,sessionStoreDir:this.sessionStoreDir,ensureLoadedSession:async(record3,snapshot)=>await this.ensureLoadedSession(record3,snapshot),createRecordFromSnapshot:async(sessionId,snapshot)=>await this.createRecordFromSnapshot(sessionId,snapshot),normalizeRuntimeSnapshot:async(snapshot,sessionId)=>await this.normalizeRuntimeSnapshot(snapshot,sessionId),persistRecord:async(record3)=>await this.persistRecord(record3),cancelRecord:async(record3)=>await this.cancelRecord(record3),createSessionFacade:(record3)=>this.createSessionFacade(record3),resolveRuntimeConfig:async(input)=>await this.resolveRuntimeConfig(input),ensureInitialMcpSync:async()=>await this.ensureInitialMcpSync(),applyGlobalMcpServersToRecords:(configs)=>this.applyGlobalMcpServersToRecords(configs),deferGlobalMcpServersSync:(configs)=>this.sharedMcpHub.markDeferred(configs),readGlobalMcpServers:(record3)=>this.readGlobalMcpServers(record3),wrapSdkSnapshotForSave:(record3,snapshot)=>this.wrapSdkSnapshotForSave(record3,snapshot),canonicalizeSnapshotSystemMessages:(snapshot,systemPrompt)=>this.canonicalizeSnapshotSystemMessages(snapshot,systemPrompt),readSnapshotSystemPrompt:(snapshot)=>this.readSnapshotSystemPrompt(snapshot),shouldPersistRepairedRuntimeConfig:(snapshot,record3)=>this.sessionLoad.shouldPersistRepairedRuntimeConfig(snapshot,record3),readLatestRequestBudgetSnapshot:(record3)=>readLatestRequestBudgetSnapshot(record3),clearLastRequestBudget:(record3)=>clearLastRequestBudget(record3),cloneSessionUsageSummary:(summary)=>cloneSessionUsageSummary(summary),cloneSessionUsageLedger:(ledger)=>cloneSessionUsageLedger(ledger),cloneTurnUsageSummary:(summary)=>cloneTurnUsageSummary(summary)}),this.sessionDelegation=createRuntimeSessionDelegationController({options:this.options,processSessionItem:async(record3,runState,itemId,options2)=>await this.processSessionItem(record3,runState,itemId,options2),persistRecord:async(record3)=>await this.persistRecord(record3),buildSystemPrompt:async(cwd)=>await this.buildSystemPrompt(cwd),listSessionMcpServers:async(record3)=>await this.listSessionMcpServers(record3),createRuntimeOwnedSubagentSession:async(runtimeConfig,input)=>await this.createRuntimeOwnedSubagentSession(runtimeConfig,input)}),this.sessionRunLoop=createRuntimeSessionRunLoopController({readBackgroundExecTool:()=>this.backgroundExecTool,persistRecord:async(record3)=>await this.persistRecord(record3),flushPendingMcpSyncIfIdle:async()=>await this.flushPendingMcpSyncIfIdle(),orchestrateDelegation:async(record3,runState,intent)=>await this.orchestrateDelegation(record3,runState,intent),captureTodoSnapshotOnFinish:(record3,runState)=>this.captureTodoSnapshotOnFinish(record3,runState),clearRunState:(record3,runState)=>this.clearRunState(record3,runState)}),this.sessionControl=createRuntimeSessionControlController({sessionRunLoop:this.sessionRunLoop,ensureLoadedSession:async(record3,snapshot)=>await this.ensureLoadedSession(record3,snapshot),persistRecord:async(record3)=>await this.persistRecord(record3),readDefaultMcpServers:async()=>{if(!this.options.mcpServers)return[];return[...await maybeCall(this.options.mcpServers)]}})}readGlobalMcpServers(recordOverride){let desired=this.sharedMcpHub.getDesiredConfig();if(desired.length>0)return desired;if(recordOverride?.mcpServers.length)return recordOverride.mcpServers.map((server)=>({...server}));for(let record3 of this.records.values())if(record3.mcpServers.length>0)return record3.mcpServers.map((server)=>({...server}));return[]}applyGlobalMcpServersToRecords(configs){let next=configs.map((server)=>({...server}));for(let record3 of this.records.values())record3.mcpServers=next.map((server)=>({...server}))}async ensureInitialMcpSync(){if(this.mcpInitialSyncAttempted)return;this.mcpInitialSyncAttempted=!0;let seed=this.options.mcpServers?[...await maybeCall(this.options.mcpServers)]:[];if(!seed.length&&this.sharedMcpHub.getDesiredConfig().length===0)return;await this.sharedMcpHub.syncServers(seed),this.applyGlobalMcpServersToRecords(seed)}async syncGlobalMcpServers(configs){let next=await this.sharedMcpHub.syncServers(configs);return this.applyGlobalMcpServersToRecords(next.configs),this.projectMcpState(next)}async flushPendingMcpSyncIfIdle(){if(!this.sharedMcpHub.hasPendingSync())return;for(let record3 of this.records.values())if(record3.activeRun||record3.pendingAction)return;let next=await this.sharedMcpHub.flushPending();this.applyGlobalMcpServersToRecords(next.configs)}projectMcpState(state){return{phase:state.phase,configuredServers:state.configuredServers,connectedServers:state.connectedServers.map((entry)=>({id:entry.id,name:entry.name,transport:entry.transport,toolNames:[...entry.toolNames]})),failedServers:state.failedServers.map((entry)=>({id:entry.id,name:entry.name,transport:entry.transport,...entry.error!==void 0?{error:entry.error}:{}})),toolCount:state.toolCount,configs:state.configs.map((config2)=>({...config2}))}}runSubagent(spec){let subagentId=`subagent-${randomUUID6()}`,abortController=new AbortController,upstreamSignal=spec.signal;if(upstreamSignal)if(upstreamSignal.aborted)abortController.abort(upstreamSignal.reason);else upstreamSignal.addEventListener("abort",()=>{abortController.abort(upstreamSignal.reason)},{once:!0});let state={value:"pending"},{runtimeHub}=this,ownerSessionId=spec.ownerSessionId?.trim()||void 0,registry2=runtimeHub.subagentRegistry,handle={subagentId,ownerSessionId,get status(){return state.value},cancel:(_reason)=>{if(!abortController.signal.aborted)abortController.abort();let entry2=registry2.get(subagentId);if(entry2?.session&&entry2.itemId)try{entry2.session.cancelQueuedItem(entry2.itemId)}catch{}},result:void 0},entry={subagentId,ownerSessionId,abortController,handle,session:null,itemId:null,state};registry2.register(entry);let runPromise=(async()=>{let startedAt=Date.now();try{let runtimeConfig=await this.resolveRuntimeConfig({cwd:spec.cwd}),{pair}=await this.createRuntimeOwnedSubagentSession(runtimeConfig,{cwd:spec.cwd,description:spec.description,ownerSessionId,delegateTasksEnabled:!1,askUserEnabled:!1,approvalMode:"auto"});return await executeSubagentRun({entry,spec,pair,getSnapshotUsage:(snapshot)=>{if(!snapshot||typeof snapshot!=="object")return;return snapshot.usage??void 0},onFinish:()=>{registry2.unregister(subagentId)}})}catch(error48){registry2.unregister(subagentId);let cancelled=abortController.signal.aborted;state.value=cancelled?"cancelled":"failed";let message=error48 instanceof Error?error48.message:String(error48);return{summary:"",state:state.value,durationMs:Date.now()-startedAt,toolsUsed:0,...cancelled?{}:{error:{code:"subagent_execution_failed",message}}}}})();return Object.defineProperty(handle,"result",{value:runPromise,writable:!1,configurable:!1,enumerable:!0}),handle}async listSessionSnapshots(){return await this.sessionLifecycle.listSessionSnapshots()}async getSessionSnapshot(sessionId){return await this.sessionLifecycle.getSessionSnapshot(sessionId)}async getLiveSessionUsageSummary(record3){return await this.sessionLifecycle.getLiveSessionUsageSummary(record3)}async getLiveSessionUsageLedger(record3){return await this.sessionLifecycle.getLiveSessionUsageLedger(record3)}async getLiveSessionTurnUsage(record3,turnId){return await this.sessionLifecycle.getLiveSessionTurnUsage(record3,turnId)}async listLiveSessionTurnUsages(record3){return await this.sessionLifecycle.listLiveSessionTurnUsages(record3)}async listLiveSessionRequestUsages(record3,filter2){return await this.sessionLifecycle.listLiveSessionRequestUsages(record3,filter2)}async handleNotification(record3,notification,context){return await this.sessionInteraction.handleNotification(record3,notification,context)}async getSessionUsageSummary(sessionId){return await this.sessionLifecycle.getSessionUsageSummary(sessionId)}async getSessionUsageLedger(sessionId){return await this.sessionLifecycle.getSessionUsageLedger(sessionId)}async getSessionTurnUsage(sessionId,turnId){return await this.sessionLifecycle.getSessionTurnUsage(sessionId,turnId)}async listSessionTurnUsages(sessionId){return await this.sessionLifecycle.listSessionTurnUsages(sessionId)}async listSessionRequestUsages(sessionId,filter2){return await this.sessionLifecycle.listSessionRequestUsages(sessionId,filter2)}async listSessions(){return await this.sessionLifecycle.listSessions()}async openSession(sessionId){return await this.sessionLifecycle.openSession(sessionId)}async createSession(input){return await this.sessionLifecycle.createSession(input)}async destroySession(sessionId){await this.sessionLifecycle.destroySession(sessionId)}async unloadSession(sessionId,options){await this.sessionLifecycle.unloadSession(sessionId,options)}async createSessionWithMessages(messages,input){return await this.sessionLifecycle.createSessionWithMessages(messages,input)}async renameSession(sessionId,title){return await this.sessionLifecycle.renameSession(sessionId,title)}async updateSessionMetadata(sessionId,metadata){return await this.sessionLifecycle.updateSessionMetadata(sessionId,metadata)}async getSessionStateInternal(sessionId){return await this.sessionLifecycle.getSessionStateInternal(sessionId)}async getSessionHandleInternal(sessionId){return await this.sessionLifecycle.getSessionHandleInternal(sessionId)}async replaceSessionSnapshot(sessionId,snapshot,update){await this.sessionLifecycle.replaceSessionSnapshot(sessionId,snapshot,update)}async persistSession(sessionId){await this.sessionLifecycle.persistSession(sessionId)}createSessionFacade(record3){return{id:record3.sessionId,run:(input,options)=>this.startRun(record3,input,options),resume:(input,options)=>this.resumeRun(record3,input,options),steer:async(input)=>{if(await this.ensureLoadedSession(record3),!record3.activeRun||!record3.sdkSession)return!1;return record3.sdkSession.steer(input),!0},setMode:async(modeId)=>{await this.ensureLoadedSession(record3),this.assertSessionIdle(record3,"setMode"),record3.modeId=modeId,clearLastRequestBudget(record3),await this.syncPlanMode(record3),await this.persistRecord(record3)},updateConfig:async(update)=>{await this.ensureLoadedSession(record3);let resolvedUpdate=await this.prepareSessionConfigUpdate(record3,update),previousRuntimeConfig=record3.runtimeConfig,previousCwd=record3.cwd,previousGlobalMcpServers=this.sharedMcpHub.getDesiredConfig(),pendingMcpServersUpdate=Array.isArray(resolvedUpdate.mcpServers)?[...resolvedUpdate.mcpServers]:null,recordUpdate=pendingMcpServersUpdate?{...resolvedUpdate,mcpServers:void 0}:resolvedUpdate;applySessionConfigUpdate(record3,recordUpdate);let runtimeConfigChanged=JSON.stringify(previousRuntimeConfig)!==JSON.stringify(record3.runtimeConfig),cwdChanged=previousCwd!==record3.cwd,mcpServersChanged=pendingMcpServersUpdate!==null&&JSON.stringify(previousGlobalMcpServers)!==JSON.stringify(pendingMcpServersUpdate);if(runtimeConfigChanged||cwdChanged||mcpServersChanged)clearLastRequestBudget(record3);if(pendingMcpServersUpdate)this.applyGlobalMcpServersToRecords(pendingMcpServersUpdate);if(runtimeConfigChanged||cwdChanged)await this.reloadSession(record3);else if(mcpServersChanged&&!record3.activeRun&&!record3.pendingAction)await this.syncGlobalMcpServers(pendingMcpServersUpdate);else if(mcpServersChanged)this.sharedMcpHub.markDeferred(pendingMcpServersUpdate);await this.persistRecord(record3)},getUsageSummary:async()=>await this.getLiveSessionUsageSummary(record3),getUsageLedger:async()=>await this.getLiveSessionUsageLedger(record3),getTurnUsage:async(turnId)=>await this.getLiveSessionTurnUsage(record3,turnId),listTurnUsages:async()=>await this.listLiveSessionTurnUsages(record3),listRequestUsages:async(filter2)=>await this.listLiveSessionRequestUsages(record3,filter2),triggerManualCompaction:async()=>{if(await this.ensureLoadedSession(record3),this.assertSessionIdle(record3,"triggerManualCompaction"),!record3.sdkSession)return{success:!1,error:"Session is unavailable",errorCode:"session_unavailable",event:toCompressionEvent2({sessionId:record3.sessionId,state:"failed",trigger:"manual",label:"manual_compaction_failed_session_unavailable",metadata:{errorCode:"session_unavailable",error:"Session is unavailable"}})};let previousManualRequests=record3.sdkSession.listRequestUsages({kind:"manual_compaction"}).map((entry)=>structuredClone(entry)),previousManualRequestIds=new Set(previousManualRequests.map((entry)=>entry.id)),readManualCompactionUsage=()=>{let usageRequests=record3.sdkSession.listRequestUsages({kind:"manual_compaction"}).filter((entry)=>!previousManualRequestIds.has(entry.id)).map((entry)=>structuredClone(entry)),usageSummary=usageRequests[0]?cloneTurnUsageSummary(record3.sdkSession.getTurnUsage(usageRequests[0].turnId)):void 0;return{usageRequests,usageSummary}};try{let result=await triggerSdkManualCompaction(record3.sdkSession),manualUsage=readManualCompactionUsage();updateResponsesCompactionMetadata(record3,"manual_compaction_completed");let diagnostics=buildCompressionEventDiagnostics2({run:result});return await this.persistRecord(record3),{success:!0,summary:result.summary,messageCount:result.cursorAfter,run:result,...manualUsage.usageRequests.length>0?{usageRequests:manualUsage.usageRequests}:{},...manualUsage.usageSummary?{usageSummary:manualUsage.usageSummary}:{},event:toCompressionEvent2({sessionId:record3.sessionId,state:"completed",trigger:"manual",label:"manual_compaction_completed",diagnostics,metadata:{summaryGenerated:!0,messageCount:result.cursorAfter,summary:result.summary}})}}catch(error48){let manualUsage=readManualCompactionUsage(),message=error48 instanceof Error?error48.message:String(error48),errorCode=typeof error48?.code==="string"?String(error48.code):"manual_compaction_failed",compactionRun=error48?.result,diagnostics=buildCompressionEventDiagnostics2({...compactionRun?{run:compactionRun}:{}});return{success:!1,error:message,errorCode,...compactionRun?{run:compactionRun}:{},...manualUsage.usageRequests.length>0?{usageRequests:manualUsage.usageRequests}:{},...manualUsage.usageSummary?{usageSummary:manualUsage.usageSummary}:{},event:toCompressionEvent2({sessionId:record3.sessionId,state:"failed",trigger:"manual",label:"manual_compaction_failed",diagnostics,metadata:{errorCode,error:message}})}}},cancel:async()=>await this.cancelRecord(record3)}}startRun(record3,input,options){return this.sessionControl.startRun(record3,input,options)}resumeRun(record3,input,options){return this.sessionControl.resumeRun(record3,input,options)}async ensureLoadedSession(record3,snapshot){await this.sessionLoad.ensureLoadedSession(record3,snapshot)}async reloadSession(record3){await this.sessionLoad.reloadSession(record3)}async createRuntimeOwnedSubagentSession(runtimeConfig,input){return await this.sessionLoad.createRuntimeOwnedSubagentSession(runtimeConfig,input)}async resolveSubagentApprovalDecision(sessionId,request){let normalizedSessionId=sessionId?.trim();if(!normalizedSessionId||!this.options.onToolApproval)return{type:"approved"};return await this.options.onToolApproval({sessionId:normalizedSessionId,runId:`subagent:${normalizedSessionId}`,request})}assertSessionIdle(record3,operation){this.sessionControl.assertSessionIdle(record3,operation)}async processSessionItem(record3,runState,itemId,options){return await this.sessionRunLoop.processSessionItem(record3,runState,itemId,options)}async orchestrateDelegation(record3,runState,intent){return await this.sessionDelegation.orchestrateDelegation(record3,runState,intent)}clearRunState(record3,runState){if(record3.activeRun!==runState)return;runState.attachSignalCleanup?.(),runState.currentItemOutcome=void 0,runState.todoSnapshot=void 0,runState.forcedSummaryMode=void 0,runState.backgroundExecsByProcessId.clear(),runState.backgroundWaitStartedAtMs=void 0,runState.backgroundHeartbeatAtMs=void 0,runState.backgroundPollRoundRobinIndex=0,runState.initialUserInputText="",runState.completionEvidence=createRuntimeCompletionEvidence(),record3.activeRun=void 0,record3.pendingAction=void 0,this.flushPendingMcpSyncIfIdle().catch(()=>{})}captureTodoSnapshotOnFinish(record3,runState){let snapshot=runState.todoSnapshot;if(hasOpenTodos(snapshot)){record3.todoSnapshot=snapshot?snapshot.map((item)=>({...item})):void 0;return}if(hasCompletedTodos2(snapshot))record3.todoSnapshot=void 0}async cancelRecord(record3){return await this.sessionControl.cancelRecord(record3)}async syncPlanMode(record3){await this.sessionControl.syncPlanMode(record3)}async listSessionMcpServers(record3){return await this.sessionControl.listSessionMcpServers(record3)}async syncSessionMcpServers(record3){await this.sessionControl.syncSessionMcpServers(record3)}wrapSdkSnapshotForSave(record3,snapshot){return this.sessionLoad.wrapSdkSnapshotForSave(record3,snapshot)}async persistRecord(record3){await this.sessionLoad.persistRecord(record3)}async createRecordFromSnapshot(sessionId,snapshot){return await this.sessionLoad.createRecordFromSnapshot(sessionId,snapshot)}async normalizeRuntimeSnapshot(snapshot,sessionId=snapshot.sessionId){return await this.sessionLoad.normalizeRuntimeSnapshot(snapshot,sessionId)}async resolveRuntimeConfig(input){return await this.sessionLoad.resolveRuntimeConfig(input)}async prepareSessionConfigUpdate(record3,update){return await this.sessionLoad.prepareSessionConfigUpdate(record3,update)}async buildSystemPrompt(cwd){return await this.sessionLoad.buildSystemPrompt(cwd)}readSnapshotSystemPrompt(snapshot){return this.sessionLoad.readSnapshotSystemPrompt(snapshot)}canonicalizeSnapshotSystemMessages(snapshot,systemPrompt){return this.sessionLoad.canonicalizeSnapshotSystemMessages(snapshot,systemPrompt)}}async function createAgentRuntime(options){if(!options.stateDir?.trim())throw Error("createAgentRuntime requires a persistent stateDir");return new NativeAgentRuntime(options)}function normalizeText7(value){return value.replace(/\r/g,"").trimEnd()}var SESSION_QUEUE_LIMIT=5,VALID_QUEUE_STATUS=new Set(["idle","running","paused_confirm","error"]),VALID_ERROR_CODES=new Set(["network_error","timeout","canceled_by_user","rate_limited","config_unavailable","unknown"]);function sanitizeQueueText(text){let raw=normalizeText7(String(text??""));if(!raw)return"";let out="";for(let i=0;i<raw.length;i++){let code=raw.charCodeAt(i);if(code===9||code===10){out+=raw[i];continue}if(code<32||code===127)continue;out+=raw[i]}return out}function sortQueueItems(items){return[...items].sort((a,b)=>{if(a.kind!==b.kind)return a.kind==="steer"?-1:1;if(a.kind==="steer"&&b.kind==="steer"){let aSteeredAt=Number(a.steeredAt??a.createdAt??0),bSteeredAt=Number(b.steeredAt??b.createdAt??0);if(aSteeredAt!==bSteeredAt)return aSteeredAt-bSteeredAt}let aCreatedAt=Number(a.createdAt??0),bCreatedAt=Number(b.createdAt??0);if(aCreatedAt!==bCreatedAt)return aCreatedAt-bCreatedAt;return String(a.id).localeCompare(String(b.id))})}function normalizeQueueItem(raw){if(!raw||typeof raw!=="object")return null;let id=String(raw.id??"").trim(),text=sanitizeQueueText(raw.text);if(!id||!text)return null;let createdAt=Number(raw.createdAt??0),kind=String(raw.kind??"").trim()==="steer"?"steer":"user",steeredAt=Number(raw.steeredAt??0),cfg=raw.config,config2;if(cfg&&typeof cfg==="object"){let approvalsMode=cfg.approvalsMode==="auto"?"auto":cfg.approvalsMode==="normal"?"normal":cfg.approvalsMode==="strict"?"strict":void 0;config2={model:String(cfg.model??"").trim()||void 0,temperature:Number.isFinite(Number(cfg.temperature))?Number(cfg.temperature):void 0,interleavedThinking:typeof cfg.interleavedThinking==="boolean"?cfg.interleavedThinking:void 0,approvalsMode,providerId:String(cfg.providerId??"").trim()||void 0}}return{id,text,createdAt:Number.isFinite(createdAt)?createdAt:0,kind,steeredAt:kind==="steer"&&Number.isFinite(steeredAt)&&steeredAt>0?steeredAt:void 0,...config2?{config:config2}:{}}}function defaultSessionUiMetadata(){return{queue:[],queueLength:0,status:"idle",lastUpdatedAt:0,lastErrorCode:void 0,pinnedMessageIds:[],titleSuggestedAt:void 0}}function normalizeSessionUiMetadata(raw){let base=defaultSessionUiMetadata();if(!raw||typeof raw!=="object")return base;let obj=raw,queueRaw=Array.isArray(obj.queue)?obj.queue:[],queue=sortQueueItems(queueRaw.map(normalizeQueueItem).filter(Boolean).slice(0,SESSION_QUEUE_LIMIT)),status=VALID_QUEUE_STATUS.has(obj.status)?obj.status:base.status,lastUpdatedAt=Number(obj.lastUpdatedAt??0),lastErrorCode=VALID_ERROR_CODES.has(obj.lastErrorCode)?obj.lastErrorCode:void 0,pinnedMessageIds=Array.isArray(obj.pinnedMessageIds)?obj.pinnedMessageIds.map((id)=>String(id??"").trim()).filter(Boolean):[],titleSuggestedAt=Number(obj.titleSuggestedAt??0);return{queue,queueLength:queue.length,status,lastUpdatedAt:Number.isFinite(lastUpdatedAt)?lastUpdatedAt:0,lastErrorCode,pinnedMessageIds,titleSuggestedAt:Number.isFinite(titleSuggestedAt)&&titleSuggestedAt>0?titleSuggestedAt:void 0}}function readSessionUiMetadataFromSnapshot(snapshot){let meta3=snapshot?.metadata?.ui??snapshot?.metadata?.dimAgentRuntime?.metadata?.ui??null;return normalizeSessionUiMetadata(meta3)}function normalizeText8(value){return String(value??"").trim()}function parseBool3(value){let normalized=normalizeText8(value).toLowerCase();if(!normalized)return;if(normalized==="1"||normalized==="true"||normalized==="yes"||normalized==="on")return!0;if(normalized==="0"||normalized==="false"||normalized==="no"||normalized==="off")return!1;return}function readCliRuntimeConfig(env,configOpts){return resolveRuntimeConfigFromEnv(env,configOpts)}function buildRuntimeConfigFromContext(context,configOpts){let rc=context.runtimeConfig;if(!rc)return resolveRuntimeConfigFromEnv(context.env,configOpts);return{modelId:rc.modelId,...rc.adapter?{adapter:rc.adapter}:{},...rc.provider?{provider:rc.provider}:{},...rc.baseUrl?{baseUrl:rc.baseUrl}:{},...configOpts?.baseUrl&&!rc.baseUrl?{baseUrl:configOpts.baseUrl}:{},...rc.apiKey?{apiKey:rc.apiKey}:{},...rc.nextApiOAuth?{nextApiOAuth:!0}:{},...rc.responsesAutoPromptCacheKey?{responsesAutoPromptCacheKey:!0}:{},...rc.responsesUseSessionId?{responsesUseSessionId:!0}:{},...rc.modelCapabilities?{modelCapabilities:rc.modelCapabilities}:{},...rc.maxInputTokens?{maxInputTokens:rc.maxInputTokens}:{},...rc.maxOutputTokens?{maxOutputTokens:rc.maxOutputTokens}:{}}}function buildCliCreateAgentRuntimeOptions(opts){let configOpts=opts.baseUrl?{baseUrl:opts.baseUrl}:void 0,runtimeDebug=parseBool3(opts.processEnv?.DIMCODE_DEBUG??opts.context.env?.DIMCODE_DEBUG)===!0,runtimeConfig=buildRuntimeConfigFromContext(opts.context,configOpts);return{systemPrompt:opts.context.system,modelId:runtimeConfig.modelId,adapter:runtimeConfig.adapter,provider:runtimeConfig.provider,baseUrl:runtimeConfig.baseUrl,apiKey:runtimeConfig.apiKey,nextApiOAuth:runtimeConfig.nextApiOAuth,responsesAutoPromptCacheKey:runtimeConfig.responsesAutoPromptCacheKey,responsesUseSessionId:runtimeConfig.responsesUseSessionId,modelCapabilities:runtimeConfig.modelCapabilities,maxInputTokens:runtimeConfig.maxInputTokens,maxOutputTokens:runtimeConfig.maxOutputTokens,debug:runtimeDebug,stateDir:opts.stateDir,cliTools:!0,delegateTasks:!0,...opts.tools?{tools:opts.tools}:{},...opts.mcpServers?{mcpServers:opts.mcpServers}:{},...opts.mcpInitialState?{mcpInitialState:opts.mcpInitialState}:{},resolveRuntimeConfig:(input)=>{let current=buildRuntimeConfigFromContext(opts.context,configOpts),persistedWithoutTokenLimits=input.persisted?{...input.persisted,maxInputTokens:void 0,maxOutputTokens:void 0}:void 0;return input.requested?mergeRuntimeConfig(input.current??current,input.requested,{preferSourceMaxInputTokens:!0}):mergeRuntimeConfig(current,persistedWithoutTokenLimits,{preferSourceMaxInputTokens:!1})}}}async function createCliRuntime(opts){return await createAgentRuntime(buildCliCreateAgentRuntimeOptions(opts))}var RUNTIME_SESSION_METADATA_KEY2="dimAgentRuntime";function normalizeText9(value){return String(value??"").trim()}function normalizeModeId(value){return value==="plan"?"plan":"agent"}function normalizeToolApprovalMode(value){if(value==="auto"||value==="normal"||value==="strict")return value;if(value==="all")return"auto";return}function cloneJson(value){return JSON.parse(JSON.stringify(value??null))}function cloneMetadata2(value){return value?cloneJson(value):void 0}function cloneEnvRecord3(source){return Object.entries(source??{}).reduce((next,[key,value])=>{return next[key]=value,next},{})}function readTruthyFlag2(value){let normalized=normalizeText9(value).toLowerCase();return normalized==="1"||normalized==="true"||normalized==="yes"||normalized==="on"}function readNoInteractionFlag(config2){return readTruthyFlag2(config2?.env?.DIMCODE_NO_INTERACTION)}function runtimeConfigsMatch(left,right){return normalizeText9(left?.modelId)===normalizeText9(right?.modelId)&&normalizeText9(left?.adapter)===normalizeText9(right?.adapter)&&normalizeText9(left?.provider)===normalizeText9(right?.provider)&&normalizeText9(left?.baseUrl)===normalizeText9(right?.baseUrl)&&normalizeText9(left?.apiKey)===normalizeText9(right?.apiKey)&&Boolean(left?.nextApiOAuth)===Boolean(right?.nextApiOAuth)&&Boolean(left?.responsesAutoPromptCacheKey)===Boolean(right?.responsesAutoPromptCacheKey)&&Boolean(left?.responsesUseSessionId)===Boolean(right?.responsesUseSessionId)&&JSON.stringify(cloneModelCapabilities(left?.modelCapabilities)??null)===JSON.stringify(cloneModelCapabilities(right?.modelCapabilities)??null)&&Number(left?.maxInputTokens??0)===Number(right?.maxInputTokens??0)&&Number(left?.maxOutputTokens??0)===Number(right?.maxOutputTokens??0)&&readNoInteractionFlag(left)===readNoInteractionFlag(right)}function mcpServersMatch(left,right){return JSON.stringify(left??[])===JSON.stringify(right??[])}function parseRuntimeConfig(raw,fallback){let record3=raw??{},persisted={modelId:normalizeText9(record3.modelId)||fallback.modelId,...normalizeText9(record3.adapter)?{adapter:normalizeText9(record3.adapter)}:{},...normalizeText9(record3.provider)?{provider:normalizeText9(record3.provider)}:{},...normalizeText9(record3.baseUrl)?{baseUrl:normalizeText9(record3.baseUrl)}:{},...record3.nextApiOAuth===!0?{nextApiOAuth:!0}:{},...record3.responsesAutoPromptCacheKey===!0?{responsesAutoPromptCacheKey:!0}:{},...record3.responsesUseSessionId===!0?{responsesUseSessionId:!0}:{},...cloneModelCapabilities(record3.modelCapabilities)?{modelCapabilities:cloneModelCapabilities(record3.modelCapabilities)}:{},...Number(record3.maxInputTokens)>0?{maxInputTokens:Number(record3.maxInputTokens)}:{},...Number(record3.maxOutputTokens)>0?{maxOutputTokens:Number(record3.maxOutputTokens)}:{}};return mergeRuntimeConfig(fallback,{...persisted,maxInputTokens:void 0,maxOutputTokens:void 0},{preferSourceMaxInputTokens:!1})}function readRuntimeEnvelopeFromSnapshot(snapshot,fallback){let runtimeMeta=(snapshot?.metadata??{})[RUNTIME_SESSION_METADATA_KEY2]??{},runtimeConfig=runtimeMeta.runtimeConfig??{};return{runtimeConfig:snapshot?parseRuntimeConfig(runtimeMeta.runtimeConfig,{...fallback,modelId:normalizeText9(runtimeConfig.modelId)||fallback.modelId}):null,modeId:normalizeModeId(runtimeMeta.modeId),toolApprovalMode:normalizeToolApprovalMode(runtimeMeta.toolApprovalMode),mcpServers:Array.isArray(runtimeMeta.mcpServers)?cloneJson(runtimeMeta.mcpServers):[]}}function createCliAgent(opts){let stateDir=path28.resolve(opts.stateDir),pendingMode="agent",runtimePromise=null,pendingRuntimeConfigReloads=new Set,getStateEnv=()=>({...cloneEnvRecord3(opts.context.env??{}),...cloneEnvRecord3(opts.processEnv)}),getRuntimeConfig=()=>{let rc=opts.context.runtimeConfig;if(rc)return{modelId:rc.modelId,...rc.adapter?{adapter:rc.adapter}:{},...rc.provider?{provider:rc.provider}:{},...rc.baseUrl?{baseUrl:rc.baseUrl}:{},...!rc.baseUrl&&opts.baseUrl?{baseUrl:opts.baseUrl}:{},...rc.apiKey?{apiKey:rc.apiKey}:{},...rc.nextApiOAuth?{nextApiOAuth:!0}:{},...rc.responsesAutoPromptCacheKey?{responsesAutoPromptCacheKey:!0}:{},...rc.responsesUseSessionId?{responsesUseSessionId:!0}:{},...rc.modelCapabilities?{modelCapabilities:rc.modelCapabilities}:{},...rc.maxInputTokens?{maxInputTokens:rc.maxInputTokens}:{},...rc.maxOutputTokens?{maxOutputTokens:rc.maxOutputTokens}:{}};return readCliRuntimeConfig({...getStateEnv(),...cloneEnvRecord3(typeof process<"u"?process.env:void 0)},{baseUrl:opts.baseUrl})},logSessionPersistence=(sessionId)=>{let normalizedSessionId=normalizeText9(sessionId);if(!normalizedSessionId)return;debugLog("cli.session.persistence",{sessionId:normalizedSessionId,stateDir,snapshotPath:runtimeSnapshotPath(stateDir,normalizedSessionId)})},ensureRuntime=async()=>{if(runtimePromise)return await runtimePromise;runtimePromise=(async()=>{return await createCliRuntime({context:opts.context,stateDir,processEnv:opts.processEnv,tools:opts.tools,mcpServers:opts.mcpServers,mcpInitialState:opts.mcpInitialState})})();try{return await runtimePromise}catch(error48){throw runtimePromise=null,error48}},runtimeSessions={list:async()=>(await ensureRuntime()).sessions.list(),get:async(sessionId)=>(await ensureRuntime()).sessions.get(sessionId),create:async(input)=>(await ensureRuntime()).sessions.create(input),createWithMessages:async(messages,input)=>await(await ensureRuntime()).sessions.createWithMessages(messages,input),destroy:async(sessionId)=>await(await ensureRuntime()).sessions.destroy(sessionId),rename:async(sessionId,title)=>await(await ensureRuntime()).sessions.rename(sessionId,title),updateMetadata:async(sessionId,metadata)=>await(await ensureRuntime()).sessions.updateMetadata(sessionId,metadata),interrupt:async(sessionId)=>await(await ensureRuntime()).sessions.interrupt(sessionId),getUsageSummary:async(sessionId)=>await(await ensureRuntime()).sessions.getUsageSummary(sessionId),getUsageLedger:async(sessionId)=>await(await ensureRuntime()).sessions.getUsageLedger(sessionId),getTurnUsage:async(sessionId,turnId)=>await(await ensureRuntime()).sessions.getTurnUsage(sessionId,turnId),listTurnUsages:async(sessionId)=>await(await ensureRuntime()).sessions.listTurnUsages(sessionId),listRequestUsages:async(sessionId,filter2)=>await(await ensureRuntime()).sessions.listRequestUsages(sessionId,filter2)},runtimeFacade={sessions:runtimeSessions,listSessions:async()=>await(await ensureRuntime()).listSessions(),openSession:async(sessionId)=>await(await ensureRuntime()).openSession(sessionId),createSession:async(input)=>await(await ensureRuntime()).createSession(input),destroySession:async(sessionId)=>await(await ensureRuntime()).destroySession(sessionId),getSessionState:async(sessionId)=>await(await ensureRuntime()).getSessionState(sessionId),replaceSessionSnapshot:async(sessionId,snapshot,update)=>{await(await ensureRuntime()).replaceSessionSnapshot(sessionId,snapshot,update)},persistSession:async(sessionId)=>{await(await ensureRuntime()).persistSession(sessionId)},unloadSession:async(sessionId,options)=>await(await ensureRuntime()).unloadSession(sessionId,options),runSubagent:(spec)=>runSubagentViaFacade(spec),getSessionHandle:async(sessionId)=>await(await ensureRuntime()).getSessionHandle(sessionId),getMcpState:async()=>await(await ensureRuntime()).getMcpState(),syncMcpServers:async(configs)=>await(await ensureRuntime()).syncMcpServers(configs)};function runSubagentViaFacade(spec){let placeholderId=`subagent-pending-${Date.now().toString(36)}-${Math.random().toString(36).slice(2,10)}`,resolvedHandle=null,cancelQueued=!1,resultPromise=(async()=>{let handle=(await ensureRuntime()).runSubagent(spec);if(resolvedHandle=handle,cancelQueued)handle.cancel();return await handle.result})();return{get subagentId(){return resolvedHandle?.subagentId??placeholderId},...spec.ownerSessionId?{ownerSessionId:spec.ownerSessionId}:{},get status(){return resolvedHandle?.status??"pending"},cancel:(reason)=>{if(resolvedHandle)resolvedHandle.cancel(reason);else cancelQueued=!0},result:resultPromise}}let openSession=async(sessionId)=>{let normalizedSessionId=normalizeText9(sessionId);if(!normalizedSessionId)return;return await(await ensureRuntime()).openSession(normalizedSessionId)},ensureSession=async(input)=>{let requestedSessionId=normalizeText9(input?.sessionId),runtime=requestedSessionId?await ensureRuntime():await ensureRuntime(),nextMode=normalizeModeId(input?.modeId??pendingMode),nextCwd=normalizeText9(input?.cwd)||normalizeText9(opts.context.cwd)||process.cwd(),nextRuntimeConfig=input?.runtimeConfig??getRuntimeConfig(),hasToolApprovalMode=Object.prototype.hasOwnProperty.call(input??{},"toolApprovalMode"),nextToolApprovalMode=normalizeToolApprovalMode(input?.toolApprovalMode),forceNoInteractionRuntimeConfigUpdate=readNoInteractionFlag(nextRuntimeConfig),hasMcpServers=Array.isArray(input?.mcpServers),nextMcpServers=Array.isArray(input?.mcpServers)?cloneJson(input.mcpServers):void 0,nextMetadata=cloneMetadata2(input?.metadata);if(requestedSessionId){let existing=await runtime.openSession(requestedSessionId);if(existing){let snapshot=await runtime.sessions.get(existing.id),envelope=readRuntimeEnvelopeFromSnapshot(snapshot,nextRuntimeConfig),runtimeMcpState=await runtime.getMcpState(),update={};if(normalizeText9(snapshot?.cwd)!==nextCwd)update.cwd=nextCwd;if(pendingRuntimeConfigReloads.delete(existing.id)||forceNoInteractionRuntimeConfigUpdate||!runtimeConfigsMatch(envelope.runtimeConfig,nextRuntimeConfig))update.runtimeConfig=nextRuntimeConfig;if(envelope.modeId!==nextMode)await existing.setMode(nextMode);if(hasToolApprovalMode&&envelope.toolApprovalMode!==nextToolApprovalMode)update.toolApprovalMode=nextToolApprovalMode;if(hasMcpServers&&Array.isArray(nextMcpServers)&&!mcpServersMatch(runtimeMcpState?.configs??envelope.mcpServers,nextMcpServers))update.mcpServers=nextMcpServers;if(nextMetadata)update.metadata=nextMetadata;if(Object.keys(update).length>0)await existing.updateConfig(update);return logSessionPersistence(existing.id),existing}}let created=await runtime.createSession({sessionId:requestedSessionId||void 0,cwd:nextCwd,modeId:nextMode,runtimeConfig:nextRuntimeConfig,...hasToolApprovalMode?{toolApprovalMode:nextToolApprovalMode}:{},...hasMcpServers?{mcpServers:nextMcpServers}:{},...nextMetadata?{metadata:nextMetadata}:{}});return logSessionPersistence(created.id),created};return{runtime:runtimeFacade,sessions:runtimeSessions,openSession,ensureSession,async steerSession(sessionId,input){let session=await openSession(sessionId);if(!session)return!1;return await session.steer(input)},setMode(modeId){pendingMode=normalizeModeId(modeId)},getMode(){return pendingMode},async triggerManualCompression(sessionId){let normalizedSessionId=normalizeText9(sessionId);if(!normalizedSessionId)return{success:!1,error:"Manual compaction requires an active session id"};return await(await ensureSession({sessionId:normalizedSessionId})).triggerManualCompaction()},invalidateSession(sessionId){let id=normalizeText9(sessionId);if(id)pendingRuntimeConfigReloads.add(id)},async getMcpState(){return await(await ensureRuntime()).getMcpState()},async syncMcpServers(configs){return await(await ensureRuntime()).syncMcpServers(configs)}}}function shouldInferCustomProviderFallbackMetadata2(adapter){if(!adapter)return!0;return adapter==="openai"||adapter==="openai-responses"||adapter==="gemini"||adapter==="anthropic"}function hasConfiguredModelMetadata(model){let limit=model.limit??{},hasContext=typeof limit.context==="number"&&Number.isFinite(limit.context),hasOutput=typeof limit.output==="number"&&Number.isFinite(limit.output);return hasContext||hasOutput||model.userDefined===!0||model.outputIsUserDefined===!0||typeof model.vision==="boolean"||model.reasoning?.supported===!0||model.extra_capabilities?.reasoning?.supported===!0}function inferCustomModelLimit(modelId,adapter){if(!shouldInferCustomProviderFallbackMetadata2(adapter))return;return getCustomProviderModelFallbackLimitForModelId(modelId)}function backfillCustomProviderModels(models,opts={}){if(!shouldInferCustomProviderFallbackMetadata2(opts.adapter))return[...models];let onlyIds=opts.onlyIds;return models.map((model)=>{let id=String(model?.id??"").trim();if(!id)return model;if(onlyIds&&!onlyIds.has(id))return model;if(hasConfiguredModelMetadata(model))return model;let currentLimit=model.limit??{},hasContext=typeof currentLimit.context==="number"&&Number.isFinite(currentLimit.context),hasOutput=typeof currentLimit.output==="number"&&Number.isFinite(currentLimit.output),hasVision=typeof model.vision==="boolean",hasReasoning=model.reasoning?.supported===!0,hasExtraReasoning=model.extra_capabilities?.reasoning?.supported===!0,inferredLimit=hasContext&&hasOutput?void 0:inferCustomModelLimit(id,opts.adapter),inferredCapabilities=hasVision&&hasReasoning?void 0:getCustomProviderModelFallbackCapabilitiesForModelId(id),inferredExtraReasoning=hasExtraReasoning?void 0:getCustomProviderModelFallbackReasoningEffortCapability(id),nextLimit={...currentLimit,...!hasContext&&typeof inferredLimit?.context==="number"?{context:inferredLimit.context}:{},...!hasOutput&&typeof inferredLimit?.output==="number"?{output:inferredLimit.output}:{}};return{...model,...Object.keys(nextLimit).length>0?{limit:nextLimit}:{},...!hasVision&&typeof inferredCapabilities?.vision==="boolean"?{vision:inferredCapabilities.vision}:{},...!hasReasoning&&inferredCapabilities?.reasoning?.supported?{reasoning:inferredCapabilities.reasoning}:{},...!hasExtraReasoning&&inferredExtraReasoning?{extra_capabilities:{...model.extra_capabilities??{},reasoning:inferredExtraReasoning}}:{}}})}var SYSTEM_SECTION_IDS=["system.sections.security","system.sections.code-safety","system.sections.url-policy","system.sections.tone-and-style","system.sections.professional-objectivity","system.sections.engineering-approach","system.sections.git-and-execution-guardrails","system.sections.doing-tasks","system.sections.capability-aware-guidance","system.sections.code-references"];function joinPromptSections(sections){return sections.filter((section)=>typeof section==="string"&§ion.trim().length>0).map((section)=>section.trim()).join(`
|
|
1077
1077
|
|
|
1078
1078
|
`)}var DIMCODE_SHARED_SYSTEM_PROMPT=joinPromptSections(SYSTEM_SECTION_IDS.map((promptId)=>renderPrompt(promptId)));function buildDimCodeSystemPrompt(options){return joinPromptSections([options?.intro??renderPrompt("system.intro.default"),DIMCODE_SHARED_SYSTEM_PROMPT,...options?.extraSections??[]])}var DIMCODE_SYSTEM_PROMPT=buildDimCodeSystemPrompt();function readOptionalString3(value){if(typeof value==="string")return value.trim()||void 0;if(typeof value==="number"||typeof value==="boolean")return String(value).trim()||void 0;return}function readOptionalNumber2(value){if(typeof value==="number"&&Number.isFinite(value))return value;if(typeof value==="string"){let trimmed=value.trim();if(!trimmed)return;let parsed=Number(trimmed);return Number.isFinite(parsed)?parsed:void 0}return}var RUNTIME_ENV_KEYS=new Set(["DIMCODE_NO_INTERACTION"]);function isTruthyFlag2(value){let normalized=String(value??"").trim().toLowerCase();return normalized==="1"||normalized==="true"||normalized==="yes"||normalized==="on"}function resolveSystemPrompt(env){if(!isTruthyFlag2(env.DIMCODE_NO_INTERACTION))return DIMCODE_SYSTEM_PROMPT;return buildDimCodeSystemPrompt({intro:"You are DimCode, a non-interactive CLI coding agent running a one-shot software engineering task.",extraSections:[["# Non-interactive execution","This run is operating in non-interactive agent mode.","Tool approvals are already handled automatically.","Do not ask the user follow-up questions and do not rely on AskUserQuestion being available.","Make reasonable assumptions from the repository, the prompt, and available tool output so you can complete the task in one pass when practical.","Only stop early for a real external blocker or a genuinely unsafe ambiguity that cannot be resolved from local context.","When you make an important assumption, state it briefly in the final response."].join(`
|
|
1079
|
-
`)]})}async function createDimcodeContext(opts){let fastStartRaw=String(opts.env.DIMCODE_FAST_START??"").trim().toLowerCase(),fastStart=fastStartRaw==="1"||fastStartRaw==="true"||fastStartRaw==="yes"||fastStartRaw==="on",version2=readOptionalString3("0.0.9-beta.28")??(fastStart?null:await readRepoPackageVersion(opts.cwd)),resolveToolsPath=async()=>{let[{homedir:homedir3},path29]=await Promise.all([import("node:os"),import("node:path")]),dimcodeHome=readOptionalString3(opts.env.DIMCODE_HOME);if(dimcodeHome){let dir2=path29.resolve(dimcodeHome);return{dir:dir2,filePath:path29.join(dir2,"tools.json")}}let dir=path29.resolve(homedir3(),".dimcode");return{dir,filePath:path29.join(dir,"tools.json")}},[loadedCache,loadedConfig,loadedTools,loadedMcp]=fastStart?await(async()=>{let[cacheDir,configDir,toolsPath,path29]=await Promise.all([getDimcodeUserDir(opts.env),getDimcodeConfigDir(opts.env),resolveToolsPath(),import("node:path")]),cacheFile=path29.join(cacheDir,"cache.json"),configFile=path29.join(configDir,"config.json"),mcpJsonFile=path29.join(toolsPath.dir,"mcp.json");return[{dir:cacheDir,filePath:cacheFile,cache:{version:1,updatedAt:0}},{dir:configDir,filePath:configFile,config:{version:1,updatedAt:0}},{dir:toolsPath.dir,filePath:toolsPath.filePath,tools:{version:1,updatedAt:0}},{dir:toolsPath.dir,filePath:mcpJsonFile,servers:[]}]})():await Promise.all([loadDimcodeUserCache(opts.env),loadDimcodeUserConfig(opts.env),loadDimcodeUserTools(opts.env),loadMcpJson(opts.env)]),cache=loadedCache.cache,config2=loadedConfig.config,saved=cache.settings??{},savedConfig=config2.settings??{},savedCwd=readOptionalString3(saved.cwd),savedFocusFiles=Array.isArray(saved.focusFiles)?saved.focusFiles.map((file2)=>String(file2??"")).filter(Boolean):void 0,cwd=opts.cwd||savedCwd||".",v=(key)=>readOptionalString3(opts.env[key]),explicitRuntimeEnv=Object.fromEntries(Object.entries(opts.env).flatMap(([key,value])=>{let canonical=String(key??"").trim(),normalized=readOptionalString3(value);if(!canonical||!RUNTIME_ENV_KEYS.has(canonical)||!normalized)return[];return[[canonical,normalized]]})),applyRuntimeEnvIfMissing=(target,key,source)=>{let value=source[key];if(!value||target[key])return;target[key]=value},mergedEnv={DIMCODE_VERSION:version2??"dev",DIMCODE_BETA_UPDATES:savedConfig.beta===!0?"1":"0",...v("DIMCODE_STARTUP_TOAST")?{DIMCODE_STARTUP_TOAST:v("DIMCODE_STARTUP_TOAST")}:{}},savedProviderId=normalizeProviderId(savedConfig.providerId),savedConnections=savedConfig.providerConnections??{},savedActiveModelByProvider=savedConfig.activeModelByProvider??{},normalizedSavedCustomProviders=(Array.isArray(savedConfig.customProviders)?savedConfig.customProviders:[]).map((provider)=>{let adapter2=String(provider?.adapter??"").trim(),models=Array.isArray(provider?.models)?backfillCustomProviderModels(provider.models,{adapter:adapter2}):provider?.models;return{...provider,...Array.isArray(models)?{models}:{}}}),legacyCustom=savedConfig.customProvider??{},legacyBaseUrl=readOptionalString3(legacyCustom?.baseUrl),legacyApiKey=readOptionalString3(legacyCustom?.apiKey),rawProviderId=(()=>{if(isLegacyCustomProviderId(savedProviderId)&&normalizedSavedCustomProviders.length){let fallbackId=readOptionalString3(normalizedSavedCustomProviders[0]?.id);if(fallbackId){if(config2.settings)config2.settings.providerId=fallbackId;return fallbackId}}return savedProviderId})(),{candidates,existingProviderIds}=buildProviderSelectionCandidates({connections:savedConnections,customProviders:normalizedSavedCustomProviders,legacyCustom,rememberedModels:{...savedActiveModelByProvider}}),rememberedModels=stripUnknownActiveModelSelections({...savedActiveModelByProvider},existingProviderIds),selection=resolveProviderSelection({candidates,preferredProviderId:rawProviderId,rememberedModels}),providerId=readOptionalString3(selection.providerId),providerModel=readOptionalString3(selection.modelId);if(config2.settings)if(providerId)config2.settings.providerId=providerId;else delete config2.settings.providerId;let customProvider=isCustomProviderId(providerId)?normalizedSavedCustomProviders.find((p)=>String(p?.id??"").trim()===providerId):void 0,builtin=providerId&&!isCustomProviderId(providerId)&&!isLegacyCustomProviderId(providerId)?getBuiltinProvider(providerId):void 0,savedConnection=savedConnections[providerId??""],savedConnectionBaseUrl=readOptionalString3(savedConnection?.baseUrl),builtinBaseUrl=readOptionalString3(getProviderBaseUrl(builtin)),adapter=isCustomProviderId(providerId)?String(customProvider?.adapter??"").trim():isLegacyCustomProviderId(providerId)?"openai":providerId==="openai"&&savedConnectionBaseUrl&&savedConnectionBaseUrl!==builtinBaseUrl?"openai":getProviderAdapter(builtin),providerBaseUrl=isCustomProviderId(providerId)?readOptionalString3(customProvider?.baseUrl):isLegacyCustomProviderId(providerId)?legacyBaseUrl:readOptionalString3(resolveBuiltinProviderBaseUrl(builtin,savedConnection?.baseUrl)),providerApiKey=isCustomProviderId(providerId)?readOptionalString3(customProvider?.apiKey):isLegacyCustomProviderId(providerId)?legacyApiKey:readOptionalString3(savedConnection?.apiKey),modelCapabilityFallbackModels=isCustomProviderId(providerId)||isLegacyCustomProviderId(providerId)||builtin?.customModels?listCustomProviderModelFallbackModels():void 0,resolvedModelContextWindow=resolveProviderSelectionContextWindow({providerId,modelId:providerModel,connections:savedConnections,customProviders:normalizedSavedCustomProviders}),resolvedModelMaxOutputTokens=resolveProviderSelectionMaxOutputTokens({providerId,modelId:providerModel,connections:savedConnections,customProviders:normalizedSavedCustomProviders});if(isLegacyCustomProviderId(providerId)&&!providerBaseUrl&&!providerApiKey&&!providerModel)throw Error("Legacy custom provider config is missing. Please run /connect to add a custom provider and select a model.");let modelCapabilities=resolveProviderModelCapabilities({providerId,modelId:providerModel,connectionModels:savedConnection?.models,builtinModels:builtin?.models,customProviderModels:customProvider?.models,legacyCustomModels:Array.isArray(legacyCustom?.models)?legacyCustom.models:void 0,fallbackModels:modelCapabilityFallbackModels}),runtimeConfig={modelId:providerModel??"deepseek-v3.1",adapter:adapter||"openai",provider:providerId??adapter,baseUrl:providerBaseUrl,apiKey:providerApiKey,nextApiOAuth:providerId==="dimcode-api-oauth"||void 0,...customProvider?.responsesAutoPromptCacheKey===!0?{responsesAutoPromptCacheKey:!0}:{},...customProvider?.responsesUseSessionId===!0?{responsesUseSessionId:!0}:{},...modelCapabilities?{modelCapabilities}:{},...typeof resolvedModelContextWindow==="number"&&resolvedModelContextWindow>0?{maxInputTokens:resolvedModelContextWindow}:{},...typeof resolvedModelMaxOutputTokens==="number"&&resolvedModelMaxOutputTokens>0?{maxOutputTokens:resolvedModelMaxOutputTokens}:{},temperature:readOptionalNumber2(saved.temperature)??void 0,interleavedThinking:typeof saved.interleavedThinking==="boolean"?saved.interleavedThinking:void 0,reasoningEffort:(()=>{let perModel=saved.reasoningEffortByModel;if(perModel&&providerModel){let value=readOptionalString3(perModel[providerModel]);if(value)return value}return readOptionalString3(saved.reasoningEffort)??void 0})()};if(!mergedEnv.DIMCODE_TOOL_APPROVALS&&saved.toolApprovals){let raw=String(saved.toolApprovals),mapped=raw==="auto"||raw==="all"?"auto":raw==="strict"||raw==="manual"?"strict":raw==="normal"?"normal":void 0;if(mapped)mergedEnv.DIMCODE_TOOL_APPROVALS=mapped}if(!mergedEnv.DIMCODE_LANG&&readOptionalString3(saved.locale))mergedEnv.DIMCODE_LANG=readOptionalString3(saved.locale);if(!mergedEnv.DIMCODE_THEME&&readOptionalString3(saved.themeMode))mergedEnv.DIMCODE_THEME=readOptionalString3(saved.themeMode);if(!mergedEnv.DIMCODE_REASONING_EFFORT){let perModelMap=saved.reasoningEffortByModel,resolved=(perModelMap&&providerModel?readOptionalString3(perModelMap[providerModel]):void 0)??readOptionalString3(saved.reasoningEffort);if(resolved)mergedEnv.DIMCODE_REASONING_EFFORT=resolved}if(usesCcMock(builtin))mergedEnv.DIMCODE_CCMOCK="1";else delete mergedEnv.DIMCODE_CCMOCK;return applyRuntimeEnvIfMissing(mergedEnv,"DIMCODE_NO_INTERACTION",explicitRuntimeEnv),{context:{system:resolveSystemPrompt(mergedEnv),cwd,env:mergedEnv,runtimeConfig,...savedFocusFiles?.length?{focusFiles:savedFocusFiles}:{}},cacheDir:loadedCache.dir,cacheFile:loadedCache.filePath,cache,configDir:loadedConfig.dir,configFile:loadedConfig.filePath,config:config2,toolsFile:loadedTools.filePath,tools:loadedTools.tools,mcpJsonFile:loadedMcp.filePath,mcpServers:loadedMcp.servers,mcpPhase:fastStart?"deferred":"syncing",mcpConnectedCount:0,mcpConfiguredCount:loadedMcp.servers.length}}async function readRepoPackageVersion(cwd){try{let[{readFile:readFile10},path29]=await Promise.all([import("node:fs/promises"),import("node:path")]),raw=await readFile10(path29.join(cwd,"package.json"),"utf8"),parsed=JSON.parse(raw),v=typeof parsed?.version==="string"?parsed.version:null;return v&&v.trim()?v.trim():null}catch{return null}}import{createHash as createHash4,randomUUID as randomUUID7}from"node:crypto";import{copyFile as copyFile2,mkdir as mkdir10,readdir as readdir6,readFile as readFile10,rename as rename2,rm as rm7,stat as stat6,writeFile as writeFile9}from"node:fs/promises";import{homedir as homedir3}from"node:os";import path29 from"node:path";import process12 from"node:process";var BLOB_CACHE_DIR2="blob-cache",BLOB_DIR2="blobs",ATTACHMENTS_DIR2="attachments",META_DIR2="meta",BLOB_TTL_MS2=86400000,CLEANUP_MIN_INTERVAL_MS2=3600000,FILE_ID_PATTERN=/^[\w.-]{1,128}$/,HOME_SESSION_CACHE_ID="_home",IMAGE_EXTENSIONS=new Set(["png","jpg","jpeg","gif","svg","webp","bmp","ico"]),TEXT_LIKE_EXTENSIONS=new Set(["txt","text","md","markdown","mdx","rst","log","json","jsonl","json5","yaml","yml","toml","ini","cfg","conf","properties","env","xml","csv","tsv","html","htm","css","scss","less","sass","js","jsx","ts","tsx","mjs","cjs","mts","cts","vue","svelte","astro","py","rb","php","go","rs","java","kt","swift","c","cc","cpp","cxx","h","hh","hpp","hxx","m","mm","cs","sh","bash","zsh","fish","ps1","sql","graphql","gql","proto","diff","patch","gitignore","gitattributes","editorconfig","dockerfile","makefile","mk","lock"]),EXT_MIME={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".bmp":"image/bmp",".ico":"image/x-icon",".svg":"image/svg+xml",".mp4":"video/mp4",".mov":"video/quicktime",".m4v":"video/x-m4v",".webm":"video/webm",".avi":"video/x-msvideo",".mkv":"video/x-matroska",".mpeg":"video/mpeg",".mpg":"video/mpeg",".wmv":"video/x-ms-wmv",".3gp":"video/3gpp",".mp3":"audio/mpeg",".wav":"audio/wav",".ogg":"audio/ogg",".flac":"audio/flac",".m4a":"audio/mp4",".pdf":"application/pdf",".txt":"text/plain",".md":"text/markdown",".json":"application/json",".yaml":"text/yaml",".yml":"text/yaml",".toml":"text/plain",".ini":"text/plain",".xml":"application/xml",".csv":"text/csv"},lastCleanupAt2=0;function resolveStateDir3(){let dimcodeHome=String(process12.env.DIMCODE_HOME??"").trim();if(dimcodeHome)return path29.resolve(dimcodeHome,"state");return path29.resolve(homedir3(),".dimcode","state")}function resolveSessionCacheDir2(sessionId){return path29.resolve(resolveStateDir3(),BLOB_CACHE_DIR2,sessionId)}function normalizeSessionId2(raw){let value=String(raw??"").trim();if(!value)return null;if(value==="."||value==="..")return null;if(value.includes("/")||value.includes("\\"))return null;if(value.includes("\x00"))return null;return value}function getFileExtension(filePath){let ext=path29.extname(filePath||"").toLowerCase();if(!ext)return"";return ext.startsWith(".")?ext.slice(1):ext}function basenameFromPath(filePath){return path29.basename(String(filePath??"").trim())}function parseAttachmentPathInfo(absPath){let blobMatch=normalizeMaybePath(absPath).match(/\/blob-cache\/([^/]+)\/attachments\/([^/]+)$/);if(!blobMatch)return null;let sessionId=normalizeSessionId2(blobMatch[1]??""),fileName=basenameFromPath(blobMatch[2]??"");if(!sessionId||!fileName)return null;return{sessionId,fileName}}function isTextLikeFilePath(filePath){let ext=getFileExtension(filePath);return Boolean(ext&&TEXT_LIKE_EXTENSIONS.has(ext))}function shouldCacheFileToSessionAttachment(filePath){return!isTextLikeFilePath(filePath)}function isSessionCachedImagePath(absPath){let info=parseAttachmentPathInfo(absPath);if(!info)return!1;let ext=getFileExtension(info.fileName);return Boolean(ext&&IMAGE_EXTENSIONS.has(ext))}function isHomeSessionAttachmentPath(absPath){let info=parseAttachmentPathInfo(absPath);return Boolean(info&&info.sessionId===HOME_SESSION_CACHE_ID)}function guessMimeTypeFromPath(filePath){let ext=path29.extname(filePath).toLowerCase();return EXT_MIME[ext]||"application/octet-stream"}function countLines2(text){if(!text)return 0;return text.split(`
|
|
1079
|
+
`)]})}async function createDimcodeContext(opts){let fastStartRaw=String(opts.env.DIMCODE_FAST_START??"").trim().toLowerCase(),fastStart=fastStartRaw==="1"||fastStartRaw==="true"||fastStartRaw==="yes"||fastStartRaw==="on",version2=readOptionalString3("0.0.9-beta.29")??(fastStart?null:await readRepoPackageVersion(opts.cwd)),resolveToolsPath=async()=>{let[{homedir:homedir3},path29]=await Promise.all([import("node:os"),import("node:path")]),dimcodeHome=readOptionalString3(opts.env.DIMCODE_HOME);if(dimcodeHome){let dir2=path29.resolve(dimcodeHome);return{dir:dir2,filePath:path29.join(dir2,"tools.json")}}let dir=path29.resolve(homedir3(),".dimcode");return{dir,filePath:path29.join(dir,"tools.json")}},[loadedCache,loadedConfig,loadedTools,loadedMcp]=fastStart?await(async()=>{let[cacheDir,configDir,toolsPath,path29]=await Promise.all([getDimcodeUserDir(opts.env),getDimcodeConfigDir(opts.env),resolveToolsPath(),import("node:path")]),cacheFile=path29.join(cacheDir,"cache.json"),configFile=path29.join(configDir,"config.json"),mcpJsonFile=path29.join(toolsPath.dir,"mcp.json");return[{dir:cacheDir,filePath:cacheFile,cache:{version:1,updatedAt:0}},{dir:configDir,filePath:configFile,config:{version:1,updatedAt:0}},{dir:toolsPath.dir,filePath:toolsPath.filePath,tools:{version:1,updatedAt:0}},{dir:toolsPath.dir,filePath:mcpJsonFile,servers:[]}]})():await Promise.all([loadDimcodeUserCache(opts.env),loadDimcodeUserConfig(opts.env),loadDimcodeUserTools(opts.env),loadMcpJson(opts.env)]),cache=loadedCache.cache,config2=loadedConfig.config,saved=cache.settings??{},savedConfig=config2.settings??{},savedCwd=readOptionalString3(saved.cwd),savedFocusFiles=Array.isArray(saved.focusFiles)?saved.focusFiles.map((file2)=>String(file2??"")).filter(Boolean):void 0,cwd=opts.cwd||savedCwd||".",v=(key)=>readOptionalString3(opts.env[key]),explicitRuntimeEnv=Object.fromEntries(Object.entries(opts.env).flatMap(([key,value])=>{let canonical=String(key??"").trim(),normalized=readOptionalString3(value);if(!canonical||!RUNTIME_ENV_KEYS.has(canonical)||!normalized)return[];return[[canonical,normalized]]})),applyRuntimeEnvIfMissing=(target,key,source)=>{let value=source[key];if(!value||target[key])return;target[key]=value},mergedEnv={DIMCODE_VERSION:version2??"dev",DIMCODE_BETA_UPDATES:savedConfig.beta===!0?"1":"0",...v("DIMCODE_STARTUP_TOAST")?{DIMCODE_STARTUP_TOAST:v("DIMCODE_STARTUP_TOAST")}:{}},savedProviderId=normalizeProviderId(savedConfig.providerId),savedConnections=savedConfig.providerConnections??{},savedActiveModelByProvider=savedConfig.activeModelByProvider??{},normalizedSavedCustomProviders=(Array.isArray(savedConfig.customProviders)?savedConfig.customProviders:[]).map((provider)=>{let adapter2=String(provider?.adapter??"").trim(),models=Array.isArray(provider?.models)?backfillCustomProviderModels(provider.models,{adapter:adapter2}):provider?.models;return{...provider,...Array.isArray(models)?{models}:{}}}),legacyCustom=savedConfig.customProvider??{},legacyBaseUrl=readOptionalString3(legacyCustom?.baseUrl),legacyApiKey=readOptionalString3(legacyCustom?.apiKey),rawProviderId=(()=>{if(isLegacyCustomProviderId(savedProviderId)&&normalizedSavedCustomProviders.length){let fallbackId=readOptionalString3(normalizedSavedCustomProviders[0]?.id);if(fallbackId){if(config2.settings)config2.settings.providerId=fallbackId;return fallbackId}}return savedProviderId})(),{candidates,existingProviderIds}=buildProviderSelectionCandidates({connections:savedConnections,customProviders:normalizedSavedCustomProviders,legacyCustom,rememberedModels:{...savedActiveModelByProvider}}),rememberedModels=stripUnknownActiveModelSelections({...savedActiveModelByProvider},existingProviderIds),selection=resolveProviderSelection({candidates,preferredProviderId:rawProviderId,rememberedModels}),providerId=readOptionalString3(selection.providerId),providerModel=readOptionalString3(selection.modelId);if(config2.settings)if(providerId)config2.settings.providerId=providerId;else delete config2.settings.providerId;let customProvider=isCustomProviderId(providerId)?normalizedSavedCustomProviders.find((p)=>String(p?.id??"").trim()===providerId):void 0,builtin=providerId&&!isCustomProviderId(providerId)&&!isLegacyCustomProviderId(providerId)?getBuiltinProvider(providerId):void 0,savedConnection=savedConnections[providerId??""],savedConnectionBaseUrl=readOptionalString3(savedConnection?.baseUrl),builtinBaseUrl=readOptionalString3(getProviderBaseUrl(builtin)),adapter=isCustomProviderId(providerId)?String(customProvider?.adapter??"").trim():isLegacyCustomProviderId(providerId)?"openai":providerId==="openai"&&savedConnectionBaseUrl&&savedConnectionBaseUrl!==builtinBaseUrl?"openai":getProviderAdapter(builtin),providerBaseUrl=isCustomProviderId(providerId)?readOptionalString3(customProvider?.baseUrl):isLegacyCustomProviderId(providerId)?legacyBaseUrl:readOptionalString3(resolveBuiltinProviderBaseUrl(builtin,savedConnection?.baseUrl)),providerApiKey=isCustomProviderId(providerId)?readOptionalString3(customProvider?.apiKey):isLegacyCustomProviderId(providerId)?legacyApiKey:readOptionalString3(savedConnection?.apiKey),modelCapabilityFallbackModels=isCustomProviderId(providerId)||isLegacyCustomProviderId(providerId)||builtin?.customModels?listCustomProviderModelFallbackModels():void 0,resolvedModelContextWindow=resolveProviderSelectionContextWindow({providerId,modelId:providerModel,connections:savedConnections,customProviders:normalizedSavedCustomProviders}),resolvedModelMaxOutputTokens=resolveProviderSelectionMaxOutputTokens({providerId,modelId:providerModel,connections:savedConnections,customProviders:normalizedSavedCustomProviders});if(isLegacyCustomProviderId(providerId)&&!providerBaseUrl&&!providerApiKey&&!providerModel)throw Error("Legacy custom provider config is missing. Please run /connect to add a custom provider and select a model.");let modelCapabilities=resolveProviderModelCapabilities({providerId,modelId:providerModel,connectionModels:savedConnection?.models,builtinModels:builtin?.models,customProviderModels:customProvider?.models,legacyCustomModels:Array.isArray(legacyCustom?.models)?legacyCustom.models:void 0,fallbackModels:modelCapabilityFallbackModels}),runtimeConfig={modelId:providerModel??"deepseek-v3.1",adapter:adapter||"openai",provider:providerId??adapter,baseUrl:providerBaseUrl,apiKey:providerApiKey,nextApiOAuth:providerId==="dimcode-api-oauth"||void 0,...customProvider?.responsesAutoPromptCacheKey===!0?{responsesAutoPromptCacheKey:!0}:{},...customProvider?.responsesUseSessionId===!0?{responsesUseSessionId:!0}:{},...modelCapabilities?{modelCapabilities}:{},...typeof resolvedModelContextWindow==="number"&&resolvedModelContextWindow>0?{maxInputTokens:resolvedModelContextWindow}:{},...typeof resolvedModelMaxOutputTokens==="number"&&resolvedModelMaxOutputTokens>0?{maxOutputTokens:resolvedModelMaxOutputTokens}:{},temperature:readOptionalNumber2(saved.temperature)??void 0,interleavedThinking:typeof saved.interleavedThinking==="boolean"?saved.interleavedThinking:void 0,reasoningEffort:(()=>{let perModel=saved.reasoningEffortByModel;if(perModel&&providerModel){let value=readOptionalString3(perModel[providerModel]);if(value)return value}return readOptionalString3(saved.reasoningEffort)??void 0})()};if(!mergedEnv.DIMCODE_TOOL_APPROVALS&&saved.toolApprovals){let raw=String(saved.toolApprovals),mapped=raw==="auto"||raw==="all"?"auto":raw==="strict"||raw==="manual"?"strict":raw==="normal"?"normal":void 0;if(mapped)mergedEnv.DIMCODE_TOOL_APPROVALS=mapped}if(!mergedEnv.DIMCODE_LANG&&readOptionalString3(saved.locale))mergedEnv.DIMCODE_LANG=readOptionalString3(saved.locale);if(!mergedEnv.DIMCODE_THEME&&readOptionalString3(saved.themeMode))mergedEnv.DIMCODE_THEME=readOptionalString3(saved.themeMode);if(!mergedEnv.DIMCODE_REASONING_EFFORT){let perModelMap=saved.reasoningEffortByModel,resolved=(perModelMap&&providerModel?readOptionalString3(perModelMap[providerModel]):void 0)??readOptionalString3(saved.reasoningEffort);if(resolved)mergedEnv.DIMCODE_REASONING_EFFORT=resolved}if(usesCcMock(builtin))mergedEnv.DIMCODE_CCMOCK="1";else delete mergedEnv.DIMCODE_CCMOCK;return applyRuntimeEnvIfMissing(mergedEnv,"DIMCODE_NO_INTERACTION",explicitRuntimeEnv),{context:{system:resolveSystemPrompt(mergedEnv),cwd,env:mergedEnv,runtimeConfig,...savedFocusFiles?.length?{focusFiles:savedFocusFiles}:{}},cacheDir:loadedCache.dir,cacheFile:loadedCache.filePath,cache,configDir:loadedConfig.dir,configFile:loadedConfig.filePath,config:config2,toolsFile:loadedTools.filePath,tools:loadedTools.tools,mcpJsonFile:loadedMcp.filePath,mcpServers:loadedMcp.servers,mcpPhase:fastStart?"deferred":"syncing",mcpConnectedCount:0,mcpConfiguredCount:loadedMcp.servers.length}}async function readRepoPackageVersion(cwd){try{let[{readFile:readFile10},path29]=await Promise.all([import("node:fs/promises"),import("node:path")]),raw=await readFile10(path29.join(cwd,"package.json"),"utf8"),parsed=JSON.parse(raw),v=typeof parsed?.version==="string"?parsed.version:null;return v&&v.trim()?v.trim():null}catch{return null}}import{createHash as createHash4,randomUUID as randomUUID7}from"node:crypto";import{copyFile as copyFile2,mkdir as mkdir10,readdir as readdir6,readFile as readFile10,rename as rename2,rm as rm7,stat as stat6,writeFile as writeFile9}from"node:fs/promises";import{homedir as homedir3}from"node:os";import path29 from"node:path";import process12 from"node:process";var BLOB_CACHE_DIR2="blob-cache",BLOB_DIR2="blobs",ATTACHMENTS_DIR2="attachments",META_DIR2="meta",BLOB_TTL_MS2=86400000,CLEANUP_MIN_INTERVAL_MS2=3600000,FILE_ID_PATTERN=/^[\w.-]{1,128}$/,HOME_SESSION_CACHE_ID="_home",IMAGE_EXTENSIONS=new Set(["png","jpg","jpeg","gif","svg","webp","bmp","ico"]),TEXT_LIKE_EXTENSIONS=new Set(["txt","text","md","markdown","mdx","rst","log","json","jsonl","json5","yaml","yml","toml","ini","cfg","conf","properties","env","xml","csv","tsv","html","htm","css","scss","less","sass","js","jsx","ts","tsx","mjs","cjs","mts","cts","vue","svelte","astro","py","rb","php","go","rs","java","kt","swift","c","cc","cpp","cxx","h","hh","hpp","hxx","m","mm","cs","sh","bash","zsh","fish","ps1","sql","graphql","gql","proto","diff","patch","gitignore","gitattributes","editorconfig","dockerfile","makefile","mk","lock"]),EXT_MIME={".png":"image/png",".jpg":"image/jpeg",".jpeg":"image/jpeg",".gif":"image/gif",".webp":"image/webp",".bmp":"image/bmp",".ico":"image/x-icon",".svg":"image/svg+xml",".mp4":"video/mp4",".mov":"video/quicktime",".m4v":"video/x-m4v",".webm":"video/webm",".avi":"video/x-msvideo",".mkv":"video/x-matroska",".mpeg":"video/mpeg",".mpg":"video/mpeg",".wmv":"video/x-ms-wmv",".3gp":"video/3gpp",".mp3":"audio/mpeg",".wav":"audio/wav",".ogg":"audio/ogg",".flac":"audio/flac",".m4a":"audio/mp4",".pdf":"application/pdf",".txt":"text/plain",".md":"text/markdown",".json":"application/json",".yaml":"text/yaml",".yml":"text/yaml",".toml":"text/plain",".ini":"text/plain",".xml":"application/xml",".csv":"text/csv"},lastCleanupAt2=0;function resolveStateDir3(){let dimcodeHome=String(process12.env.DIMCODE_HOME??"").trim();if(dimcodeHome)return path29.resolve(dimcodeHome,"state");return path29.resolve(homedir3(),".dimcode","state")}function resolveSessionCacheDir2(sessionId){return path29.resolve(resolveStateDir3(),BLOB_CACHE_DIR2,sessionId)}function normalizeSessionId2(raw){let value=String(raw??"").trim();if(!value)return null;if(value==="."||value==="..")return null;if(value.includes("/")||value.includes("\\"))return null;if(value.includes("\x00"))return null;return value}function getFileExtension(filePath){let ext=path29.extname(filePath||"").toLowerCase();if(!ext)return"";return ext.startsWith(".")?ext.slice(1):ext}function basenameFromPath(filePath){return path29.basename(String(filePath??"").trim())}function parseAttachmentPathInfo(absPath){let blobMatch=normalizeMaybePath(absPath).match(/\/blob-cache\/([^/]+)\/attachments\/([^/]+)$/);if(!blobMatch)return null;let sessionId=normalizeSessionId2(blobMatch[1]??""),fileName=basenameFromPath(blobMatch[2]??"");if(!sessionId||!fileName)return null;return{sessionId,fileName}}function isTextLikeFilePath(filePath){let ext=getFileExtension(filePath);return Boolean(ext&&TEXT_LIKE_EXTENSIONS.has(ext))}function shouldCacheFileToSessionAttachment(filePath){return!isTextLikeFilePath(filePath)}function isSessionCachedImagePath(absPath){let info=parseAttachmentPathInfo(absPath);if(!info)return!1;let ext=getFileExtension(info.fileName);return Boolean(ext&&IMAGE_EXTENSIONS.has(ext))}function isHomeSessionAttachmentPath(absPath){let info=parseAttachmentPathInfo(absPath);return Boolean(info&&info.sessionId===HOME_SESSION_CACHE_ID)}function guessMimeTypeFromPath(filePath){let ext=path29.extname(filePath).toLowerCase();return EXT_MIME[ext]||"application/octet-stream"}function countLines2(text){if(!text)return 0;return text.split(`
|
|
1080
1080
|
`).length}function normalizeMaybePath(raw){return String(raw??"").replace(/\\/g,"/")}async function ensureBlobDirs2(sessionDir){let blobsDir=path29.join(sessionDir,BLOB_DIR2),metaDir=path29.join(sessionDir,META_DIR2);try{return await mkdir10(blobsDir,{recursive:!0}),await mkdir10(metaDir,{recursive:!0}),{blobsDir,metaDir}}catch{return null}}async function ensureAttachmentDirs(sessionDir){let attachmentsDir=path29.join(sessionDir,ATTACHMENTS_DIR2),metaDir=path29.join(sessionDir,META_DIR2);try{return await mkdir10(attachmentsDir,{recursive:!0}),await mkdir10(metaDir,{recursive:!0}),{attachmentsDir,metaDir}}catch{return null}}async function copyFileUnique(src,destDir,baseName){let safeBaseName=basenameFromPath(baseName)||basenameFromPath(src)||"attachment",ext=path29.extname(safeBaseName),stem=ext?safeBaseName.slice(0,-ext.length):safeBaseName,candidate=path29.join(destDir,safeBaseName);for(let i=0;i<40;i++){try{await copyFile2(src,candidate);let info=await stat6(candidate);if(info.isFile()&&info.size>0)return candidate}catch{}let suffix=`-${i+1}`;candidate=path29.join(destDir,`${stem}${suffix}${ext}`)}return null}async function readAttachmentMetaByPath(absPath){let info=parseAttachmentPathInfo(absPath);if(!info)return null;let metaDir=path29.join(resolveSessionCacheDir2(info.sessionId),META_DIR2),entries=[];try{entries=await readdir6(metaDir)}catch{return null}for(let entry of entries){if(!entry.endsWith(".json"))continue;let metaPath=path29.join(metaDir,entry);try{let raw=await readFile10(metaPath,"utf8"),meta3=JSON.parse(raw);if(!meta3||typeof meta3!=="object")continue;if(String(meta3.kind??"")!=="attachment")continue;if(String(meta3.stored_name??"")!==info.fileName)continue;let fileId=String(meta3.file_id??"").trim();if(!FILE_ID_PATTERN.test(fileId))continue;return{fileId,metaPath,meta:meta3}}catch{}}return null}async function writeSessionBlob2(opts){let sessionDir=resolveSessionCacheDir2(opts.sessionId),dirs=await ensureBlobDirs2(sessionDir);if(!dirs)return null;let fileId=`blob-${randomUUID7().replace(/-/g,"")}`,blobPath=path29.join(dirs.blobsDir,`${fileId}.txt`),metaPath=path29.join(dirs.metaDir,`${fileId}.json`),lineCount=countLines2(opts.content),sha256=createHash4("sha256").update(opts.content).digest("hex"),byteSize=Buffer.byteLength(opts.content,"utf-8"),nowIso=new Date().toISOString();try{return await writeFile9(blobPath,opts.content,"utf8"),await writeFile9(metaPath,JSON.stringify({file_id:fileId,kind:"text",sha256,line_count:lineCount,byte_size:byteSize,created_at:nowIso,source:String(opts.source??"unknown")},null,2),"utf8"),{fileId,filePath:blobPath,lineCount,sha256,byteSize}}catch{return null}}async function cacheFileToSessionAttachment(opts){let cleanedPath=String(opts.sourcePath??"").trim();if(!cleanedPath)return null;let sessionId=normalizeSessionId2(opts.sessionId);if(!sessionId)return null;let sourceInfo;try{sourceInfo=await stat6(cleanedPath)}catch{return null}if(!sourceInfo.isFile()||sourceInfo.size<=0)return null;await cleanupExpiredSessionCaches2({ttlMs:BLOB_TTL_MS2,logger:opts.logger}).catch(()=>{});let sessionDir=resolveSessionCacheDir2(sessionId),dirs=await ensureAttachmentDirs(sessionDir);if(!dirs)return null;let fileId=`att-${randomUUID7().replace(/-/g,"")}`,preferredBaseName=basenameFromPath(String(opts.preferredBaseName??"").trim()||basenameFromPath(cleanedPath)),storedPath=await copyFileUnique(cleanedPath,dirs.attachmentsDir,preferredBaseName);if(!storedPath)return null;let metaPath=path29.join(dirs.metaDir,`${fileId}.json`),mediaType=String(opts.mediaType??"").trim()||guessMimeTypeFromPath(storedPath),originalName=basenameFromPath(cleanedPath),storedName=basenameFromPath(storedPath),nowIso=new Date().toISOString();try{return await writeFile9(metaPath,JSON.stringify({file_id:fileId,kind:"attachment",byte_size:sourceInfo.size,created_at:nowIso,source:String(opts.source??"unknown"),media_type:mediaType,original_name:originalName,stored_name:storedName},null,2),"utf8"),opts.logger?.("session_attachment_cached",{sessionId,fileId,byteSize:sourceInfo.size,mediaType,originalName,storedName}),{fileId,filePath:storedPath,byteSize:sourceInfo.size,mediaType,originalName}}catch{return await rm7(storedPath,{force:!0}).catch(()=>{}),null}}async function deleteSessionAttachmentByPath(absPath,logger){let info=parseAttachmentPathInfo(absPath);if(!info)return!1;try{await rm7(absPath,{force:!0});let metaMatch=await readAttachmentMetaByPath(absPath);if(metaMatch)await rm7(metaMatch.metaPath,{force:!0});return await Promise.all([removeDirIfEmpty(path29.join(resolveSessionCacheDir2(info.sessionId),ATTACHMENTS_DIR2)),removeDirIfEmpty(path29.join(resolveSessionCacheDir2(info.sessionId),META_DIR2)),removeDirIfEmpty(resolveSessionCacheDir2(info.sessionId))]),logger?.("session_attachment_deleted",{sessionId:info.sessionId,fileName:info.fileName}),!0}catch{return!1}}async function relocateSessionAttachmentPath(absPath,targetSessionId,logger){let sourceInfo=parseAttachmentPathInfo(absPath),targetSid=normalizeSessionId2(targetSessionId);if(!sourceInfo||!targetSid)return null;if(sourceInfo.sessionId===targetSid)return absPath;let metaMatch=await readAttachmentMetaByPath(absPath),preferredBaseName=String(metaMatch?.meta.stored_name??basenameFromPath(absPath)).trim()||basenameFromPath(absPath),mediaType=String(metaMatch?.meta.media_type??"").trim()||guessMimeTypeFromPath(absPath),source=String(metaMatch?.meta.source??"attachment_relocate").trim()||"attachment_relocate",cached2=await cacheFileToSessionAttachment({sourcePath:absPath,sessionId:targetSid,source,preferredBaseName,mediaType,logger});if(!cached2)return null;return await deleteSessionAttachmentByPath(absPath,logger).catch(()=>!1),cached2.filePath}async function cleanupExpiredSessionCaches2(opts){let now=Date.now();if(now-lastCleanupAt2<CLEANUP_MIN_INTERVAL_MS2)return;lastCleanupAt2=now;let ttlMs=Math.max(1000,Math.floor(opts?.ttlMs??BLOB_TTL_MS2)),cutoff=now-ttlMs;await cleanupDedicatedCacheRoot2(path29.join(resolveStateDir3(),BLOB_CACHE_DIR2),cutoff,opts?.logger)}async function cleanupDedicatedCacheRoot2(cacheRoot,cutoff,logger){let entries=[];try{entries=await readdir6(cacheRoot)}catch{return}await Promise.all(entries.map(async(entry)=>{let sid=normalizeSessionId2(entry);if(!sid)return;let sessionDir=path29.join(cacheRoot,sid),candidates=[sessionDir,path29.join(sessionDir,BLOB_DIR2),path29.join(sessionDir,ATTACHMENTS_DIR2),path29.join(sessionDir,META_DIR2)],mtimes=[];for(let candidate of candidates)try{let info=await stat6(candidate);if(info.isDirectory()||info.isFile())mtimes.push(info.mtimeMs)}catch{}if(!mtimes.length)return;if(Math.max(...mtimes)>=cutoff)return;try{await rm7(sessionDir,{recursive:!0,force:!0}),logger?.("session_cache_ttl_deleted",{sessionId:sid,mtimeMs:Math.max(...mtimes),cutoff})}catch{}}))}async function removeDirIfEmpty(dir){try{if((await readdir6(dir)).length===0)await rm7(dir,{recursive:!0,force:!0})}catch{}}var COMMIT_ID_RE=/^[0-9a-f]{7,40}$/i;function getCommitIdFromMention(value){let raw=String(value||"");if(!raw.startsWith("git:commit:"))return null;let sha=raw.slice(11).trim();if(!COMMIT_ID_RE.test(sha))return null;return sha}function formatCommitObjectPath(sha){let safe=String(sha||"").trim();if(!safe)return"";return`.git/objects/${safe.slice(0,2)}/${safe}`}function renderCommitMarkdownLink(sha){let safe=String(sha||"").trim();if(!safe)return"";let path30=formatCommitObjectPath(safe);return`[${safe}](${path30})`}function stripLeadingFocusFilesBlock(text){let normalized=String(text??"").replace(/\r/g,"");if(!normalized)return"";let lines=normalized.split(`
|
|
1081
1081
|
`),header=String(lines[0]??"").trim();if(header!=="[focus_files]"&&header!=="[user_focus_files]"){let inlineStripped=((raw)=>{let s=String(raw??"");if(!s)return null;let idx=0,matched2=0;while(idx<s.length){while(idx<s.length&&(s[idx]===" "||s[idx]==="\t"||s[idx]===`
|
|
1082
1082
|
`))idx++;let m=s.slice(idx).match(/^\[([^\]]*)\]\(((?:\\\)|[^)])+)\)/);if(!m)break;let path30=String(m[2]??"").trim();if(path30.startsWith("<")&&path30.endsWith(">"))path30=path30.slice(1,-1);if(path30=path30.replace(/\\\)/g,")").trim(),!(path30.startsWith("/")||/^[A-Z]:[\\/]/i.test(path30)))break;matched2++,idx+=m[0].length}if(!matched2)return null;let rest=s.slice(idx);if(rest=rest.replace(/^[ \t]+/g,""),rest.startsWith(`
|
|
@@ -1170,14 +1170,14 @@ tc:${toolCalls}`}function assistantDisplaySignature(msg){let thinking=msg.parts.
|
|
|
1170
1170
|
md:${markdown}
|
|
1171
1171
|
tc:${toolCalls}`}function userTranscriptSignature(msg){let content=String(msg.content??"").trim(),focusFiles=Array.isArray(msg?.focusFiles)?msg.focusFiles.map((f2)=>String(f2??"").trim()).filter(Boolean).join(`
|
|
1172
1172
|
`):"";return[content,focusFiles].filter(Boolean).join(`
|
|
1173
|
-
`).trim()}function messageTranscriptSignature(msg){if(msg.role==="assistant"){let sig=assistantTranscriptSignature(msg);return sig?`assistant:${sig}`:""}if(msg.role==="user"){let sig=userTranscriptSignature(msg);return sig?`user:${sig}`:""}return""}function assistantThinkingCollapsePreserveKey(msg){let messageId=String(msg?.id??"").trim();if(messageId)return`id:${messageId}`;let sig=assistantDisplaySignature(msg);return sig?`sig:${sig}`:""}function collectLocalThinkingCollapsedState(messages){let byKey=new Map;for(let msg of messages){if(!msg||msg.role!=="assistant")continue;let collapsedByOrdinal=msg.parts.filter((p2)=>p2.type==="thinking").map((p2)=>Boolean(p2.collapsed));if(collapsedByOrdinal.length===0)continue;let key=assistantThinkingCollapsePreserveKey(msg);if(!key)continue;let queue=byKey.get(key)??[];queue.push([...collapsedByOrdinal]),byKey.set(key,queue)}return byKey}function restoreLocalThinkingCollapsedState(store3,localThinkingCollapsedState){if(localThinkingCollapsedState.size===0)return;let changed=!1,next=store3.state.messages.map((msg)=>{if(!msg||msg.role!=="assistant")return msg;let key=assistantThinkingCollapsePreserveKey(msg);if(!key)return msg;let queue=localThinkingCollapsedState.get(key);if(!queue||queue.length===0)return msg;let collapsedByOrdinal=queue.shift()??[];if(queue.length===0)localThinkingCollapsedState.delete(key);if(collapsedByOrdinal.length===0)return msg;let thinkingOrdinal=0,messageChanged=!1,parts=msg.parts.map((part)=>{if(part.type!=="thinking")return part;let collapsed=collapsedByOrdinal[thinkingOrdinal];if(thinkingOrdinal+=1,typeof collapsed!=="boolean"||part.collapsed===collapsed)return part;return messageChanged=!0,{...part,collapsed}});if(!messageChanged)return msg;return changed=!0,{...msg,parts}});if(changed)store3.replaceMessages(next)}function cloneLlmMetaPart(part){if(!part||typeof part!=="object")return part;return{...part}}function collectLocalAssistantLlmMetaBySignature(messages){let bySignature=new Map;for(let msg of messages){if(!msg||msg.role!=="assistant")continue;if(!msg.parts.some((p2)=>p2.type==="llm_meta"))continue;let signature=assistantLlmMetaPreserveSignature(msg);if(!signature)continue;let llmMetaParts=msg.parts.filter((p2)=>p2.type==="llm_meta").map((p2)=>cloneLlmMetaPart(p2));if(llmMetaParts.length===0)continue;let queue=bySignature.get(signature)??[];queue.push(llmMetaParts),bySignature.set(signature,queue)}return bySignature}function mergeLocalAssistantLlmMetaBySignature(uiMessages,localLlmMetaBySignature){if(localLlmMetaBySignature.size===0)return;for(let i2=0;i2<uiMessages.length;i2++){let msg=uiMessages[i2];if(!msg||msg.role!=="assistant")continue;if(msg.parts.some((p2)=>p2.type==="llm_meta"))continue;let signature=assistantLlmMetaPreserveSignature(msg);if(!signature)continue;let queue=localLlmMetaBySignature.get(signature);if(!queue||queue.length===0)continue;let llmMetaParts=queue.shift()??[];if(queue.length===0)localLlmMetaBySignature.delete(signature);if(llmMetaParts.length===0)continue;uiMessages[i2]={...msg,parts:[...msg.parts,...llmMetaParts]}}}function collectLocalMessageHeaderMetaBySignature(messages){let bySignature=new Map;for(let msg of messages){if(!msg||msg.role!=="user"&&msg.role!=="assistant")continue;let createdAtMs=Number(msg?.createdAtMs),modelId=String(msg?.modelId??"").trim()||void 0;if(!Number.isFinite(createdAtMs)&&!modelId)continue;let signature=msg.role==="user"?userTranscriptSignature(msg):assistantDisplaySignature(msg);if(!signature)continue;let key=`${msg.role}:${signature}`,queue=bySignature.get(key)??[];queue.push({...Number.isFinite(createdAtMs)?{createdAtMs:Math.floor(createdAtMs)}:{},...modelId?{modelId}:{}}),bySignature.set(key,queue)}return bySignature}function mergeLocalMessageHeaderMetaBySignature(uiMessages,localHeaderMetaBySignature){if(localHeaderMetaBySignature.size===0)return;for(let i2=0;i2<uiMessages.length;i2++){let msg=uiMessages[i2];if(!msg||msg.role!=="user"&&msg.role!=="assistant")continue;let hasCreatedAt=Number.isFinite(Number(msg?.createdAtMs)),hasModelId=Boolean(String(msg?.modelId??"").trim());if(hasCreatedAt&&hasModelId)continue;let signature=msg.role==="user"?userTranscriptSignature(msg):assistantDisplaySignature(msg);if(!signature)continue;let key=`${msg.role}:${signature}`,queue=localHeaderMetaBySignature.get(key);if(!queue||queue.length===0)continue;let headerMeta=queue.shift()??{};if(queue.length===0)localHeaderMetaBySignature.delete(key);let nextCreatedAtMs=hasCreatedAt?Number(msg?.createdAtMs):Number(headerMeta.createdAtMs),nextModelId=hasModelId?String(msg?.modelId??"").trim():String(headerMeta.modelId??"").trim(),next={...msg,...Number.isFinite(nextCreatedAtMs)?{createdAtMs:Math.floor(nextCreatedAtMs)}:{},...nextModelId?{modelId:nextModelId}:{}};uiMessages[i2]=next}}function collectAssistantToolCallIds(msg){let out=[],seen=new Set;for(let part of msg.parts){if(part.type!=="tool_call")continue;let id2=String(part?.call?.id??"").trim();if(!id2||seen.has(id2))continue;seen.add(id2),out.push(id2)}return out}function hasAssistantUserFacingContent(msg){return msg.parts.some((part)=>{if(part.type==="markdown")return Boolean(String(part?.markdown??"").trim());return part.type==="todo"||part.type==="plan"||part.type==="approve"||part.type==="info"})}function llmMetaPartsSignature(parts){return parts.map((part)=>{let p2=part;if(!p2||p2.type!=="llm_meta")return"";let durationMs=Math.floor(Number(p2.durationMs??0)),modelId=String(p2.modelId??"").trim(),toolCalls=Math.floor(Number(p2.toolCalls??0)),tokensUsed=Math.floor(Number(p2.tokensUsed??0)),changedFiles=Array.isArray(p2.changedFiles)?p2.changedFiles.map((f2)=>String(f2??"").trim()).filter(Boolean).join("|"):"",changedFileDetails=Array.isArray(p2.changedFileDetails)?p2.changedFileDetails.map((item)=>{let path31=String(item?.path??"").trim(),added=Math.floor(Number(item?.added??-1)),removed=Math.floor(Number(item?.removed??-1));return`${path31}:${added}:${removed}`}).filter(Boolean).join("|"):"";return[durationMs,modelId,toolCalls,tokensUsed,changedFiles,changedFileDetails].join(":")}).filter(Boolean).join("||")}function collectLocalAssistantLlmMetaRecords(messages){let out=[];for(let msg of messages){if(!msg||msg.role!=="assistant")continue;let llmMetaParts=msg.parts.filter((p2)=>p2.type==="llm_meta").map((p2)=>cloneLlmMetaPart(p2));if(llmMetaParts.length===0)continue;out.push({llmMetaParts,toolCallIds:collectAssistantToolCallIds(msg)})}return out}function mergeLocalAssistantLlmMetaByToolCallFlow(uiMessages,localRecords){if(localRecords.length===0)return;let existingLlmMetaSignatures=new Set;for(let msg of uiMessages){if(!msg||msg.role!=="assistant")continue;let llmMetaParts=msg.parts.filter((p2)=>p2.type==="llm_meta");if(llmMetaParts.length===0)continue;existingLlmMetaSignatures.add(llmMetaPartsSignature(llmMetaParts))}let searchStart=0;for(let record3 of localRecords){let sig=llmMetaPartsSignature(record3.llmMetaParts);if(!sig||existingLlmMetaSignatures.has(sig))continue;let anchorIdx=-1;if(record3.toolCallIds.length>0)for(let i2=searchStart;i2<uiMessages.length;i2++){let msg=uiMessages[i2];if(!msg||msg.role!=="assistant")continue;if(collectAssistantToolCallIds(msg).some((id2)=>record3.toolCallIds.includes(id2))){anchorIdx=i2;break}}if(anchorIdx<0){for(let i2=searchStart;i2<uiMessages.length;i2++)if(uiMessages[i2]?.role==="assistant"){anchorIdx=i2;break}}if(anchorIdx<0)continue;let endIdx=anchorIdx;for(let i2=anchorIdx+1;i2<uiMessages.length;i2++){let msg=uiMessages[i2];if(msg?.role==="user")break;if(msg?.role==="assistant")endIdx=i2}let targetIdx=endIdx;for(let i2=endIdx;i2>=anchorIdx;i2--){let msg=uiMessages[i2];if(!msg||msg.role!=="assistant")continue;if(hasAssistantUserFacingContent(msg)){targetIdx=i2;break}}let target=uiMessages[targetIdx];if(!target||target.role!=="assistant"){searchStart=endIdx+1;continue}if(target.parts.some((p2)=>p2.type==="llm_meta")){searchStart=endIdx+1;continue}uiMessages[targetIdx]={...target,parts:[...target.parts,...record3.llmMetaParts]},existingLlmMetaSignatures.add(sig),searchStart=endIdx+1}}function buildSignatureCounts(signatures){let counts=new Map;for(let sig of signatures){if(!sig)continue;counts.set(sig,(counts.get(sig)??0)+1)}return counts}function consumeSignatureCount(counts,signature){let remaining=counts.get(signature)??0;if(remaining<=0)return!1;if(remaining===1)counts.delete(signature);else counts.set(signature,remaining-1);return!0}function buildAnchoredInsertionPlan(existingMessages,candidates){let existingCounts=buildSignatureCounts(existingMessages.map(messageTranscriptSignature)),pendingAnchorSig=null,toInsert=[];for(let m2 of candidates){let sig=messageTranscriptSignature(m2);if(!sig){pendingAnchorSig=null;continue}if(consumeSignatureCount(existingCounts,sig)){pendingAnchorSig=sig;continue}toInsert.push({message:m2,anchorSig:pendingAnchorSig}),pendingAnchorSig=sig}return toInsert}function findAnchoredInsertIndex(messages,anchorSig){if(!anchorSig)return-1;let anchorIdx=-1;for(let i2=messages.length-1;i2>=0;i2--)if(messageTranscriptSignature(messages[i2])===anchorSig){anchorIdx=i2;break}if(anchorIdx<0)return-1;let insertAt=anchorIdx+1;while(insertAt<messages.length&&messages[insertAt]?.role!=="user")insertAt++;return insertAt}function findChronologicalInsertIndex(messages,candidate){let ts=candidate.createdAtMs??0;if(ts<=0)return messages.length;let insertAt=0;for(let i2=0;i2<messages.length;i2++)if((messages[i2].createdAtMs??0)<=ts)insertAt=i2+1;return insertAt}function restoreAnchoredMessages(store3,candidates){let toInsert=buildAnchoredInsertionPlan(store3.state.messages,candidates);if(toInsert.length===0)return;let next=store3.state.messages.slice();for(let{message,anchorSig}of toInsert){let insertAt=(()=>{let anchored=findAnchoredInsertIndex(next,anchorSig);if(anchored>=0)return anchored;return findChronologicalInsertIndex(next,message)})();next.splice(insertAt,0,message)}store3.replaceMessages(next)}function restoreErrorAssistantMessages(store3,candidates){if(candidates.length===0)return;let next=store3.state.messages.slice(),usedReplacementIndexes=new Set,changed=!1;for(let{message:candidate,anchorSig}of candidates){let exactSig=assistantErrorExactSignature(candidate);if(next.findIndex((m2)=>{if(!m2||m2.role!=="assistant")return!1;return assistantErrorExactSignature(m2)===exactSig})>=0)continue;let mergeSig=assistantErrorMergeSignature(candidate);if(mergeSig){let replaceIndex=next.findIndex((m2,index)=>{if(usedReplacementIndexes.has(index)||!m2||m2.role!=="assistant")return!1;return assistantErrorMergeSignature(m2)===mergeSig});if(replaceIndex>=0){next[replaceIndex]=candidate,usedReplacementIndexes.add(replaceIndex),changed=!0;continue}}let insertAt=(()=>{let anchored=findAnchoredInsertIndex(next,anchorSig);if(anchored>=0)return anchored;return findChronologicalInsertIndex(next,candidate)})();next.splice(insertAt,0,candidate),changed=!0}if(changed)store3.replaceMessages(next)}function applyHydrationRestorePhases(store3,phases){for(let phase of phases){if(phase.kind==="anchored"){restoreAnchoredMessages(store3,phase.candidates);continue}restoreErrorAssistantMessages(store3,phase.candidates)}}function hydrateStoreFromSnapshot(store3,snapshot,opts){let previousSessionId=String(store3.state.sessionId??"").trim(),hadLocalMessagesBeforeHydrate=store3.state.messages.length>0,preserveLocalSyntheticErrors=Boolean(opts?.preserveLocalSyntheticErrors),preserveLocalInterruptedMessages=Boolean(opts?.preserveLocalInterruptedMessages),preserveLocalCompactMessages=Boolean(opts?.preserveLocalCompactMessages),preserveLocalCompressionMessages=Boolean(opts?.preserveLocalCompressionMessages),localErrorAssistants=preserveLocalSyntheticErrors?collectRestorableErrorAssistants(store3.state.messages):[],localInterruptedRoundMessages=preserveLocalInterruptedMessages?collectInterruptedRoundMessages(store3.state.messages):[],id2=snapshotId(snapshot),sameSession=Boolean(id2)&&id2===previousSessionId,localSessionMeta=sameSession&&store3.state.sessionMeta?mergeSessionUiMetadata2(store3.state.sessionMeta,{}):null,preserveLocalSessionHistoryDirty=sameSession&&Boolean(store3.state.sessionHistoryDirty),localAssistantLlmMetaBySignature=sameSession?collectLocalAssistantLlmMetaBySignature(store3.state.messages):new Map,localAssistantLlmMetaRecords=sameSession?collectLocalAssistantLlmMetaRecords(store3.state.messages):[],localMessageHeaderMetaBySignature=sameSession?collectLocalMessageHeaderMetaBySignature(store3.state.messages):new Map,localThinkingCollapsedState=sameSession?collectLocalThinkingCollapsedState(store3.state.messages):new Map,localLastRequestBudget=sameSession?normalizeLastRequestBudget(store3.state.lastRequestBudget):null,persistedLastRequestBudget=persistedLastRequestBudgetFromSnapshot(snapshot),shouldRestorePersistedCompactMessages=!sameSession||!hadLocalMessagesBeforeHydrate,persistedCompactMessages=shouldRestorePersistedCompactMessages?persistedCompactMessagesFromSnapshot(snapshot):[],localCompactMessages=preserveLocalCompactMessages&&sameSession&&!hadLocalMessagesBeforeHydrate?dedupeAssistantMessagesBySignature(collectLocalCompactMessages(store3.state.messages),{include:isCompactTranscriptMessage,limit:COMPACT_PERSISTED_MESSAGE_LIMIT}):[],localCompressionMessages=preserveLocalCompressionMessages&&sameSession?dedupeAssistantMessagesBySignature(collectLocalCompressionMessages(store3.state.messages),{include:isCompressionTranscriptMessage,limit:COMPRESSION_PERSISTED_MESSAGE_LIMIT}):[];if(id2)store3.state.sessionId=id2;let rawUiMessages=snapshotToUiMessages(snapshot),contextTranscript=splitSnapshotContextMessages(rawUiMessages),persistedInterruptedRoundMessages=dedupeAnchoredAssistantRoundMessages([...contextTranscript.interruptedMessages,...persistedInterruptedRoundMessagesFromSnapshot(snapshot)],{include:()=>!0,limit:INTERRUPTED_PERSISTED_MESSAGE_LIMIT}),persistedCompressionMessages=dedupeAssistantMessagesBySignature([...contextTranscript.compressionMessages,...persistedCompressionMessagesFromSnapshot(snapshot)],{include:isCompressionTranscriptMessage,limit:COMPRESSION_PERSISTED_MESSAGE_LIMIT}),persistedErrorMessages=dedupeErrorRestoreCandidates([...contextTranscript.errorMessages,...persistedErrorMessagesFromSnapshot(snapshot)]),uiMessages=contextTranscript.canonicalMessages.slice(),persistedCompactRestoreCandidates=shouldRestorePersistedCompactMessages?dedupeAssistantMessagesBySignature([...contextTranscript.compactMessages,...persistedCompactMessages],{include:isCompactTranscriptMessage,limit:COMPACT_PERSISTED_MESSAGE_LIMIT}):[];if(sameSession)mergeLocalMessageHeaderMetaBySignature(uiMessages,localMessageHeaderMetaBySignature),mergeLocalAssistantLlmMetaBySignature(uiMessages,localAssistantLlmMetaBySignature),mergeLocalAssistantLlmMetaByToolCallFlow(uiMessages,localAssistantLlmMetaRecords);let restorePhases=[{name:"persisted_interrupted",kind:"anchored",candidates:persistedInterruptedRoundMessages},{name:"persisted_compression",kind:"anchored",candidates:persistedCompressionMessages},{name:"persisted_compact",kind:"anchored",candidates:persistedCompactRestoreCandidates},{name:"persisted_error",kind:"error",candidates:persistedErrorMessages},{name:"local_interrupted",kind:"anchored",candidates:dedupeAnchoredAssistantRoundMessages(localInterruptedRoundMessages,{include:()=>!0,limit:INTERRUPTED_PERSISTED_MESSAGE_LIMIT})},{name:"local_compression",kind:"anchored",candidates:localCompressionMessages},{name:"local_compact",kind:"anchored",candidates:localCompactMessages},{name:"local_error",kind:"error",candidates:dedupeErrorRestoreCandidates(localErrorAssistants.map((message)=>({message,anchorSig:null})))}];if(store3.replaceMessages(uiMessages),applyHydrationRestorePhases(store3,restorePhases),sameSession)restoreLocalThinkingCollapsedState(store3,localThinkingCollapsedState);if(preserveLocalSessionHistoryDirty)store3.state.sessionHistoryDirty=!0;store3.clearRevertedMessages(),store3.state.selectedToolCallId=null,store3.state.runningAgentRound=!1,store3.state.runningToolCallId=null,store3.state.thinking.active=!1,store3.state.thinking.assistantId=null,store3.state.thinking.blockIndex=null,store3.state.expandedBashOutputs=new Set,store3.state.expandedToolOutputLineCounts=new Map,store3.state.unifiedEditDiffToolCallIds=new Set,store3.state.layoutDirtyMessageId=null,store3.state.layoutDirtySeq=0,store3.state.paused=null,store3.state.approval.active=null,store3.state.approval.pendingAutoRun=null,store3.state.approval.queue=[],store3.state.approval.decisions={};let meta3=readSessionUiMetadataFromSnapshot(snapshot),resolvedMeta=(()=>{if(!sameSession||!localSessionMeta)return meta3;let incomingUpdatedAt=Number(meta3.lastUpdatedAt??0);return Number(localSessionMeta.lastUpdatedAt??0)>incomingUpdatedAt?localSessionMeta:meta3})();if(store3.state.sessionMeta){let target=store3.state.sessionMeta;target.queue=[...resolvedMeta.queue],target.queueLength=resolvedMeta.queueLength,target.status=resolvedMeta.status,target.lastUpdatedAt=resolvedMeta.lastUpdatedAt,target.lastErrorCode=resolvedMeta.lastErrorCode??void 0,target.pinnedMessageIds=[...resolvedMeta.pinnedMessageIds],target.titleSuggestedAt=resolvedMeta.titleSuggestedAt??null}let resolvedLastRequestBudget=(()=>{if(sameSession&&localLastRequestBudget&&(!persistedLastRequestBudget||localLastRequestBudget.updatedAtMs>persistedLastRequestBudget.updatedAtMs))return localLastRequestBudget;return persistedLastRequestBudget})();store3.state.lastRequestBudget=cloneLastRequestBudget(resolvedLastRequestBudget),hydrateInlinePlanMarkdownPreviews(store3);for(let m2 of store3.state.messages){if(!m2||m2.role!=="assistant"||!Array.isArray(m2.parts))continue;for(let p2 of m2.parts)if(p2?.type==="tool_result"&&p2.result&&typeof store3.scheduleToolResultHighlight==="function")store3.scheduleToolResultHighlight(String(m2.id??""),p2.result)}let u2=snapshotUsage(snapshot);store3.hydrateSessionUsageTotals(u2)}function uiMessagesToSnapshotMessages(messages){let seed=Array.isArray(messages)?messages:[];return uiMessagesToRuntimeMessages(seed)}function normalizeLimit(input){let obj=input&&typeof input==="object"?input:{},context=readOptionalNumber2(obj.context),output=readOptionalNumber2(obj.output);if(context==null&&output==null)return;return{...context!=null?{context}:{},...output!=null?{output}:{}}}function buildUserCacheFromStore(opts){let store3=opts.store,prevSettings=opts.prev.settings??{},authMethod=readOptionalString3(prevSettings.authMethod);return{version:1,updatedAt:Date.now(),settings:{cwd:readOptionalString3(store3?.state?.context?.cwd),focusFiles:store3?.state?.context?.focusFiles??void 0,model:readOptionalString3(store3?.state?.config?.model),authMethod,temperature:readOptionalNumber2(store3?.state?.config?.temperature),interleavedThinking:store3?.state?.config?.interleaved_thinking,reasoningEffort:readOptionalString3(store3?.state?.config?.reasoning_effort),reasoningEffortByModel:(()=>{let raw=store3?.state?.ui?.reasoningEffortByModel;if(!raw)return;let entries=Object.entries(raw).map(([modelId,value])=>{let key=readOptionalString3(modelId),v2=readOptionalString3(value);return key&&v2?[key,v2]:null}).filter((e2)=>Boolean(e2));return entries.length?Object.fromEntries(entries):void 0})(),toolApprovals:(()=>{let m2=store3?.state?.approval?.mode;if(m2==="auto")return"auto";if(m2==="strict")return"strict";return"normal"})(),locale:readOptionalString3(store3?.state?.ui?.locale),themeMode:readOptionalString3(store3?.state?.ui?.theme?.mode),onboardingSeenVersion:readOptionalString3(store3?.state?.ui?.onboarding?.lastSeenVersion),statusCompact:Boolean(store3?.state?.ui?.statusCompact),shortcuts:normalizeShortcutBindings(store3?.state?.ui?.shortcuts),greetingLastSeenDate:readOptionalString3(store3?.state?.ui?.greeting?.lastSeenDate),providerFunnelCounts:(()=>{let raw=store3?.state?.ui?.providerFunnel?.counts;if(!raw||typeof raw!=="object")return;let entries=Object.entries(raw).map(([step,count])=>[String(step),Number(count)]).filter(([step,count])=>step&&Number.isFinite(count)&&count>0);return entries.length?Object.fromEntries(entries):void 0})(),workspaceSelectionByCwd:(()=>{let raw=store3?.state?.ui?.workspaceSelectionByCwd;if(!raw||typeof raw!=="object")return;let entries=Object.entries(raw).map(([cwd,value])=>{let key=readOptionalString3(cwd),providerId=readOptionalString3(value?.providerId),modelId=readOptionalString3(value?.modelId);if(!key||!providerId)return null;return[key,{providerId,...modelId?{modelId}:{}}]}).filter((entry)=>Boolean(entry));return entries.length?Object.fromEntries(entries):void 0})()},lastSessionId:readOptionalString3(store3?.state?.sessionId)||opts.prev.lastSessionId}}function buildUserConfigFromStore(opts){let store3=opts.store,providerState=store3?.state?.provider??{},providerId=readOptionalString3(providerState.activeId),providerConnections=(()=>{let rawConnections=providerState.connections??{},entries=Object.entries(rawConnections).map(([id2,conn])=>{let apiKey=readOptionalString3(conn?.apiKey),baseUrl=readOptionalString3(conn?.baseUrl),models=Array.isArray(conn?.models)?conn.models.map((m2)=>({id:readOptionalString3(m2?.id),name:readOptionalString3(m2?.name),limit:normalizeLimit(m2?.limit),vision:typeof m2?.vision==="boolean"?m2.vision:void 0,reasoning:m2?.reasoning?.supported?{supported:!0,default:m2.reasoning.default}:void 0})).filter((m2)=>m2.id):void 0,next={...apiKey?{apiKey}:{},...baseUrl?{baseUrl}:{},...models&&models.length?{models}:{}};return[id2,next]}).filter(([,value])=>Object.keys(value).length>0);return Object.fromEntries(entries)})(),activeModelByProvider=providerState.activeModelByProvider??{},prevSettings=opts.prev.settings??{},betaUpdates=typeof store3?.state?.ui?.betaUpdates==="boolean"?Boolean(store3.state.ui.betaUpdates):typeof prevSettings.beta==="boolean"?Boolean(prevSettings.beta):void 0,hasBetaSetting=typeof prevSettings.beta==="boolean"||betaUpdates===!0,customProviders=Array.isArray(providerState.customProviders)?providerState.customProviders.map((p2)=>({id:readOptionalString3(p2?.id),name:readOptionalString3(p2?.name),adapter:readOptionalString3(p2?.adapter),baseUrl:readOptionalString3(p2?.baseUrl),apiKey:readOptionalString3(p2?.apiKey),responsesAutoPromptCacheKey:typeof p2?.responsesAutoPromptCacheKey==="boolean"?p2.responsesAutoPromptCacheKey:void 0,responsesUseSessionId:typeof p2?.responsesUseSessionId==="boolean"?p2.responsesUseSessionId:void 0,models:Array.isArray(p2?.models)?p2.models.map((m2)=>({id:readOptionalString3(m2?.id),name:readOptionalString3(m2?.name),limit:normalizeLimit(m2?.limit),vision:typeof m2?.vision==="boolean"?m2.vision:void 0,reasoning:m2?.reasoning?.supported?{supported:!0,default:m2.reasoning.default}:void 0})).filter((m2)=>m2.id):void 0})).filter((p2)=>p2.id&&p2.name&&p2.adapter):[],legacyCustomProvider=(()=>{if(customProviders.length>0)return;let legacy=providerState.custom??{},legacyModels=Array.isArray(legacy.models)?legacy.models.map((m2)=>({id:readOptionalString3(m2?.id),limit:normalizeLimit(m2?.limit),vision:typeof m2?.vision==="boolean"?m2.vision:void 0,reasoning:m2?.reasoning?.supported?{supported:!0,default:m2.reasoning.default}:void 0})).filter((m2)=>m2.id):void 0,baseUrl=readOptionalString3(legacy.baseUrl)||void 0,apiKey=readOptionalString3(legacy.apiKey)||void 0;if(!baseUrl&&!apiKey&&!legacyModels?.length)return;return{baseUrl,apiKey,models:legacyModels?.length?toPlainJson(legacyModels):void 0}})(),hasSettings=Boolean(providerId||hasBetaSetting||Object.keys(activeModelByProvider||{}).length||Object.keys(providerConnections||{}).length||customProviders.length||legacyCustomProvider);return{version:1,updatedAt:Date.now(),settings:hasSettings?{providerId,...hasBetaSetting?{beta:Boolean(betaUpdates)}:{},activeModelByProvider:Object.keys(activeModelByProvider||{}).length?toPlainJson(activeModelByProvider):void 0,providerConnections:Object.keys(providerConnections||{}).length?toPlainJson(providerConnections):void 0,customProviders:customProviders.length?toPlainJson(customProviders):void 0,customProvider:legacyCustomProvider}:opts.prev.settings}}function createDebouncedAsyncTask(task,delayMs){let timer=null,running=!1,queued=!1;async function run(){if(running){queued=!0;return}running=!0,queued=!1;try{await task()}finally{if(running=!1,queued)schedule()}}function schedule(){if(queued=!0,timer)clearTimeout(timer);timer=setTimeout(run,Math.max(0,delayMs||0))}return{schedule}}var INTERRUPTED_PERSISTED_MESSAGE_LIMIT2=80,COMPACT_PERSISTED_MESSAGE_LIMIT2=80,COMPRESSION_PERSISTED_MESSAGE_LIMIT2=80,ERROR_PERSISTED_MESSAGE_LIMIT2=80;function normalizeMcpPhase(value){if(value==="deferred"||value==="syncing"||value==="ready"||value==="error")return value;return"deferred"}function assistantMarkdownOnlySignature2(msg){return msg.parts.filter((p2)=>p2.type==="markdown").map((p2)=>String(p2.markdown??"")).join(`
|
|
1173
|
+
`).trim()}function messageTranscriptSignature(msg){if(msg.role==="assistant"){let sig=assistantTranscriptSignature(msg);return sig?`assistant:${sig}`:""}if(msg.role==="user"){let sig=userTranscriptSignature(msg);return sig?`user:${sig}`:""}return""}function assistantThinkingCollapsePreserveKey(msg){let messageId=String(msg?.id??"").trim();if(messageId)return`id:${messageId}`;let sig=assistantDisplaySignature(msg);return sig?`sig:${sig}`:""}function collectLocalThinkingCollapsedState(messages){let byKey=new Map;for(let msg of messages){if(!msg||msg.role!=="assistant")continue;let collapsedByOrdinal=msg.parts.filter((p2)=>p2.type==="thinking").map((p2)=>Boolean(p2.collapsed));if(collapsedByOrdinal.length===0)continue;let key=assistantThinkingCollapsePreserveKey(msg);if(!key)continue;let queue=byKey.get(key)??[];queue.push([...collapsedByOrdinal]),byKey.set(key,queue)}return byKey}function restoreLocalThinkingCollapsedState(store3,localThinkingCollapsedState){if(localThinkingCollapsedState.size===0)return;let changed=!1,next=store3.state.messages.map((msg)=>{if(!msg||msg.role!=="assistant")return msg;let key=assistantThinkingCollapsePreserveKey(msg);if(!key)return msg;let queue=localThinkingCollapsedState.get(key);if(!queue||queue.length===0)return msg;let collapsedByOrdinal=queue.shift()??[];if(queue.length===0)localThinkingCollapsedState.delete(key);if(collapsedByOrdinal.length===0)return msg;let thinkingOrdinal=0,messageChanged=!1,parts=msg.parts.map((part)=>{if(part.type!=="thinking")return part;let collapsed=collapsedByOrdinal[thinkingOrdinal];if(thinkingOrdinal+=1,typeof collapsed!=="boolean"||part.collapsed===collapsed)return part;return messageChanged=!0,{...part,collapsed}});if(!messageChanged)return msg;return changed=!0,{...msg,parts}});if(changed)store3.replaceMessages(next)}function cloneLlmMetaPart(part){if(!part||typeof part!=="object")return part;return{...part}}function collectLocalAssistantLlmMetaBySignature(messages){let bySignature=new Map;for(let msg of messages){if(!msg||msg.role!=="assistant")continue;if(!msg.parts.some((p2)=>p2.type==="llm_meta"))continue;let signature=assistantLlmMetaPreserveSignature(msg);if(!signature)continue;let llmMetaParts=msg.parts.filter((p2)=>p2.type==="llm_meta").map((p2)=>cloneLlmMetaPart(p2));if(llmMetaParts.length===0)continue;let queue=bySignature.get(signature)??[];queue.push(llmMetaParts),bySignature.set(signature,queue)}return bySignature}function mergeLocalAssistantLlmMetaBySignature(uiMessages,localLlmMetaBySignature){if(localLlmMetaBySignature.size===0)return;for(let i2=0;i2<uiMessages.length;i2++){let msg=uiMessages[i2];if(!msg||msg.role!=="assistant")continue;if(msg.parts.some((p2)=>p2.type==="llm_meta"))continue;let signature=assistantLlmMetaPreserveSignature(msg);if(!signature)continue;let queue=localLlmMetaBySignature.get(signature);if(!queue||queue.length===0)continue;let llmMetaParts=queue.shift()??[];if(queue.length===0)localLlmMetaBySignature.delete(signature);if(llmMetaParts.length===0)continue;uiMessages[i2]={...msg,parts:[...msg.parts,...llmMetaParts]}}}function collectLocalMessageHeaderMetaBySignature(messages){let bySignature=new Map;for(let msg of messages){if(!msg||msg.role!=="user"&&msg.role!=="assistant")continue;let createdAtMs=Number(msg?.createdAtMs),modelId=String(msg?.modelId??"").trim()||void 0;if(!Number.isFinite(createdAtMs)&&!modelId)continue;let signature=msg.role==="user"?userTranscriptSignature(msg):assistantDisplaySignature(msg);if(!signature)continue;let key=`${msg.role}:${signature}`,queue=bySignature.get(key)??[];queue.push({...Number.isFinite(createdAtMs)?{createdAtMs:Math.floor(createdAtMs)}:{},...modelId?{modelId}:{}}),bySignature.set(key,queue)}return bySignature}function mergeLocalMessageHeaderMetaBySignature(uiMessages,localHeaderMetaBySignature){if(localHeaderMetaBySignature.size===0)return;for(let i2=0;i2<uiMessages.length;i2++){let msg=uiMessages[i2];if(!msg||msg.role!=="user"&&msg.role!=="assistant")continue;let hasCreatedAt=Number.isFinite(Number(msg?.createdAtMs)),hasModelId=Boolean(String(msg?.modelId??"").trim());if(hasCreatedAt&&hasModelId)continue;let signature=msg.role==="user"?userTranscriptSignature(msg):assistantDisplaySignature(msg);if(!signature)continue;let key=`${msg.role}:${signature}`,queue=localHeaderMetaBySignature.get(key);if(!queue||queue.length===0)continue;let headerMeta=queue.shift()??{};if(queue.length===0)localHeaderMetaBySignature.delete(key);let nextCreatedAtMs=hasCreatedAt?Number(msg?.createdAtMs):Number(headerMeta.createdAtMs),nextModelId=hasModelId?String(msg?.modelId??"").trim():String(headerMeta.modelId??"").trim(),next={...msg,...Number.isFinite(nextCreatedAtMs)?{createdAtMs:Math.floor(nextCreatedAtMs)}:{},...nextModelId?{modelId:nextModelId}:{}};uiMessages[i2]=next}}function collectAssistantToolCallIds(msg){let out=[],seen=new Set;for(let part of msg.parts){if(part.type!=="tool_call")continue;let id2=String(part?.call?.id??"").trim();if(!id2||seen.has(id2))continue;seen.add(id2),out.push(id2)}return out}function hasAssistantUserFacingContent(msg){return msg.parts.some((part)=>{if(part.type==="markdown")return Boolean(String(part?.markdown??"").trim());return part.type==="todo"||part.type==="plan"||part.type==="approve"||part.type==="info"})}function llmMetaPartsSignature(parts){return parts.map((part)=>{let p2=part;if(!p2||p2.type!=="llm_meta")return"";let durationMs=Math.floor(Number(p2.durationMs??0)),modelId=String(p2.modelId??"").trim(),toolCalls=Math.floor(Number(p2.toolCalls??0)),tokensUsed=Math.floor(Number(p2.tokensUsed??0)),changedFiles=Array.isArray(p2.changedFiles)?p2.changedFiles.map((f2)=>String(f2??"").trim()).filter(Boolean).join("|"):"",changedFileDetails=Array.isArray(p2.changedFileDetails)?p2.changedFileDetails.map((item)=>{let path31=String(item?.path??"").trim(),added=Math.floor(Number(item?.added??-1)),removed=Math.floor(Number(item?.removed??-1));return`${path31}:${added}:${removed}`}).filter(Boolean).join("|"):"";return[durationMs,modelId,toolCalls,tokensUsed,changedFiles,changedFileDetails].join(":")}).filter(Boolean).join("||")}function collectLocalAssistantLlmMetaRecords(messages){let out=[];for(let msg of messages){if(!msg||msg.role!=="assistant")continue;let llmMetaParts=msg.parts.filter((p2)=>p2.type==="llm_meta").map((p2)=>cloneLlmMetaPart(p2));if(llmMetaParts.length===0)continue;out.push({llmMetaParts,toolCallIds:collectAssistantToolCallIds(msg)})}return out}function mergeLocalAssistantLlmMetaByToolCallFlow(uiMessages,localRecords){if(localRecords.length===0)return;let existingLlmMetaSignatures=new Set;for(let msg of uiMessages){if(!msg||msg.role!=="assistant")continue;let llmMetaParts=msg.parts.filter((p2)=>p2.type==="llm_meta");if(llmMetaParts.length===0)continue;existingLlmMetaSignatures.add(llmMetaPartsSignature(llmMetaParts))}let searchStart=0;for(let record3 of localRecords){let sig=llmMetaPartsSignature(record3.llmMetaParts);if(!sig||existingLlmMetaSignatures.has(sig))continue;let anchorIdx=-1;if(record3.toolCallIds.length>0)for(let i2=searchStart;i2<uiMessages.length;i2++){let msg=uiMessages[i2];if(!msg||msg.role!=="assistant")continue;if(collectAssistantToolCallIds(msg).some((id2)=>record3.toolCallIds.includes(id2))){anchorIdx=i2;break}}if(anchorIdx<0){for(let i2=searchStart;i2<uiMessages.length;i2++)if(uiMessages[i2]?.role==="assistant"){anchorIdx=i2;break}}if(anchorIdx<0)continue;let endIdx=anchorIdx;for(let i2=anchorIdx+1;i2<uiMessages.length;i2++){let msg=uiMessages[i2];if(msg?.role==="user")break;if(msg?.role==="assistant")endIdx=i2}let targetIdx=endIdx;for(let i2=endIdx;i2>=anchorIdx;i2--){let msg=uiMessages[i2];if(!msg||msg.role!=="assistant")continue;if(hasAssistantUserFacingContent(msg)){targetIdx=i2;break}}let target=uiMessages[targetIdx];if(!target||target.role!=="assistant"){searchStart=endIdx+1;continue}if(target.parts.some((p2)=>p2.type==="llm_meta")){searchStart=endIdx+1;continue}uiMessages[targetIdx]={...target,parts:[...target.parts,...record3.llmMetaParts]},existingLlmMetaSignatures.add(sig),searchStart=endIdx+1}}function buildSignatureCounts(signatures){let counts=new Map;for(let sig of signatures){if(!sig)continue;counts.set(sig,(counts.get(sig)??0)+1)}return counts}function consumeSignatureCount(counts,signature){let remaining=counts.get(signature)??0;if(remaining<=0)return!1;if(remaining===1)counts.delete(signature);else counts.set(signature,remaining-1);return!0}function buildAnchoredInsertionPlan(existingMessages,candidates){let existingCounts=buildSignatureCounts(existingMessages.map(messageTranscriptSignature)),pendingAnchorSig=null,toInsert=[];for(let m2 of candidates){let sig=messageTranscriptSignature(m2);if(!sig){pendingAnchorSig=null;continue}if(consumeSignatureCount(existingCounts,sig)){pendingAnchorSig=sig;continue}toInsert.push({message:m2,anchorSig:pendingAnchorSig}),pendingAnchorSig=sig}return toInsert}function findAnchoredInsertIndex(messages,anchorSig){if(!anchorSig)return-1;let anchorIdx=-1;for(let i2=messages.length-1;i2>=0;i2--)if(messageTranscriptSignature(messages[i2])===anchorSig){anchorIdx=i2;break}if(anchorIdx<0)return-1;let insertAt=anchorIdx+1;while(insertAt<messages.length&&messages[insertAt]?.role!=="user")insertAt++;return insertAt}function findChronologicalInsertIndex(messages,candidate){let ts=candidate.createdAtMs??0;if(ts<=0)return messages.length;let insertAt=0;for(let i2=0;i2<messages.length;i2++)if((messages[i2].createdAtMs??0)<=ts)insertAt=i2+1;return insertAt}function restoreAnchoredMessages(store3,candidates){let toInsert=buildAnchoredInsertionPlan(store3.state.messages,candidates);if(toInsert.length===0)return;let next=store3.state.messages.slice();for(let{message,anchorSig}of toInsert){let insertAt=(()=>{let anchored=findAnchoredInsertIndex(next,anchorSig);if(anchored>=0)return anchored;return findChronologicalInsertIndex(next,message)})();next.splice(insertAt,0,message)}store3.replaceMessages(next)}function restoreErrorAssistantMessages(store3,candidates){if(candidates.length===0)return;let next=store3.state.messages.slice(),usedReplacementIndexes=new Set,changed=!1;for(let{message:candidate,anchorSig}of candidates){let exactSig=assistantErrorExactSignature(candidate);if(next.findIndex((m2)=>{if(!m2||m2.role!=="assistant")return!1;return assistantErrorExactSignature(m2)===exactSig})>=0)continue;let mergeSig=assistantErrorMergeSignature(candidate);if(mergeSig){let replaceIndex=next.findIndex((m2,index)=>{if(usedReplacementIndexes.has(index)||!m2||m2.role!=="assistant")return!1;return assistantErrorMergeSignature(m2)===mergeSig});if(replaceIndex>=0){next[replaceIndex]=candidate,usedReplacementIndexes.add(replaceIndex),changed=!0;continue}}let insertAt=(()=>{let anchored=findAnchoredInsertIndex(next,anchorSig);if(anchored>=0)return anchored;return findChronologicalInsertIndex(next,candidate)})();next.splice(insertAt,0,candidate),changed=!0}if(changed)store3.replaceMessages(next)}function applyHydrationRestorePhases(store3,phases){for(let phase of phases){if(phase.kind==="anchored"){restoreAnchoredMessages(store3,phase.candidates);continue}restoreErrorAssistantMessages(store3,phase.candidates)}}function hydrateStoreFromSnapshot(store3,snapshot,opts){let previousSessionId=String(store3.state.sessionId??"").trim(),hadLocalMessagesBeforeHydrate=store3.state.messages.length>0,preserveLocalSyntheticErrors=Boolean(opts?.preserveLocalSyntheticErrors),preserveLocalInterruptedMessages=Boolean(opts?.preserveLocalInterruptedMessages),preserveLocalCompactMessages=Boolean(opts?.preserveLocalCompactMessages),preserveLocalCompressionMessages=Boolean(opts?.preserveLocalCompressionMessages),localErrorAssistants=preserveLocalSyntheticErrors?collectRestorableErrorAssistants(store3.state.messages):[],localInterruptedRoundMessages=preserveLocalInterruptedMessages?collectInterruptedRoundMessages(store3.state.messages):[],id2=snapshotId(snapshot),sameSession=Boolean(id2)&&id2===previousSessionId,localSessionMeta=sameSession&&store3.state.sessionMeta?mergeSessionUiMetadata2(store3.state.sessionMeta,{}):null,preserveLocalSessionHistoryDirty=sameSession&&Boolean(store3.state.sessionHistoryDirty),localAssistantLlmMetaBySignature=sameSession?collectLocalAssistantLlmMetaBySignature(store3.state.messages):new Map,localAssistantLlmMetaRecords=sameSession?collectLocalAssistantLlmMetaRecords(store3.state.messages):[],localMessageHeaderMetaBySignature=sameSession?collectLocalMessageHeaderMetaBySignature(store3.state.messages):new Map,localThinkingCollapsedState=sameSession?collectLocalThinkingCollapsedState(store3.state.messages):new Map,localLastRequestBudget=sameSession?normalizeLastRequestBudget(store3.state.lastRequestBudget):null,persistedLastRequestBudget=persistedLastRequestBudgetFromSnapshot(snapshot),shouldRestorePersistedCompactMessages=!sameSession||!hadLocalMessagesBeforeHydrate,persistedCompactMessages=shouldRestorePersistedCompactMessages?persistedCompactMessagesFromSnapshot(snapshot):[],localCompactMessages=preserveLocalCompactMessages&&sameSession&&!hadLocalMessagesBeforeHydrate?dedupeAssistantMessagesBySignature(collectLocalCompactMessages(store3.state.messages),{include:isCompactTranscriptMessage,limit:COMPACT_PERSISTED_MESSAGE_LIMIT}):[],localCompressionMessages=preserveLocalCompressionMessages&&sameSession?dedupeAssistantMessagesBySignature(collectLocalCompressionMessages(store3.state.messages),{include:isCompressionTranscriptMessage,limit:COMPRESSION_PERSISTED_MESSAGE_LIMIT}):[];if(id2)store3.state.sessionId=id2;let rawUiMessages=snapshotToUiMessages(snapshot),contextTranscript=splitSnapshotContextMessages(rawUiMessages),persistedInterruptedRoundMessages=dedupeAnchoredAssistantRoundMessages([...contextTranscript.interruptedMessages,...persistedInterruptedRoundMessagesFromSnapshot(snapshot)],{include:()=>!0,limit:INTERRUPTED_PERSISTED_MESSAGE_LIMIT}),persistedCompressionMessages=dedupeAssistantMessagesBySignature([...contextTranscript.compressionMessages,...persistedCompressionMessagesFromSnapshot(snapshot)],{include:isCompressionTranscriptMessage,limit:COMPRESSION_PERSISTED_MESSAGE_LIMIT}),persistedErrorMessages=dedupeErrorRestoreCandidates([...contextTranscript.errorMessages,...persistedErrorMessagesFromSnapshot(snapshot)]),uiMessages=contextTranscript.canonicalMessages.slice(),persistedCompactRestoreCandidates=shouldRestorePersistedCompactMessages?dedupeAssistantMessagesBySignature([...contextTranscript.compactMessages,...persistedCompactMessages],{include:isCompactTranscriptMessage,limit:COMPACT_PERSISTED_MESSAGE_LIMIT}):[];if(sameSession)mergeLocalMessageHeaderMetaBySignature(uiMessages,localMessageHeaderMetaBySignature),mergeLocalAssistantLlmMetaBySignature(uiMessages,localAssistantLlmMetaBySignature),mergeLocalAssistantLlmMetaByToolCallFlow(uiMessages,localAssistantLlmMetaRecords);let restorePhases=[{name:"persisted_interrupted",kind:"anchored",candidates:persistedInterruptedRoundMessages},{name:"persisted_compression",kind:"anchored",candidates:persistedCompressionMessages},{name:"persisted_compact",kind:"anchored",candidates:persistedCompactRestoreCandidates},{name:"persisted_error",kind:"error",candidates:persistedErrorMessages},{name:"local_interrupted",kind:"anchored",candidates:dedupeAnchoredAssistantRoundMessages(localInterruptedRoundMessages,{include:()=>!0,limit:INTERRUPTED_PERSISTED_MESSAGE_LIMIT})},{name:"local_compression",kind:"anchored",candidates:localCompressionMessages},{name:"local_compact",kind:"anchored",candidates:localCompactMessages},{name:"local_error",kind:"error",candidates:dedupeErrorRestoreCandidates(localErrorAssistants.map((message)=>({message,anchorSig:null})))}];if(store3.replaceMessages(uiMessages),applyHydrationRestorePhases(store3,restorePhases),sameSession)restoreLocalThinkingCollapsedState(store3,localThinkingCollapsedState);if(preserveLocalSessionHistoryDirty)store3.state.sessionHistoryDirty=!0;store3.clearRevertedMessages(),store3.state.selectedToolCallId=null,store3.state.runningAgentRound=!1,store3.state.runningToolCallId=null,store3.state.thinking.active=!1,store3.state.thinking.assistantId=null,store3.state.thinking.blockIndex=null,store3.state.expandedBashOutputs=new Set,store3.state.expandedToolOutputLineCounts=new Map,store3.state.unifiedEditDiffToolCallIds=new Set,store3.state.layoutDirtyMessageId=null,store3.state.layoutDirtySeq=0,store3.state.paused=null,store3.state.approval.active=null,store3.state.approval.pendingAutoRun=null,store3.state.approval.queue=[],store3.state.approval.decisions={};let meta3=readSessionUiMetadataFromSnapshot(snapshot),resolvedMeta=(()=>{if(!sameSession||!localSessionMeta)return meta3;let incomingUpdatedAt=Number(meta3.lastUpdatedAt??0);return Number(localSessionMeta.lastUpdatedAt??0)>incomingUpdatedAt?localSessionMeta:meta3})();if(store3.state.sessionMeta){let target=store3.state.sessionMeta;target.queue=[...resolvedMeta.queue],target.queueLength=resolvedMeta.queueLength,target.status=resolvedMeta.status,target.lastUpdatedAt=resolvedMeta.lastUpdatedAt,target.lastErrorCode=resolvedMeta.lastErrorCode??void 0,target.pinnedMessageIds=[...resolvedMeta.pinnedMessageIds],target.titleSuggestedAt=resolvedMeta.titleSuggestedAt??null}let resolvedLastRequestBudget=(()=>{if(sameSession&&localLastRequestBudget&&(!persistedLastRequestBudget||localLastRequestBudget.updatedAtMs>persistedLastRequestBudget.updatedAtMs))return localLastRequestBudget;return persistedLastRequestBudget})();store3.state.lastRequestBudget=cloneLastRequestBudget(resolvedLastRequestBudget),hydrateInlinePlanMarkdownPreviews(store3);for(let m2 of store3.state.messages){if(!m2||m2.role!=="assistant"||!Array.isArray(m2.parts))continue;for(let p2 of m2.parts)if(p2?.type==="tool_result"&&p2.result&&typeof store3.scheduleToolResultHighlight==="function")store3.scheduleToolResultHighlight(String(m2.id??""),p2.result)}let u2=snapshotUsage(snapshot);store3.hydrateSessionUsageTotals(u2)}function uiMessagesToSnapshotMessages(messages){let seed=Array.isArray(messages)?messages:[];return uiMessagesToRuntimeMessages(seed)}function normalizeLimit(input){let obj=input&&typeof input==="object"?input:{},context=readOptionalNumber2(obj.context),output=readOptionalNumber2(obj.output);if(context==null&&output==null)return;return{...context!=null?{context}:{},...output!=null?{output}:{}}}function buildUserCacheFromStore(opts){let store3=opts.store,prevSettings=opts.prev.settings??{},authMethod=readOptionalString3(prevSettings.authMethod);return{version:1,updatedAt:Date.now(),settings:{cwd:readOptionalString3(store3?.state?.context?.cwd),focusFiles:store3?.state?.context?.focusFiles??void 0,model:readOptionalString3(store3?.state?.config?.model),authMethod,temperature:readOptionalNumber2(store3?.state?.config?.temperature),interleavedThinking:store3?.state?.config?.interleaved_thinking,reasoningEffort:readOptionalString3(store3?.state?.config?.reasoning_effort),reasoningEffortByModel:(()=>{let raw=store3?.state?.ui?.reasoningEffortByModel;if(!raw)return;let entries=Object.entries(raw).map(([modelId,value])=>{let key=readOptionalString3(modelId),v2=readOptionalString3(value);return key&&v2?[key,v2]:null}).filter((e2)=>Boolean(e2));return entries.length?Object.fromEntries(entries):void 0})(),toolApprovals:(()=>{let m2=store3?.state?.approval?.mode;if(m2==="auto")return"auto";if(m2==="strict")return"strict";return"normal"})(),locale:readOptionalString3(store3?.state?.ui?.locale),themeMode:readOptionalString3(store3?.state?.ui?.theme?.mode),onboardingSeenVersion:readOptionalString3(store3?.state?.ui?.onboarding?.lastSeenVersion),statusCompact:Boolean(store3?.state?.ui?.statusCompact),shortcuts:normalizeShortcutBindings(store3?.state?.ui?.shortcuts),greetingLastSeenDate:readOptionalString3(store3?.state?.ui?.greeting?.lastSeenDate),providerFunnelCounts:(()=>{let raw=store3?.state?.ui?.providerFunnel?.counts;if(!raw||typeof raw!=="object")return;let entries=Object.entries(raw).map(([step,count])=>[String(step),Number(count)]).filter(([step,count])=>step&&Number.isFinite(count)&&count>0);return entries.length?Object.fromEntries(entries):void 0})(),workspaceSelectionByCwd:(()=>{let raw=store3?.state?.ui?.workspaceSelectionByCwd;if(!raw||typeof raw!=="object")return;let entries=Object.entries(raw).map(([cwd,value])=>{let key=readOptionalString3(cwd),providerId=readOptionalString3(value?.providerId),modelId=readOptionalString3(value?.modelId);if(!key||!providerId)return null;return[key,{providerId,...modelId?{modelId}:{}}]}).filter((entry)=>Boolean(entry));return entries.length?Object.fromEntries(entries):void 0})()},lastSessionId:readOptionalString3(store3?.state?.sessionId)||opts.prev.lastSessionId}}function buildUserConfigFromStore(opts){let store3=opts.store,providerState=store3?.state?.provider??{},providerId=readOptionalString3(providerState.activeId),providerConnections=(()=>{let rawConnections=providerState.connections??{},entries=Object.entries(rawConnections).map(([id2,conn])=>{let apiKey=readOptionalString3(conn?.apiKey),baseUrl=readOptionalString3(conn?.baseUrl),models=Array.isArray(conn?.models)?conn.models.map((m2)=>({id:readOptionalString3(m2?.id),name:readOptionalString3(m2?.name),limit:normalizeLimit(m2?.limit),userDefined:m2?.userDefined===!0||m2?.outputIsUserDefined===!0?!0:void 0,vision:typeof m2?.vision==="boolean"?m2.vision:void 0,reasoning:m2?.reasoning?.supported?{supported:!0,default:m2.reasoning.default}:void 0})).filter((m2)=>m2.id):void 0,next={...apiKey?{apiKey}:{},...baseUrl?{baseUrl}:{},...models&&models.length?{models}:{}};return[id2,next]}).filter(([,value])=>Object.keys(value).length>0);return Object.fromEntries(entries)})(),activeModelByProvider=providerState.activeModelByProvider??{},prevSettings=opts.prev.settings??{},betaUpdates=typeof store3?.state?.ui?.betaUpdates==="boolean"?Boolean(store3.state.ui.betaUpdates):typeof prevSettings.beta==="boolean"?Boolean(prevSettings.beta):void 0,hasBetaSetting=typeof prevSettings.beta==="boolean"||betaUpdates===!0,customProviders=Array.isArray(providerState.customProviders)?providerState.customProviders.map((p2)=>({id:readOptionalString3(p2?.id),name:readOptionalString3(p2?.name),adapter:readOptionalString3(p2?.adapter),baseUrl:readOptionalString3(p2?.baseUrl),apiKey:readOptionalString3(p2?.apiKey),responsesAutoPromptCacheKey:typeof p2?.responsesAutoPromptCacheKey==="boolean"?p2.responsesAutoPromptCacheKey:void 0,responsesUseSessionId:typeof p2?.responsesUseSessionId==="boolean"?p2.responsesUseSessionId:void 0,models:Array.isArray(p2?.models)?p2.models.map((m2)=>({id:readOptionalString3(m2?.id),name:readOptionalString3(m2?.name),limit:normalizeLimit(m2?.limit),userDefined:m2?.userDefined===!0||m2?.outputIsUserDefined===!0?!0:void 0,vision:typeof m2?.vision==="boolean"?m2.vision:void 0,reasoning:m2?.reasoning?.supported?{supported:!0,default:m2.reasoning.default}:void 0})).filter((m2)=>m2.id):void 0})).filter((p2)=>p2.id&&p2.name&&p2.adapter):[],legacyCustomProvider=(()=>{if(customProviders.length>0)return;let legacy=providerState.custom??{},legacyModels=Array.isArray(legacy.models)?legacy.models.map((m2)=>({id:readOptionalString3(m2?.id),limit:normalizeLimit(m2?.limit),userDefined:m2?.userDefined===!0||m2?.outputIsUserDefined===!0?!0:void 0,vision:typeof m2?.vision==="boolean"?m2.vision:void 0,reasoning:m2?.reasoning?.supported?{supported:!0,default:m2.reasoning.default}:void 0})).filter((m2)=>m2.id):void 0,baseUrl=readOptionalString3(legacy.baseUrl)||void 0,apiKey=readOptionalString3(legacy.apiKey)||void 0;if(!baseUrl&&!apiKey&&!legacyModels?.length)return;return{baseUrl,apiKey,models:legacyModels?.length?toPlainJson(legacyModels):void 0}})(),hasSettings=Boolean(providerId||hasBetaSetting||Object.keys(activeModelByProvider||{}).length||Object.keys(providerConnections||{}).length||customProviders.length||legacyCustomProvider);return{version:1,updatedAt:Date.now(),settings:hasSettings?{providerId,...hasBetaSetting?{beta:Boolean(betaUpdates)}:{},activeModelByProvider:Object.keys(activeModelByProvider||{}).length?toPlainJson(activeModelByProvider):void 0,providerConnections:Object.keys(providerConnections||{}).length?toPlainJson(providerConnections):void 0,customProviders:customProviders.length?toPlainJson(customProviders):void 0,customProvider:legacyCustomProvider}:opts.prev.settings}}function createDebouncedAsyncTask(task,delayMs){let timer=null,running=!1,queued=!1;async function run(){if(running){queued=!0;return}running=!0,queued=!1;try{await task()}finally{if(running=!1,queued)schedule()}}function schedule(){if(queued=!0,timer)clearTimeout(timer);timer=setTimeout(run,Math.max(0,delayMs||0))}return{schedule}}var INTERRUPTED_PERSISTED_MESSAGE_LIMIT2=80,COMPACT_PERSISTED_MESSAGE_LIMIT2=80,COMPRESSION_PERSISTED_MESSAGE_LIMIT2=80,ERROR_PERSISTED_MESSAGE_LIMIT2=80;function normalizeMcpPhase(value){if(value==="deferred"||value==="syncing"||value==="ready"||value==="error")return value;return"deferred"}function assistantMarkdownOnlySignature2(msg){return msg.parts.filter((p2)=>p2.type==="markdown").map((p2)=>String(p2.markdown??"")).join(`
|
|
1174
1174
|
`).trim()}function assistantPersistenceSignature(msg){let status=msg.parts.find((p2)=>p2.type==="status"),statusText=String(status?.text??"").trim(),markdown=assistantMarkdownOnlySignature2(msg),toolCalls=msg.parts.filter((p2)=>p2.type==="tool_call").map((p2)=>{let id2=String(p2?.call?.id??"").trim();return`${String(p2?.call?.name??"").trim()}:${id2}`}).filter(Boolean).join("|");return[statusText,markdown,toolCalls].filter(Boolean).join(`
|
|
1175
1175
|
`).trim()}function userPersistenceSignature(msg){let content=String(msg.content??"").trim(),focusFiles=Array.isArray(msg?.focusFiles)?msg.focusFiles.map((f2)=>String(f2??"").trim()).filter(Boolean).join(`
|
|
1176
1176
|
`):"";return[content,focusFiles].filter(Boolean).join(`
|
|
1177
1177
|
`).trim()}function messagePersistenceSignature(message){if(message.role==="assistant"){let sig=assistantPersistenceSignature(message);return sig?`assistant:${sig}`:""}if(message.role==="user"){let sig=userPersistenceSignature(message);return sig?`user:${sig}`:""}return""}function snapshotId2(snapshot){let obj=snapshot&&typeof snapshot==="object"?snapshot:null;return String(obj?.sessionId??obj?.id??"").trim()}function collectAnchoredAssistantRoundsForPersistence(messages,opts){let rounds=new Map,lastUser=null;for(let i2=0;i2<messages.length;i2++){let current=messages[i2];if(current?.role==="user"){lastUser=current;continue}if(!current||current.role!=="assistant")continue;if(!opts.include(current))continue;let round=[];if(lastUser)round.push(lastUser);round.push(current);let assistantSig=messagePersistenceSignature(current);if(!assistantSig)continue;let key=`${lastUser?messagePersistenceSignature(lastUser):""}
|
|
1178
1178
|
---
|
|
1179
|
-
${assistantSig}`;rounds.delete(key),rounds.set(key,round)}return[...rounds.values()].slice(-opts.limit).flat().map(clonePersistableValue)}function collectInterruptedRoundMessagesForPersistence(messages){return collectAnchoredAssistantRoundsForPersistence(messages,{limit:INTERRUPTED_PERSISTED_MESSAGE_LIMIT2,include:isInterruptedAssistantMessage})}function collectCompactMessagesForPersistence(messages){let unique=new Map;for(let m2 of messages){if(!m2||m2.role!=="assistant")continue;let id2=String(m2?.id??"").trim();if(!isCompactTranscriptMessageId(id2))continue;if(id2.startsWith("compact-restored-")||id2.startsWith("restored-compact-"))continue;if(!m2.parts.some((p2)=>{if(p2.type==="markdown")return String(p2?.markdown??"").trim().length>0;if(p2.type==="info")return String(p2?.text??"").trim().length>0;return!1}))continue;let sig=messagePersistenceSignature(m2);if(!sig)continue;unique.delete(sig),unique.set(sig,m2)}let out=[...unique.values()];if(out.length<=COMPACT_PERSISTED_MESSAGE_LIMIT2)return out;return out.slice(-COMPACT_PERSISTED_MESSAGE_LIMIT2)}function collectCompressionMessagesForPersistence(messages){let unique=new Map;for(let m2 of messages){if(!m2||m2.role!=="assistant")continue;let id2=String(m2?.id??"").trim();if(!isCompressionTranscriptMessageId(id2))continue;if(id2.startsWith("compression-restored-")||id2.startsWith("restored-compression-"))continue;if(!m2.parts.some((p2)=>{if(p2.type==="markdown")return String(p2?.markdown??"").trim().length>0;if(p2.type==="info")return String(p2?.text??"").trim().length>0;return!1}))continue;let sig=messagePersistenceSignature(m2);if(!sig)continue;unique.delete(sig),unique.set(sig,m2)}let out=[...unique.values()];if(out.length<=COMPRESSION_PERSISTED_MESSAGE_LIMIT2)return out;return out.slice(-COMPRESSION_PERSISTED_MESSAGE_LIMIT2)}function clonePersistableValue(value){return JSON.parse(JSON.stringify(value))}function assistantMessageHasDurableTranscriptParts(message){if(!message||message.role!=="assistant")return!1;return message.parts.some((part)=>{if(part.type==="markdown")return String(part.markdown??"").trim().length>0;if(part.type==="thinking")return String(part.content??"").trim().length>0;if(part.type==="tool_call")return!0;if(part.type==="tool_result")return!0;return!1})}function hasPendingTranscriptTail(messages){for(let index=messages.length-1;index>=0;index-=1){let message=messages[index];if(!message)continue;if(message.role==="tool")continue;if(message.role==="user")return!0;if(message.role==="assistant")return!assistantMessageHasDurableTranscriptParts(message);return!1}return!1}function collectErrorMessagesForPersistence(messages){return collectAnchoredAssistantRoundsForPersistence(messages,{limit:ERROR_PERSISTED_MESSAGE_LIMIT2,include:isErrorAssistantMessage})}function createDimSdkPersistence(opts){let storeRef=null,persistEnabled=!opts.deferPersist,schedulePersist=null,hydratedMcpServers=Array.isArray(opts.mcpServers)?JSON.parse(JSON.stringify(opts.mcpServers)):[],hydratedMcpPhase=normalizeMcpPhase(opts.mcpPhase),hydratedMcpConnectedCount=Math.max(0,Number(opts.mcpConnectedCount)||0),hydratedMcpConfiguredCount=Math.max(0,Number(opts.mcpConfiguredCount)||hydratedMcpServers.length),backend=opts.sessionsBackend??null,sessions=backend?{async list(){return(await backend.list()).map(snapshotToListItem).filter((item)=>Boolean(item))},async get(id2){let sessionId=String(id2??"").trim();if(!sessionId)return;return backend.get(sessionId)},async reload(id2){let sessionId=String(id2??"").trim();if(!sessionId||!storeRef)return!1;if(String(storeRef.state.sessionId??"")!==sessionId)return!1;if(storeRef.state.runningAgentRound)return!1;if(storeRef.state.paused)return!1;if(storeRef.state.approval?.active?.status==="pending")return!1;let snapshot=await backend.get(sessionId);if(!snapshot)return!1;hydrateStoreFromSnapshot(storeRef,snapshot,{preserveLocalSyntheticErrors:!0,preserveLocalInterruptedMessages:!0,preserveLocalCompactMessages:!0,preserveLocalCompressionMessages:!0});let invalidator=opts.agent;if(invalidator?.invalidateSession)invalidator.invalidateSession(sessionId);return!0},async use(id2){let sessionId=String(id2??"").trim();if(!sessionId||!storeRef)return;if(String(storeRef.state.sessionId??"")===sessionId)return;let snapshot=await backend.get(sessionId);if(!snapshot)return;hydrateStoreFromSnapshot(storeRef,snapshot);let invalidator=opts.agent;if(invalidator?.invalidateSession)invalidator.invalidateSession(sessionId)},async createNew(){if(!storeRef)return;let snapshot=await backend.create();if(!snapshot)return;let newSessionId=snapshotId2(snapshot);if(hydrateStoreFromSnapshot(storeRef,snapshot),newSessionId){let invalidator=opts.agent;if(invalidator?.invalidateSession)invalidator.invalidateSession(newSessionId)}},async delete(id2){let sessionId=String(id2??"").trim();if(!sessionId)return;if(await backend.destroy(sessionId),storeRef&&String(storeRef.state.sessionId??"")===sessionId)storeRef.state.sessionId=""},async rename(id2,title){if(!storeRef)return;if(typeof backend.rename!=="function")return;let sessionId=String(id2??"").trim(),nextTitle=String(title??"").trim();if(!sessionId||!nextTitle)return;let snapshot=await backend.rename(sessionId,nextTitle);if(snapshot&&String(storeRef.state.sessionId??"")===sessionId)hydrateStoreFromSnapshot(storeRef,snapshot,{preserveLocalSyntheticErrors:!0,preserveLocalInterruptedMessages:!0,preserveLocalCompactMessages:!0,preserveLocalCompressionMessages:!0})},async updateMetadata(id2,metadata){if(typeof backend.updateMetadata!=="function")return;let sessionId=String(id2??"").trim();if(!sessionId)return;await backend.updateMetadata(sessionId,metadata)},async fork(opts2){if(!storeRef)return;let seed=Array.isArray(opts2?.messages)?opts2.messages:[];if(typeof backend.createWithMessages!=="function"){let snapshot2=await backend.create();if(snapshot2)storeRef.state.sessionId=snapshotId2(snapshot2);storeRef.replaceMessages(seed),storeRef.clearRevertedMessages(),storeRef.state.selectedToolCallId=null,storeRef.resetSessionUsageState(),storeRef.state.lastRequestBudget=null;return}let snapshot=await backend.createWithMessages(uiMessagesToSnapshotMessages(stripSupplementalTranscriptMessages(seed)));if(!snapshot)return;hydrateStoreFromSnapshot(storeRef,snapshot)}}:void 0,replaceObjectContents=(target,source)=>{for(let key of Object.keys(target))delete target[key];Object.assign(target,source)},ensureStoreMcpState=(store3)=>{let current=store3.state.mcp;if(current&&Array.isArray(current.servers)){if(typeof current.phase!=="string")current.phase="ready";if(typeof current.connectedCount!=="number")current.connectedCount=0;if(typeof current.configuredCount!=="number")current.configuredCount=Array.isArray(current.servers)?current.servers.length:0;return current}return store3.state.mcp={servers:[],phase:"ready",connectedCount:0,configuredCount:0},store3.state.mcp},applyHydratedMcpState=(store3)=>{let mcpState=ensureStoreMcpState(store3),nextServers=JSON.parse(JSON.stringify(hydratedMcpServers));mcpState.servers.splice(0,mcpState.servers.length,...nextServers),mcpState.phase=hydratedMcpPhase,mcpState.connectedCount=hydratedMcpConnectedCount,mcpState.configuredCount=hydratedMcpConfiguredCount},applyHydration=(store3,cache,config2,tools)=>{let changed=!1,saved=config2.settings??{},providerId=normalizeProviderId(saved.providerId),uiState=store3.state.ui;if(typeof saved.beta==="boolean"){let nextBeta=saved.beta===!0;if(uiState.betaUpdates!==nextBeta)uiState.betaUpdates=nextBeta,changed=!0}let provider=store3?.state.provider;if(!provider)return!1;if(providerId)provider.activeId=providerId;let connections=saved.providerConnections??{},normalizedConnections=Object.fromEntries(Object.entries(connections).map(([id2,conn])=>{let apiKey=readOptionalString3(conn?.apiKey),baseUrl=readOptionalString3(conn?.baseUrl),models=(Array.isArray(conn?.models)?conn.models:[]).map((m2)=>{let model=m2&&typeof m2==="object"?m2:{},id3=readOptionalString3(model.id);if(!id3)return null;let name15=readOptionalString3(model.name),limit=normalizeLimit(model.limit),vision=typeof model.vision==="boolean"?model.vision:void 0,reasoning=model.reasoning?.supported?{supported:!0,default:model.reasoning.default}:void 0;return{id:id3,...name15?{name:name15}:{},...limit?{limit}:{},...model.outputIsUserDefined===!0?{outputIsUserDefined:!0}:{},...typeof vision==="boolean"?{vision}:{},...reasoning?{reasoning}:{}}}).filter((m2)=>Boolean(m2));return[id2,{...apiKey?{apiKey}:{},...baseUrl?{baseUrl}:{},...models.length?{models}:{}}]}));provider.connections=normalizedConnections;let activeByProvider=saved.activeModelByProvider??{};provider.activeModelByProvider={...activeByProvider??{}};let toProviderAdapter=(value)=>{if(value==="openai"||value==="openai-responses"||value==="gemini"||value==="anthropic")return value;return},toCustomProviderId=(value)=>{if(typeof value==="string"&&value.startsWith("cp_"))return value;return},customProviders=Array.isArray(saved.customProviders)?saved.customProviders.map((p2)=>{let entry=p2&&typeof p2==="object"?p2:{},models=(Array.isArray(entry.models)?entry.models:[]).map((m2)=>{let model=m2&&typeof m2==="object"?m2:{},id3=readOptionalString3(model.id);if(!id3)return null;let name16=readOptionalString3(model.name),limit=normalizeLimit(model.limit),vision=typeof model.vision==="boolean"?model.vision:void 0,reasoning=model.reasoning?.supported?{supported:!0,default:model.reasoning.default}:void 0;return{id:id3,...name16?{name:name16}:{},...limit?{limit}:{},...model.outputIsUserDefined===!0?{outputIsUserDefined:!0}:{},...typeof vision==="boolean"?{vision}:{},...reasoning?{reasoning}:{}}}).filter((m2)=>Boolean(m2)),id2=toCustomProviderId(readOptionalString3(entry.id)),name15=readOptionalString3(entry.name),adapter=toProviderAdapter(readOptionalString3(entry.adapter));if(!id2||!name15||!adapter)return null;let baseUrl=readOptionalString3(entry.baseUrl),apiKey=readOptionalString3(entry.apiKey);return{id:id2,name:name15,adapter,...baseUrl?{baseUrl}:{},...apiKey?{apiKey}:{},...typeof entry.responsesAutoPromptCacheKey==="boolean"?{responsesAutoPromptCacheKey:entry.responsesAutoPromptCacheKey}:{},...typeof entry.responsesUseSessionId==="boolean"?{responsesUseSessionId:entry.responsesUseSessionId}:{},models:backfillCustomProviderModels(models,{adapter})}}).filter((p2)=>Boolean(p2)):[];provider.customProviders=customProviders,hydrateToolsStateFromConfig(tools,store3.state,hydratedMcpServers),applyHydratedMcpState(store3);let savedUi=cache.settings??{},env=store3?.state?.context?.env??{};if(!readOptionalString3(env.DIMCODE_TOOL_APPROVALS)&&savedUi.toolApprovals){let raw=String(savedUi.toolApprovals),mapped=raw==="auto"||raw==="all"?"auto":raw==="strict"||raw==="manual"?"strict":"normal";store3.state.approval.mode=mapped}if(uiState){if(typeof savedUi.themeMode==="string"&&savedUi.themeMode)store3.setThemeMode(savedUi.themeMode);if(typeof savedUi.statusCompact==="boolean")uiState.statusCompact=savedUi.statusCompact;if(typeof savedUi.onboardingSeenVersion==="string"&&savedUi.onboardingSeenVersion)uiState.onboarding={...uiState.onboarding??{},lastSeenVersion:savedUi.onboardingSeenVersion};if(savedUi.shortcuts)uiState.shortcuts=normalizeShortcutBindings(savedUi.shortcuts);if(typeof savedUi.greetingLastSeenDate==="string")uiState.greeting={...uiState.greeting??{},lastSeenDate:savedUi.greetingLastSeenDate};if(savedUi.providerFunnelCounts&&typeof savedUi.providerFunnelCounts==="object"){let counts=Object.fromEntries(Object.entries(savedUi.providerFunnelCounts).map(([step,count])=>[String(step),Number(count)]).filter(([step,count])=>step&&Number.isFinite(count)&&count>0));uiState.providerFunnel={...uiState.providerFunnel??{},counts,events:Array.isArray(uiState.providerFunnel?.events)?uiState.providerFunnel.events:[]}}if(savedUi.workspaceSelectionByCwd&&typeof savedUi.workspaceSelectionByCwd==="object"){let byCwd=Object.fromEntries(Object.entries(savedUi.workspaceSelectionByCwd).map(([cwd,value])=>{let key=readOptionalString3(cwd),providerId2=readOptionalString3(value?.providerId),modelId=readOptionalString3(value?.modelId);if(!key||!providerId2)return null;return[key,{providerId:providerId2,...modelId?{modelId}:{}}]}).filter((entry)=>Boolean(entry)));uiState.workspaceSelectionByCwd=byCwd}let savedReasoningMap=savedUi.reasoningEffortByModel;if(savedReasoningMap){let entries=Object.entries(savedReasoningMap).map(([modelId,value])=>{let key=readOptionalString3(modelId),v2=readOptionalString3(value);return key&&v2?[key,v2]:null}).filter((e2)=>Boolean(e2));uiState.reasoningEffortByModel=Object.fromEntries(entries)}}let{candidates,existingProviderIds}=buildProviderSelectionCandidates({connections:provider.connections,customProviders,legacyCustom:provider.custom,rememberedModels:{...provider.activeModelByProvider??{}}}),rememberedModels=stripUnknownActiveModelSelections({...provider.activeModelByProvider??{}},existingProviderIds);if(JSON.stringify(provider.activeModelByProvider??{})!==JSON.stringify(rememberedModels))provider.activeModelByProvider=rememberedModels,changed=!0;if(uiState){let sanitizedWorkspaceSelections=sanitizeWorkspaceProviderSelections({workspaceSelections:uiState.workspaceSelectionByCwd,candidates,rememberedModels});if(JSON.stringify(uiState.workspaceSelectionByCwd??{})!==JSON.stringify(sanitizedWorkspaceSelections))uiState.workspaceSelectionByCwd=sanitizedWorkspaceSelections,changed=!0}let selection=resolveProviderSelection({candidates,preferredProviderId:String(provider.activeId??"").trim(),preferredModelId:String(store3.state.config.model??"").trim(),rememberedModels}),nextProviderId=String(selection.providerId??"").trim(),nextModelId=String(selection.modelId??"").trim();if(String(provider.activeId??"").trim()!==nextProviderId)provider.activeId=nextProviderId,changed=!0;if(String(store3.state.config.model??"").trim()!==nextModelId)store3.state.config.model=nextModelId,changed=!0;if(backend){let currentId=String(store3.state.sessionId??"").trim();if(currentId)backend.get(currentId).then((snapshot)=>{if(snapshot&&storeRef)hydrateStoreFromSnapshot(storeRef,snapshot,{preserveLocalSyntheticErrors:!0,preserveLocalInterruptedMessages:!0,preserveLocalCompactMessages:!0,preserveLocalCompressionMessages:!0})}).catch(()=>{})}return changed};return{sessions,onStoreCreated:(store3)=>{storeRef=store3,applyHydration(store3,opts.cache,opts.config,opts.tools),registerOAuthRuntimeSyncTarget({getStore:()=>storeRef,updatePersistenceSnapshots:(next)=>{if(next.cache)replaceObjectContents(opts.cache,next.cache);if(next.config)replaceObjectContents(opts.config,next.config)},invalidateSession:(sessionId)=>{let invalidator=opts.agent;if(invalidator?.invalidateSession)invalidator.invalidateSession(sessionId)}});let persist=createDebouncedAsyncTask(async()=>{try{let nextCache=buildUserCacheFromStore({prev:opts.cache,store:store3}),nextConfig=buildUserConfigFromStore({prev:opts.config,store:store3}),nextTools=buildUserToolsFromStore({prev:opts.tools,store:store3}),mcpServers=Array.isArray(store3.state?.mcp?.servers)?store3.state.mcp.servers:[],mcpPhase=normalizeMcpPhase(store3.state?.mcp?.phase),saves=[saveDimcodeUserCache(opts.cacheFile,nextCache),saveDimcodeUserConfig(opts.configFile,nextConfig),saveDimcodeUserTools(opts.toolsFile,nextTools)];if(opts.mcpJsonFile&&(mcpPhase==="ready"||mcpPhase==="error"))saves.push(saveMcpJson(opts.mcpJsonFile,mcpServers));await Promise.all(saves)}catch(e2){console.warn("[dimcode] Failed to persist cache:",e2)}},300);schedulePersist=()=>{if(!persistEnabled)return;persist.schedule()};let persistSupplementalTranscript=createDebouncedAsyncTask(async()=>{if(!backend||typeof backend.updateMetadata!=="function")return;let sessionId=String(store3.state.sessionId??"").trim();if(!sessionId)return;if(store3.state.runningAgentRound)return;if(hasPendingTranscriptTail(store3.state.messages))return;let interruptedMessages=collectInterruptedRoundMessagesForPersistence(store3.state.messages).map(clonePersistableValue),compact=collectCompactMessagesForPersistence(store3.state.messages),compactMessages=uiMessagesToSnapshotMessages(compact),compression=collectCompressionMessagesForPersistence(store3.state.messages),compressionMessages=uiMessagesToSnapshotMessages(compression),errorMessages2=collectErrorMessagesForPersistence(store3.state.messages);try{let payload={interruptedMessages,compactMessages,compressionMessages,errorMessages:errorMessages2};await backend.updateMetadata(sessionId,{ui:payload})}catch{}},0),scheduleSupplementalPersist=()=>{persistSupplementalTranscript.schedule()};if(watch(()=>store3.state.sessionId,schedulePersist),watch(()=>store3.state.config,schedulePersist,{deep:!0}),watch(()=>store3.state.context,schedulePersist,{deep:!0}),watch(()=>store3.state.approval.mode,schedulePersist),watch(()=>store3.state.ui?.locale,schedulePersist),watch(()=>store3.state.ui?.theme,schedulePersist,{deep:!0}),watch(()=>store3.state.ui?.betaUpdates,schedulePersist),watch(()=>store3.state.ui?.statusCompact,schedulePersist),watch(()=>store3.state.ui?.onboarding,schedulePersist,{deep:!0}),watch(()=>store3.state.ui?.shortcuts,schedulePersist,{deep:!0}),watch(()=>store3.state.ui?.greeting,schedulePersist,{deep:!0}),watch(()=>store3.state.provider,schedulePersist,{deep:!0}),watch(()=>store3.state.tools,schedulePersist,{deep:!0}),watch(()=>store3.state.mcp?.servers,schedulePersist,{deep:!0}),watch(()=>store3.state.sessionId,scheduleSupplementalPersist),watch(()=>store3.state.messages.length,scheduleSupplementalPersist),watch(()=>store3.state.runningAgentRound,(running,prev)=>{if(prev&&!running)scheduleSupplementalPersist()}),opts.toolsRef)watch(()=>store3.state.tools,(newTools)=>{if(newTools)opts.toolsRef.current={...opts.toolsRef.current,websearch:{...opts.toolsRef.current?.websearch,apiKey:newTools.websearch?.apiKey??"",apiEndpoint:newTools.websearch?.apiEndpoint,numResults:newTools.websearch?.numResults},mcpServers:Array.isArray(store3.state.mcp?.servers)?JSON.parse(JSON.stringify(store3.state.mcp.servers)):opts.toolsRef.current?.mcpServers}},{deep:!0,immediate:!0}),watch(()=>store3.state.mcp?.servers,(servers)=>{opts.toolsRef.current={...opts.toolsRef.current,mcpServers:Array.isArray(servers)?JSON.parse(JSON.stringify(servers)):opts.toolsRef.current?.mcpServers}},{deep:!0,immediate:!0});schedulePersist()},rehydrate:(next)=>{if(next.cache)replaceObjectContents(opts.cache,next.cache);if(next.config)replaceObjectContents(opts.config,next.config);if(next.tools)replaceObjectContents(opts.tools,next.tools);if(Array.isArray(next.mcpServers))hydratedMcpServers=JSON.parse(JSON.stringify(next.mcpServers));if("mcpPhase"in next)hydratedMcpPhase=normalizeMcpPhase(next.mcpPhase);if("mcpConnectedCount"in next)hydratedMcpConnectedCount=Math.max(0,Number(next.mcpConnectedCount)||0);if("mcpConfiguredCount"in next)hydratedMcpConfiguredCount=Math.max(0,Number(next.mcpConfiguredCount)||hydratedMcpServers.length);else if(Array.isArray(next.mcpServers))hydratedMcpConfiguredCount=hydratedMcpServers.length;if(storeRef)applyHydration(storeRef,opts.cache,opts.config,opts.tools);if(!persistEnabled)persistEnabled=!0;schedulePersist?.()}}}async function resolveStartupSessionId(opts){return readOptionalString3(opts.envSessionId)}function createNoopToolRunner(){return async(call)=>{let name15=String(call?.name??"tool");return{id:String(call?.id??"tool"),status:"error",output:["Tool execution is handled by the DimCode agent.",`This UI cannot run tool "${name15}" locally.`].join(`
|
|
1180
|
-
`)}}}async function createDimSdkShellProps(opts){let{context,cacheDir,cacheFile,cache,configFile,config:config2,toolsFile,tools,mcpJsonFile,mcpServers,mcpPhase,mcpConnectedCount,mcpConfiguredCount}=await createDimcodeContext({cwd:opts.cwd,env:opts.env}),fastStartRaw=String(opts.env.DIMCODE_FAST_START??"").trim().toLowerCase(),fastStart=fastStartRaw==="1"||fastStartRaw==="true"||fastStartRaw==="yes"||fastStartRaw==="on",stateDir=resolveStateDir(cacheDir,opts.env);applyStateDirEnv({env:opts.env,contextEnv:context.env,stateDir});let toolsRef={current:{...tools.settings??{},mcpServers:JSON.parse(JSON.stringify(mcpServers))}},toolsConfig={websearch:{apiKey:()=>toolsRef.current?.websearch?.apiKey??"",apiEndpoint:toolsRef.current?.websearch?.apiEndpoint,numResults:toolsRef.current?.websearch?.numResults}},uiForcedSkills=new Set,agent=createCliAgent({context,processEnv:opts.env,stateDir,tools:toolsConfig,mcpServers:()=>toMcpServerConfigs(toolsRef.current?.mcpServers),mcpInitialState:"deferred"}),sessionsBackend=agent.sessions??null,initialSessionId=await resolveStartupSessionId({sessionsBackend,envSessionId:opts.sessionId});opts.env.DIMCODE_SESSION_ID=initialSessionId??"",context.env.DIMCODE_SESSION_ID=initialSessionId??"";let{sessions,onStoreCreated,rehydrate}=createDimSdkPersistence({cacheFile,cache,configFile,config:config2,toolsFile,tools,mcpJsonFile,mcpServers,mcpPhase,mcpConnectedCount,mcpConfiguredCount,sessionsBackend,agent,toolsRef,deferPersist:fastStart}),storeRef=null,hydrateStarted=!1,mcpSyncQueue=Promise.resolve(),queuedMcpSignature="",cloneMcpServers=(servers)=>JSON.parse(JSON.stringify(Array.isArray(servers)?servers:[])),sleep=async(ms)=>{await new Promise((resolve2)=>setTimeout(resolve2,ms))},ensureStoreMcpState=(store3)=>{let current=store3.state.mcp;if(current&&Array.isArray(current.servers))return current;return store3.state.mcp={servers:[],phase:"deferred",connectedCount:0,configuredCount:0},store3.state.mcp},applyMcpRuntimeState=(phase,connectedCount,configuredCount)=>{if(!storeRef)return;let mcpState=ensureStoreMcpState(storeRef);mcpState.phase=phase,mcpState.connectedCount=Math.max(0,connectedCount),mcpState.configuredCount=Math.max(0,configuredCount)},queueMcpSync=(servers,options)=>{let nextServers=cloneMcpServers(servers),signature=JSON.stringify(nextServers);if(!options?.force&&signature===queuedMcpSignature)return;queuedMcpSignature=signature,mcpSyncQueue=mcpSyncQueue.then(async()=>{if(!storeRef)return;applyMcpRuntimeState("syncing",0,nextServers.length);try{let state=await agent.syncMcpServers?.(toMcpServerConfigs(nextServers));if(!state)state=await agent.getMcpState?.();if(!state){applyMcpRuntimeState("ready",0,nextServers.length);return}applyMcpRuntimeState(state.phase,state.connectedServers.length,state.configuredServers);for(let i2=0;i2<240&&state.phase==="syncing";i2+=1)await sleep(250),state=await agent.getMcpState?.()??state,applyMcpRuntimeState(state.phase,state.connectedServers.length,state.configuredServers)}catch{applyMcpRuntimeState("error",0,nextServers.length)}},async()=>{if(storeRef)applyMcpRuntimeState("error",0,nextServers.length)})},hydrateFromDisk=async()=>{if(hydrateStarted)return;hydrateStarted=!0;try{let reloadEnv={...opts.env,DIMCODE_FAST_START:"0"},full=await createDimcodeContext({cwd:opts.cwd,env:reloadEnv});if(rehydrate({cache:full.cache,config:full.config,tools:full.tools,mcpServers:full.mcpServers,mcpPhase:"syncing",mcpConnectedCount:0,mcpConfiguredCount:full.mcpServers.length}),!storeRef)return;if(full.context.cwd)storeRef.setCwd(full.context.cwd);if(full.context.focusFiles)storeRef.setFocusFiles(full.context.focusFiles);let nextEnv=full.context.env??{};for(let[key,value]of Object.entries(nextEnv))storeRef.setEnvVar(key,value);let envReader=createEnvReader(full.context.env??{}),nextRun=resolveInitialRunConfig(envReader),modelFromProvider=String(storeRef.state.config.model??"").trim();if(storeRef.state.config={...storeRef.state.config,...nextRun},modelFromProvider)storeRef.state.config.model=modelFromProvider;queueMcpSync(full.mcpServers,{force:!0})}catch{}},onStoreCreatedWithHydrate=(store3)=>{storeRef=store3,onStoreCreated(store3),queueMicrotask(()=>{if(!fastStart){queueMcpSync(cloneMcpServers(store3.state.mcp?.servers??[]),{force:!0});return}hydrateFromDisk()})};return{toolRunner:createNoopToolRunner(),context,agent,onStoreCreated:onStoreCreatedWithHydrate,sessions,uiForcedSkills}}import{spawn as spawn3}from"node:child_process";import path32 from"node:path";var import_semver2=__toESM(require_semver2(),1);function isBetaUpdatesEnabled(config2){return config2.settings?.beta===!0}async function readBetaUpdatesEnabled(env=process.env){let{config:config2}=await loadDimcodeUserConfig(env);return isBetaUpdatesEnabled(config2)}var import_semver=__toESM(require_semver2(),1);function isPrereleaseVersion(version2){let parsed=import_semver.default.valid(version2);return Boolean(parsed&&import_semver.default.prerelease(parsed)?.length)}function selectUpdateVersion(versions2,opts){return versions2.map((version2)=>import_semver.default.valid(String(version2??"").trim())).filter((version2)=>Boolean(version2)).filter((version2)=>opts.includePrerelease?!0:!isPrereleaseVersion(version2)).sort(import_semver.default.rcompare)[0]??null}function shouldInstallSelectedVersion(current,selected,opts){let currentVersion=import_semver.default.valid(String(current??"").trim()),selectedVersion=import_semver.default.valid(String(selected??"").trim());if(!currentVersion||!selectedVersion)return String(current??"").trim()!==String(selected??"").trim();if(import_semver.default.eq(currentVersion,selectedVersion))return!1;if(import_semver.default.gt(selectedVersion,currentVersion))return!0;return!opts.includePrerelease&&isPrereleaseVersion(currentVersion)&&!isPrereleaseVersion(selectedVersion)}var UPGRADE_TOAST_FILE="upgrade-toast.json";function notifyUpgradeToast(message){let text=String(message??"").trim();if(!text)return;let handler=globalThis?.__DIMCODE_UPGRADE_TOAST__;if(typeof handler==="function")try{handler(text);return}catch{}writeUpgradeToastFile(text)}async function writeUpgradeToastFile(message){try{let[{mkdir:mkdir11,writeFile:writeFile10},path31]=await Promise.all([import("node:fs/promises"),import("node:path")]),dir=await getDimcodeUserDir(process.env);await mkdir11(dir,{recursive:!0});let filePath=path31.join(dir,UPGRADE_TOAST_FILE),payload=JSON.stringify({message,createdAt:Date.now()});await writeFile10(filePath,payload,"utf8")}catch{}}async function consumeUpgradeToastFile(){try{let[{readFile:readFile11,unlink},path31]=await Promise.all([import("node:fs/promises"),import("node:path")]),dir=await getDimcodeUserDir(process.env),filePath=path31.join(dir,UPGRADE_TOAST_FILE),raw=await readFile11(filePath,"utf8");unlink(filePath).catch(()=>{});let data=JSON.parse(raw);return String(data?.message??"").trim()||null}catch{return null}}import{existsSync as existsSync3,readFileSync as readFileSync2}from"node:fs";import path31 from"node:path";import{fileURLToPath as fileURLToPath4}from"node:url";function resolveCliVersion(){let injected="0.0.9-beta.28".trim();if(injected)return{version:injected,source:"injected"};let pkgVersion=readNearestPackageVersion();if(pkgVersion)return{version:pkgVersion,source:"package"};return null}function readNearestPackageVersion(){try{let dir=path31.dirname(fileURLToPath4(import.meta.url));for(let i2=0;i2<6;i2++){let candidate=path31.join(dir,"package.json");if(existsSync3(candidate)){let raw=readFileSync2(candidate,"utf8"),pkg=JSON.parse(raw),version2=typeof pkg?.version==="string"?pkg.version.trim():"";if(version2)return version2}let parent=path31.dirname(dir);if(parent===dir)break;dir=parent}}catch{}return null}var DEFAULT_GITLAB_HOST="gitlab.bfbops.com",DEFAULT_GITLAB_PROJECT="nextim/goatagent",DEFAULT_GITHUB_REPO="nextim/goatagent",DEFAULT_GITHUB_API_BASE_URL="https://api.github.com",RELEASE_CHECK_TIMEOUT_MS=5000;var RELEASE_LIST_PER_PAGE=100,RELEASE_LIST_MAX_PAGES=3,autoBinaryUpgradeStartedVersions=new Set;function getReleaseTimeoutMs(){let raw=String(process.env.DIMCODE_BINARY_UPDATE_CHECK_TIMEOUT_MS??"").trim(),n2=Number(raw);return Number.isFinite(n2)&&n2>100?Math.floor(n2):RELEASE_CHECK_TIMEOUT_MS}function isSelfContainedBinary(proc=process){try{let execPath=String(proc.execPath??"").trim();if(!execPath)return!1;let base=path32.basename(execPath.replace(/\\/g,"/")).toLowerCase();if(base==="node"||base.startsWith("node."))return!1;if(base==="bun"||base.startsWith("bun."))return!1;return!0}catch{return!1}}function resolveBunTarget(platform=process.platform,arch=process.arch){if(platform==="darwin"&&arch==="arm64")return"bun-darwin-arm64";if(platform==="darwin"&&arch==="x64")return"bun-darwin-x64";if(platform==="linux"&&arch==="x64")return"bun-linux-x64";if(platform==="linux"&&arch==="arm64")return"bun-linux-arm64";if(platform==="win32"&&arch==="x64")return"bun-windows-x64";return null}function resolveAssetName(target,platform=process.platform){return platform==="win32"?`dim-${target}.exe`:`dim-${target}`}function normalizeTagToSemver(tag){let raw=String(tag??"").trim();if(!raw)return null;let withoutV=raw.startsWith("v")?raw.slice(1):raw;return import_semver2.default.valid(withoutV)?withoutV:null}function selectGitHubAsset(releaseJson,assetName){let assets=Array.isArray(releaseJson?.assets)?releaseJson.assets:[];for(let asset of assets){let name15=typeof asset?.name==="string"?asset.name:"",url2=typeof asset?.browser_download_url==="string"?asset.browser_download_url:"";if(name15===assetName&&url2)return{name:name15,url:url2}}return null}function selectGitLabAsset(releaseJson,assetName){let links=Array.isArray(releaseJson?.assets?.links)?releaseJson.assets.links:[];for(let link of links){let name15=typeof link?.name==="string"?link.name:"",direct=typeof link?.direct_asset_url==="string"?link.direct_asset_url:"",url2=typeof link?.url==="string"?link.url:"",resolved=direct||url2;if(name15===assetName&&resolved)return{name:name15,url:resolved}}return null}async function checkBinaryUpgrade(){if(process.env.DIMCODE_DISABLE_AUTOUPDATE==="1")return null;if(!isSelfContainedBinary())return null;let current=resolveCliVersion()?.version;if(!current||!import_semver2.default.valid(current))return null;let includePrerelease=await readBetaUpdatesEnabled(process.env),release2=await fetchLatestReleaseInfo(process.env,includePrerelease);if(!release2)return null;if(!import_semver2.default.valid(release2.version)||!shouldInstallSelectedVersion(current,release2.version,{includePrerelease}))return null;if(process.env.DIMCODE_AUTOUPDATE!=="0"){if(autoBinaryUpgradeStartedVersions.has(release2.version))return null;return autoBinaryUpgradeStartedVersions.add(release2.version),startAutoBinaryUpgrade(release2.version),`Update available: dim ${release2.version} (current: ${current}). Installing in background; restart to use it.`}return`Update available: dim ${release2.version} (current: ${current}). Run: dim upgrade`}function resolveProvider(env){if(String(env.DIMCODE_BINARY_UPDATE_PROVIDER??"").trim().toLowerCase()==="github")return"github";if((typeof __CLI_BINARY_UPDATE_PROVIDER__==="string"?__CLI_BINARY_UPDATE_PROVIDER__.trim().toLowerCase():"")==="github")return"github";return"gitlab"}function resolveBinaryUpdateConfig(env){let provider=resolveProvider(env),githubApiBaseUrl=resolveGitHubApiBaseUrl(env),projectInfo=resolveProject(env,provider);return{provider,host:projectInfo.host,project:projectInfo.project,githubApiBaseUrl}}function resolveGitHubApiBaseUrl(env){let raw=String(env.DIMCODE_BINARY_UPDATE_GITHUB_API_BASE_URL??"").trim();if(raw)return raw.replace(/\/+$/,"");let injected=typeof __CLI_BINARY_UPDATE_GITHUB_API_BASE_URL__==="string"?__CLI_BINARY_UPDATE_GITHUB_API_BASE_URL__.trim():"";if(injected)return injected.replace(/\/+$/,"");return DEFAULT_GITHUB_API_BASE_URL}function resolveProject(env,provider){if(provider==="github"){let injectedRepo=typeof __CLI_BINARY_UPDATE_REPO__==="string"?__CLI_BINARY_UPDATE_REPO__.trim():"";return{project:String(env.DIMCODE_BINARY_UPDATE_REPO??injectedRepo??DEFAULT_GITHUB_REPO).trim()||DEFAULT_GITHUB_REPO}}let injectedHost=typeof __CLI_BINARY_UPDATE_GITLAB_HOST__==="string"?__CLI_BINARY_UPDATE_GITLAB_HOST__.trim():"",injectedProject=typeof __CLI_BINARY_UPDATE_PROJECT__==="string"?__CLI_BINARY_UPDATE_PROJECT__.trim():"",host=String(env.DIMCODE_BINARY_UPDATE_GITLAB_HOST??injectedHost??DEFAULT_GITLAB_HOST).trim()||DEFAULT_GITLAB_HOST,project=String(env.DIMCODE_BINARY_UPDATE_PROJECT??injectedProject??DEFAULT_GITLAB_PROJECT).trim()||DEFAULT_GITLAB_PROJECT;return{host,project}}function resolveAuthHeaders(env,provider){if(provider==="github"){let token2=String(env.DIMCODE_GITHUB_TOKEN??env.GITHUB_TOKEN??"").trim();return token2?{Authorization:`Bearer ${token2}`}:{}}let token=String(env.DIMCODE_GITLAB_TOKEN??env.GITLAB_TOKEN??"").trim();if(!token)return{};if(token.startsWith("glpat-"))return{"PRIVATE-TOKEN":token};return{Authorization:`Bearer ${token}`}}async function fetchLatestReleaseInfo(env,includePrerelease){return await fetchReleaseInfo("latest",env,{includePrerelease})}async function fetchReleaseInfo(desired,env,opts){let config2=resolveBinaryUpdateConfig(env),provider=config2.provider,projectInfo={host:config2.host,project:config2.project},headers=resolveAuthHeaders(env,provider),target=resolveBunTarget();if(!target)return null;let assetName=resolveAssetName(target);if(desired==="latest")return await fetchLatestSelectableReleaseInfo({provider,host:projectInfo.host,project:projectInfo.project,headers,githubApiBaseUrl:config2.githubApiBaseUrl,target,assetName,includePrerelease:opts?.includePrerelease===!0});let tagCandidates=buildTagCandidates(desired);for(let tagCandidate of tagCandidates){let releaseJson=await fetchReleaseJson({provider,host:projectInfo.host,project:projectInfo.project,tag:tagCandidate,headers,githubApiBaseUrl:config2.githubApiBaseUrl});if(!releaseJson)continue;let info=releaseInfoFromJson({releaseJson,provider,host:projectInfo.host,project:projectInfo.project,target,assetName,fallbackTag:tagCandidate});if(info)return info}return null}async function fetchLatestSelectableReleaseInfo(opts){let releases=[];for(let page=1;page<=RELEASE_LIST_MAX_PAGES;page+=1){let releaseJsonList=await fetchReleaseListJson({...opts,page});if(!Array.isArray(releaseJsonList)||releaseJsonList.length===0)break;for(let releaseJson of releaseJsonList){let info=releaseInfoFromJson({releaseJson,provider:opts.provider,host:opts.host,project:opts.project,target:opts.target,assetName:opts.assetName});if(info)releases.push(info)}if(releaseJsonList.length<RELEASE_LIST_PER_PAGE)break}let selected=selectUpdateVersion(releases.map((release2)=>release2.version),{includePrerelease:opts.includePrerelease});if(!selected)return null;return releases.find((release2)=>release2.version===selected)??null}function releaseInfoFromJson(opts){let tag=String(opts.releaseJson?.tag_name??opts.releaseJson?.tagName??"").trim()||String(opts.fallbackTag??"").trim(),version2=normalizeTagToSemver(tag);if(!version2)return null;let asset=opts.provider==="github"?selectGitHubAsset(opts.releaseJson,opts.assetName):selectGitLabAsset(opts.releaseJson,opts.assetName);if(!asset)return null;return{provider:opts.provider,host:opts.host,project:opts.project,tag,version:version2,asset,target:opts.target,assetName:opts.assetName}}function buildTagCandidates(versionOrTag){let raw=String(versionOrTag??"").trim();if(!raw)return[];if(raw==="latest")return["latest"];if(raw.startsWith("v"))return[raw,raw.slice(1)];return[`v${raw}`,raw]}async function fetchReleaseJson(opts){let controller=new AbortController,timeoutId=setTimeout(()=>controller.abort(),getReleaseTimeoutMs());try{let url2=buildReleaseApiUrl(opts),response=await fetch(url2,{headers:{Accept:"application/json",...opts.headers},signal:controller.signal});if(!response.ok)return null;return await response.json()}catch{return null}finally{clearTimeout(timeoutId)}}async function fetchReleaseListJson(opts){let controller=new AbortController,timeoutId=setTimeout(()=>controller.abort(),getReleaseTimeoutMs());try{let url2=buildReleaseListApiUrl(opts),response=await fetch(url2,{headers:{Accept:"application/json",...opts.headers},signal:controller.signal});if(!response.ok)return null;let json2=await response.json();return Array.isArray(json2)?json2:null}catch{return null}finally{clearTimeout(timeoutId)}}function buildReleaseApiUrl(opts){if(opts.provider==="github"){let apiBase=String(opts.githubApiBaseUrl||DEFAULT_GITHUB_API_BASE_URL).replace(/\/+$/,"");if(opts.tag==="latest")return`${apiBase}/repos/${opts.project}/releases/latest`;return`${apiBase}/repos/${opts.project}/releases/tags/${encodeURIComponent(opts.tag)}`}let host=opts.host||DEFAULT_GITLAB_HOST,projectId=encodeURIComponent(opts.project);if(opts.tag==="latest")return`https://${host}/api/v4/projects/${projectId}/releases/permalink/latest`;return`https://${host}/api/v4/projects/${projectId}/releases/${encodeURIComponent(opts.tag)}`}function buildReleaseListApiUrl(opts){let page=Math.max(1,Math.floor(opts.page));if(opts.provider==="github")return`${String(opts.githubApiBaseUrl||DEFAULT_GITHUB_API_BASE_URL).replace(/\/+$/,"")}/repos/${opts.project}/releases?per_page=${RELEASE_LIST_PER_PAGE}&page=${page}`;let host=opts.host||DEFAULT_GITLAB_HOST,projectId=encodeURIComponent(opts.project);return`https://${host}/api/v4/projects/${projectId}/releases?per_page=${RELEASE_LIST_PER_PAGE}&page=${page}`}function startAutoBinaryUpgrade(version2){try{spawn3(process.execPath,["upgrade",version2,"--background"],{stdio:"ignore",detached:!0,env:{...process.env,DIMCODE_BINARY_UPGRADE_CHILD:"1"}}).unref()}catch{}}var import_cross_spawn2=__toESM(require_cross_spawn(),1);import{existsSync as existsSync5}from"node:fs";import path34 from"node:path";import{existsSync as existsSync4,readFileSync as readFileSync3,realpathSync,statSync as statSync2}from"node:fs";import path33 from"node:path";import{fileURLToPath as fileURLToPath5}from"node:url";function resolveCurrentInstallTarget(opts){let execPath=normalizeExistingPath(opts.execPath);if(opts.isSelfContainedBinary)return{kind:"binary",manager:"binary",binPath:execPath??normalizePath2(opts.execPath)};let importPath=pathFromFileUrl(opts.importMetaUrl),argvPath=normalizeExistingPath(opts.argvPath),binPath=argvPath??normalizePath2(opts.argvPath),candidates=uniqueStrings([importPath,argvPath,normalizeExistingPath(importPath),execPath]);for(let candidate of candidates){let packageRoot=findDimcodePackageRoot(candidate);if(!packageRoot)continue;let sourceEntry=path33.join(packageRoot,"src","cli.ts");if(existsSync4(sourceEntry))return{kind:"source",manager:"source",packageRoot,binPath};let bun=resolveBunGlobalTarget(packageRoot,binPath);if(bun)return bun;let npm=resolveNpmGlobalTarget(packageRoot,binPath);if(npm)return npm;return{kind:"unknown",manager:"unknown",packageRoot,binPath,reason:"dimcode package root is not a recognized global install"}}return{kind:"unknown",manager:"unknown",binPath,reason:"unable to locate dimcode package root"}}function resolveBunGlobalTarget(packageRoot,binPath){let normalized=toPosix(packageRoot);if(!normalized.includes("/.bun/install/global/node_modules/dimcode"))return null;let marker16="/.bun/install/global/node_modules/dimcode",index=normalized.lastIndexOf(marker16),prefix=index>=0?packageRoot.slice(0,index+5):void 0;return{kind:"bun",manager:"bun",packageRoot,binPath,prefix}}function resolveNpmGlobalTarget(packageRoot,binPath){let parts=toPosix(packageRoot).split("/");if(parts.at(-1)!=="dimcode")return null;let nodeModulesIndex=parts.length-2;if(parts[nodeModulesIndex]!=="node_modules")return null;let hasLibSegment=parts[nodeModulesIndex-1]==="lib",prefixParts=hasLibSegment?parts.slice(0,nodeModulesIndex-1):parts.slice(0,nodeModulesIndex),prefix=fromPosix(prefixParts.join("/"))||path33.parse(packageRoot).root;if(!prefix)return null;if(!hasLibSegment&&existsSync4(path33.join(prefix,"package.json")))return{kind:"unknown",manager:"unknown",packageRoot,binPath,reason:"dimcode appears to be installed in a local node_modules"};return{kind:"npm",manager:"npm",packageRoot,binPath,prefix}}function findDimcodePackageRoot(startPath){let normalized=normalizeExistingPath(startPath);if(!normalized)return null;let dir=isLikelyFilePath(normalized)?path33.dirname(normalized):normalized;for(;;){let packagePath=path33.join(dir,"package.json");if(existsSync4(packagePath)&&readPackageName(packagePath)==="dimcode")return dir;let parent=path33.dirname(dir);if(!parent||parent===dir)return null;dir=parent}}function readPackageName(packagePath){try{let parsed=JSON.parse(readFileSync3(packagePath,"utf8"));return typeof parsed?.name==="string"?parsed.name:""}catch{return""}}function pathFromFileUrl(value){try{return value.startsWith("file:")?fileURLToPath5(value):void 0}catch{return}}function normalizeExistingPath(value){let normalized=normalizePath2(value);if(!normalized)return;try{return realpathSync(normalized)}catch{return normalized}}function normalizePath2(value){let raw=String(value??"").trim();if(!raw)return;if(!path33.isAbsolute(raw))return;return path33.resolve(raw)}function uniqueStrings(values){return[...new Set(values.filter((v2)=>Boolean(v2)))]}function isLikelyFilePath(value){if(existsSync4(value))try{return statSync2(value).isFile()}catch{}return Boolean(path33.extname(value))}function toPosix(value){return value.replace(/\\/g,"/")}function fromPosix(value){if(path33.sep==="/")return value;return value.replace(/\//g,path33.sep)}var DEFAULT_PACKAGE_NAME="dimcode";function resolveWrapperPackageVersion(){return(process.env.DIMCODE_NPM_PACKAGE_VERSION||"").trim()||null}function isBetaOnlyWrapper(packageName){if(packageName===DEFAULT_PACKAGE_NAME)return!1;return process.env.DIMCODE_NPM_PACKAGE_BETA_ONLY==="1"}var DEBUG_LOG_PATH=process.env.DIMCODE_DEBUG_LOG||"./dimcode-debug.log",CHECK_TIMEOUT_MS=5000,autoInstallStartedVersions=new Set;async function fetchPackageVersions(packageName=DEFAULT_PACKAGE_NAME){try{let controller=new AbortController,timeoutId=setTimeout(()=>controller.abort(),CHECK_TIMEOUT_MS),response=await fetch(`https://registry.npmjs.org/${packageName}`,{signal:controller.signal,headers:{Accept:"application/json"}});if(clearTimeout(timeoutId),!response.ok)throw Error(`npm registry returned ${response.status}`);let versions2=(await response.json())?.versions;if(!versions2||typeof versions2!=="object")throw Error("No versions found in registry response");return Object.keys(versions2)}catch(error48){if(error48 instanceof Error&&error48.name==="AbortError")throw Error("npm registry request timed out");throw error48}}async function resolveLatestNpmVersion(packageName,includePrerelease,betaOnly=!1){let raw=await fetchPackageVersions(packageName),versions2=betaOnly?raw.filter((v2)=>isPrereleaseVersion(v2)):raw;return selectUpdateVersion(versions2,{includePrerelease:betaOnly?!0:includePrerelease})}async function checkNpmUpgrade(packageName=DEFAULT_PACKAGE_NAME){if(await logUpgradeCheck("start",{disableAutoUpdate:process.env.DIMCODE_DISABLE_AUTOUPDATE==="1",autoUpdate:process.env.DIMCODE_AUTOUPDATE!=="0",cwd:safeCwd(),argv:safeArgv(),debugLogPath:DEBUG_LOG_PATH}),process.env.DIMCODE_DISABLE_AUTOUPDATE==="1")return await logUpgradeCheck("skip-disabled"),null;let resolvedVersion=resolveCliVersion();if(!resolvedVersion?.version)return await logUpgradeCheck("skip-missing-version"),null;let wrapperVersion=packageName!==DEFAULT_PACKAGE_NAME?resolveWrapperPackageVersion():null,current=wrapperVersion||resolvedVersion.version,hasInjectedVersion=resolvedVersion.source==="injected";try{let betaOnly=isBetaOnlyWrapper(packageName),includePrerelease=betaOnly||await readBetaUpdatesEnabled(),latest=await resolveLatestNpmVersion(packageName,includePrerelease,betaOnly);if(await logUpgradeCheck("check-result",{current,latest,hasInjectedVersion,wrapperVersion,includePrerelease,betaOnly}),!latest)return await logUpgradeCheck("error",{message:"Failed to fetch latest version"}),null;if(!shouldInstallSelectedVersion(current,latest,{includePrerelease}))return await logUpgradeCheck("no-update",{current,latest}),null;if(process.env.DIMCODE_AUTOUPDATE!=="0"&&hasInjectedVersion){let installer=resolvePackageInstaller(latest,packageName);if(!installer)return await logUpgradeCheck("autoupdate-skip-unknown-install-target",{current,latest,target:resolveNpmInstallTarget()}),`Update available: ${packageName}@${latest} (current: ${current}). Auto-update skipped because the current install source could not be identified. Run: dim version`;let installKey=`${packageName}@${latest}:${installer.manager}:${installer.prefix??""}`;if(autoInstallStartedVersions.has(installKey))return await logUpgradeCheck("autoupdate-skip-duplicate",{version:latest}),null;return autoInstallStartedVersions.add(installKey),await logUpgradeCheck("update-available",{current,latest,autoUpdate:!0,installer:installer.manager,prefix:installer.prefix}),startAutoInstall(latest,packageName,installer),`Update available: ${packageName}@${latest} (current: ${current}). Installing ${installer.manager} global package in background. Restart terminal after it finishes.`}return await logUpgradeCheck("update-available",{current,latest,autoUpdate:!1}),`Update available: ${packageName}@${latest} (current: ${current})`}catch(error48){return await logUpgradeCheck("error",{message:error48 instanceof Error?error48.message:String(error48)}),null}}function startAutoInstall(version2,packageName=DEFAULT_PACKAGE_NAME,installer){try{logUpgradeCheck("autoupdate-start",{version:version2,installer:installer.manager,prefix:installer.prefix});let proc=import_cross_spawn2.default(installer.command,[...installer.argsPrefix,...installer.installArgs],{stdio:"ignore",detached:!0,windowsHide:process.platform==="win32"});proc.unref();let finished=!1,finalize2=(message)=>{if(finished)return;finished=!0,logUpgradeCheck("autoupdate-finish",{version:version2,message}),notifyUpgradeToast(message)};proc.on("close",(code)=>{if(code===0)finalize2(`Update installed: ${packageName}@${version2}. Restart terminal to use the new version.`);else finalize2(`Auto-update failed. Run: ${installer.manualCommand}`)}),proc.on("error",()=>{logUpgradeCheck("autoupdate-error",{version:version2,reason:"process-error"}),finalize2(`Auto-update failed. Run: ${installer.manualCommand}`)})}catch{logUpgradeCheck("autoupdate-error",{version:version2,reason:"spawn-throw"}),notifyUpgradeToast(`Auto-update failed. Run: ${installer.manualCommand}`)}}async function logUpgradeCheck(_event,_data){}function safeCwd(){try{return process.cwd()}catch{return}}function safeArgv(){try{return process.argv}catch{return}}function resolveNpmInstallTarget(){return resolveCurrentInstallTarget({importMetaUrl:import.meta.url,argvPath:process.argv[1],execPath:process.execPath,env:process.env,isSelfContainedBinary:!1})}function resolvePackageInstaller(version2,packageName=DEFAULT_PACKAGE_NAME){let target=resolveNpmInstallTarget(),manager=target.manager==="npm"||target.manager==="bun"?target.manager:null;if(!manager)return null;let{command,argsPrefix}=resolvePackageManagerCommand(manager),packageSpec=`${packageName}@${version2}`,prefix=manager==="npm"?target.prefix:void 0,installArgs=manager==="npm"?["install","-g",...prefix?["--prefix",prefix]:[],packageSpec]:["install","-g",packageSpec];return{manager,command,argsPrefix,installArgs,manualCommand:manager==="npm"?formatManualCommand(["npm","install","-g",...prefix?["--prefix",prefix]:[],packageSpec]):`bun install -g ${packageSpec}`,prefix}}function formatManualCommand(args){return args.map(quoteShellArg).join(" ")}function quoteShellArg(value){if(/^[\w./:@%+=,-]+$/.test(value))return value;return JSON.stringify(value)}function resolvePackageManagerCommand(pm){if(process.platform!=="win32")return{command:pm,argsPrefix:[]};if(pm==="bun")return resolveBunCommand();return resolveNpmCommand()}function resolveBunCommand(){let execPath=String(process.execPath??"").trim();if(execPath){if(path34.basename(execPath).toLowerCase().startsWith("bun")&&existsSync5(execPath))return{command:execPath,argsPrefix:[]}}let bunHome=String(process.env.BUN_INSTALL??"").trim();if(bunHome){let bunExe=path34.join(bunHome,"bin","bun.exe");if(existsSync5(bunExe))return{command:bunExe,argsPrefix:[]}}return{command:"bun",argsPrefix:[]}}function resolveNpmCommand(){let execPath=String(process.execPath??"").trim(),execDir=execPath?path34.dirname(execPath):"";if(execDir){let npmCmd=path34.join(execDir,"npm.cmd");if(existsSync5(npmCmd))return{command:npmCmd,argsPrefix:[]};let npmCliCandidates=[path34.join(execDir,"node_modules","npm","bin","npm-cli.js"),path34.resolve(execDir,"..","lib","node_modules","npm","bin","npm-cli.js")];if(execPath){for(let npmCli of npmCliCandidates)if(existsSync5(npmCli))return{command:execPath,argsPrefix:[npmCli]}}}let appData=String(process.env.APPDATA??"").trim();if(appData){let npmCmd=path34.join(appData,"npm","npm.cmd");if(existsSync5(npmCmd))return{command:npmCmd,argsPrefix:[]}}let programFiles=String(process.env.ProgramFiles??"").trim();if(programFiles){let npmCmd=path34.join(programFiles,"nodejs","npm.cmd");if(existsSync5(npmCmd))return{command:npmCmd,argsPrefix:[]}}let programFilesX86=String(process.env["ProgramFiles(x86)"]??"").trim();if(programFilesX86){let npmCmd=path34.join(programFilesX86,"nodejs","npm.cmd");if(existsSync5(npmCmd))return{command:npmCmd,argsPrefix:[]}}return{command:"npm",argsPrefix:[]}}function getNpmPackageOverride(){return(process.env.DIMCODE_NPM_PACKAGE||"").trim()||void 0}async function checkUpgrade(){let npmPackage=getNpmPackageOverride();if(npmPackage)return await checkNpmUpgrade(npmPackage);if(isSelfContainedBinary())return await checkBinaryUpgrade();return await checkNpmUpgrade()}import process25 from"node:process";var logger=debugLog;async function cleanupExpiredSessionCaches3(opts){return cleanupExpiredSessionCaches2({...opts,logger})}var DEFAULT_LINE_THRESHOLD=400,DEFAULT_TOKEN_THRESHOLD=12000,DEFAULT_PREVIEW_LINES=20,DEFAULT_FIRST_RANGE_LINES=300,DEFAULT_PREVIEW_MAX_LINE_CHARS=240,DEFAULT_PREVIEW_MAX_CHARS=4000;function isNodeLike3(){let p2=globalThis.process;return Boolean(p2&&typeof p2?.versions?.node==="string")}function estimateTokens(text){let raw=String(text??""),chars=raw.length,bytes=Buffer.byteLength(raw,"utf-8"),nonAsciiChars=0;for(let i2=0;i2<raw.length;i2++)if(raw.charCodeAt(i2)>127)nonAsciiChars++;let asciiChars=Math.max(0,chars-nonAsciiChars),byChars=Math.ceil(chars/4),byBytes=Math.ceil(bytes/3),byMixed=Math.ceil(asciiChars/4+nonAsciiChars*0.9);return Math.max(byChars,byBytes,byMixed)}function countLines3(text){if(!text)return 0;return text.split(`
|
|
1179
|
+
${assistantSig}`;rounds.delete(key),rounds.set(key,round)}return[...rounds.values()].slice(-opts.limit).flat().map(clonePersistableValue)}function collectInterruptedRoundMessagesForPersistence(messages){return collectAnchoredAssistantRoundsForPersistence(messages,{limit:INTERRUPTED_PERSISTED_MESSAGE_LIMIT2,include:isInterruptedAssistantMessage})}function collectCompactMessagesForPersistence(messages){let unique=new Map;for(let m2 of messages){if(!m2||m2.role!=="assistant")continue;let id2=String(m2?.id??"").trim();if(!isCompactTranscriptMessageId(id2))continue;if(id2.startsWith("compact-restored-")||id2.startsWith("restored-compact-"))continue;if(!m2.parts.some((p2)=>{if(p2.type==="markdown")return String(p2?.markdown??"").trim().length>0;if(p2.type==="info")return String(p2?.text??"").trim().length>0;return!1}))continue;let sig=messagePersistenceSignature(m2);if(!sig)continue;unique.delete(sig),unique.set(sig,m2)}let out=[...unique.values()];if(out.length<=COMPACT_PERSISTED_MESSAGE_LIMIT2)return out;return out.slice(-COMPACT_PERSISTED_MESSAGE_LIMIT2)}function collectCompressionMessagesForPersistence(messages){let unique=new Map;for(let m2 of messages){if(!m2||m2.role!=="assistant")continue;let id2=String(m2?.id??"").trim();if(!isCompressionTranscriptMessageId(id2))continue;if(id2.startsWith("compression-restored-")||id2.startsWith("restored-compression-"))continue;if(!m2.parts.some((p2)=>{if(p2.type==="markdown")return String(p2?.markdown??"").trim().length>0;if(p2.type==="info")return String(p2?.text??"").trim().length>0;return!1}))continue;let sig=messagePersistenceSignature(m2);if(!sig)continue;unique.delete(sig),unique.set(sig,m2)}let out=[...unique.values()];if(out.length<=COMPRESSION_PERSISTED_MESSAGE_LIMIT2)return out;return out.slice(-COMPRESSION_PERSISTED_MESSAGE_LIMIT2)}function clonePersistableValue(value){return JSON.parse(JSON.stringify(value))}function assistantMessageHasDurableTranscriptParts(message){if(!message||message.role!=="assistant")return!1;return message.parts.some((part)=>{if(part.type==="markdown")return String(part.markdown??"").trim().length>0;if(part.type==="thinking")return String(part.content??"").trim().length>0;if(part.type==="tool_call")return!0;if(part.type==="tool_result")return!0;return!1})}function hasPendingTranscriptTail(messages){for(let index=messages.length-1;index>=0;index-=1){let message=messages[index];if(!message)continue;if(message.role==="tool")continue;if(message.role==="user")return!0;if(message.role==="assistant")return!assistantMessageHasDurableTranscriptParts(message);return!1}return!1}function collectErrorMessagesForPersistence(messages){return collectAnchoredAssistantRoundsForPersistence(messages,{limit:ERROR_PERSISTED_MESSAGE_LIMIT2,include:isErrorAssistantMessage})}function createDimSdkPersistence(opts){let storeRef=null,persistEnabled=!opts.deferPersist,schedulePersist=null,hydratedMcpServers=Array.isArray(opts.mcpServers)?JSON.parse(JSON.stringify(opts.mcpServers)):[],hydratedMcpPhase=normalizeMcpPhase(opts.mcpPhase),hydratedMcpConnectedCount=Math.max(0,Number(opts.mcpConnectedCount)||0),hydratedMcpConfiguredCount=Math.max(0,Number(opts.mcpConfiguredCount)||hydratedMcpServers.length),backend=opts.sessionsBackend??null,sessions=backend?{async list(){return(await backend.list()).map(snapshotToListItem).filter((item)=>Boolean(item))},async get(id2){let sessionId=String(id2??"").trim();if(!sessionId)return;return backend.get(sessionId)},async reload(id2){let sessionId=String(id2??"").trim();if(!sessionId||!storeRef)return!1;if(String(storeRef.state.sessionId??"")!==sessionId)return!1;if(storeRef.state.runningAgentRound)return!1;if(storeRef.state.paused)return!1;if(storeRef.state.approval?.active?.status==="pending")return!1;let snapshot=await backend.get(sessionId);if(!snapshot)return!1;hydrateStoreFromSnapshot(storeRef,snapshot,{preserveLocalSyntheticErrors:!0,preserveLocalInterruptedMessages:!0,preserveLocalCompactMessages:!0,preserveLocalCompressionMessages:!0});let invalidator=opts.agent;if(invalidator?.invalidateSession)invalidator.invalidateSession(sessionId);return!0},async use(id2){let sessionId=String(id2??"").trim();if(!sessionId||!storeRef)return;if(String(storeRef.state.sessionId??"")===sessionId)return;let snapshot=await backend.get(sessionId);if(!snapshot)return;hydrateStoreFromSnapshot(storeRef,snapshot);let invalidator=opts.agent;if(invalidator?.invalidateSession)invalidator.invalidateSession(sessionId)},async createNew(){if(!storeRef)return;let snapshot=await backend.create();if(!snapshot)return;let newSessionId=snapshotId2(snapshot);if(hydrateStoreFromSnapshot(storeRef,snapshot),newSessionId){let invalidator=opts.agent;if(invalidator?.invalidateSession)invalidator.invalidateSession(newSessionId)}},async delete(id2){let sessionId=String(id2??"").trim();if(!sessionId)return;if(await backend.destroy(sessionId),storeRef&&String(storeRef.state.sessionId??"")===sessionId)storeRef.state.sessionId=""},async rename(id2,title){if(!storeRef)return;if(typeof backend.rename!=="function")return;let sessionId=String(id2??"").trim(),nextTitle=String(title??"").trim();if(!sessionId||!nextTitle)return;let snapshot=await backend.rename(sessionId,nextTitle);if(snapshot&&String(storeRef.state.sessionId??"")===sessionId)hydrateStoreFromSnapshot(storeRef,snapshot,{preserveLocalSyntheticErrors:!0,preserveLocalInterruptedMessages:!0,preserveLocalCompactMessages:!0,preserveLocalCompressionMessages:!0})},async updateMetadata(id2,metadata){if(typeof backend.updateMetadata!=="function")return;let sessionId=String(id2??"").trim();if(!sessionId)return;await backend.updateMetadata(sessionId,metadata)},async fork(opts2){if(!storeRef)return;let seed=Array.isArray(opts2?.messages)?opts2.messages:[];if(typeof backend.createWithMessages!=="function"){let snapshot2=await backend.create();if(snapshot2)storeRef.state.sessionId=snapshotId2(snapshot2);storeRef.replaceMessages(seed),storeRef.clearRevertedMessages(),storeRef.state.selectedToolCallId=null,storeRef.resetSessionUsageState(),storeRef.state.lastRequestBudget=null;return}let snapshot=await backend.createWithMessages(uiMessagesToSnapshotMessages(stripSupplementalTranscriptMessages(seed)));if(!snapshot)return;hydrateStoreFromSnapshot(storeRef,snapshot)}}:void 0,replaceObjectContents=(target,source)=>{for(let key of Object.keys(target))delete target[key];Object.assign(target,source)},ensureStoreMcpState=(store3)=>{let current=store3.state.mcp;if(current&&Array.isArray(current.servers)){if(typeof current.phase!=="string")current.phase="ready";if(typeof current.connectedCount!=="number")current.connectedCount=0;if(typeof current.configuredCount!=="number")current.configuredCount=Array.isArray(current.servers)?current.servers.length:0;return current}return store3.state.mcp={servers:[],phase:"ready",connectedCount:0,configuredCount:0},store3.state.mcp},applyHydratedMcpState=(store3)=>{let mcpState=ensureStoreMcpState(store3),nextServers=JSON.parse(JSON.stringify(hydratedMcpServers));mcpState.servers.splice(0,mcpState.servers.length,...nextServers),mcpState.phase=hydratedMcpPhase,mcpState.connectedCount=hydratedMcpConnectedCount,mcpState.configuredCount=hydratedMcpConfiguredCount},applyHydration=(store3,cache,config2,tools)=>{let changed=!1,saved=config2.settings??{},providerId=normalizeProviderId(saved.providerId),uiState=store3.state.ui;if(typeof saved.beta==="boolean"){let nextBeta=saved.beta===!0;if(uiState.betaUpdates!==nextBeta)uiState.betaUpdates=nextBeta,changed=!0}let provider=store3?.state.provider;if(!provider)return!1;if(providerId)provider.activeId=providerId;let connections=saved.providerConnections??{},normalizedConnections=Object.fromEntries(Object.entries(connections).map(([id2,conn])=>{let apiKey=readOptionalString3(conn?.apiKey),baseUrl=readOptionalString3(conn?.baseUrl),models=(Array.isArray(conn?.models)?conn.models:[]).map((m2)=>{let model=m2&&typeof m2==="object"?m2:{},id3=readOptionalString3(model.id);if(!id3)return null;let name15=readOptionalString3(model.name),limit=normalizeLimit(model.limit),vision=typeof model.vision==="boolean"?model.vision:void 0,reasoning=model.reasoning?.supported?{supported:!0,default:model.reasoning.default}:void 0;return{id:id3,...name15?{name:name15}:{},...limit?{limit}:{},...model.userDefined===!0||model.outputIsUserDefined===!0?{userDefined:!0}:{},...typeof vision==="boolean"?{vision}:{},...reasoning?{reasoning}:{}}}).filter((m2)=>Boolean(m2));return[id2,{...apiKey?{apiKey}:{},...baseUrl?{baseUrl}:{},...models.length?{models}:{}}]}));provider.connections=normalizedConnections;let activeByProvider=saved.activeModelByProvider??{};provider.activeModelByProvider={...activeByProvider??{}};let toProviderAdapter=(value)=>{if(value==="openai"||value==="openai-responses"||value==="gemini"||value==="anthropic")return value;return},toCustomProviderId=(value)=>{if(typeof value==="string"&&value.startsWith("cp_"))return value;return},customProviders=Array.isArray(saved.customProviders)?saved.customProviders.map((p2)=>{let entry=p2&&typeof p2==="object"?p2:{},models=(Array.isArray(entry.models)?entry.models:[]).map((m2)=>{let model=m2&&typeof m2==="object"?m2:{},id3=readOptionalString3(model.id);if(!id3)return null;let name16=readOptionalString3(model.name),limit=normalizeLimit(model.limit),vision=typeof model.vision==="boolean"?model.vision:void 0,reasoning=model.reasoning?.supported?{supported:!0,default:model.reasoning.default}:void 0;return{id:id3,...name16?{name:name16}:{},...limit?{limit}:{},...model.userDefined===!0||model.outputIsUserDefined===!0?{userDefined:!0}:{},...typeof vision==="boolean"?{vision}:{},...reasoning?{reasoning}:{}}}).filter((m2)=>Boolean(m2)),id2=toCustomProviderId(readOptionalString3(entry.id)),name15=readOptionalString3(entry.name),adapter=toProviderAdapter(readOptionalString3(entry.adapter));if(!id2||!name15||!adapter)return null;let baseUrl=readOptionalString3(entry.baseUrl),apiKey=readOptionalString3(entry.apiKey);return{id:id2,name:name15,adapter,...baseUrl?{baseUrl}:{},...apiKey?{apiKey}:{},...typeof entry.responsesAutoPromptCacheKey==="boolean"?{responsesAutoPromptCacheKey:entry.responsesAutoPromptCacheKey}:{},...typeof entry.responsesUseSessionId==="boolean"?{responsesUseSessionId:entry.responsesUseSessionId}:{},models:backfillCustomProviderModels(models,{adapter})}}).filter((p2)=>Boolean(p2)):[];provider.customProviders=customProviders,hydrateToolsStateFromConfig(tools,store3.state,hydratedMcpServers),applyHydratedMcpState(store3);let savedUi=cache.settings??{},env=store3?.state?.context?.env??{};if(!readOptionalString3(env.DIMCODE_TOOL_APPROVALS)&&savedUi.toolApprovals){let raw=String(savedUi.toolApprovals),mapped=raw==="auto"||raw==="all"?"auto":raw==="strict"||raw==="manual"?"strict":"normal";store3.state.approval.mode=mapped}if(uiState){if(typeof savedUi.themeMode==="string"&&savedUi.themeMode)store3.setThemeMode(savedUi.themeMode);if(typeof savedUi.statusCompact==="boolean")uiState.statusCompact=savedUi.statusCompact;if(typeof savedUi.onboardingSeenVersion==="string"&&savedUi.onboardingSeenVersion)uiState.onboarding={...uiState.onboarding??{},lastSeenVersion:savedUi.onboardingSeenVersion};if(savedUi.shortcuts)uiState.shortcuts=normalizeShortcutBindings(savedUi.shortcuts);if(typeof savedUi.greetingLastSeenDate==="string")uiState.greeting={...uiState.greeting??{},lastSeenDate:savedUi.greetingLastSeenDate};if(savedUi.providerFunnelCounts&&typeof savedUi.providerFunnelCounts==="object"){let counts=Object.fromEntries(Object.entries(savedUi.providerFunnelCounts).map(([step,count])=>[String(step),Number(count)]).filter(([step,count])=>step&&Number.isFinite(count)&&count>0));uiState.providerFunnel={...uiState.providerFunnel??{},counts,events:Array.isArray(uiState.providerFunnel?.events)?uiState.providerFunnel.events:[]}}if(savedUi.workspaceSelectionByCwd&&typeof savedUi.workspaceSelectionByCwd==="object"){let byCwd=Object.fromEntries(Object.entries(savedUi.workspaceSelectionByCwd).map(([cwd,value])=>{let key=readOptionalString3(cwd),providerId2=readOptionalString3(value?.providerId),modelId=readOptionalString3(value?.modelId);if(!key||!providerId2)return null;return[key,{providerId:providerId2,...modelId?{modelId}:{}}]}).filter((entry)=>Boolean(entry)));uiState.workspaceSelectionByCwd=byCwd}let savedReasoningMap=savedUi.reasoningEffortByModel;if(savedReasoningMap){let entries=Object.entries(savedReasoningMap).map(([modelId,value])=>{let key=readOptionalString3(modelId),v2=readOptionalString3(value);return key&&v2?[key,v2]:null}).filter((e2)=>Boolean(e2));uiState.reasoningEffortByModel=Object.fromEntries(entries)}}let{candidates,existingProviderIds}=buildProviderSelectionCandidates({connections:provider.connections,customProviders,legacyCustom:provider.custom,rememberedModels:{...provider.activeModelByProvider??{}}}),rememberedModels=stripUnknownActiveModelSelections({...provider.activeModelByProvider??{}},existingProviderIds);if(JSON.stringify(provider.activeModelByProvider??{})!==JSON.stringify(rememberedModels))provider.activeModelByProvider=rememberedModels,changed=!0;if(uiState){let sanitizedWorkspaceSelections=sanitizeWorkspaceProviderSelections({workspaceSelections:uiState.workspaceSelectionByCwd,candidates,rememberedModels});if(JSON.stringify(uiState.workspaceSelectionByCwd??{})!==JSON.stringify(sanitizedWorkspaceSelections))uiState.workspaceSelectionByCwd=sanitizedWorkspaceSelections,changed=!0}let selection=resolveProviderSelection({candidates,preferredProviderId:String(provider.activeId??"").trim(),preferredModelId:String(store3.state.config.model??"").trim(),rememberedModels}),nextProviderId=String(selection.providerId??"").trim(),nextModelId=String(selection.modelId??"").trim();if(String(provider.activeId??"").trim()!==nextProviderId)provider.activeId=nextProviderId,changed=!0;if(String(store3.state.config.model??"").trim()!==nextModelId)store3.state.config.model=nextModelId,changed=!0;if(backend){let currentId=String(store3.state.sessionId??"").trim();if(currentId)backend.get(currentId).then((snapshot)=>{if(snapshot&&storeRef)hydrateStoreFromSnapshot(storeRef,snapshot,{preserveLocalSyntheticErrors:!0,preserveLocalInterruptedMessages:!0,preserveLocalCompactMessages:!0,preserveLocalCompressionMessages:!0})}).catch(()=>{})}return changed};return{sessions,onStoreCreated:(store3)=>{storeRef=store3,applyHydration(store3,opts.cache,opts.config,opts.tools),registerOAuthRuntimeSyncTarget({getStore:()=>storeRef,updatePersistenceSnapshots:(next)=>{if(next.cache)replaceObjectContents(opts.cache,next.cache);if(next.config)replaceObjectContents(opts.config,next.config)},invalidateSession:(sessionId)=>{let invalidator=opts.agent;if(invalidator?.invalidateSession)invalidator.invalidateSession(sessionId)}});let persist=createDebouncedAsyncTask(async()=>{try{let nextCache=buildUserCacheFromStore({prev:opts.cache,store:store3}),nextConfig=buildUserConfigFromStore({prev:opts.config,store:store3}),nextTools=buildUserToolsFromStore({prev:opts.tools,store:store3}),mcpServers=Array.isArray(store3.state?.mcp?.servers)?store3.state.mcp.servers:[],mcpPhase=normalizeMcpPhase(store3.state?.mcp?.phase),saves=[saveDimcodeUserCache(opts.cacheFile,nextCache),saveDimcodeUserConfig(opts.configFile,nextConfig),saveDimcodeUserTools(opts.toolsFile,nextTools)];if(opts.mcpJsonFile&&(mcpPhase==="ready"||mcpPhase==="error"))saves.push(saveMcpJson(opts.mcpJsonFile,mcpServers));await Promise.all(saves)}catch(e2){console.warn("[dimcode] Failed to persist cache:",e2)}},300);schedulePersist=()=>{if(!persistEnabled)return;persist.schedule()};let persistSupplementalTranscript=createDebouncedAsyncTask(async()=>{if(!backend||typeof backend.updateMetadata!=="function")return;let sessionId=String(store3.state.sessionId??"").trim();if(!sessionId)return;if(store3.state.runningAgentRound)return;if(hasPendingTranscriptTail(store3.state.messages))return;let interruptedMessages=collectInterruptedRoundMessagesForPersistence(store3.state.messages).map(clonePersistableValue),compact=collectCompactMessagesForPersistence(store3.state.messages),compactMessages=uiMessagesToSnapshotMessages(compact),compression=collectCompressionMessagesForPersistence(store3.state.messages),compressionMessages=uiMessagesToSnapshotMessages(compression),errorMessages2=collectErrorMessagesForPersistence(store3.state.messages);try{let payload={interruptedMessages,compactMessages,compressionMessages,errorMessages:errorMessages2};await backend.updateMetadata(sessionId,{ui:payload})}catch{}},0),scheduleSupplementalPersist=()=>{persistSupplementalTranscript.schedule()};if(watch(()=>store3.state.sessionId,schedulePersist),watch(()=>store3.state.config,schedulePersist,{deep:!0}),watch(()=>store3.state.context,schedulePersist,{deep:!0}),watch(()=>store3.state.approval.mode,schedulePersist),watch(()=>store3.state.ui?.locale,schedulePersist),watch(()=>store3.state.ui?.theme,schedulePersist,{deep:!0}),watch(()=>store3.state.ui?.betaUpdates,schedulePersist),watch(()=>store3.state.ui?.statusCompact,schedulePersist),watch(()=>store3.state.ui?.onboarding,schedulePersist,{deep:!0}),watch(()=>store3.state.ui?.shortcuts,schedulePersist,{deep:!0}),watch(()=>store3.state.ui?.greeting,schedulePersist,{deep:!0}),watch(()=>store3.state.provider,schedulePersist,{deep:!0}),watch(()=>store3.state.tools,schedulePersist,{deep:!0}),watch(()=>store3.state.mcp?.servers,schedulePersist,{deep:!0}),watch(()=>store3.state.sessionId,scheduleSupplementalPersist),watch(()=>store3.state.messages.length,scheduleSupplementalPersist),watch(()=>store3.state.runningAgentRound,(running,prev)=>{if(prev&&!running)scheduleSupplementalPersist()}),opts.toolsRef)watch(()=>store3.state.tools,(newTools)=>{if(newTools)opts.toolsRef.current={...opts.toolsRef.current,websearch:{...opts.toolsRef.current?.websearch,apiKey:newTools.websearch?.apiKey??"",apiEndpoint:newTools.websearch?.apiEndpoint,numResults:newTools.websearch?.numResults},mcpServers:Array.isArray(store3.state.mcp?.servers)?JSON.parse(JSON.stringify(store3.state.mcp.servers)):opts.toolsRef.current?.mcpServers}},{deep:!0,immediate:!0}),watch(()=>store3.state.mcp?.servers,(servers)=>{opts.toolsRef.current={...opts.toolsRef.current,mcpServers:Array.isArray(servers)?JSON.parse(JSON.stringify(servers)):opts.toolsRef.current?.mcpServers}},{deep:!0,immediate:!0});schedulePersist()},rehydrate:(next)=>{if(next.cache)replaceObjectContents(opts.cache,next.cache);if(next.config)replaceObjectContents(opts.config,next.config);if(next.tools)replaceObjectContents(opts.tools,next.tools);if(Array.isArray(next.mcpServers))hydratedMcpServers=JSON.parse(JSON.stringify(next.mcpServers));if("mcpPhase"in next)hydratedMcpPhase=normalizeMcpPhase(next.mcpPhase);if("mcpConnectedCount"in next)hydratedMcpConnectedCount=Math.max(0,Number(next.mcpConnectedCount)||0);if("mcpConfiguredCount"in next)hydratedMcpConfiguredCount=Math.max(0,Number(next.mcpConfiguredCount)||hydratedMcpServers.length);else if(Array.isArray(next.mcpServers))hydratedMcpConfiguredCount=hydratedMcpServers.length;if(storeRef)applyHydration(storeRef,opts.cache,opts.config,opts.tools);if(!persistEnabled)persistEnabled=!0;schedulePersist?.()}}}async function resolveStartupSessionId(opts){return readOptionalString3(opts.envSessionId)}function createNoopToolRunner(){return async(call)=>{let name15=String(call?.name??"tool");return{id:String(call?.id??"tool"),status:"error",output:["Tool execution is handled by the DimCode agent.",`This UI cannot run tool "${name15}" locally.`].join(`
|
|
1180
|
+
`)}}}async function createDimSdkShellProps(opts){let{context,cacheDir,cacheFile,cache,configFile,config:config2,toolsFile,tools,mcpJsonFile,mcpServers,mcpPhase,mcpConnectedCount,mcpConfiguredCount}=await createDimcodeContext({cwd:opts.cwd,env:opts.env}),fastStartRaw=String(opts.env.DIMCODE_FAST_START??"").trim().toLowerCase(),fastStart=fastStartRaw==="1"||fastStartRaw==="true"||fastStartRaw==="yes"||fastStartRaw==="on",stateDir=resolveStateDir(cacheDir,opts.env);applyStateDirEnv({env:opts.env,contextEnv:context.env,stateDir});let toolsRef={current:{...tools.settings??{},mcpServers:JSON.parse(JSON.stringify(mcpServers))}},toolsConfig={websearch:{apiKey:()=>toolsRef.current?.websearch?.apiKey??"",apiEndpoint:toolsRef.current?.websearch?.apiEndpoint,numResults:toolsRef.current?.websearch?.numResults}},uiForcedSkills=new Set,agent=createCliAgent({context,processEnv:opts.env,stateDir,tools:toolsConfig,mcpServers:()=>toMcpServerConfigs(toolsRef.current?.mcpServers),mcpInitialState:"deferred"}),sessionsBackend=agent.sessions??null,initialSessionId=await resolveStartupSessionId({sessionsBackend,envSessionId:opts.sessionId});opts.env.DIMCODE_SESSION_ID=initialSessionId??"",context.env.DIMCODE_SESSION_ID=initialSessionId??"";let{sessions,onStoreCreated,rehydrate}=createDimSdkPersistence({cacheFile,cache,configFile,config:config2,toolsFile,tools,mcpJsonFile,mcpServers,mcpPhase,mcpConnectedCount,mcpConfiguredCount,sessionsBackend,agent,toolsRef,deferPersist:fastStart}),storeRef=null,hydrateStarted=!1,mcpSyncQueue=Promise.resolve(),queuedMcpSignature="",cloneMcpServers=(servers)=>JSON.parse(JSON.stringify(Array.isArray(servers)?servers:[])),sleep=async(ms)=>{await new Promise((resolve2)=>setTimeout(resolve2,ms))},ensureStoreMcpState=(store3)=>{let current=store3.state.mcp;if(current&&Array.isArray(current.servers))return current;return store3.state.mcp={servers:[],phase:"deferred",connectedCount:0,configuredCount:0},store3.state.mcp},applyMcpRuntimeState=(phase,connectedCount,configuredCount)=>{if(!storeRef)return;let mcpState=ensureStoreMcpState(storeRef);mcpState.phase=phase,mcpState.connectedCount=Math.max(0,connectedCount),mcpState.configuredCount=Math.max(0,configuredCount)},queueMcpSync=(servers,options)=>{let nextServers=cloneMcpServers(servers),signature=JSON.stringify(nextServers);if(!options?.force&&signature===queuedMcpSignature)return;queuedMcpSignature=signature,mcpSyncQueue=mcpSyncQueue.then(async()=>{if(!storeRef)return;applyMcpRuntimeState("syncing",0,nextServers.length);try{let state=await agent.syncMcpServers?.(toMcpServerConfigs(nextServers));if(!state)state=await agent.getMcpState?.();if(!state){applyMcpRuntimeState("ready",0,nextServers.length);return}applyMcpRuntimeState(state.phase,state.connectedServers.length,state.configuredServers);for(let i2=0;i2<240&&state.phase==="syncing";i2+=1)await sleep(250),state=await agent.getMcpState?.()??state,applyMcpRuntimeState(state.phase,state.connectedServers.length,state.configuredServers)}catch{applyMcpRuntimeState("error",0,nextServers.length)}},async()=>{if(storeRef)applyMcpRuntimeState("error",0,nextServers.length)})},hydrateFromDisk=async()=>{if(hydrateStarted)return;hydrateStarted=!0;try{let reloadEnv={...opts.env,DIMCODE_FAST_START:"0"},full=await createDimcodeContext({cwd:opts.cwd,env:reloadEnv});if(rehydrate({cache:full.cache,config:full.config,tools:full.tools,mcpServers:full.mcpServers,mcpPhase:"syncing",mcpConnectedCount:0,mcpConfiguredCount:full.mcpServers.length}),!storeRef)return;if(full.context.cwd)storeRef.setCwd(full.context.cwd);if(full.context.focusFiles)storeRef.setFocusFiles(full.context.focusFiles);let nextEnv=full.context.env??{};for(let[key,value]of Object.entries(nextEnv))storeRef.setEnvVar(key,value);let envReader=createEnvReader(full.context.env??{}),nextRun=resolveInitialRunConfig(envReader),modelFromProvider=String(storeRef.state.config.model??"").trim();if(storeRef.state.config={...storeRef.state.config,...nextRun},modelFromProvider)storeRef.state.config.model=modelFromProvider;queueMcpSync(full.mcpServers,{force:!0})}catch{}},onStoreCreatedWithHydrate=(store3)=>{storeRef=store3,onStoreCreated(store3),queueMicrotask(()=>{if(!fastStart){queueMcpSync(cloneMcpServers(store3.state.mcp?.servers??[]),{force:!0});return}hydrateFromDisk()})};return{toolRunner:createNoopToolRunner(),context,agent,onStoreCreated:onStoreCreatedWithHydrate,sessions,uiForcedSkills}}import{spawn as spawn3}from"node:child_process";import path32 from"node:path";var import_semver2=__toESM(require_semver2(),1);function isBetaUpdatesEnabled(config2){return config2.settings?.beta===!0}async function readBetaUpdatesEnabled(env=process.env){let{config:config2}=await loadDimcodeUserConfig(env);return isBetaUpdatesEnabled(config2)}var import_semver=__toESM(require_semver2(),1);function isPrereleaseVersion(version2){let parsed=import_semver.default.valid(version2);return Boolean(parsed&&import_semver.default.prerelease(parsed)?.length)}function selectUpdateVersion(versions2,opts){return versions2.map((version2)=>import_semver.default.valid(String(version2??"").trim())).filter((version2)=>Boolean(version2)).filter((version2)=>opts.includePrerelease?!0:!isPrereleaseVersion(version2)).sort(import_semver.default.rcompare)[0]??null}function shouldInstallSelectedVersion(current,selected,opts){let currentVersion=import_semver.default.valid(String(current??"").trim()),selectedVersion=import_semver.default.valid(String(selected??"").trim());if(!currentVersion||!selectedVersion)return String(current??"").trim()!==String(selected??"").trim();if(import_semver.default.eq(currentVersion,selectedVersion))return!1;if(import_semver.default.gt(selectedVersion,currentVersion))return!0;return!opts.includePrerelease&&isPrereleaseVersion(currentVersion)&&!isPrereleaseVersion(selectedVersion)}var UPGRADE_TOAST_FILE="upgrade-toast.json";function notifyUpgradeToast(message){let text=String(message??"").trim();if(!text)return;let handler=globalThis?.__DIMCODE_UPGRADE_TOAST__;if(typeof handler==="function")try{handler(text);return}catch{}writeUpgradeToastFile(text)}async function writeUpgradeToastFile(message){try{let[{mkdir:mkdir11,writeFile:writeFile10},path31]=await Promise.all([import("node:fs/promises"),import("node:path")]),dir=await getDimcodeUserDir(process.env);await mkdir11(dir,{recursive:!0});let filePath=path31.join(dir,UPGRADE_TOAST_FILE),payload=JSON.stringify({message,createdAt:Date.now()});await writeFile10(filePath,payload,"utf8")}catch{}}async function consumeUpgradeToastFile(){try{let[{readFile:readFile11,unlink},path31]=await Promise.all([import("node:fs/promises"),import("node:path")]),dir=await getDimcodeUserDir(process.env),filePath=path31.join(dir,UPGRADE_TOAST_FILE),raw=await readFile11(filePath,"utf8");unlink(filePath).catch(()=>{});let data=JSON.parse(raw);return String(data?.message??"").trim()||null}catch{return null}}import{existsSync as existsSync3,readFileSync as readFileSync2}from"node:fs";import path31 from"node:path";import{fileURLToPath as fileURLToPath4}from"node:url";function resolveCliVersion(){let injected="0.0.9-beta.29".trim();if(injected)return{version:injected,source:"injected"};let pkgVersion=readNearestPackageVersion();if(pkgVersion)return{version:pkgVersion,source:"package"};return null}function readNearestPackageVersion(){try{let dir=path31.dirname(fileURLToPath4(import.meta.url));for(let i2=0;i2<6;i2++){let candidate=path31.join(dir,"package.json");if(existsSync3(candidate)){let raw=readFileSync2(candidate,"utf8"),pkg=JSON.parse(raw),version2=typeof pkg?.version==="string"?pkg.version.trim():"";if(version2)return version2}let parent=path31.dirname(dir);if(parent===dir)break;dir=parent}}catch{}return null}var DEFAULT_GITLAB_HOST="gitlab.bfbops.com",DEFAULT_GITLAB_PROJECT="nextim/goatagent",DEFAULT_GITHUB_REPO="nextim/goatagent",DEFAULT_GITHUB_API_BASE_URL="https://api.github.com",RELEASE_CHECK_TIMEOUT_MS=5000;var RELEASE_LIST_PER_PAGE=100,RELEASE_LIST_MAX_PAGES=3,autoBinaryUpgradeStartedVersions=new Set;function getReleaseTimeoutMs(){let raw=String(process.env.DIMCODE_BINARY_UPDATE_CHECK_TIMEOUT_MS??"").trim(),n2=Number(raw);return Number.isFinite(n2)&&n2>100?Math.floor(n2):RELEASE_CHECK_TIMEOUT_MS}function isSelfContainedBinary(proc=process){try{let execPath=String(proc.execPath??"").trim();if(!execPath)return!1;let base=path32.basename(execPath.replace(/\\/g,"/")).toLowerCase();if(base==="node"||base.startsWith("node."))return!1;if(base==="bun"||base.startsWith("bun."))return!1;return!0}catch{return!1}}function resolveBunTarget(platform=process.platform,arch=process.arch){if(platform==="darwin"&&arch==="arm64")return"bun-darwin-arm64";if(platform==="darwin"&&arch==="x64")return"bun-darwin-x64";if(platform==="linux"&&arch==="x64")return"bun-linux-x64";if(platform==="linux"&&arch==="arm64")return"bun-linux-arm64";if(platform==="win32"&&arch==="x64")return"bun-windows-x64";return null}function resolveAssetName(target,platform=process.platform){return platform==="win32"?`dim-${target}.exe`:`dim-${target}`}function normalizeTagToSemver(tag){let raw=String(tag??"").trim();if(!raw)return null;let withoutV=raw.startsWith("v")?raw.slice(1):raw;return import_semver2.default.valid(withoutV)?withoutV:null}function selectGitHubAsset(releaseJson,assetName){let assets=Array.isArray(releaseJson?.assets)?releaseJson.assets:[];for(let asset of assets){let name15=typeof asset?.name==="string"?asset.name:"",url2=typeof asset?.browser_download_url==="string"?asset.browser_download_url:"";if(name15===assetName&&url2)return{name:name15,url:url2}}return null}function selectGitLabAsset(releaseJson,assetName){let links=Array.isArray(releaseJson?.assets?.links)?releaseJson.assets.links:[];for(let link of links){let name15=typeof link?.name==="string"?link.name:"",direct=typeof link?.direct_asset_url==="string"?link.direct_asset_url:"",url2=typeof link?.url==="string"?link.url:"",resolved=direct||url2;if(name15===assetName&&resolved)return{name:name15,url:resolved}}return null}async function checkBinaryUpgrade(){if(process.env.DIMCODE_DISABLE_AUTOUPDATE==="1")return null;if(!isSelfContainedBinary())return null;let current=resolveCliVersion()?.version;if(!current||!import_semver2.default.valid(current))return null;let includePrerelease=await readBetaUpdatesEnabled(process.env),release2=await fetchLatestReleaseInfo(process.env,includePrerelease);if(!release2)return null;if(!import_semver2.default.valid(release2.version)||!shouldInstallSelectedVersion(current,release2.version,{includePrerelease}))return null;if(process.env.DIMCODE_AUTOUPDATE!=="0"){if(autoBinaryUpgradeStartedVersions.has(release2.version))return null;return autoBinaryUpgradeStartedVersions.add(release2.version),startAutoBinaryUpgrade(release2.version),`Update available: dim ${release2.version} (current: ${current}). Installing in background; restart to use it.`}return`Update available: dim ${release2.version} (current: ${current}). Run: dim upgrade`}function resolveProvider(env){if(String(env.DIMCODE_BINARY_UPDATE_PROVIDER??"").trim().toLowerCase()==="github")return"github";if((typeof __CLI_BINARY_UPDATE_PROVIDER__==="string"?__CLI_BINARY_UPDATE_PROVIDER__.trim().toLowerCase():"")==="github")return"github";return"gitlab"}function resolveBinaryUpdateConfig(env){let provider=resolveProvider(env),githubApiBaseUrl=resolveGitHubApiBaseUrl(env),projectInfo=resolveProject(env,provider);return{provider,host:projectInfo.host,project:projectInfo.project,githubApiBaseUrl}}function resolveGitHubApiBaseUrl(env){let raw=String(env.DIMCODE_BINARY_UPDATE_GITHUB_API_BASE_URL??"").trim();if(raw)return raw.replace(/\/+$/,"");let injected=typeof __CLI_BINARY_UPDATE_GITHUB_API_BASE_URL__==="string"?__CLI_BINARY_UPDATE_GITHUB_API_BASE_URL__.trim():"";if(injected)return injected.replace(/\/+$/,"");return DEFAULT_GITHUB_API_BASE_URL}function resolveProject(env,provider){if(provider==="github"){let injectedRepo=typeof __CLI_BINARY_UPDATE_REPO__==="string"?__CLI_BINARY_UPDATE_REPO__.trim():"";return{project:String(env.DIMCODE_BINARY_UPDATE_REPO??injectedRepo??DEFAULT_GITHUB_REPO).trim()||DEFAULT_GITHUB_REPO}}let injectedHost=typeof __CLI_BINARY_UPDATE_GITLAB_HOST__==="string"?__CLI_BINARY_UPDATE_GITLAB_HOST__.trim():"",injectedProject=typeof __CLI_BINARY_UPDATE_PROJECT__==="string"?__CLI_BINARY_UPDATE_PROJECT__.trim():"",host=String(env.DIMCODE_BINARY_UPDATE_GITLAB_HOST??injectedHost??DEFAULT_GITLAB_HOST).trim()||DEFAULT_GITLAB_HOST,project=String(env.DIMCODE_BINARY_UPDATE_PROJECT??injectedProject??DEFAULT_GITLAB_PROJECT).trim()||DEFAULT_GITLAB_PROJECT;return{host,project}}function resolveAuthHeaders(env,provider){if(provider==="github"){let token2=String(env.DIMCODE_GITHUB_TOKEN??env.GITHUB_TOKEN??"").trim();return token2?{Authorization:`Bearer ${token2}`}:{}}let token=String(env.DIMCODE_GITLAB_TOKEN??env.GITLAB_TOKEN??"").trim();if(!token)return{};if(token.startsWith("glpat-"))return{"PRIVATE-TOKEN":token};return{Authorization:`Bearer ${token}`}}async function fetchLatestReleaseInfo(env,includePrerelease){return await fetchReleaseInfo("latest",env,{includePrerelease})}async function fetchReleaseInfo(desired,env,opts){let config2=resolveBinaryUpdateConfig(env),provider=config2.provider,projectInfo={host:config2.host,project:config2.project},headers=resolveAuthHeaders(env,provider),target=resolveBunTarget();if(!target)return null;let assetName=resolveAssetName(target);if(desired==="latest")return await fetchLatestSelectableReleaseInfo({provider,host:projectInfo.host,project:projectInfo.project,headers,githubApiBaseUrl:config2.githubApiBaseUrl,target,assetName,includePrerelease:opts?.includePrerelease===!0});let tagCandidates=buildTagCandidates(desired);for(let tagCandidate of tagCandidates){let releaseJson=await fetchReleaseJson({provider,host:projectInfo.host,project:projectInfo.project,tag:tagCandidate,headers,githubApiBaseUrl:config2.githubApiBaseUrl});if(!releaseJson)continue;let info=releaseInfoFromJson({releaseJson,provider,host:projectInfo.host,project:projectInfo.project,target,assetName,fallbackTag:tagCandidate});if(info)return info}return null}async function fetchLatestSelectableReleaseInfo(opts){let releases=[];for(let page=1;page<=RELEASE_LIST_MAX_PAGES;page+=1){let releaseJsonList=await fetchReleaseListJson({...opts,page});if(!Array.isArray(releaseJsonList)||releaseJsonList.length===0)break;for(let releaseJson of releaseJsonList){let info=releaseInfoFromJson({releaseJson,provider:opts.provider,host:opts.host,project:opts.project,target:opts.target,assetName:opts.assetName});if(info)releases.push(info)}if(releaseJsonList.length<RELEASE_LIST_PER_PAGE)break}let selected=selectUpdateVersion(releases.map((release2)=>release2.version),{includePrerelease:opts.includePrerelease});if(!selected)return null;return releases.find((release2)=>release2.version===selected)??null}function releaseInfoFromJson(opts){let tag=String(opts.releaseJson?.tag_name??opts.releaseJson?.tagName??"").trim()||String(opts.fallbackTag??"").trim(),version2=normalizeTagToSemver(tag);if(!version2)return null;let asset=opts.provider==="github"?selectGitHubAsset(opts.releaseJson,opts.assetName):selectGitLabAsset(opts.releaseJson,opts.assetName);if(!asset)return null;return{provider:opts.provider,host:opts.host,project:opts.project,tag,version:version2,asset,target:opts.target,assetName:opts.assetName}}function buildTagCandidates(versionOrTag){let raw=String(versionOrTag??"").trim();if(!raw)return[];if(raw==="latest")return["latest"];if(raw.startsWith("v"))return[raw,raw.slice(1)];return[`v${raw}`,raw]}async function fetchReleaseJson(opts){let controller=new AbortController,timeoutId=setTimeout(()=>controller.abort(),getReleaseTimeoutMs());try{let url2=buildReleaseApiUrl(opts),response=await fetch(url2,{headers:{Accept:"application/json",...opts.headers},signal:controller.signal});if(!response.ok)return null;return await response.json()}catch{return null}finally{clearTimeout(timeoutId)}}async function fetchReleaseListJson(opts){let controller=new AbortController,timeoutId=setTimeout(()=>controller.abort(),getReleaseTimeoutMs());try{let url2=buildReleaseListApiUrl(opts),response=await fetch(url2,{headers:{Accept:"application/json",...opts.headers},signal:controller.signal});if(!response.ok)return null;let json2=await response.json();return Array.isArray(json2)?json2:null}catch{return null}finally{clearTimeout(timeoutId)}}function buildReleaseApiUrl(opts){if(opts.provider==="github"){let apiBase=String(opts.githubApiBaseUrl||DEFAULT_GITHUB_API_BASE_URL).replace(/\/+$/,"");if(opts.tag==="latest")return`${apiBase}/repos/${opts.project}/releases/latest`;return`${apiBase}/repos/${opts.project}/releases/tags/${encodeURIComponent(opts.tag)}`}let host=opts.host||DEFAULT_GITLAB_HOST,projectId=encodeURIComponent(opts.project);if(opts.tag==="latest")return`https://${host}/api/v4/projects/${projectId}/releases/permalink/latest`;return`https://${host}/api/v4/projects/${projectId}/releases/${encodeURIComponent(opts.tag)}`}function buildReleaseListApiUrl(opts){let page=Math.max(1,Math.floor(opts.page));if(opts.provider==="github")return`${String(opts.githubApiBaseUrl||DEFAULT_GITHUB_API_BASE_URL).replace(/\/+$/,"")}/repos/${opts.project}/releases?per_page=${RELEASE_LIST_PER_PAGE}&page=${page}`;let host=opts.host||DEFAULT_GITLAB_HOST,projectId=encodeURIComponent(opts.project);return`https://${host}/api/v4/projects/${projectId}/releases?per_page=${RELEASE_LIST_PER_PAGE}&page=${page}`}function startAutoBinaryUpgrade(version2){try{spawn3(process.execPath,["upgrade",version2,"--background"],{stdio:"ignore",detached:!0,env:{...process.env,DIMCODE_BINARY_UPGRADE_CHILD:"1"}}).unref()}catch{}}var import_cross_spawn2=__toESM(require_cross_spawn(),1);import{existsSync as existsSync5}from"node:fs";import path34 from"node:path";import{existsSync as existsSync4,readFileSync as readFileSync3,realpathSync,statSync as statSync2}from"node:fs";import path33 from"node:path";import{fileURLToPath as fileURLToPath5}from"node:url";function resolveCurrentInstallTarget(opts){let execPath=normalizeExistingPath(opts.execPath);if(opts.isSelfContainedBinary)return{kind:"binary",manager:"binary",binPath:execPath??normalizePath2(opts.execPath)};let importPath=pathFromFileUrl(opts.importMetaUrl),argvPath=normalizeExistingPath(opts.argvPath),binPath=argvPath??normalizePath2(opts.argvPath),candidates=uniqueStrings([importPath,argvPath,normalizeExistingPath(importPath),execPath]);for(let candidate of candidates){let packageRoot=findDimcodePackageRoot(candidate);if(!packageRoot)continue;let sourceEntry=path33.join(packageRoot,"src","cli.ts");if(existsSync4(sourceEntry))return{kind:"source",manager:"source",packageRoot,binPath};let bun=resolveBunGlobalTarget(packageRoot,binPath);if(bun)return bun;let npm=resolveNpmGlobalTarget(packageRoot,binPath);if(npm)return npm;return{kind:"unknown",manager:"unknown",packageRoot,binPath,reason:"dimcode package root is not a recognized global install"}}return{kind:"unknown",manager:"unknown",binPath,reason:"unable to locate dimcode package root"}}function resolveBunGlobalTarget(packageRoot,binPath){let normalized=toPosix(packageRoot);if(!normalized.includes("/.bun/install/global/node_modules/dimcode"))return null;let marker16="/.bun/install/global/node_modules/dimcode",index=normalized.lastIndexOf(marker16),prefix=index>=0?packageRoot.slice(0,index+5):void 0;return{kind:"bun",manager:"bun",packageRoot,binPath,prefix}}function resolveNpmGlobalTarget(packageRoot,binPath){let parts=toPosix(packageRoot).split("/");if(parts.at(-1)!=="dimcode")return null;let nodeModulesIndex=parts.length-2;if(parts[nodeModulesIndex]!=="node_modules")return null;let hasLibSegment=parts[nodeModulesIndex-1]==="lib",prefixParts=hasLibSegment?parts.slice(0,nodeModulesIndex-1):parts.slice(0,nodeModulesIndex),prefix=fromPosix(prefixParts.join("/"))||path33.parse(packageRoot).root;if(!prefix)return null;if(!hasLibSegment&&existsSync4(path33.join(prefix,"package.json")))return{kind:"unknown",manager:"unknown",packageRoot,binPath,reason:"dimcode appears to be installed in a local node_modules"};return{kind:"npm",manager:"npm",packageRoot,binPath,prefix}}function findDimcodePackageRoot(startPath){let normalized=normalizeExistingPath(startPath);if(!normalized)return null;let dir=isLikelyFilePath(normalized)?path33.dirname(normalized):normalized;for(;;){let packagePath=path33.join(dir,"package.json");if(existsSync4(packagePath)&&readPackageName(packagePath)==="dimcode")return dir;let parent=path33.dirname(dir);if(!parent||parent===dir)return null;dir=parent}}function readPackageName(packagePath){try{let parsed=JSON.parse(readFileSync3(packagePath,"utf8"));return typeof parsed?.name==="string"?parsed.name:""}catch{return""}}function pathFromFileUrl(value){try{return value.startsWith("file:")?fileURLToPath5(value):void 0}catch{return}}function normalizeExistingPath(value){let normalized=normalizePath2(value);if(!normalized)return;try{return realpathSync(normalized)}catch{return normalized}}function normalizePath2(value){let raw=String(value??"").trim();if(!raw)return;if(!path33.isAbsolute(raw))return;return path33.resolve(raw)}function uniqueStrings(values){return[...new Set(values.filter((v2)=>Boolean(v2)))]}function isLikelyFilePath(value){if(existsSync4(value))try{return statSync2(value).isFile()}catch{}return Boolean(path33.extname(value))}function toPosix(value){return value.replace(/\\/g,"/")}function fromPosix(value){if(path33.sep==="/")return value;return value.replace(/\//g,path33.sep)}var DEFAULT_PACKAGE_NAME="dimcode";function resolveWrapperPackageVersion(){return(process.env.DIMCODE_NPM_PACKAGE_VERSION||"").trim()||null}function isBetaOnlyWrapper(packageName){if(packageName===DEFAULT_PACKAGE_NAME)return!1;return process.env.DIMCODE_NPM_PACKAGE_BETA_ONLY==="1"}var DEBUG_LOG_PATH=process.env.DIMCODE_DEBUG_LOG||"./dimcode-debug.log",CHECK_TIMEOUT_MS=5000,autoInstallStartedVersions=new Set;async function fetchPackageVersions(packageName=DEFAULT_PACKAGE_NAME){try{let controller=new AbortController,timeoutId=setTimeout(()=>controller.abort(),CHECK_TIMEOUT_MS),response=await fetch(`https://registry.npmjs.org/${packageName}`,{signal:controller.signal,headers:{Accept:"application/json"}});if(clearTimeout(timeoutId),!response.ok)throw Error(`npm registry returned ${response.status}`);let versions2=(await response.json())?.versions;if(!versions2||typeof versions2!=="object")throw Error("No versions found in registry response");return Object.keys(versions2)}catch(error48){if(error48 instanceof Error&&error48.name==="AbortError")throw Error("npm registry request timed out");throw error48}}async function resolveLatestNpmVersion(packageName,includePrerelease,betaOnly=!1){let raw=await fetchPackageVersions(packageName),versions2=betaOnly?raw.filter((v2)=>isPrereleaseVersion(v2)):raw;return selectUpdateVersion(versions2,{includePrerelease:betaOnly?!0:includePrerelease})}async function checkNpmUpgrade(packageName=DEFAULT_PACKAGE_NAME){if(await logUpgradeCheck("start",{disableAutoUpdate:process.env.DIMCODE_DISABLE_AUTOUPDATE==="1",autoUpdate:process.env.DIMCODE_AUTOUPDATE!=="0",cwd:safeCwd(),argv:safeArgv(),debugLogPath:DEBUG_LOG_PATH}),process.env.DIMCODE_DISABLE_AUTOUPDATE==="1")return await logUpgradeCheck("skip-disabled"),null;let resolvedVersion=resolveCliVersion();if(!resolvedVersion?.version)return await logUpgradeCheck("skip-missing-version"),null;let wrapperVersion=packageName!==DEFAULT_PACKAGE_NAME?resolveWrapperPackageVersion():null,current=wrapperVersion||resolvedVersion.version,hasInjectedVersion=resolvedVersion.source==="injected";try{let betaOnly=isBetaOnlyWrapper(packageName),includePrerelease=betaOnly||await readBetaUpdatesEnabled(),latest=await resolveLatestNpmVersion(packageName,includePrerelease,betaOnly);if(await logUpgradeCheck("check-result",{current,latest,hasInjectedVersion,wrapperVersion,includePrerelease,betaOnly}),!latest)return await logUpgradeCheck("error",{message:"Failed to fetch latest version"}),null;if(!shouldInstallSelectedVersion(current,latest,{includePrerelease}))return await logUpgradeCheck("no-update",{current,latest}),null;if(process.env.DIMCODE_AUTOUPDATE!=="0"&&hasInjectedVersion){let installer=resolvePackageInstaller(latest,packageName);if(!installer)return await logUpgradeCheck("autoupdate-skip-unknown-install-target",{current,latest,target:resolveNpmInstallTarget()}),`Update available: ${packageName}@${latest} (current: ${current}). Auto-update skipped because the current install source could not be identified. Run: dim version`;let installKey=`${packageName}@${latest}:${installer.manager}:${installer.prefix??""}`;if(autoInstallStartedVersions.has(installKey))return await logUpgradeCheck("autoupdate-skip-duplicate",{version:latest}),null;return autoInstallStartedVersions.add(installKey),await logUpgradeCheck("update-available",{current,latest,autoUpdate:!0,installer:installer.manager,prefix:installer.prefix}),startAutoInstall(latest,packageName,installer),`Update available: ${packageName}@${latest} (current: ${current}). Installing ${installer.manager} global package in background. Restart terminal after it finishes.`}return await logUpgradeCheck("update-available",{current,latest,autoUpdate:!1}),`Update available: ${packageName}@${latest} (current: ${current})`}catch(error48){return await logUpgradeCheck("error",{message:error48 instanceof Error?error48.message:String(error48)}),null}}function startAutoInstall(version2,packageName=DEFAULT_PACKAGE_NAME,installer){try{logUpgradeCheck("autoupdate-start",{version:version2,installer:installer.manager,prefix:installer.prefix});let proc=import_cross_spawn2.default(installer.command,[...installer.argsPrefix,...installer.installArgs],{stdio:"ignore",detached:!0,windowsHide:process.platform==="win32"});proc.unref();let finished=!1,finalize2=(message)=>{if(finished)return;finished=!0,logUpgradeCheck("autoupdate-finish",{version:version2,message}),notifyUpgradeToast(message)};proc.on("close",(code)=>{if(code===0)finalize2(`Update installed: ${packageName}@${version2}. Restart terminal to use the new version.`);else finalize2(`Auto-update failed. Run: ${installer.manualCommand}`)}),proc.on("error",()=>{logUpgradeCheck("autoupdate-error",{version:version2,reason:"process-error"}),finalize2(`Auto-update failed. Run: ${installer.manualCommand}`)})}catch{logUpgradeCheck("autoupdate-error",{version:version2,reason:"spawn-throw"}),notifyUpgradeToast(`Auto-update failed. Run: ${installer.manualCommand}`)}}async function logUpgradeCheck(_event,_data){}function safeCwd(){try{return process.cwd()}catch{return}}function safeArgv(){try{return process.argv}catch{return}}function resolveNpmInstallTarget(){return resolveCurrentInstallTarget({importMetaUrl:import.meta.url,argvPath:process.argv[1],execPath:process.execPath,env:process.env,isSelfContainedBinary:!1})}function resolvePackageInstaller(version2,packageName=DEFAULT_PACKAGE_NAME){let target=resolveNpmInstallTarget(),manager=target.manager==="npm"||target.manager==="bun"?target.manager:null;if(!manager)return null;let{command,argsPrefix}=resolvePackageManagerCommand(manager),packageSpec=`${packageName}@${version2}`,prefix=manager==="npm"?target.prefix:void 0,installArgs=manager==="npm"?["install","-g",...prefix?["--prefix",prefix]:[],packageSpec]:["install","-g",packageSpec];return{manager,command,argsPrefix,installArgs,manualCommand:manager==="npm"?formatManualCommand(["npm","install","-g",...prefix?["--prefix",prefix]:[],packageSpec]):`bun install -g ${packageSpec}`,prefix}}function formatManualCommand(args){return args.map(quoteShellArg).join(" ")}function quoteShellArg(value){if(/^[\w./:@%+=,-]+$/.test(value))return value;return JSON.stringify(value)}function resolvePackageManagerCommand(pm){if(process.platform!=="win32")return{command:pm,argsPrefix:[]};if(pm==="bun")return resolveBunCommand();return resolveNpmCommand()}function resolveBunCommand(){let execPath=String(process.execPath??"").trim();if(execPath){if(path34.basename(execPath).toLowerCase().startsWith("bun")&&existsSync5(execPath))return{command:execPath,argsPrefix:[]}}let bunHome=String(process.env.BUN_INSTALL??"").trim();if(bunHome){let bunExe=path34.join(bunHome,"bin","bun.exe");if(existsSync5(bunExe))return{command:bunExe,argsPrefix:[]}}return{command:"bun",argsPrefix:[]}}function resolveNpmCommand(){let execPath=String(process.execPath??"").trim(),execDir=execPath?path34.dirname(execPath):"";if(execDir){let npmCmd=path34.join(execDir,"npm.cmd");if(existsSync5(npmCmd))return{command:npmCmd,argsPrefix:[]};let npmCliCandidates=[path34.join(execDir,"node_modules","npm","bin","npm-cli.js"),path34.resolve(execDir,"..","lib","node_modules","npm","bin","npm-cli.js")];if(execPath){for(let npmCli of npmCliCandidates)if(existsSync5(npmCli))return{command:execPath,argsPrefix:[npmCli]}}}let appData=String(process.env.APPDATA??"").trim();if(appData){let npmCmd=path34.join(appData,"npm","npm.cmd");if(existsSync5(npmCmd))return{command:npmCmd,argsPrefix:[]}}let programFiles=String(process.env.ProgramFiles??"").trim();if(programFiles){let npmCmd=path34.join(programFiles,"nodejs","npm.cmd");if(existsSync5(npmCmd))return{command:npmCmd,argsPrefix:[]}}let programFilesX86=String(process.env["ProgramFiles(x86)"]??"").trim();if(programFilesX86){let npmCmd=path34.join(programFilesX86,"nodejs","npm.cmd");if(existsSync5(npmCmd))return{command:npmCmd,argsPrefix:[]}}return{command:"npm",argsPrefix:[]}}function getNpmPackageOverride(){return(process.env.DIMCODE_NPM_PACKAGE||"").trim()||void 0}async function checkUpgrade(){let npmPackage=getNpmPackageOverride();if(npmPackage)return await checkNpmUpgrade(npmPackage);if(isSelfContainedBinary())return await checkBinaryUpgrade();return await checkNpmUpgrade()}import process25 from"node:process";var logger=debugLog;async function cleanupExpiredSessionCaches3(opts){return cleanupExpiredSessionCaches2({...opts,logger})}var DEFAULT_LINE_THRESHOLD=400,DEFAULT_TOKEN_THRESHOLD=12000,DEFAULT_PREVIEW_LINES=20,DEFAULT_FIRST_RANGE_LINES=300,DEFAULT_PREVIEW_MAX_LINE_CHARS=240,DEFAULT_PREVIEW_MAX_CHARS=4000;function isNodeLike3(){let p2=globalThis.process;return Boolean(p2&&typeof p2?.versions?.node==="string")}function estimateTokens(text){let raw=String(text??""),chars=raw.length,bytes=Buffer.byteLength(raw,"utf-8"),nonAsciiChars=0;for(let i2=0;i2<raw.length;i2++)if(raw.charCodeAt(i2)>127)nonAsciiChars++;let asciiChars=Math.max(0,chars-nonAsciiChars),byChars=Math.ceil(chars/4),byBytes=Math.ceil(bytes/3),byMixed=Math.ceil(asciiChars/4+nonAsciiChars*0.9);return Math.max(byChars,byBytes,byMixed)}function countLines3(text){if(!text)return 0;return text.split(`
|
|
1181
1181
|
`).length}function buildPreview(text,maxLines){let lines=text.split(`
|
|
1182
1182
|
`).slice(0,Math.max(1,maxLines)),out=[],used=0,maxLineChars=DEFAULT_PREVIEW_MAX_LINE_CHARS,maxChars=DEFAULT_PREVIEW_MAX_CHARS;for(let line of lines){let next=line;if(next.length>maxLineChars)next=`${next.slice(0,maxLineChars)}...`;let size=next.length+(out.length>0?1:0);if(used+size>maxChars)break;out.push(next),used+=size}return out.join(`
|
|
1183
1183
|
`)}function buildReferenceMessage(opts){let endLine=Math.max(1,Math.min(opts.lineCount,opts.firstRangeLines));return["[long_input_reference]","Large pasted content is stored in a session-scoped blob.","Read it via `Read` tool using `file_id` and line ranges.","",`file_id: ${opts.fileId}`,`line_count: ${opts.lineCount}`,`sha256: ${opts.sha256}`,`recommended_first_range: 1-${endLine}`,"","tool_call_example:",`{"file_id":"${opts.fileId}","start_line":1,"end_line":${endLine}}`,"","preview:","```text",opts.preview,"```","","Continue reading in chunks of at most 300 lines and cite line numbers in conclusions."].join(`
|