pi-plus 0.1.25 → 0.1.26

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.
Files changed (2) hide show
  1. package/package.json +1 -1
  2. package/pipi.js +2 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pi-plus",
3
- "version": "0.1.25",
3
+ "version": "0.1.26",
4
4
  "description": "pi coding agent with the pi-plus override layer (pipi CLI)",
5
5
  "type": "module",
6
6
  "piConfig": {
package/pipi.js CHANGED
@@ -570,7 +570,7 @@ new Anthropic({ apiKey, dangerouslyAllowBrowser: true });
570
570
  `)||"",contentText3=item.content?.map(c2=>c2.text).join(`
571
571
 
572
572
  `)||"";slot.block.thinking=summaryText2||contentText3||slot.block.thinking,slot.block.thinkingSignature=JSON.stringify(item),reasoningBlocksById.set(item.id,slot.block),stream12.push({type:"thinking_end",contentIndex:slot.contentIndex,content:slot.block.thinking,partial:output}),outputSlots.delete(event.output_index)}else item.type==="message"&&slot?.type==="text"?(slot.block.text=item.content?.map(c2=>c2.type==="output_text"?c2.text:c2.refusal).join("")||"",slot.block.textSignature=encodeTextSignatureV1(item.id,item.phase??void 0),stream12.push({type:"text_end",contentIndex:slot.contentIndex,content:slot.block.text,partial:output}),outputSlots.delete(event.output_index)):item.type==="function_call"&&slot?.type==="toolCall"&&slot.block.partialJson!==void 0?(slot.block.arguments=parseStreamingJson(item.arguments||slot.block.partialJson||"{}"),item.namespace!==void 0&&(slot.block.namespace=item.namespace),delete slot.block.partialJson,stream12.push({type:"toolcall_end",contentIndex:slot.contentIndex,toolCall:slot.block,partial:output}),outputSlots.delete(event.output_index)):item.type==="custom_tool_call"&&slot?.type==="toolCall"&&slot.block.customInput&&(pushToolCallDelta(slot,appendCustomToolCallInput(slot.block,item.input??getCustomToolCallInput(slot.block),!0)),item.namespace!==void 0&&(slot.block.namespace=item.namespace),delete slot.block.customInput,stream12.push({type:"toolcall_end",contentIndex:slot.contentIndex,toolCall:slot.block,partial:output}),outputSlots.delete(event.output_index))}else if(event.type==="response.completed"||event.type==="response.incomplete")finalizeResponse2(event.response);else{if(event.type==="error")throw new Error(`Error Code ${event.code}: ${event.message}`||"Unknown error");if(event.type==="response.failed"){sawTerminalResponseEvent=!0,output.rawStopReason=event.response?.status;let error=event.response?.error,details=event.response?.incomplete_details,msg=error?`${error.code||"unknown"}: ${error.message||"no message"}`:details?.reason?`incomplete: ${details.reason}`:"Unknown error (no error details in response)";throw new Error(msg)}}if(!sawTerminalResponseEvent)throw new Error("OpenAI Responses stream ended before a terminal response event");if(output.stopReason==="toolUse")for(let block of output.content){if(block.type!=="toolCall")continue;let toolCall=block;if(toolCall.partialJson!==void 0||toolCall.customInput!==void 0)throw new Error(`OpenAI Responses stream completed with an unfinished tool call: ${toolCall.name} (${toolCall.id})`)}}function mapStopReason3(status,incompleteReason){if(!status)return{stopReason:"stop"};switch(status){case"completed":return{stopReason:"stop"};case"incomplete":return incompleteReason==="max_output_tokens"?{stopReason:"length"}:{stopReason:"error",errorMessage:incompleteReason?`Response incomplete: ${incompleteReason}`:"Response incomplete without a provider reason"};case"failed":case"cancelled":return{stopReason:"error"};case"in_progress":case"queued":return{stopReason:"stop"};default:{let _exhaustive=status;throw new Error(`Unhandled stop reason: ${_exhaustive}`)}}}var init_openai_responses_shared=__esm({"packages/ai/dist/api/openai-responses-shared.js"(){init_models();init_hash4();init_json_parse();init_sanitize_unicode();init_text2();init_transcript();init_constrained_sampling();init_transform_messages()}});var azure_openai_responses_exports={};__export(azure_openai_responses_exports,{stream:()=>stream4,streamSimple:()=>streamSimple3});function parseDeploymentNameMap(value){let map=new Map;if(!value)return map;for(let entry of value.split(",")){let trimmed=entry.trim();if(!trimmed)continue;let[modelId,deploymentName]=trimmed.split("=",2);!modelId||!deploymentName||map.set(modelId.trim(),deploymentName.trim())}return map}function resolveDeploymentName(model,options){return options?.azureDeploymentName?options.azureDeploymentName:parseDeploymentNameMap(getProviderEnvValue("AZURE_OPENAI_DEPLOYMENT_NAME_MAP",options?.env)).get(model.id)||model.id}function formatAzureOpenAIError(error){return formatProviderError(normalizeProviderError(error),"Azure OpenAI API error")}function normalizeAzureBaseUrl(baseUrl){let trimmed=baseUrl.trim().replace(/\/+$/,""),url;try{url=new URL(trimmed)}catch{throw new Error(`Invalid Azure OpenAI base URL: ${baseUrl}`)}let isAzureHost=url.hostname.endsWith(".openai.azure.com")||url.hostname.endsWith(".cognitiveservices.azure.com")||url.hostname.endsWith(".ai.azure.com"),normalizedPath=url.pathname.replace(/\/+$/,"");return isAzureHost&&(normalizedPath===""||normalizedPath==="/"||normalizedPath==="/openai"||normalizedPath==="/openai/v1/responses")&&(url.pathname="/openai/v1",url.search=""),url.toString().replace(/\/+$/,"")}function buildDefaultBaseUrl(resourceName2){return`https://${resourceName2}.openai.azure.com/openai/v1`}function resolveAzureConfig(model,options){let apiVersion=options?.azureApiVersion||getProviderEnvValue("AZURE_OPENAI_API_VERSION",options?.env)||DEFAULT_AZURE_API_VERSION,baseUrl=options?.azureBaseUrl?.trim()||getProviderEnvValue("AZURE_OPENAI_BASE_URL",options?.env)?.trim()||void 0,resourceName2=options?.azureResourceName||getProviderEnvValue("AZURE_OPENAI_RESOURCE_NAME",options?.env),resolvedBaseUrl=baseUrl;if(!resolvedBaseUrl&&resourceName2&&(resolvedBaseUrl=buildDefaultBaseUrl(resourceName2)),!resolvedBaseUrl&&model.baseUrl&&(resolvedBaseUrl=model.baseUrl),!resolvedBaseUrl)throw new Error("Azure OpenAI base URL is required. Set AZURE_OPENAI_BASE_URL or AZURE_OPENAI_RESOURCE_NAME, or pass azureBaseUrl, azureResourceName, or model.baseUrl.");return{baseUrl:normalizeAzureBaseUrl(resolvedBaseUrl),apiVersion}}function createClient3(model,apiKey,options){let headers={"User-Agent":getPiUserAgent(),...model.headers};options?.headers&&Object.assign(headers,options.headers);let{baseUrl,apiVersion}=resolveAzureConfig(model,options);return new AzureOpenAI({apiKey,apiVersion,dangerouslyAllowBrowser:!0,fetch:options?.fetch,defaultHeaders:headers,baseURL:baseUrl})}function buildParams3(model,context,options,deploymentName,grammarToolInputProperties=createGrammarToolInputProperties(getDeclaredTools(context.messages),model.compat?.supportsOpenAIGrammarTools??!1)){let supportsAdditionalTools=model.compat?.supportsAdditionalTools??!1,supportsToolSearch=model.compat?.supportsToolSearch??!1,transcriptTools=resolveTranscriptTools(context.messages,supportsAdditionalTools||supportsToolSearch),messages=convertResponsesMessages(model,context,AZURE_TOOL_CALL_PROVIDERS,{grammarToolInputProperties,supportsMidConvoSystemMessages:model.compat?.supportsMidConvoSystemMessages??!1,supportsAdditionalTools,supportsToolSearch,toolOptions:{supportsStrictMode:model.compat?.supportsStrictMode??!0,supportsOpenAIGrammarTools:model.compat?.supportsOpenAIGrammarTools??!1}}),params={model:deploymentName,input:messages,stream:!0,prompt_cache_key:clampOpenAIPromptCacheKey(options?.sessionId),store:!1};options?.maxTokens&&(params.max_output_tokens=Math.max(options.maxTokens,OPENAI_RESPONSES_MIN_OUTPUT_TOKENS)),options?.temperature!==void 0&&(params.temperature=options?.temperature),transcriptTools.requestTools.length>0&&(params.tools=convertResponsesTools(transcriptTools.requestTools,{supportsStrictMode:model.compat?.supportsStrictMode??!0,supportsOpenAIGrammarTools:model.compat?.supportsOpenAIGrammarTools??!1})),options?.toolChoice!==void 0&&(params.tool_choice=options.toolChoice);let reasoningEffort=options?.reasoningEffort??(options?.reasoningSummary?"medium":void 0);if(model.reasoning)if(reasoningEffort){let effort=options?.reasoningEffort?model.thinkingLevelMap?.[options.reasoningEffort]??options.reasoningEffort:reasoningEffort;params.reasoning={effort,summary:options?.reasoningSummary||"auto"},params.include=["reasoning.encrypted_content"]}else model.thinkingLevelMap?.off!==null&&(params.reasoning={effort:model.thinkingLevelMap?.off??"none"});let samplingParams=resolveSamplingParams(model,reasoningEffort??"off",options?.samplingParams);return samplingParams&&Object.assign(params,samplingParams),params}var DEFAULT_AZURE_API_VERSION,AZURE_TOOL_CALL_PROVIDERS,OPENAI_RESPONSES_MIN_OUTPUT_TOKENS,stream4,streamSimple3,init_azure_openai_responses2=__esm({"packages/ai/dist/api/azure-openai-responses.js"(){init_openai2();init_models();init_error_body();init_event_stream();init_headers2();init_pi_user_agent();init_provider_env();init_provider_retry();init_transcript();init_constrained_sampling();init_openai_prompt_cache();init_openai_responses_shared();init_simple_options();DEFAULT_AZURE_API_VERSION="v1",AZURE_TOOL_CALL_PROVIDERS=new Set(["openai","openai-codex","opencode","azure-openai-responses"]),OPENAI_RESPONSES_MIN_OUTPUT_TOKENS=16;stream4=(model,context,options)=>{let stream12=new AssistantMessageEventStream,normalizedContext=resolveTranscript(context,model.compat?.supportsMidConvoSystemMessages);return(async()=>{let deploymentName=resolveDeploymentName(model,options),output={role:"assistant",content:[],api:"azure-openai-responses",provider:model.provider,model:model.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"pending",timestamp:Date.now()};try{let apiKey=options?.apiKey;if(!apiKey)throw new Error(`No API key for provider: ${model.provider}`);let client=createClient3(model,apiKey,options),grammarToolInputProperties=createGrammarToolInputProperties(getDeclaredTools(normalizedContext.messages),model.compat?.supportsOpenAIGrammarTools??!1),params=buildParams3(model,normalizedContext,options,deploymentName,grammarToolInputProperties),nextParams=await options?.onPayload?.(params,model);nextParams!==void 0&&(params=nextParams);let requestOptions={...options?.signal?{signal:options.signal}:{},...options?.timeoutMs!==void 0?{timeout:options.timeoutMs}:{},maxRetries:0},{data:openaiStream,response}=await retryProviderRequest(()=>client.responses.create(params,requestOptions).withResponse(),{maxRetries:options?.maxRetries,maxRetryDelayMs:options?.maxRetryDelayMs,signal:options?.signal});if(await options?.onResponse?.({status:response.status,headers:headersToRecord(response.headers)},model),stream12.push({type:"start",partial:output}),await processResponsesStream(openaiStream,output,stream12,model,{onProviderStreamEvent:options?.onProviderStreamEvent,grammarToolInputProperties}),options?.signal?.aborted)throw new Error("Request was aborted");if(output.stopReason==="pending")throw new Error("Azure OpenAI Responses stream ended without a stop reason");if(output.stopReason==="aborted"||output.stopReason==="error")throw new Error(output.errorMessage||"An unknown error occurred");stream12.push({type:"done",reason:output.stopReason,message:output}),stream12.end()}catch(error){for(let block of output.content)delete block.index,delete block.partialJson,delete block.customInput;output.stopReason=options?.signal?.aborted?"aborted":"error",output.errorMessage=formatAzureOpenAIError(error),stream12.push({type:"error",reason:output.stopReason,error:output}),stream12.end()}})(),stream12},streamSimple3=(model,context,options)=>{let apiKey=options?.apiKey;if(!apiKey)throw new Error(`No API key for provider: ${model.provider}`);let base={...buildBaseOptions(model,context,options,apiKey),toolChoice:options?.toolChoice},clampedReasoning=options?.reasoning?clampThinkingLevel(model,options.reasoning):void 0;return stream4(model,context,{...base,reasoningEffort:clampedReasoning==="off"?void 0:clampedReasoning})}}});var azureOpenAIResponsesApi,init_azure_openai_responses_lazy=__esm({"packages/ai/dist/api/azure-openai-responses.lazy.js"(){init_lazy();azureOpenAIResponsesApi=()=>lazyApi(()=>Promise.resolve().then(()=>(init_azure_openai_responses2(),azure_openai_responses_exports)))}});function azureOpenAIResponsesProvider(){return createProvider({id:"azure-openai-responses",name:"Azure OpenAI",auth:{apiKey:envApiKeyAuth("Azure OpenAI API key",["AZURE_OPENAI_API_KEY"])},models:Object.values(AZURE_OPENAI_RESPONSES_MODELS),api:azureOpenAIResponsesApi()})}var init_azure_openai_responses3=__esm({"packages/ai/dist/providers/azure-openai-responses.js"(){init_azure_openai_responses_lazy();init_helpers2();init_models();init_azure_openai_responses_models()}});function basetenProvider(){return createProvider({id:"baseten",name:"Baseten",baseUrl:"https://inference.baseten.co/v1",auth:{apiKey:envApiKeyAuth("Baseten API key",["BASETEN_API_KEY"])},models:Object.values(BASETEN_MODELS),api:openAICompletionsApi()})}var init_baseten2=__esm({"packages/ai/dist/providers/baseten.js"(){init_openai_completions_lazy();init_helpers2();init_models();init_baseten_models()}});function cerebrasProvider(){return createProvider({id:"cerebras",name:"Cerebras",baseUrl:"https://api.cerebras.ai/v1",auth:{apiKey:envApiKeyAuth("Cerebras API key",["CEREBRAS_API_KEY"])},models:Object.values(CEREBRAS_MODELS),api:openAICompletionsApi()})}var init_cerebras2=__esm({"packages/ai/dist/providers/cerebras.js"(){init_openai_completions_lazy();init_helpers2();init_models();init_cerebras_models()}});var openai_responses_exports={};__export(openai_responses_exports,{stream:()=>stream5,streamSimple:()=>streamSimple4});function isChatGPTSignIn(model,apiKey){return model.provider==="openai"&&model.baseUrl==="https://api.openai.com/v1"&&apiKey!==void 0&&!apiKey.startsWith("sk-")}function hasHeader3(headers,name){if(!headers)return!1;let expected=name.toLowerCase();for(let[key,value]of Object.entries(headers))if(key.toLowerCase()===expected&&value!==null&&value.trim().length>0)return!0;return!1}function getClientApiKey2(provider,apiKey,headers){if(apiKey)return apiKey;if(hasHeader3(headers,"authorization")||hasHeader3(headers,"cf-aig-authorization"))return"unused";throw new Error(`No API key for provider: ${provider}`)}function detectSessionAffinityFormat(model){return model.provider==="openrouter"||model.baseUrl.includes("openrouter.ai")?"openrouter":"openai"}function resolveCacheRetention3(cacheRetention,env3){return cacheRetention||(getProviderEnvValue("PI_CACHE_RETENTION",env3)==="long"?"long":"short")}function getCompat2(model){return{supportsDeveloperRole:model.compat?.supportsDeveloperRole??!0,supportsMidConvoSystemMessages:model.compat?.supportsMidConvoSystemMessages??!1,sessionAffinityFormat:model.compat?.sessionAffinityFormat??detectSessionAffinityFormat(model),supportsLongCacheRetention:model.compat?.supportsLongCacheRetention??!0,supportsStrictMode:model.compat?.supportsStrictMode??!1,supportsOpenAIGrammarTools:model.compat?.supportsOpenAIGrammarTools??!1,supportsAdditionalTools:model.compat?.supportsAdditionalTools??!1,supportsToolSearch:model.compat?.supportsToolSearch??!1,supportsExplicitPromptCacheMode:model.compat?.supportsExplicitPromptCacheMode??!1,supportsMaxOutputTokens:model.compat?.supportsMaxOutputTokens??!0}}function getPromptCacheRetention(compat,cacheRetention){return cacheRetention==="long"&&compat.supportsLongCacheRetention&&!compat.supportsExplicitPromptCacheMode?"24h":void 0}function getPromptCacheOptions(compat,cacheRetention){if(compat.supportsExplicitPromptCacheMode){if(cacheRetention==="none")return{mode:"explicit"};if(cacheRetention==="long"&&compat.supportsLongCacheRetention)return{ttl:"30m"}}}function createClient4(model,context,apiKey,optionsHeaders,fetch3,sessionId){let compat=getCompat2(model),headers={"User-Agent":getPiUserAgent(),...model.headers};if(model.provider==="github-copilot"){let hasImages=hasCopilotVisionInput(context.messages),copilotHeaders=buildCopilotDynamicHeaders({messages:context.messages,hasImages});Object.assign(headers,copilotHeaders)}return sessionId&&(compat.sessionAffinityFormat==="openrouter"?headers["x-session-id"]=sessionId:(compat.sessionAffinityFormat==="openai"&&(headers.session_id=sessionId),headers["x-client-request-id"]=sessionId)),optionsHeaders&&Object.assign(headers,optionsHeaders),new OpenAI({apiKey,baseURL:model.baseUrl,dangerouslyAllowBrowser:!0,fetch:fetch3,defaultHeaders:headers})}function buildParams4(model,context,options,compat=getCompat2(model),grammarToolInputProperties=createGrammarToolInputProperties(getDeclaredTools(context.messages),compat.supportsOpenAIGrammarTools)){let transcriptTools=resolveTranscriptTools(context.messages,compat.supportsAdditionalTools||compat.supportsToolSearch),messages=convertResponsesMessages(model,context,OPENAI_TOOL_CALL_PROVIDERS,{grammarToolInputProperties,supportsMidConvoSystemMessages:compat.supportsMidConvoSystemMessages,supportsAdditionalTools:compat.supportsAdditionalTools,supportsToolSearch:compat.supportsToolSearch,toolOptions:{supportsStrictMode:compat.supportsStrictMode,supportsOpenAIGrammarTools:compat.supportsOpenAIGrammarTools}}),cacheRetention=resolveCacheRetention3(options?.cacheRetention,options?.env),omitUnsupportedFields=isChatGPTSignIn(model,options?.apiKey),params={model:model.id,input:messages,stream:!0,prompt_cache_key:cacheRetention==="none"?void 0:clampOpenAIPromptCacheKey(options?.sessionId),prompt_cache_retention:omitUnsupportedFields?void 0:getPromptCacheRetention(compat,cacheRetention),prompt_cache_options:omitUnsupportedFields?void 0:getPromptCacheOptions(compat,cacheRetention),store:!1};options?.maxTokens&&compat.supportsMaxOutputTokens&&!omitUnsupportedFields&&(params.max_output_tokens=Math.max(options.maxTokens,OPENAI_RESPONSES_MIN_OUTPUT_TOKENS2)),options?.temperature!==void 0&&!omitUnsupportedFields&&(params.temperature=options?.temperature),options?.serviceTier!==void 0&&(params.service_tier=options.serviceTier),transcriptTools.requestTools.length>0&&(params.tools=convertResponsesTools(transcriptTools.requestTools,{supportsStrictMode:compat.supportsStrictMode,supportsOpenAIGrammarTools:compat.supportsOpenAIGrammarTools})),options?.toolChoice!==void 0&&(params.tool_choice=options.toolChoice);let reasoningEffort=options?.reasoningEffort??(options?.reasoningSummary?"medium":void 0);if(model.reasoning){if(reasoningEffort){let effort=options?.reasoningEffort?model.thinkingLevelMap?.[options.reasoningEffort]??options.reasoningEffort:reasoningEffort;params.reasoning={effort,summary:options?.reasoningSummary||"auto"},params.include=["reasoning.encrypted_content"]}else model.provider!=="github-copilot"&&model.thinkingLevelMap?.off!==null&&(params.reasoning={effort:model.thinkingLevelMap?.off??"none"});model.provider==="xai"&&(params.include=["reasoning.encrypted_content"])}let samplingParams=resolveSamplingParams(model,reasoningEffort??"off",options?.samplingParams);return samplingParams&&Object.assign(params,samplingParams),params}function getServiceTierCostMultiplier(model,serviceTier){switch(serviceTier){case"flex":return .5;case"priority":case"fast":return model.id==="gpt-5.5"?2.5:2;default:return 1}}function applyServiceTierPricing(usage,serviceTier,model){let multiplier=getServiceTierCostMultiplier(model,serviceTier);multiplier!==1&&(usage.cost.input*=multiplier,usage.cost.output*=multiplier,usage.cost.cacheRead*=multiplier,usage.cost.cacheWrite*=multiplier,usage.cost.total=usage.cost.input+usage.cost.output+usage.cost.cacheRead+usage.cost.cacheWrite)}var OPENAI_TOOL_CALL_PROVIDERS,OPENAI_RESPONSES_MIN_OUTPUT_TOKENS2,CHATGPT_USAGE_URL,stream5,streamSimple4,init_openai_responses=__esm({"packages/ai/dist/api/openai-responses.js"(){init_openai2();init_models();init_error_body();init_event_stream();init_headers2();init_pi_user_agent();init_provider_env();init_provider_retry();init_transcript();init_constrained_sampling();init_github_copilot_headers();init_openai_prompt_cache();init_openai_responses_shared();init_simple_options();OPENAI_TOOL_CALL_PROVIDERS=new Set(["openai","openai-codex","opencode"]),OPENAI_RESPONSES_MIN_OUTPUT_TOKENS2=16,CHATGPT_USAGE_URL="https://chatgpt.com/settings/usage";stream5=(model,context,options)=>{let stream12=new AssistantMessageEventStream,normalizedContext=resolveTranscript(context,getCompat2(model).supportsMidConvoSystemMessages);return(async()=>{let output={role:"assistant",content:[],api:model.api,provider:model.provider,model:model.id,usage:{input:0,output:0,cacheRead:0,cacheWrite:0,totalTokens:0,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}},stopReason:"pending",timestamp:Date.now()};try{let apiKey=getClientApiKey2(model.provider,options?.apiKey,options?.headers),cacheSessionId=resolveCacheRetention3(options?.cacheRetention,options?.env)==="none"?void 0:options?.sessionId,compat=getCompat2(model),grammarToolInputProperties=createGrammarToolInputProperties(getDeclaredTools(normalizedContext.messages),compat.supportsOpenAIGrammarTools),client=createClient4(model,normalizedContext,apiKey,options?.headers,options?.fetch,cacheSessionId),params=buildParams4(model,normalizedContext,options,compat,grammarToolInputProperties),nextParams=await options?.onPayload?.(params,model);nextParams!==void 0&&(params=nextParams);let requestOptions={...options?.signal?{signal:options.signal}:{},...options?.timeoutMs!==void 0?{timeout:options.timeoutMs}:{},maxRetries:0},{data:openaiStream,response}=await retryProviderRequest(()=>client.responses.create(params,requestOptions).withResponse(),{maxRetries:options?.maxRetries,maxRetryDelayMs:options?.maxRetryDelayMs,signal:options?.signal});if(await options?.onResponse?.({status:response.status,headers:headersToRecord(response.headers)},model),stream12.push({type:"start",partial:output}),await processResponsesStream(openaiStream,output,stream12,model,{onProviderStreamEvent:options?.onProviderStreamEvent,serviceTier:options?.serviceTier,grammarToolInputProperties,applyServiceTierPricing:(usage,serviceTier)=>applyServiceTierPricing(usage,serviceTier,model)}),options?.signal?.aborted)throw new Error("Request was aborted");if(output.stopReason==="pending")throw new Error("OpenAI Responses stream ended without a stop reason");if(output.stopReason==="aborted"||output.stopReason==="error")throw new Error(output.errorMessage||"An unknown error occurred");stream12.push({type:"done",reason:output.stopReason,message:output}),stream12.end()}catch(error){for(let block of output.content)delete block.index,delete block.partialJson,delete block.customInput;output.stopReason=options?.signal?.aborted?"aborted":"error";let errorMessage9=formatProviderError(normalizeProviderError(error),`${model.provider==="openai"?"OpenAI":model.provider} API error`);output.errorMessage=errorMessage9.includes("subscription_sharing_usage_limit_exceeded")?`${errorMessage9}
573
- Check your ChatGPT usage: ${CHATGPT_USAGE_URL}`:errorMessage9,stream12.push({type:"error",reason:output.stopReason,error:output}),stream12.end()}})(),stream12},streamSimple4=(model,context,options)=>{getClientApiKey2(model.provider,options?.apiKey,options?.headers);let base={...buildBaseOptions(model,context,options,options?.apiKey),toolChoice:options?.toolChoice},clampedReasoning=options?.reasoning?clampThinkingLevel(model,options.reasoning):void 0;return stream5(model,context,{...base,reasoningEffort:clampedReasoning==="off"?void 0:clampedReasoning})}}});var openAIResponsesApi,init_openai_responses_lazy=__esm({"packages/ai/dist/api/openai-responses.lazy.js"(){init_lazy();openAIResponsesApi=()=>lazyApi(()=>Promise.resolve().then(()=>(init_openai_responses(),openai_responses_exports)))}});async function resolveValue(name,ctx,credential,signal){let fromCredential=credential?name===CLOUDFLARE_API_KEY?credential.key:credential.env?.[name]:void 0;if(fromCredential!==void 0)return fromCredential;signal.throwIfAborted();let value=await ctx.env(name);return signal.throwIfAborted(),value}async function resolveCloudflareEnv(kind,ctx,credential,signal){let apiKey=await resolveValue(CLOUDFLARE_API_KEY,ctx,credential,signal),accountId=await resolveValue(CLOUDFLARE_ACCOUNT_ID,ctx,credential,signal),gatewayId=kind==="ai-gateway"?await resolveValue(CLOUDFLARE_GATEWAY_ID,ctx,credential,signal):void 0;if(!(!apiKey||!accountId||kind==="ai-gateway"&&!gatewayId))return{apiKey,env:{CLOUDFLARE_ACCOUNT_ID:accountId,...gatewayId?{CLOUDFLARE_GATEWAY_ID:gatewayId}:{}},source:credential?"stored credential":CLOUDFLARE_API_KEY}}function cloudflareWorkersAIAuth(){return{name:"Cloudflare API key",login:async interaction=>{let key=await interaction.prompt({type:"secret",message:"Enter Cloudflare API key"}),accountId=await interaction.prompt({type:"text",message:"Enter Cloudflare account ID"});return{type:"api_key",key,env:{CLOUDFLARE_ACCOUNT_ID:accountId}}},resolve:async({ctx,credential,signal})=>{let resolved=await resolveCloudflareEnv("workers-ai",ctx,credential,signal);if(resolved)return{auth:{apiKey:resolved.apiKey},env:resolved.env,source:resolved.source}}}}function cloudflareAIGatewayAuth(){return{name:"Cloudflare API key",login:async interaction=>{let key=await interaction.prompt({type:"secret",message:"Enter Cloudflare API key"}),accountId=await interaction.prompt({type:"text",message:"Enter Cloudflare account ID"}),gatewayId=await interaction.prompt({type:"text",message:"Enter Cloudflare AI Gateway ID"});return{type:"api_key",key,env:{CLOUDFLARE_ACCOUNT_ID:accountId,CLOUDFLARE_GATEWAY_ID:gatewayId}}},resolve:async({ctx,credential,signal})=>{let resolved=await resolveCloudflareEnv("ai-gateway",ctx,credential,signal);if(resolved)return{auth:{headers:{"cf-aig-authorization":`Bearer ${resolved.apiKey}`,Authorization:null,"x-api-key":null}},env:resolved.env,source:resolved.source}}}}var CLOUDFLARE_API_KEY,CLOUDFLARE_ACCOUNT_ID,CLOUDFLARE_GATEWAY_ID,init_cloudflare_auth=__esm({"packages/ai/dist/providers/cloudflare-auth.js"(){CLOUDFLARE_API_KEY="CLOUDFLARE_API_KEY",CLOUDFLARE_ACCOUNT_ID="CLOUDFLARE_ACCOUNT_ID",CLOUDFLARE_GATEWAY_ID="CLOUDFLARE_GATEWAY_ID"}});function resolveCloudflareModel(model,env3){if(!env3)return model;let baseUrl=model.baseUrl.replaceAll(`{${CLOUDFLARE_ACCOUNT_ID2}}`,env3[CLOUDFLARE_ACCOUNT_ID2]??`{${CLOUDFLARE_ACCOUNT_ID2}}`).replaceAll(`{${CLOUDFLARE_GATEWAY_ID2}}`,env3[CLOUDFLARE_GATEWAY_ID2]??`{${CLOUDFLARE_GATEWAY_ID2}}`);return baseUrl===model.baseUrl?model:{...model,baseUrl}}function cloudflareStreams(streams){return{stream:(model,context,options)=>streams.stream(resolveCloudflareModel(model,options?.env),context,options),streamSimple:(model,context,options)=>streams.streamSimple(resolveCloudflareModel(model,options?.env),context,options)}}function cloudflareClassifier(classifier){return{classify:(model,context,options)=>classifier.classify(resolveCloudflareModel(model,options?.env),context,options)}}var CLOUDFLARE_ACCOUNT_ID2,CLOUDFLARE_GATEWAY_ID2,init_cloudflare_stream=__esm({"packages/ai/dist/providers/cloudflare-stream.js"(){CLOUDFLARE_ACCOUNT_ID2="CLOUDFLARE_ACCOUNT_ID",CLOUDFLARE_GATEWAY_ID2="CLOUDFLARE_GATEWAY_ID"}});function cloudflareAIGatewayProvider(){return createProvider({id:"cloudflare-ai-gateway",name:"Cloudflare AI Gateway",auth:{apiKey:cloudflareAIGatewayAuth()},models:Object.values(CLOUDFLARE_AI_GATEWAY_MODELS),api:{"anthropic-messages":cloudflareStreams(anthropicMessagesApi()),"openai-completions":cloudflareStreams(openAICompletionsApi()),"openai-responses":cloudflareStreams(openAIResponsesApi())}})}var init_cloudflare_ai_gateway2=__esm({"packages/ai/dist/providers/cloudflare-ai-gateway.js"(){init_anthropic_messages_lazy();init_openai_completions_lazy();init_openai_responses_lazy();init_models();init_cloudflare_ai_gateway_models();init_cloudflare_auth();init_cloudflare_stream()}});function httpError(label,response,body){let error=new Error(`${label} returned ${response.status}`);return error.status=response.status,error.headers=response.headers,error.body=body,error}function timeoutError(timeoutMs){let error=new Error(`Request timed out after ${timeoutMs}ms`);return error.name="TimeoutError",error.status=void 0,error.headers=void 0,error.body="",error}function isRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function requiredNumber(label,value,field2){if(typeof value!="number"||!Number.isFinite(value))throw new Error(`${label} returned an invalid ${field2}`);return value}function probabilities(label,value,id){if(!isRecord(value))throw new Error(`${label} returned invalid probabilities for ${id}`);return Object.fromEntries(Object.entries(value).map(([key,probability])=>[key,requiredNumber(label,probability,`probability for ${id}.${key}`)]))}function parseAnswers(label,value,context){if(!isRecord(value))throw new Error(`${label} returned an unexpected response`);let answers=[];for(let[id,question]of Object.entries(context.questions)){let answer2=value[id];if(!isRecord(answer2))throw new Error(`${label} did not return an answer for ${id}`);if(question.type==="choice"){if(answer2.type!=="choice"||typeof answer2.choice!="string")throw new Error(`${label} did not return a choice answer for ${id}`);answers.push([id,{type:"choice",choice:answer2.choice,probabilities:probabilities(label,answer2.probabilities,id),confidence:requiredNumber(label,answer2.confidence,`confidence for ${id}`)}])}else if(question.type==="score"){if(answer2.type!=="score")throw new Error(`${label} did not return a score answer for ${id}`);answers.push([id,{type:"score",score:requiredNumber(label,answer2.score,`score for ${id}`),confidence:requiredNumber(label,answer2.confidence,`confidence for ${id}`)}])}else{if(answer2.type!=="noul")throw new Error(`${label} did not return a bool answer for ${id}`);answers.push([id,{type:"bool",probability:requiredNumber(label,answer2.noul,`probability for ${id}`)}])}}return Object.fromEntries(answers)}function tokenCount(value){return typeof value=="number"&&Number.isFinite(value)&&value>0?value:0}function parseUsage(value,model){if(!isRecord(value)||value.input_tokens===void 0&&value.output_tokens===void 0)return;let input2=tokenCount(value.input_tokens),output=tokenCount(value.output_tokens),usage={input:input2,output,cacheRead:0,cacheWrite:0,totalTokens:input2+output,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}};return calculateCost(model,usage),usage}function wireRequest(context){return{state:context.state,questions:Object.fromEntries(Object.entries(context.questions).map(([id,question])=>[id,question.type==="bool"?{...question,type:"noul"}:question]))}}function requestHeaders(model,apiKey,optionsHeaders){return providerHeadersToRecord({authorization:`Bearer ${apiKey}`,"content-type":"application/json"},model.headers,optionsHeaders)??{}}async function classifySystemOne(transport3,model,context,options){let output={api:model.api,provider:model.provider,model:model.id,answers:{},stopReason:"stop",timestamp:Date.now()};try{if(model.api!==transport3.api)throw new Error(`Unsupported classifier API: ${model.api}`);if(!options?.apiKey)throw new Error(`No API key for provider: ${model.provider}`);let apiKey=options.apiKey,payload=transport3.payload(model,wireRequest(context)),transformed=await options.onPayload?.(payload,model);transformed!==void 0&&(payload=transformed);let requestFetch=options.fetch??globalThis.fetch,{response,body}=await retryProviderRequest(async()=>{let timeoutSignal=options.timeoutMs!==void 0?AbortSignal.timeout(options.timeoutMs):void 0,signal=options.signal&&timeoutSignal?AbortSignal.any([options.signal,timeoutSignal]):options.signal??timeoutSignal;try{let next=await requestFetch(transport3.url(model),{method:"POST",headers:requestHeaders(model,apiKey,options.headers),body:JSON.stringify(payload),signal});if(!next.ok)throw httpError(transport3.label,next,await next.text());return{response:next,body:await next.json()}}catch(error){throw timeoutSignal?.aborted&&!options.signal?.aborted?timeoutError(options.timeoutMs):error}},{maxRetries:options.maxRetries??2,maxRetryDelayMs:options.maxRetryDelayMs,signal:options.signal});await options.onResponse?.({status:response.status,headers:headersToRecord(response.headers)},model);let result=transport3.output(body),usage=parseUsage(result.usage,model);return usage&&(output.usage=usage),output.answers=parseAnswers(transport3.label,result.answers,context),output}catch(error){return output.stopReason=options?.signal?.aborted?"aborted":"error",output.errorMessage=formatProviderError(normalizeProviderError(error),`${transport3.label} error`),output}}var init_system_one_shared=__esm({"packages/ai/dist/api/system-one-shared.js"(){init_models();init_error_body();init_headers2();init_provider_retry()}});var cloudflare_workers_ai_system_one_exports={};__export(cloudflare_workers_ai_system_one_exports,{classify:()=>classify});function cloudflareErrorMessage(errors){if(Array.isArray(errors)){let messages=errors.map(error=>isRecord(error)&&typeof error.message=="string"?error.message:void 0).filter(message2=>message2!==void 0);if(messages.length>0)return`${LABEL} error: ${messages.join("; ")}`}return`${LABEL} request failed`}var LABEL,transport,classify,init_cloudflare_workers_ai_system_one=__esm({"packages/ai/dist/api/cloudflare-workers-ai-system-one.js"(){init_system_one_shared();LABEL="Cloudflare Workers AI";transport={api:"cloudflare-workers-ai-system-one",label:LABEL,url:model=>new URL("run",`${model.baseUrl.replace(/\/+$/u,"")}/`),payload:(model,request)=>({model:model.id,input:request}),output:body=>{if(!isRecord(body))throw new Error(`${LABEL} returned an unexpected response`);if(body.success===!1)throw new Error(cloudflareErrorMessage(body.errors));let result=body.result;if(!isRecord(result))throw new Error(`${LABEL} returned an unexpected response`);if("answers"in result)return result;if(result.state!=="Completed")throw new Error(`${LABEL} run did not complete (state: ${String(result.state)})`);if(!isRecord(result.result))throw new Error(`${LABEL} returned an unexpected response`);return result.result}},classify=(model,context,options)=>classifySystemOne(transport,model,context,options)}});var cloudflareWorkersAISystemOneApi,init_cloudflare_workers_ai_system_one_lazy=__esm({"packages/ai/dist/api/cloudflare-workers-ai-system-one.lazy.js"(){cloudflareWorkersAISystemOneApi=()=>({classify:async(model,context,options)=>(await Promise.resolve().then(()=>(init_cloudflare_workers_ai_system_one(),cloudflare_workers_ai_system_one_exports))).classify(model,context,options)})}});function cloudflareWorkersAIProvider(){return createProvider({id:"cloudflare-workers-ai",name:"Cloudflare Workers AI",auth:{apiKey:cloudflareWorkersAIAuth()},models:[...Object.values(CLOUDFLARE_WORKERS_AI_MODELS),...Object.values(CLOUDFLARE_WORKERS_AI_CLASSIFIER_MODELS)],api:cloudflareStreams(openAICompletionsApi()),classifiers:{"cloudflare-workers-ai-system-one":cloudflareClassifier(cloudflareWorkersAISystemOneApi())}})}var init_cloudflare_workers_ai2=__esm({"packages/ai/dist/providers/cloudflare-workers-ai.js"(){init_cloudflare_workers_ai_system_one_lazy();init_openai_completions_lazy();init_models();init_cloudflare_auth();init_cloudflare_stream();init_cloudflare_workers_ai_models()}});var manifest_default,init_manifest=__esm({"packages/ai/dist/providers/data/.manifest.json"(){manifest_default={schemaVersion:6,generatedAt:"2026-10-04T13:23:28.419Z",structureHash:"c36423c1e750caaf9b45181ba43b7cdaafb7148cd795700a0362e6706d4b0716",files:{"amazon-bedrock.json":"a0256dd49b0b7f4fee8a2853aeaecc65e74f643e96348c5be55d2d912b82c6ce","ant-ling.json":"628feab3ef6c7d80ce96f75999804e1d9f05fec3851e5302e30fff3b69db90f6","anthropic.json":"3ff00b68990382e42626ebd1b65dcc28ae3cad9e6faa8920331ba92f067f1b3a","azure-openai-responses.json":"adeb2cf9d944d84f81b0d633c2e4e6bfa548a806c431902bd037c5f36500be21","baseten.json":"b04d1423d6958bec857ffccc36726f091ec1a8f3a09cf0836b64cc94b0ee697d","cerebras.json":"3eccb58c5de3d0dc7ba49dc6e477ba29f00cb3150ce0a35cc90d59e6b5ab368e","cloudflare-ai-gateway.json":"9030456decc3f3edacc3388165ab87cb3db0360f6b191f4a12e063f5c9464332","cloudflare-workers-ai.json":"d04336a61cacfd0cadbc2f3d30cd3b552e3d153e5a320658a31ba1bab8f01c83","deepseek.json":"10a296fb3e898f7715c80890c8af0af4f5fd58f22dbcd6612fdc5d762157ccdc","fireworks.json":"8db3c11f65a5d76260d5040a5dc5a9ef0f35b92de8505a30907c2355c2837b36","github-copilot.json":"573f05c2dfc0c8158e252dd286d6b174cd323f965284d7ae157439d8e3dea92c","google-vertex.json":"40090c680538bc867f2624d986a449f361be4dfa6ba96d7a27402050f036e009","google.json":"c0f5a633e5e5a5044432db3e537f4bc674d4de18df09325c6349547fcc13cabe","groq.json":"910952ad9dad07856983459d63fce0148dba1203edd7b10d801a77c5824f3405","huggingface.json":"1b8604bd31a5e05fe43a40ec1ec6dfc1a51a28b0b020151ef057fab43f57c923","kimi-coding.json":"582250b920454d98940da3e7e99d30b807edbea28f2eb8ac15f658d2ef41e8fc","meta.json":"0c7e9a370a7005c5a89dc94f0f93bc67b8935c3f802de324f11af6ff56fff429","minimax-cn.json":"f962c20ee6a6a342820f778e9dc363a18a524bf11998f6e2c57f2989915d62e5","minimax.json":"17a432f80d0ea6dd26eade80a4314250d3a855678601728a5f70dd8fa0d21dd2","mistral.json":"10f33bff9adf1248f7e6848e5890c265399f1f94e5b42cfdc28c109d547af98d","moonshotai-cn.json":"79c9585dc84ee525ebaebbc78b3c55f3d369ec884d4f943488f1e0b14e3587f5","moonshotai.json":"1da2c4e34f22aef17a07c974d85bdee8e1b68b6dc712e3769c935b3f1e7dadca","nvidia.json":"a75e963dc81779e3eec01c051b12277c15ec37c5b94ab51ece9e9ccb3b16407c","openai-codex.json":"3cc35a7e122e5c77ee8ec30a9a3bd8bd59629997e85ba2cb3f9e0ed62e9a09c0","openai.json":"87faafcdd168c9b6fdaef521137834a207437daf0d71641fd0a2f3dddf4d1ecb","opencode-go.json":"542a62ae86ec34d55b2927927a3fe007a54aab2729026e578d7ede1bab51e532","opencode.json":"7cf6c2e34b4defd50135572da48030402d33101bcb8c43c7612841e5b3afcd43","openrouter.json":"012139cfb2bb87cae1ddc076182d76b4baf995a5cbb17ad948f5593f16b6ca59","qwen-token-plan-cn.json":"2469a4091c474ec3db0a49a9962d8d2726c074ad9065b96bc4e0c87861c4c6c5","qwen-token-plan-individual.json":"0fb7cf64faf39d1a3b0a884210a86c87084b805eda15644f5f39293287b959dd","qwen-token-plan.json":"eff10620cb577142de4ec02698d5961a71fda2fe4f6ae7ea9432bad9d6844176","radius.json":"88a3f060a851882df89015bcd346e03238b4b0725bd72c8ad501fcffff782768","together.json":"52293df62191c8e799ae3632f8ab1b3f52ee626aee0280677086627b32864bf7","typesafe.json":"a4429a2f696d5cc5273969af61a7310bda07d6bdcd27bf9ac9c76c534cc43716","vercel-ai-gateway.json":"436f085bd5d972959f0b2b66e82f2af55843c8a40a70417328911cb1a5f32997","xai.json":"879c49b78b663a52a220ac4ee013e726b10c4f50aaa03bc58ee53a4b54c76928","xiaomi-token-plan-ams.json":"ca65178f4525d9705bc8d085ed136cecbe149c4080e857ea6a64ae643d2ac00a","xiaomi-token-plan-cn.json":"b065326926681c2262084e59c1c19ebdaf146c07107b5242c76b456becf74db0","xiaomi-token-plan-sgp.json":"92c3d6d707f81fd9cd2b6d1fb57dc431d90ba51e10fe49d97bc8806035c23492","xiaomi.json":"b81d01a374f7b558728c78d81f4168efa9c8996e6e2b5618409a8094b083c759","zai-coding-cn.json":"ee5ee705fb6e413a6088db5e3616c27fce802a8ece6c355f1db35490d787f610","zai.json":"58e6642fdfb736f0b9a4a277c760c536a3cea66a030abbfb2615f7b2851d5c6f"}}}});function deepseekProvider(){return createProvider({id:"deepseek",name:"DeepSeek",baseUrl:"https://api.deepseek.com",auth:{apiKey:envApiKeyAuth("DeepSeek API key",["DEEPSEEK_API_KEY"])},models:Object.values(DEEPSEEK_MODELS),api:openAICompletionsApi()})}var init_deepseek2=__esm({"packages/ai/dist/providers/deepseek.js"(){init_openai_completions_lazy();init_helpers2();init_models();init_deepseek_models()}});function fireworksProvider(){return createProvider({id:"fireworks",name:"Fireworks",baseUrl:"https://api.fireworks.ai/inference",auth:{apiKey:envApiKeyAuth("Fireworks API key",["FIREWORKS_API_KEY"])},models:Object.values(FIREWORKS_MODELS),api:{"anthropic-messages":anthropicMessagesApi(),"openai-completions":openAICompletionsApi()}})}var init_fireworks2=__esm({"packages/ai/dist/providers/fireworks.js"(){init_anthropic_messages_lazy();init_openai_completions_lazy();init_helpers2();init_models();init_fireworks_models()}});function githubCopilotProvider(){return createProvider({id:"github-copilot",name:"GitHub Copilot",baseUrl:"https://api.individual.githubcopilot.com",auth:{apiKey:envApiKeyAuth("GitHub Copilot token",["COPILOT_GITHUB_TOKEN"]),oauth:lazyOAuth({name:"GitHub Copilot",isSubscription:!0,load:loadGitHubCopilotOAuth})},models:Object.values(GITHUB_COPILOT_MODELS),filterModels:(models,credential)=>{if(credential?.type!=="oauth")return models;let availableModelIds=credential.availableModelIds;if(!Array.isArray(availableModelIds)||!availableModelIds.every(id=>typeof id=="string"))return models;let available=new Set(availableModelIds);return models.filter(model=>available.has(model.id))},api:{"anthropic-messages":anthropicMessagesApi(),"openai-completions":openAICompletionsApi(),"openai-responses":openAIResponsesApi()}})}var init_github_copilot2=__esm({"packages/ai/dist/providers/github-copilot.js"(){init_anthropic_messages_lazy();init_openai_completions_lazy();init_openai_responses_lazy();init_helpers2();init_load();init_models();init_github_copilot_models()}});var require_retry_operation2=__commonJS({"node_modules/retry/lib/retry_operation.js"(exports,module){function RetryOperation(timeouts,options){typeof options=="boolean"&&(options={forever:options}),this._originalTimeouts=JSON.parse(JSON.stringify(timeouts)),this._timeouts=timeouts,this._options=options||{},this._maxRetryTime=options&&options.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._timer=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}module.exports=RetryOperation;RetryOperation.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts.slice(0)};RetryOperation.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timer&&clearTimeout(this._timer),this._timeouts=[],this._cachedTimeouts=null};RetryOperation.prototype.retry=function(err2){if(this._timeout&&clearTimeout(this._timeout),!err2)return!1;var currentTime=new Date().getTime();if(err2&&currentTime-this._operationStart>=this._maxRetryTime)return this._errors.push(err2),this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(err2);var timeout=this._timeouts.shift();if(timeout===void 0)if(this._cachedTimeouts)this._errors.splice(0,this._errors.length-1),timeout=this._cachedTimeouts.slice(-1);else return!1;var self2=this;return this._timer=setTimeout(function(){self2._attempts++,self2._operationTimeoutCb&&(self2._timeout=setTimeout(function(){self2._operationTimeoutCb(self2._attempts)},self2._operationTimeout),self2._options.unref&&self2._timeout.unref()),self2._fn(self2._attempts)},timeout),this._options.unref&&this._timer.unref(),!0};RetryOperation.prototype.attempt=function(fn,timeoutOps){this._fn=fn,timeoutOps&&(timeoutOps.timeout&&(this._operationTimeout=timeoutOps.timeout),timeoutOps.cb&&(this._operationTimeoutCb=timeoutOps.cb));var self2=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){self2._operationTimeoutCb()},self2._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};RetryOperation.prototype.try=function(fn){console.log("Using RetryOperation.try() is deprecated"),this.attempt(fn)};RetryOperation.prototype.start=function(fn){console.log("Using RetryOperation.start() is deprecated"),this.attempt(fn)};RetryOperation.prototype.start=RetryOperation.prototype.try;RetryOperation.prototype.errors=function(){return this._errors};RetryOperation.prototype.attempts=function(){return this._attempts};RetryOperation.prototype.mainError=function(){if(this._errors.length===0)return null;for(var counts={},mainError=null,mainErrorCount=0,i2=0;i2<this._errors.length;i2++){var error=this._errors[i2],message2=error.message,count=(counts[message2]||0)+1;counts[message2]=count,count>=mainErrorCount&&(mainError=error,mainErrorCount=count)}return mainError}}});var require_retry4=__commonJS({"node_modules/retry/lib/retry.js"(exports){var RetryOperation=require_retry_operation2();exports.operation=function(options){var timeouts=exports.timeouts(options);return new RetryOperation(timeouts,{forever:options&&(options.forever||options.retries===1/0),unref:options&&options.unref,maxRetryTime:options&&options.maxRetryTime})};exports.timeouts=function(options){if(options instanceof Array)return[].concat(options);var opts={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var key in options)opts[key]=options[key];if(opts.minTimeout>opts.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var timeouts=[],i2=0;i2<opts.retries;i2++)timeouts.push(this.createTimeout(i2,opts));return options&&options.forever&&!timeouts.length&&timeouts.push(this.createTimeout(i2,opts)),timeouts.sort(function(a,b2){return a-b2}),timeouts};exports.createTimeout=function(attempt2,opts){var random=opts.randomize?Math.random()+1:1,timeout=Math.round(random*Math.max(opts.minTimeout,1)*Math.pow(opts.factor,attempt2));return timeout=Math.min(timeout,opts.maxTimeout),timeout};exports.wrap=function(obj,options,methods){if(options instanceof Array&&(methods=options,options=null),!methods){methods=[];for(var key in obj)typeof obj[key]=="function"&&methods.push(key)}for(var i2=0;i2<methods.length;i2++){var method=methods[i2],original=obj[method];obj[method]=function(original2){var op=exports.operation(options),args2=Array.prototype.slice.call(arguments,1),callback=args2.pop();args2.push(function(err2){op.retry(err2)||(err2&&(arguments[0]=op.mainError()),callback.apply(this,arguments))}),op.attempt(function(){original2.apply(obj,args2)})}.bind(obj,original),obj[method].options=options}}}});var require_retry5=__commonJS({"node_modules/retry/index.js"(exports,module){module.exports=require_retry4()}});var require_p_retry=__commonJS({"node_modules/p-retry/index.js"(exports,module){"use strict";var retry2=require_retry5(),networkErrorMsgs=["Failed to fetch","NetworkError when attempting to fetch resource.","The Internet connection appears to be offline.","Network request failed"],AbortError2=class extends Error{constructor(message2){super(),message2 instanceof Error?(this.originalError=message2,{message:message2}=message2):(this.originalError=new Error(message2),this.originalError.stack=this.stack),this.name="AbortError",this.message=message2}},decorateErrorWithCounts=(error,attemptNumber,options)=>{let retriesLeft=options.retries-(attemptNumber-1);return error.attemptNumber=attemptNumber,error.retriesLeft=retriesLeft,error},isNetworkError=errorMessage9=>networkErrorMsgs.includes(errorMessage9),pRetry2=(input2,options)=>new Promise((resolve26,reject)=>{options={onFailedAttempt:()=>{},retries:10,...options};let operation=retry2.operation(options);operation.attempt(async attemptNumber=>{try{resolve26(await input2(attemptNumber))}catch(error){if(!(error instanceof Error)){reject(new TypeError(`Non-error was thrown: "${error}". You should only throw errors.`));return}if(error instanceof AbortError2)operation.stop(),reject(error.originalError);else if(error instanceof TypeError&&!isNetworkError(error.message))operation.stop(),reject(error);else{decorateErrorWithCounts(error,attemptNumber,options);try{await options.onFailedAttempt(error)}catch(error2){reject(error2);return}operation.retry(error)||reject(operation.mainError())}}})});module.exports=pRetry2;module.exports.default=pRetry2;module.exports.AbortError=AbortError2}});var require_extend=__commonJS({"node_modules/extend/index.js"(exports,module){"use strict";var hasOwn4=Object.prototype.hasOwnProperty,toStr=Object.prototype.toString,defineProperty=Object.defineProperty,gOPD=Object.getOwnPropertyDescriptor,isArray3=function(arr){return typeof Array.isArray=="function"?Array.isArray(arr):toStr.call(arr)==="[object Array]"},isPlainObject4=function(obj){if(!obj||toStr.call(obj)!=="[object Object]")return!1;var hasOwnConstructor=hasOwn4.call(obj,"constructor"),hasIsPrototypeOf=obj.constructor&&obj.constructor.prototype&&hasOwn4.call(obj.constructor.prototype,"isPrototypeOf");if(obj.constructor&&!hasOwnConstructor&&!hasIsPrototypeOf)return!1;var key;for(key in obj);return typeof key>"u"||hasOwn4.call(obj,key)},setProperty=function(target,options){defineProperty&&options.name==="__proto__"?defineProperty(target,options.name,{enumerable:!0,configurable:!0,value:options.newValue,writable:!0}):target[options.name]=options.newValue},getProperty=function(obj,name){if(name==="__proto__")if(hasOwn4.call(obj,name)){if(gOPD)return gOPD(obj,name).value}else return;return obj[name]};module.exports=function extend(){var options,name,src,copy,copyIsArray,clone2,target=arguments[0],i2=1,length=arguments.length,deep=!1;for(typeof target=="boolean"&&(deep=target,target=arguments[1]||{},i2=2),(target==null||typeof target!="object"&&typeof target!="function")&&(target={});i2<length;++i2)if(options=arguments[i2],options!=null)for(name in options)src=getProperty(target,name),copy=getProperty(options,name),target!==copy&&(deep&&copy&&(isPlainObject4(copy)||(copyIsArray=isArray3(copy)))?(copyIsArray?(copyIsArray=!1,clone2=src&&isArray3(src)?src:[]):clone2=src&&isPlainObject4(src)?src:{},setProperty(target,{name,newValue:extend(deep,clone2,copy)})):typeof copy<"u"&&setProperty(target,{name,newValue:copy}));return target}}});var require_package=__commonJS({"node_modules/gaxios/package.json"(exports,module){module.exports={name:"gaxios",version:"7.1.4",description:"A simple common HTTP client specifically for Google APIs and services.",main:"build/cjs/src/index.js",types:"build/cjs/src/index.d.ts",files:["build/"],exports:{".":{import:{types:"./build/esm/src/index.d.ts",default:"./build/esm/src/index.js"},require:{types:"./build/cjs/src/index.d.ts",default:"./build/cjs/src/index.js"}}},scripts:{lint:"gts check --no-inline-config",test:"c8 mocha build/esm/test","presystem-test":"npm run compile","system-test":"mocha build/esm/system-test --timeout 80000",compile:"tsc -b ./tsconfig.json ./tsconfig.cjs.json && node utils/enable-esm.mjs",fix:"gts fix",prepare:"npm run compile",pretest:"npm run compile",webpack:"webpack","prebrowser-test":"npm run compile","browser-test":"node build/browser-test/browser-test-runner.js",docs:"jsdoc -c .jsdoc.js","docs-test":"linkinator docs","predocs-test":"npm run docs","samples-test":"cd samples/ && npm link ../ && npm test && cd ../",prelint:"cd samples; npm link ../; npm install",clean:"gts clean"},repository:{type:"git",directory:"packages/gaxios",url:"https://github.com/googleapis/google-cloud-node-core.git"},keywords:["google"],engines:{node:">=18"},author:"Google, LLC",license:"Apache-2.0",devDependencies:{"@babel/plugin-proposal-private-methods":"^7.18.6","@types/cors":"^2.8.6","@types/express":"^5.0.0","@types/extend":"^3.0.1","@types/mocha":"^10.0.10","@types/multiparty":"4.2.1","@types/mv":"^2.1.0","@types/ncp":"^2.0.8","@types/node":"^22.13.1","@types/sinon":"^17.0.3","@types/tmp":"^0.2.6",assert:"^2.0.0",browserify:"^17.0.0",c8:"^10.1.3",cors:"^2.8.5",express:"^5.0.0",gts:"^6.0.2","is-docker":"^3.0.0",jsdoc:"^4.0.4","jsdoc-fresh":"^5.0.0","jsdoc-region-tag":"^4.0.0",karma:"^6.0.0","karma-chrome-launcher":"^3.0.0","karma-coverage":"^2.0.0","karma-firefox-launcher":"^2.0.0","karma-mocha":"^2.0.0","karma-remap-coverage":"^0.1.5","karma-sourcemap-loader":"^0.4.0","karma-webpack":"^5.0.1",linkinator:"^6.1.2",mocha:"^11.1.0",multiparty:"^4.2.1",mv:"^2.1.1",ncp:"^2.0.0",nock:"^14.0.5","null-loader":"^4.0.1","pack-n-play":"^4.0.0",puppeteer:"^24.0.0",sinon:"^21.0.0","stream-browserify":"^3.0.0",tmp:"0.2.5","ts-loader":"^9.5.2",typescript:"5.8.3",webpack:"^5.97.1","webpack-cli":"^6.0.1"},dependencies:{extend:"^3.0.2","https-proxy-agent":"^7.0.1","node-fetch":"^3.3.2"},homepage:"https://github.com/googleapis/google-cloud-node-core/tree/main/packages/gaxios"}}});var require_util7=__commonJS({"node_modules/gaxios/build/cjs/src/util.cjs"(exports,module){"use strict";var pkg2=require_package();module.exports={pkg:pkg2}}});var require_common=__commonJS({"node_modules/gaxios/build/cjs/src/common.js"(exports){"use strict";var __importDefault=exports&&exports.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});exports.GaxiosError=exports.GAXIOS_ERROR_SYMBOL=void 0;exports.defaultErrorRedactor=defaultErrorRedactor;var extend_1=__importDefault(require_extend()),util_cjs_1=__importDefault(require_util7()),pkg2=util_cjs_1.default.pkg;exports.GAXIOS_ERROR_SYMBOL=Symbol.for(`${pkg2.name}-gaxios-error`);var GaxiosError=class _GaxiosError extends Error{config;response;code;status;error;[exports.GAXIOS_ERROR_SYMBOL]=pkg2.version;static[Symbol.hasInstance](instance){return instance&&typeof instance=="object"&&exports.GAXIOS_ERROR_SYMBOL in instance&&instance[exports.GAXIOS_ERROR_SYMBOL]===pkg2.version?!0:Function.prototype[Symbol.hasInstance].call(_GaxiosError,instance)}constructor(message2,config,response,cause){if(super(message2,{cause}),this.config=config,this.response=response,this.error=cause instanceof Error?cause:void 0,this.config=(0,extend_1.default)(!0,{},config),this.response&&(this.response.config=(0,extend_1.default)(!0,{},this.response.config)),this.response){try{this.response.data=translateData(this.config.responseType,this.response?.bodyUsed?this.response?.data:void 0)}catch{}this.status=this.response.status}cause instanceof DOMException?this.code=cause.name:cause&&typeof cause=="object"&&"code"in cause&&(typeof cause.code=="string"||typeof cause.code=="number")&&(this.code=cause.code)}static extractAPIErrorFromResponse(res,defaultErrorMessage="The request failed"){let message2=defaultErrorMessage;if(typeof res.data=="string"&&(message2=res.data),res.data&&typeof res.data=="object"&&"error"in res.data&&res.data.error&&!res.ok){if(typeof res.data.error=="string")return{message:res.data.error,code:res.status,status:res.statusText};if(typeof res.data.error=="object"){message2="message"in res.data.error&&typeof res.data.error.message=="string"?res.data.error.message:message2;let status="status"in res.data.error&&typeof res.data.error.status=="string"?res.data.error.status:res.statusText,code="code"in res.data.error&&typeof res.data.error.code=="number"?res.data.error.code:res.status;if("errors"in res.data.error&&Array.isArray(res.data.error.errors)){let errorMessages=[];for(let e2 of res.data.error.errors)typeof e2=="object"&&"message"in e2&&typeof e2.message=="string"&&errorMessages.push(e2.message);return Object.assign({message:errorMessages.join(`
573
+ Check your ChatGPT usage: ${CHATGPT_USAGE_URL}`:errorMessage9,stream12.push({type:"error",reason:output.stopReason,error:output}),stream12.end()}})(),stream12},streamSimple4=(model,context,options)=>{getClientApiKey2(model.provider,options?.apiKey,options?.headers);let base={...buildBaseOptions(model,context,options,options?.apiKey),toolChoice:options?.toolChoice},clampedReasoning=options?.reasoning?clampThinkingLevel(model,options.reasoning):void 0;return stream5(model,context,{...base,reasoningEffort:clampedReasoning==="off"?void 0:clampedReasoning})}}});var openAIResponsesApi,init_openai_responses_lazy=__esm({"packages/ai/dist/api/openai-responses.lazy.js"(){init_lazy();openAIResponsesApi=()=>lazyApi(()=>Promise.resolve().then(()=>(init_openai_responses(),openai_responses_exports)))}});async function resolveValue(name,ctx,credential,signal){let fromCredential=credential?name===CLOUDFLARE_API_KEY?credential.key:credential.env?.[name]:void 0;if(fromCredential!==void 0)return fromCredential;signal.throwIfAborted();let value=await ctx.env(name);return signal.throwIfAborted(),value}async function resolveCloudflareEnv(kind,ctx,credential,signal){let apiKey=await resolveValue(CLOUDFLARE_API_KEY,ctx,credential,signal),accountId=await resolveValue(CLOUDFLARE_ACCOUNT_ID,ctx,credential,signal),gatewayId=kind==="ai-gateway"?await resolveValue(CLOUDFLARE_GATEWAY_ID,ctx,credential,signal):void 0;if(!(!apiKey||!accountId||kind==="ai-gateway"&&!gatewayId))return{apiKey,env:{CLOUDFLARE_ACCOUNT_ID:accountId,...gatewayId?{CLOUDFLARE_GATEWAY_ID:gatewayId}:{}},source:credential?"stored credential":CLOUDFLARE_API_KEY}}function cloudflareWorkersAIAuth(){return{name:"Cloudflare API key",login:async interaction=>{let key=await interaction.prompt({type:"secret",message:"Enter Cloudflare API key"}),accountId=await interaction.prompt({type:"text",message:"Enter Cloudflare account ID"});return{type:"api_key",key,env:{CLOUDFLARE_ACCOUNT_ID:accountId}}},resolve:async({ctx,credential,signal})=>{let resolved=await resolveCloudflareEnv("workers-ai",ctx,credential,signal);if(resolved)return{auth:{apiKey:resolved.apiKey},env:resolved.env,source:resolved.source}}}}function cloudflareAIGatewayAuth(){return{name:"Cloudflare API key",login:async interaction=>{let key=await interaction.prompt({type:"secret",message:"Enter Cloudflare API key"}),accountId=await interaction.prompt({type:"text",message:"Enter Cloudflare account ID"}),gatewayId=await interaction.prompt({type:"text",message:"Enter Cloudflare AI Gateway ID"});return{type:"api_key",key,env:{CLOUDFLARE_ACCOUNT_ID:accountId,CLOUDFLARE_GATEWAY_ID:gatewayId}}},resolve:async({ctx,credential,signal})=>{let resolved=await resolveCloudflareEnv("ai-gateway",ctx,credential,signal);if(resolved)return{auth:{headers:{"cf-aig-authorization":`Bearer ${resolved.apiKey}`,Authorization:null,"x-api-key":null}},env:resolved.env,source:resolved.source}}}}var CLOUDFLARE_API_KEY,CLOUDFLARE_ACCOUNT_ID,CLOUDFLARE_GATEWAY_ID,init_cloudflare_auth=__esm({"packages/ai/dist/providers/cloudflare-auth.js"(){CLOUDFLARE_API_KEY="CLOUDFLARE_API_KEY",CLOUDFLARE_ACCOUNT_ID="CLOUDFLARE_ACCOUNT_ID",CLOUDFLARE_GATEWAY_ID="CLOUDFLARE_GATEWAY_ID"}});function resolveCloudflareModel(model,env3){if(!env3)return model;let baseUrl=model.baseUrl.replaceAll(`{${CLOUDFLARE_ACCOUNT_ID2}}`,env3[CLOUDFLARE_ACCOUNT_ID2]??`{${CLOUDFLARE_ACCOUNT_ID2}}`).replaceAll(`{${CLOUDFLARE_GATEWAY_ID2}}`,env3[CLOUDFLARE_GATEWAY_ID2]??`{${CLOUDFLARE_GATEWAY_ID2}}`);return baseUrl===model.baseUrl?model:{...model,baseUrl}}function cloudflareStreams(streams){return{stream:(model,context,options)=>streams.stream(resolveCloudflareModel(model,options?.env),context,options),streamSimple:(model,context,options)=>streams.streamSimple(resolveCloudflareModel(model,options?.env),context,options)}}function cloudflareClassifier(classifier){return{classify:(model,context,options)=>classifier.classify(resolveCloudflareModel(model,options?.env),context,options)}}var CLOUDFLARE_ACCOUNT_ID2,CLOUDFLARE_GATEWAY_ID2,init_cloudflare_stream=__esm({"packages/ai/dist/providers/cloudflare-stream.js"(){CLOUDFLARE_ACCOUNT_ID2="CLOUDFLARE_ACCOUNT_ID",CLOUDFLARE_GATEWAY_ID2="CLOUDFLARE_GATEWAY_ID"}});function cloudflareAIGatewayProvider(){return createProvider({id:"cloudflare-ai-gateway",name:"Cloudflare AI Gateway",auth:{apiKey:cloudflareAIGatewayAuth()},models:Object.values(CLOUDFLARE_AI_GATEWAY_MODELS),api:{"anthropic-messages":cloudflareStreams(anthropicMessagesApi()),"openai-completions":cloudflareStreams(openAICompletionsApi()),"openai-responses":cloudflareStreams(openAIResponsesApi())}})}var init_cloudflare_ai_gateway2=__esm({"packages/ai/dist/providers/cloudflare-ai-gateway.js"(){init_anthropic_messages_lazy();init_openai_completions_lazy();init_openai_responses_lazy();init_models();init_cloudflare_ai_gateway_models();init_cloudflare_auth();init_cloudflare_stream()}});function httpError(label,response,body){let error=new Error(`${label} returned ${response.status}`);return error.status=response.status,error.headers=response.headers,error.body=body,error}function timeoutError(timeoutMs){let error=new Error(`Request timed out after ${timeoutMs}ms`);return error.name="TimeoutError",error.status=void 0,error.headers=void 0,error.body="",error}function isRecord(value){return typeof value=="object"&&value!==null&&!Array.isArray(value)}function requiredNumber(label,value,field2){if(typeof value!="number"||!Number.isFinite(value))throw new Error(`${label} returned an invalid ${field2}`);return value}function probabilities(label,value,id){if(!isRecord(value))throw new Error(`${label} returned invalid probabilities for ${id}`);return Object.fromEntries(Object.entries(value).map(([key,probability])=>[key,requiredNumber(label,probability,`probability for ${id}.${key}`)]))}function parseAnswers(label,value,context){if(!isRecord(value))throw new Error(`${label} returned an unexpected response`);let answers=[];for(let[id,question]of Object.entries(context.questions)){let answer2=value[id];if(!isRecord(answer2))throw new Error(`${label} did not return an answer for ${id}`);if(question.type==="choice"){if(answer2.type!=="choice"||typeof answer2.choice!="string")throw new Error(`${label} did not return a choice answer for ${id}`);answers.push([id,{type:"choice",choice:answer2.choice,probabilities:probabilities(label,answer2.probabilities,id),confidence:requiredNumber(label,answer2.confidence,`confidence for ${id}`)}])}else if(question.type==="score"){if(answer2.type!=="score")throw new Error(`${label} did not return a score answer for ${id}`);answers.push([id,{type:"score",score:requiredNumber(label,answer2.score,`score for ${id}`),confidence:requiredNumber(label,answer2.confidence,`confidence for ${id}`)}])}else{if(answer2.type!=="noul")throw new Error(`${label} did not return a bool answer for ${id}`);answers.push([id,{type:"bool",probability:requiredNumber(label,answer2.noul,`probability for ${id}`)}])}}return Object.fromEntries(answers)}function tokenCount(value){return typeof value=="number"&&Number.isFinite(value)&&value>0?value:0}function parseUsage(value,model){if(!isRecord(value)||value.input_tokens===void 0&&value.output_tokens===void 0)return;let input2=tokenCount(value.input_tokens),output=tokenCount(value.output_tokens),usage={input:input2,output,cacheRead:0,cacheWrite:0,totalTokens:input2+output,cost:{input:0,output:0,cacheRead:0,cacheWrite:0,total:0}};return calculateCost(model,usage),usage}function wireRequest(context){return{state:context.state,questions:Object.fromEntries(Object.entries(context.questions).map(([id,question])=>[id,question.type==="bool"?{...question,type:"noul"}:question]))}}function requestHeaders(model,apiKey,optionsHeaders){return providerHeadersToRecord({authorization:`Bearer ${apiKey}`,"content-type":"application/json"},model.headers,optionsHeaders)??{}}async function classifySystemOne(transport3,model,context,options){let output={api:model.api,provider:model.provider,model:model.id,answers:{},stopReason:"stop",timestamp:Date.now()};try{if(model.api!==transport3.api)throw new Error(`Unsupported classifier API: ${model.api}`);if(!options?.apiKey)throw new Error(`No API key for provider: ${model.provider}`);let apiKey=options.apiKey,payload=transport3.payload(model,wireRequest(context)),transformed=await options.onPayload?.(payload,model);transformed!==void 0&&(payload=transformed);let requestFetch=options.fetch??globalThis.fetch,{response,body}=await retryProviderRequest(async()=>{let timeoutSignal=options.timeoutMs!==void 0?AbortSignal.timeout(options.timeoutMs):void 0,signal=options.signal&&timeoutSignal?AbortSignal.any([options.signal,timeoutSignal]):options.signal??timeoutSignal;try{let next=await requestFetch(transport3.url(model),{method:"POST",headers:requestHeaders(model,apiKey,options.headers),body:JSON.stringify(payload),signal});if(!next.ok)throw httpError(transport3.label,next,await next.text());return{response:next,body:await next.json()}}catch(error){throw timeoutSignal?.aborted&&!options.signal?.aborted?timeoutError(options.timeoutMs):error}},{maxRetries:options.maxRetries??2,maxRetryDelayMs:options.maxRetryDelayMs,signal:options.signal});await options.onResponse?.({status:response.status,headers:headersToRecord(response.headers)},model);let result=transport3.output(body),usage=parseUsage(result.usage,model);return usage&&(output.usage=usage),output.answers=parseAnswers(transport3.label,result.answers,context),output}catch(error){return output.stopReason=options?.signal?.aborted?"aborted":"error",output.errorMessage=formatProviderError(normalizeProviderError(error),`${transport3.label} error`),output}}var init_system_one_shared=__esm({"packages/ai/dist/api/system-one-shared.js"(){init_models();init_error_body();init_headers2();init_provider_retry()}});var cloudflare_workers_ai_system_one_exports={};__export(cloudflare_workers_ai_system_one_exports,{classify:()=>classify});function cloudflareErrorMessage(errors){if(Array.isArray(errors)){let messages=errors.map(error=>isRecord(error)&&typeof error.message=="string"?error.message:void 0).filter(message2=>message2!==void 0);if(messages.length>0)return`${LABEL} error: ${messages.join("; ")}`}return`${LABEL} request failed`}var LABEL,transport,classify,init_cloudflare_workers_ai_system_one=__esm({"packages/ai/dist/api/cloudflare-workers-ai-system-one.js"(){init_system_one_shared();LABEL="Cloudflare Workers AI";transport={api:"cloudflare-workers-ai-system-one",label:LABEL,url:model=>new URL("run",`${model.baseUrl.replace(/\/+$/u,"")}/`),payload:(model,request)=>({model:model.id,input:request}),output:body=>{if(!isRecord(body))throw new Error(`${LABEL} returned an unexpected response`);if(body.success===!1)throw new Error(cloudflareErrorMessage(body.errors));let result=body.result;if(!isRecord(result))throw new Error(`${LABEL} returned an unexpected response`);if("answers"in result)return result;if(result.state!=="Completed")throw new Error(`${LABEL} run did not complete (state: ${String(result.state)})`);if(!isRecord(result.result))throw new Error(`${LABEL} returned an unexpected response`);return result.result}},classify=(model,context,options)=>classifySystemOne(transport,model,context,options)}});var cloudflareWorkersAISystemOneApi,init_cloudflare_workers_ai_system_one_lazy=__esm({"packages/ai/dist/api/cloudflare-workers-ai-system-one.lazy.js"(){cloudflareWorkersAISystemOneApi=()=>({classify:async(model,context,options)=>(await Promise.resolve().then(()=>(init_cloudflare_workers_ai_system_one(),cloudflare_workers_ai_system_one_exports))).classify(model,context,options)})}});function cloudflareWorkersAIProvider(){return createProvider({id:"cloudflare-workers-ai",name:"Cloudflare Workers AI",auth:{apiKey:cloudflareWorkersAIAuth()},models:[...Object.values(CLOUDFLARE_WORKERS_AI_MODELS),...Object.values(CLOUDFLARE_WORKERS_AI_CLASSIFIER_MODELS)],api:cloudflareStreams(openAICompletionsApi()),classifiers:{"cloudflare-workers-ai-system-one":cloudflareClassifier(cloudflareWorkersAISystemOneApi())}})}var init_cloudflare_workers_ai2=__esm({"packages/ai/dist/providers/cloudflare-workers-ai.js"(){init_cloudflare_workers_ai_system_one_lazy();init_openai_completions_lazy();init_models();init_cloudflare_auth();init_cloudflare_stream();init_cloudflare_workers_ai_models()}});var manifest_default,init_manifest=__esm({"packages/ai/dist/providers/data/.manifest.json"(){manifest_default={schemaVersion:6,generatedAt:"2026-10-04T13:34:40.515Z",structureHash:"c36423c1e750caaf9b45181ba43b7cdaafb7148cd795700a0362e6706d4b0716",files:{"amazon-bedrock.json":"a0256dd49b0b7f4fee8a2853aeaecc65e74f643e96348c5be55d2d912b82c6ce","ant-ling.json":"628feab3ef6c7d80ce96f75999804e1d9f05fec3851e5302e30fff3b69db90f6","anthropic.json":"3ff00b68990382e42626ebd1b65dcc28ae3cad9e6faa8920331ba92f067f1b3a","azure-openai-responses.json":"adeb2cf9d944d84f81b0d633c2e4e6bfa548a806c431902bd037c5f36500be21","baseten.json":"b04d1423d6958bec857ffccc36726f091ec1a8f3a09cf0836b64cc94b0ee697d","cerebras.json":"3eccb58c5de3d0dc7ba49dc6e477ba29f00cb3150ce0a35cc90d59e6b5ab368e","cloudflare-ai-gateway.json":"9030456decc3f3edacc3388165ab87cb3db0360f6b191f4a12e063f5c9464332","cloudflare-workers-ai.json":"d04336a61cacfd0cadbc2f3d30cd3b552e3d153e5a320658a31ba1bab8f01c83","deepseek.json":"10a296fb3e898f7715c80890c8af0af4f5fd58f22dbcd6612fdc5d762157ccdc","fireworks.json":"8db3c11f65a5d76260d5040a5dc5a9ef0f35b92de8505a30907c2355c2837b36","github-copilot.json":"573f05c2dfc0c8158e252dd286d6b174cd323f965284d7ae157439d8e3dea92c","google-vertex.json":"40090c680538bc867f2624d986a449f361be4dfa6ba96d7a27402050f036e009","google.json":"c0f5a633e5e5a5044432db3e537f4bc674d4de18df09325c6349547fcc13cabe","groq.json":"910952ad9dad07856983459d63fce0148dba1203edd7b10d801a77c5824f3405","huggingface.json":"1b8604bd31a5e05fe43a40ec1ec6dfc1a51a28b0b020151ef057fab43f57c923","kimi-coding.json":"582250b920454d98940da3e7e99d30b807edbea28f2eb8ac15f658d2ef41e8fc","meta.json":"0c7e9a370a7005c5a89dc94f0f93bc67b8935c3f802de324f11af6ff56fff429","minimax-cn.json":"f962c20ee6a6a342820f778e9dc363a18a524bf11998f6e2c57f2989915d62e5","minimax.json":"17a432f80d0ea6dd26eade80a4314250d3a855678601728a5f70dd8fa0d21dd2","mistral.json":"10f33bff9adf1248f7e6848e5890c265399f1f94e5b42cfdc28c109d547af98d","moonshotai-cn.json":"79c9585dc84ee525ebaebbc78b3c55f3d369ec884d4f943488f1e0b14e3587f5","moonshotai.json":"1da2c4e34f22aef17a07c974d85bdee8e1b68b6dc712e3769c935b3f1e7dadca","nvidia.json":"a75e963dc81779e3eec01c051b12277c15ec37c5b94ab51ece9e9ccb3b16407c","openai-codex.json":"3cc35a7e122e5c77ee8ec30a9a3bd8bd59629997e85ba2cb3f9e0ed62e9a09c0","openai.json":"87faafcdd168c9b6fdaef521137834a207437daf0d71641fd0a2f3dddf4d1ecb","opencode-go.json":"542a62ae86ec34d55b2927927a3fe007a54aab2729026e578d7ede1bab51e532","opencode.json":"7cf6c2e34b4defd50135572da48030402d33101bcb8c43c7612841e5b3afcd43","openrouter.json":"012139cfb2bb87cae1ddc076182d76b4baf995a5cbb17ad948f5593f16b6ca59","qwen-token-plan-cn.json":"2469a4091c474ec3db0a49a9962d8d2726c074ad9065b96bc4e0c87861c4c6c5","qwen-token-plan-individual.json":"0fb7cf64faf39d1a3b0a884210a86c87084b805eda15644f5f39293287b959dd","qwen-token-plan.json":"eff10620cb577142de4ec02698d5961a71fda2fe4f6ae7ea9432bad9d6844176","radius.json":"88a3f060a851882df89015bcd346e03238b4b0725bd72c8ad501fcffff782768","together.json":"52293df62191c8e799ae3632f8ab1b3f52ee626aee0280677086627b32864bf7","typesafe.json":"a4429a2f696d5cc5273969af61a7310bda07d6bdcd27bf9ac9c76c534cc43716","vercel-ai-gateway.json":"436f085bd5d972959f0b2b66e82f2af55843c8a40a70417328911cb1a5f32997","xai.json":"879c49b78b663a52a220ac4ee013e726b10c4f50aaa03bc58ee53a4b54c76928","xiaomi-token-plan-ams.json":"ca65178f4525d9705bc8d085ed136cecbe149c4080e857ea6a64ae643d2ac00a","xiaomi-token-plan-cn.json":"b065326926681c2262084e59c1c19ebdaf146c07107b5242c76b456becf74db0","xiaomi-token-plan-sgp.json":"92c3d6d707f81fd9cd2b6d1fb57dc431d90ba51e10fe49d97bc8806035c23492","xiaomi.json":"b81d01a374f7b558728c78d81f4168efa9c8996e6e2b5618409a8094b083c759","zai-coding-cn.json":"ee5ee705fb6e413a6088db5e3616c27fce802a8ece6c355f1db35490d787f610","zai.json":"58e6642fdfb736f0b9a4a277c760c536a3cea66a030abbfb2615f7b2851d5c6f"}}}});function deepseekProvider(){return createProvider({id:"deepseek",name:"DeepSeek",baseUrl:"https://api.deepseek.com",auth:{apiKey:envApiKeyAuth("DeepSeek API key",["DEEPSEEK_API_KEY"])},models:Object.values(DEEPSEEK_MODELS),api:openAICompletionsApi()})}var init_deepseek2=__esm({"packages/ai/dist/providers/deepseek.js"(){init_openai_completions_lazy();init_helpers2();init_models();init_deepseek_models()}});function fireworksProvider(){return createProvider({id:"fireworks",name:"Fireworks",baseUrl:"https://api.fireworks.ai/inference",auth:{apiKey:envApiKeyAuth("Fireworks API key",["FIREWORKS_API_KEY"])},models:Object.values(FIREWORKS_MODELS),api:{"anthropic-messages":anthropicMessagesApi(),"openai-completions":openAICompletionsApi()}})}var init_fireworks2=__esm({"packages/ai/dist/providers/fireworks.js"(){init_anthropic_messages_lazy();init_openai_completions_lazy();init_helpers2();init_models();init_fireworks_models()}});function githubCopilotProvider(){return createProvider({id:"github-copilot",name:"GitHub Copilot",baseUrl:"https://api.individual.githubcopilot.com",auth:{apiKey:envApiKeyAuth("GitHub Copilot token",["COPILOT_GITHUB_TOKEN"]),oauth:lazyOAuth({name:"GitHub Copilot",isSubscription:!0,load:loadGitHubCopilotOAuth})},models:Object.values(GITHUB_COPILOT_MODELS),filterModels:(models,credential)=>{if(credential?.type!=="oauth")return models;let availableModelIds=credential.availableModelIds;if(!Array.isArray(availableModelIds)||!availableModelIds.every(id=>typeof id=="string"))return models;let available=new Set(availableModelIds);return models.filter(model=>available.has(model.id))},api:{"anthropic-messages":anthropicMessagesApi(),"openai-completions":openAICompletionsApi(),"openai-responses":openAIResponsesApi()}})}var init_github_copilot2=__esm({"packages/ai/dist/providers/github-copilot.js"(){init_anthropic_messages_lazy();init_openai_completions_lazy();init_openai_responses_lazy();init_helpers2();init_load();init_models();init_github_copilot_models()}});var require_retry_operation2=__commonJS({"node_modules/retry/lib/retry_operation.js"(exports,module){function RetryOperation(timeouts,options){typeof options=="boolean"&&(options={forever:options}),this._originalTimeouts=JSON.parse(JSON.stringify(timeouts)),this._timeouts=timeouts,this._options=options||{},this._maxRetryTime=options&&options.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._timer=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}module.exports=RetryOperation;RetryOperation.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts.slice(0)};RetryOperation.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timer&&clearTimeout(this._timer),this._timeouts=[],this._cachedTimeouts=null};RetryOperation.prototype.retry=function(err2){if(this._timeout&&clearTimeout(this._timeout),!err2)return!1;var currentTime=new Date().getTime();if(err2&&currentTime-this._operationStart>=this._maxRetryTime)return this._errors.push(err2),this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(err2);var timeout=this._timeouts.shift();if(timeout===void 0)if(this._cachedTimeouts)this._errors.splice(0,this._errors.length-1),timeout=this._cachedTimeouts.slice(-1);else return!1;var self2=this;return this._timer=setTimeout(function(){self2._attempts++,self2._operationTimeoutCb&&(self2._timeout=setTimeout(function(){self2._operationTimeoutCb(self2._attempts)},self2._operationTimeout),self2._options.unref&&self2._timeout.unref()),self2._fn(self2._attempts)},timeout),this._options.unref&&this._timer.unref(),!0};RetryOperation.prototype.attempt=function(fn,timeoutOps){this._fn=fn,timeoutOps&&(timeoutOps.timeout&&(this._operationTimeout=timeoutOps.timeout),timeoutOps.cb&&(this._operationTimeoutCb=timeoutOps.cb));var self2=this;this._operationTimeoutCb&&(this._timeout=setTimeout(function(){self2._operationTimeoutCb()},self2._operationTimeout)),this._operationStart=new Date().getTime(),this._fn(this._attempts)};RetryOperation.prototype.try=function(fn){console.log("Using RetryOperation.try() is deprecated"),this.attempt(fn)};RetryOperation.prototype.start=function(fn){console.log("Using RetryOperation.start() is deprecated"),this.attempt(fn)};RetryOperation.prototype.start=RetryOperation.prototype.try;RetryOperation.prototype.errors=function(){return this._errors};RetryOperation.prototype.attempts=function(){return this._attempts};RetryOperation.prototype.mainError=function(){if(this._errors.length===0)return null;for(var counts={},mainError=null,mainErrorCount=0,i2=0;i2<this._errors.length;i2++){var error=this._errors[i2],message2=error.message,count=(counts[message2]||0)+1;counts[message2]=count,count>=mainErrorCount&&(mainError=error,mainErrorCount=count)}return mainError}}});var require_retry4=__commonJS({"node_modules/retry/lib/retry.js"(exports){var RetryOperation=require_retry_operation2();exports.operation=function(options){var timeouts=exports.timeouts(options);return new RetryOperation(timeouts,{forever:options&&(options.forever||options.retries===1/0),unref:options&&options.unref,maxRetryTime:options&&options.maxRetryTime})};exports.timeouts=function(options){if(options instanceof Array)return[].concat(options);var opts={retries:10,factor:2,minTimeout:1*1e3,maxTimeout:1/0,randomize:!1};for(var key in options)opts[key]=options[key];if(opts.minTimeout>opts.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var timeouts=[],i2=0;i2<opts.retries;i2++)timeouts.push(this.createTimeout(i2,opts));return options&&options.forever&&!timeouts.length&&timeouts.push(this.createTimeout(i2,opts)),timeouts.sort(function(a,b2){return a-b2}),timeouts};exports.createTimeout=function(attempt2,opts){var random=opts.randomize?Math.random()+1:1,timeout=Math.round(random*Math.max(opts.minTimeout,1)*Math.pow(opts.factor,attempt2));return timeout=Math.min(timeout,opts.maxTimeout),timeout};exports.wrap=function(obj,options,methods){if(options instanceof Array&&(methods=options,options=null),!methods){methods=[];for(var key in obj)typeof obj[key]=="function"&&methods.push(key)}for(var i2=0;i2<methods.length;i2++){var method=methods[i2],original=obj[method];obj[method]=function(original2){var op=exports.operation(options),args2=Array.prototype.slice.call(arguments,1),callback=args2.pop();args2.push(function(err2){op.retry(err2)||(err2&&(arguments[0]=op.mainError()),callback.apply(this,arguments))}),op.attempt(function(){original2.apply(obj,args2)})}.bind(obj,original),obj[method].options=options}}}});var require_retry5=__commonJS({"node_modules/retry/index.js"(exports,module){module.exports=require_retry4()}});var require_p_retry=__commonJS({"node_modules/p-retry/index.js"(exports,module){"use strict";var retry2=require_retry5(),networkErrorMsgs=["Failed to fetch","NetworkError when attempting to fetch resource.","The Internet connection appears to be offline.","Network request failed"],AbortError2=class extends Error{constructor(message2){super(),message2 instanceof Error?(this.originalError=message2,{message:message2}=message2):(this.originalError=new Error(message2),this.originalError.stack=this.stack),this.name="AbortError",this.message=message2}},decorateErrorWithCounts=(error,attemptNumber,options)=>{let retriesLeft=options.retries-(attemptNumber-1);return error.attemptNumber=attemptNumber,error.retriesLeft=retriesLeft,error},isNetworkError=errorMessage9=>networkErrorMsgs.includes(errorMessage9),pRetry2=(input2,options)=>new Promise((resolve26,reject)=>{options={onFailedAttempt:()=>{},retries:10,...options};let operation=retry2.operation(options);operation.attempt(async attemptNumber=>{try{resolve26(await input2(attemptNumber))}catch(error){if(!(error instanceof Error)){reject(new TypeError(`Non-error was thrown: "${error}". You should only throw errors.`));return}if(error instanceof AbortError2)operation.stop(),reject(error.originalError);else if(error instanceof TypeError&&!isNetworkError(error.message))operation.stop(),reject(error);else{decorateErrorWithCounts(error,attemptNumber,options);try{await options.onFailedAttempt(error)}catch(error2){reject(error2);return}operation.retry(error)||reject(operation.mainError())}}})});module.exports=pRetry2;module.exports.default=pRetry2;module.exports.AbortError=AbortError2}});var require_extend=__commonJS({"node_modules/extend/index.js"(exports,module){"use strict";var hasOwn4=Object.prototype.hasOwnProperty,toStr=Object.prototype.toString,defineProperty=Object.defineProperty,gOPD=Object.getOwnPropertyDescriptor,isArray3=function(arr){return typeof Array.isArray=="function"?Array.isArray(arr):toStr.call(arr)==="[object Array]"},isPlainObject4=function(obj){if(!obj||toStr.call(obj)!=="[object Object]")return!1;var hasOwnConstructor=hasOwn4.call(obj,"constructor"),hasIsPrototypeOf=obj.constructor&&obj.constructor.prototype&&hasOwn4.call(obj.constructor.prototype,"isPrototypeOf");if(obj.constructor&&!hasOwnConstructor&&!hasIsPrototypeOf)return!1;var key;for(key in obj);return typeof key>"u"||hasOwn4.call(obj,key)},setProperty=function(target,options){defineProperty&&options.name==="__proto__"?defineProperty(target,options.name,{enumerable:!0,configurable:!0,value:options.newValue,writable:!0}):target[options.name]=options.newValue},getProperty=function(obj,name){if(name==="__proto__")if(hasOwn4.call(obj,name)){if(gOPD)return gOPD(obj,name).value}else return;return obj[name]};module.exports=function extend(){var options,name,src,copy,copyIsArray,clone2,target=arguments[0],i2=1,length=arguments.length,deep=!1;for(typeof target=="boolean"&&(deep=target,target=arguments[1]||{},i2=2),(target==null||typeof target!="object"&&typeof target!="function")&&(target={});i2<length;++i2)if(options=arguments[i2],options!=null)for(name in options)src=getProperty(target,name),copy=getProperty(options,name),target!==copy&&(deep&&copy&&(isPlainObject4(copy)||(copyIsArray=isArray3(copy)))?(copyIsArray?(copyIsArray=!1,clone2=src&&isArray3(src)?src:[]):clone2=src&&isPlainObject4(src)?src:{},setProperty(target,{name,newValue:extend(deep,clone2,copy)})):typeof copy<"u"&&setProperty(target,{name,newValue:copy}));return target}}});var require_package=__commonJS({"node_modules/gaxios/package.json"(exports,module){module.exports={name:"gaxios",version:"7.1.4",description:"A simple common HTTP client specifically for Google APIs and services.",main:"build/cjs/src/index.js",types:"build/cjs/src/index.d.ts",files:["build/"],exports:{".":{import:{types:"./build/esm/src/index.d.ts",default:"./build/esm/src/index.js"},require:{types:"./build/cjs/src/index.d.ts",default:"./build/cjs/src/index.js"}}},scripts:{lint:"gts check --no-inline-config",test:"c8 mocha build/esm/test","presystem-test":"npm run compile","system-test":"mocha build/esm/system-test --timeout 80000",compile:"tsc -b ./tsconfig.json ./tsconfig.cjs.json && node utils/enable-esm.mjs",fix:"gts fix",prepare:"npm run compile",pretest:"npm run compile",webpack:"webpack","prebrowser-test":"npm run compile","browser-test":"node build/browser-test/browser-test-runner.js",docs:"jsdoc -c .jsdoc.js","docs-test":"linkinator docs","predocs-test":"npm run docs","samples-test":"cd samples/ && npm link ../ && npm test && cd ../",prelint:"cd samples; npm link ../; npm install",clean:"gts clean"},repository:{type:"git",directory:"packages/gaxios",url:"https://github.com/googleapis/google-cloud-node-core.git"},keywords:["google"],engines:{node:">=18"},author:"Google, LLC",license:"Apache-2.0",devDependencies:{"@babel/plugin-proposal-private-methods":"^7.18.6","@types/cors":"^2.8.6","@types/express":"^5.0.0","@types/extend":"^3.0.1","@types/mocha":"^10.0.10","@types/multiparty":"4.2.1","@types/mv":"^2.1.0","@types/ncp":"^2.0.8","@types/node":"^22.13.1","@types/sinon":"^17.0.3","@types/tmp":"^0.2.6",assert:"^2.0.0",browserify:"^17.0.0",c8:"^10.1.3",cors:"^2.8.5",express:"^5.0.0",gts:"^6.0.2","is-docker":"^3.0.0",jsdoc:"^4.0.4","jsdoc-fresh":"^5.0.0","jsdoc-region-tag":"^4.0.0",karma:"^6.0.0","karma-chrome-launcher":"^3.0.0","karma-coverage":"^2.0.0","karma-firefox-launcher":"^2.0.0","karma-mocha":"^2.0.0","karma-remap-coverage":"^0.1.5","karma-sourcemap-loader":"^0.4.0","karma-webpack":"^5.0.1",linkinator:"^6.1.2",mocha:"^11.1.0",multiparty:"^4.2.1",mv:"^2.1.1",ncp:"^2.0.0",nock:"^14.0.5","null-loader":"^4.0.1","pack-n-play":"^4.0.0",puppeteer:"^24.0.0",sinon:"^21.0.0","stream-browserify":"^3.0.0",tmp:"0.2.5","ts-loader":"^9.5.2",typescript:"5.8.3",webpack:"^5.97.1","webpack-cli":"^6.0.1"},dependencies:{extend:"^3.0.2","https-proxy-agent":"^7.0.1","node-fetch":"^3.3.2"},homepage:"https://github.com/googleapis/google-cloud-node-core/tree/main/packages/gaxios"}}});var require_util7=__commonJS({"node_modules/gaxios/build/cjs/src/util.cjs"(exports,module){"use strict";var pkg2=require_package();module.exports={pkg:pkg2}}});var require_common=__commonJS({"node_modules/gaxios/build/cjs/src/common.js"(exports){"use strict";var __importDefault=exports&&exports.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});exports.GaxiosError=exports.GAXIOS_ERROR_SYMBOL=void 0;exports.defaultErrorRedactor=defaultErrorRedactor;var extend_1=__importDefault(require_extend()),util_cjs_1=__importDefault(require_util7()),pkg2=util_cjs_1.default.pkg;exports.GAXIOS_ERROR_SYMBOL=Symbol.for(`${pkg2.name}-gaxios-error`);var GaxiosError=class _GaxiosError extends Error{config;response;code;status;error;[exports.GAXIOS_ERROR_SYMBOL]=pkg2.version;static[Symbol.hasInstance](instance){return instance&&typeof instance=="object"&&exports.GAXIOS_ERROR_SYMBOL in instance&&instance[exports.GAXIOS_ERROR_SYMBOL]===pkg2.version?!0:Function.prototype[Symbol.hasInstance].call(_GaxiosError,instance)}constructor(message2,config,response,cause){if(super(message2,{cause}),this.config=config,this.response=response,this.error=cause instanceof Error?cause:void 0,this.config=(0,extend_1.default)(!0,{},config),this.response&&(this.response.config=(0,extend_1.default)(!0,{},this.response.config)),this.response){try{this.response.data=translateData(this.config.responseType,this.response?.bodyUsed?this.response?.data:void 0)}catch{}this.status=this.response.status}cause instanceof DOMException?this.code=cause.name:cause&&typeof cause=="object"&&"code"in cause&&(typeof cause.code=="string"||typeof cause.code=="number")&&(this.code=cause.code)}static extractAPIErrorFromResponse(res,defaultErrorMessage="The request failed"){let message2=defaultErrorMessage;if(typeof res.data=="string"&&(message2=res.data),res.data&&typeof res.data=="object"&&"error"in res.data&&res.data.error&&!res.ok){if(typeof res.data.error=="string")return{message:res.data.error,code:res.status,status:res.statusText};if(typeof res.data.error=="object"){message2="message"in res.data.error&&typeof res.data.error.message=="string"?res.data.error.message:message2;let status="status"in res.data.error&&typeof res.data.error.status=="string"?res.data.error.status:res.statusText,code="code"in res.data.error&&typeof res.data.error.code=="number"?res.data.error.code:res.status;if("errors"in res.data.error&&Array.isArray(res.data.error.errors)){let errorMessages=[];for(let e2 of res.data.error.errors)typeof e2=="object"&&"message"in e2&&typeof e2.message=="string"&&errorMessages.push(e2.message);return Object.assign({message:errorMessages.join(`
574
574
  `)||message2,code,status},res.data.error)}return Object.assign({message:message2,code,status},res.data.error)}}return{message:message2,code:res.status,status:res.statusText}}};exports.GaxiosError=GaxiosError;function translateData(responseType,data){switch(responseType){case"stream":return data;case"json":return JSON.parse(JSON.stringify(data));case"arraybuffer":return JSON.parse(Buffer.from(data).toString("utf8"));case"blob":return JSON.parse(data.text());default:return data}}function defaultErrorRedactor(data){let REDACT="<<REDACTED> - See `errorRedactor` option in `gaxios` for configuration>.";function redactHeaders(headers){headers&&headers.forEach((_2,key)=>{(/^authentication$/i.test(key)||/^authorization$/i.test(key)||/secret/i.test(key))&&headers.set(key,REDACT)})}function redactString(obj,key){if(typeof obj=="object"&&obj!==null&&typeof obj[key]=="string"){let text=obj[key];(/grant_type=/i.test(text)||/assertion=/i.test(text)||/secret/i.test(text))&&(obj[key]=REDACT)}}function redactObject(obj){!obj||typeof obj!="object"||(obj instanceof FormData||obj instanceof URLSearchParams||"forEach"in obj&&"set"in obj?obj.forEach((_2,key)=>{(["grant_type","assertion"].includes(key)||/secret/.test(key))&&obj.set(key,REDACT)}):("grant_type"in obj&&(obj.grant_type=REDACT),"assertion"in obj&&(obj.assertion=REDACT),"client_secret"in obj&&(obj.client_secret=REDACT)))}return data.config&&(redactHeaders(data.config.headers),redactString(data.config,"data"),redactObject(data.config.data),redactString(data.config,"body"),redactObject(data.config.body),data.config.url.searchParams.has("token")&&data.config.url.searchParams.set("token",REDACT),data.config.url.searchParams.has("client_secret")&&data.config.url.searchParams.set("client_secret",REDACT)),data.response&&(defaultErrorRedactor({config:data.response.config}),redactHeaders(data.response.headers),data.response.bodyUsed&&(redactString(data.response,"data"),redactObject(data.response.data))),data}}});var require_retry6=__commonJS({"node_modules/gaxios/build/cjs/src/retry.js"(exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.getRetryConfig=getRetryConfig;async function getRetryConfig(err2){let config=getConfig(err2);if(!err2||!err2.config||!config&&!err2.config.retry)return{shouldRetry:!1};config=config||{},config.currentRetryAttempt=config.currentRetryAttempt||0,config.retry=config.retry===void 0||config.retry===null?3:config.retry,config.httpMethodsToRetry=config.httpMethodsToRetry||["GET","HEAD","PUT","OPTIONS","DELETE"],config.noResponseRetries=config.noResponseRetries===void 0||config.noResponseRetries===null?2:config.noResponseRetries,config.retryDelayMultiplier=config.retryDelayMultiplier?config.retryDelayMultiplier:2,config.timeOfFirstRequest=config.timeOfFirstRequest?config.timeOfFirstRequest:Date.now(),config.totalTimeout=config.totalTimeout?config.totalTimeout:Number.MAX_SAFE_INTEGER,config.maxRetryDelay=config.maxRetryDelay?config.maxRetryDelay:Number.MAX_SAFE_INTEGER;let retryRanges=[[100,199],[408,408],[429,429],[500,599]];if(config.statusCodesToRetry=config.statusCodesToRetry||retryRanges,err2.config.retryConfig=config,!await(config.shouldRetry||shouldRetryRequest)(err2))return{shouldRetry:!1,config:err2.config};let delay4=getNextRetryDelay(config);err2.config.retryConfig.currentRetryAttempt+=1;let backoff3=config.retryBackoff?config.retryBackoff(err2,delay4):new Promise(resolve26=>{setTimeout(resolve26,delay4)});return config.onRetryAttempt&&await config.onRetryAttempt(err2),await backoff3,{shouldRetry:!0,config:err2.config}}function shouldRetryRequest(err2){let config=getConfig(err2);if(err2.config.signal?.aborted&&err2.code!=="TimeoutError"||err2.code==="AbortError"||!config||config.retry===0||!err2.response&&(config.currentRetryAttempt||0)>=config.noResponseRetries||!config.httpMethodsToRetry||!config.httpMethodsToRetry.includes(err2.config.method?.toUpperCase()||"GET"))return!1;if(err2.response&&err2.response.status){let isInRange2=!1;for(let[min,max]of config.statusCodesToRetry){let status=err2.response.status;if(status>=min&&status<=max){isInRange2=!0;break}}if(!isInRange2)return!1}return config.currentRetryAttempt=config.currentRetryAttempt||0,!(config.currentRetryAttempt>=config.retry)}function getConfig(err2){if(err2&&err2.config&&err2.config.retryConfig)return err2.config.retryConfig}function getNextRetryDelay(config){let calculatedDelay=(config.currentRetryAttempt?0:config.retryDelay??100)+(Math.pow(config.retryDelayMultiplier,config.currentRetryAttempt)-1)/2*1e3,maxAllowableDelay=config.totalTimeout-(Date.now()-config.timeOfFirstRequest);return Math.min(calculatedDelay,maxAllowableDelay,config.maxRetryDelay)}}});var require_interceptor=__commonJS({"node_modules/gaxios/build/cjs/src/interceptor.js"(exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.GaxiosInterceptorManager=void 0;var GaxiosInterceptorManager=class extends Set{};exports.GaxiosInterceptorManager=GaxiosInterceptorManager}});var require_ms=__commonJS({"node_modules/ms/index.js"(exports,module){var s2=1e3,m3=s2*60,h2=m3*60,d=h2*24,w=d*7,y2=d*365.25;module.exports=function(val,options){options=options||{};var type=typeof val;if(type==="string"&&val.length>0)return parse3(val);if(type==="number"&&isFinite(val))return options.long?fmtLong(val):fmtShort(val);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(val))};function parse3(str2){if(str2=String(str2),!(str2.length>100)){var match3=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str2);if(match3){var n=parseFloat(match3[1]),type=(match3[2]||"ms").toLowerCase();switch(type){case"years":case"year":case"yrs":case"yr":case"y":return n*y2;case"weeks":case"week":case"w":return n*w;case"days":case"day":case"d":return n*d;case"hours":case"hour":case"hrs":case"hr":case"h":return n*h2;case"minutes":case"minute":case"mins":case"min":case"m":return n*m3;case"seconds":case"second":case"secs":case"sec":case"s":return n*s2;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function fmtShort(ms){var msAbs=Math.abs(ms);return msAbs>=d?Math.round(ms/d)+"d":msAbs>=h2?Math.round(ms/h2)+"h":msAbs>=m3?Math.round(ms/m3)+"m":msAbs>=s2?Math.round(ms/s2)+"s":ms+"ms"}function fmtLong(ms){var msAbs=Math.abs(ms);return msAbs>=d?plural(ms,msAbs,d,"day"):msAbs>=h2?plural(ms,msAbs,h2,"hour"):msAbs>=m3?plural(ms,msAbs,m3,"minute"):msAbs>=s2?plural(ms,msAbs,s2,"second"):ms+" ms"}function plural(ms,msAbs,n,name){var isPlural=msAbs>=n*1.5;return Math.round(ms/n)+" "+name+(isPlural?"s":"")}}});var require_common2=__commonJS({"node_modules/debug/src/common.js"(exports,module){function setup(env3){createDebug.debug=createDebug,createDebug.default=createDebug,createDebug.coerce=coerce,createDebug.disable=disable,createDebug.enable=enable,createDebug.enabled=enabled,createDebug.humanize=require_ms(),createDebug.destroy=destroy,Object.keys(env3).forEach(key=>{createDebug[key]=env3[key]}),createDebug.names=[],createDebug.skips=[],createDebug.formatters={};function selectColor(namespace){let hash2=0;for(let i2=0;i2<namespace.length;i2++)hash2=(hash2<<5)-hash2+namespace.charCodeAt(i2),hash2|=0;return createDebug.colors[Math.abs(hash2)%createDebug.colors.length]}createDebug.selectColor=selectColor;function createDebug(namespace){let prevTime,enableOverride=null,namespacesCache,enabledCache;function debug2(...args2){if(!debug2.enabled)return;let self2=debug2,curr=Number(new Date),ms=curr-(prevTime||curr);self2.diff=ms,self2.prev=prevTime,self2.curr=curr,prevTime=curr,args2[0]=createDebug.coerce(args2[0]),typeof args2[0]!="string"&&args2.unshift("%O");let index3=0;args2[0]=args2[0].replace(/%([a-zA-Z%])/g,(match3,format)=>{if(match3==="%%")return"%";index3++;let formatter=createDebug.formatters[format];if(typeof formatter=="function"){let val=args2[index3];match3=formatter.call(self2,val),args2.splice(index3,1),index3--}return match3}),createDebug.formatArgs.call(self2,args2),(self2.log||createDebug.log).apply(self2,args2)}return debug2.namespace=namespace,debug2.useColors=createDebug.useColors(),debug2.color=createDebug.selectColor(namespace),debug2.extend=extend,debug2.destroy=createDebug.destroy,Object.defineProperty(debug2,"enabled",{enumerable:!0,configurable:!1,get:()=>enableOverride!==null?enableOverride:(namespacesCache!==createDebug.namespaces&&(namespacesCache=createDebug.namespaces,enabledCache=createDebug.enabled(namespace)),enabledCache),set:v2=>{enableOverride=v2}}),typeof createDebug.init=="function"&&createDebug.init(debug2),debug2}function extend(namespace,delimiter3){let newDebug=createDebug(this.namespace+(typeof delimiter3>"u"?":":delimiter3)+namespace);return newDebug.log=this.log,newDebug}function enable(namespaces){createDebug.save(namespaces),createDebug.namespaces=namespaces,createDebug.names=[],createDebug.skips=[];let split=(typeof namespaces=="string"?namespaces:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let ns of split)ns[0]==="-"?createDebug.skips.push(ns.slice(1)):createDebug.names.push(ns)}function matchesTemplate(search,template){let searchIndex=0,templateIndex=0,starIndex=-1,matchIndex=0;for(;searchIndex<search.length;)if(templateIndex<template.length&&(template[templateIndex]===search[searchIndex]||template[templateIndex]==="*"))template[templateIndex]==="*"?(starIndex=templateIndex,matchIndex=searchIndex,templateIndex++):(searchIndex++,templateIndex++);else if(starIndex!==-1)templateIndex=starIndex+1,matchIndex++,searchIndex=matchIndex;else return!1;for(;templateIndex<template.length&&template[templateIndex]==="*";)templateIndex++;return templateIndex===template.length}function disable(){let namespaces=[...createDebug.names,...createDebug.skips.map(namespace=>"-"+namespace)].join(",");return createDebug.enable(""),namespaces}function enabled(name){for(let skip of createDebug.skips)if(matchesTemplate(name,skip))return!1;for(let ns of createDebug.names)if(matchesTemplate(name,ns))return!0;return!1}function coerce(val){return val instanceof Error?val.stack||val.message:val}function destroy(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return createDebug.enable(createDebug.load()),createDebug}module.exports=setup}});var require_browser=__commonJS({"node_modules/debug/src/browser.js"(exports,module){exports.formatArgs=formatArgs;exports.save=save;exports.load=load;exports.useColors=useColors;exports.storage=localstorage();exports.destroy=(()=>{let warned=!1;return()=>{warned||(warned=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();exports.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function useColors(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let m3;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(m3=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(m3[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function formatArgs(args2){if(args2[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+args2[0]+(this.useColors?"%c ":" ")+"+"+module.exports.humanize(this.diff),!this.useColors)return;let c2="color: "+this.color;args2.splice(1,0,c2,"color: inherit");let index3=0,lastC=0;args2[0].replace(/%[a-zA-Z%]/g,match3=>{match3!=="%%"&&(index3++,match3==="%c"&&(lastC=index3))}),args2.splice(lastC,0,c2)}exports.log=console.debug||console.log||(()=>{});function save(namespaces){try{namespaces?exports.storage.setItem("debug",namespaces):exports.storage.removeItem("debug")}catch{}}function load(){let r2;try{r2=exports.storage.getItem("debug")||exports.storage.getItem("DEBUG")}catch{}return!r2&&typeof process<"u"&&"env"in process&&(r2=process.env.DEBUG),r2}function localstorage(){try{return localStorage}catch{}}module.exports=require_common2()(exports);var{formatters:formatters3}=module.exports;formatters3.j=function(v2){try{return JSON.stringify(v2)}catch(error){return"[UnexpectedJSONParseError]: "+error.message}}}});var require_node=__commonJS({"node_modules/debug/src/node.js"(exports,module){var tty2=__require("tty"),util2=__require("util");exports.init=init;exports.log=log;exports.formatArgs=formatArgs;exports.save=save;exports.load=load;exports.useColors=useColors;exports.destroy=util2.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");exports.colors=[6,2,3,4,5,1];try{let supportsColor2=__require("supports-color");supportsColor2&&(supportsColor2.stderr||supportsColor2).level>=2&&(exports.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}exports.inspectOpts=Object.keys(process.env).filter(key=>/^debug_/i.test(key)).reduce((obj,key)=>{let prop=key.substring(6).toLowerCase().replace(/_([a-z])/g,(_2,k2)=>k2.toUpperCase()),val=process.env[key];return/^(yes|on|true|enabled)$/i.test(val)?val=!0:/^(no|off|false|disabled)$/i.test(val)?val=!1:val==="null"?val=null:val=Number(val),obj[prop]=val,obj},{});function useColors(){return"colors"in exports.inspectOpts?!!exports.inspectOpts.colors:tty2.isatty(process.stderr.fd)}function formatArgs(args2){let{namespace:name,useColors:useColors2}=this;if(useColors2){let c2=this.color,colorCode="\x1B[3"+(c2<8?c2:"8;5;"+c2),prefix=` ${colorCode};1m${name} \x1B[0m`;args2[0]=prefix+args2[0].split(`
575
575
  `).join(`
576
576
  `+prefix),args2.push(colorCode+"m+"+module.exports.humanize(this.diff)+"\x1B[0m")}else args2[0]=getDate()+name+" "+args2[0]}function getDate(){return exports.inspectOpts.hideDate?"":new Date().toISOString()+" "}function log(...args2){return process.stderr.write(util2.formatWithOptions(exports.inspectOpts,...args2)+`
@@ -2379,7 +2379,7 @@ ${memory.body.trim()}
2379
2379
  `).map(l3=>l3.trim()).find(l3=>l3!=="");await store.save({name:trimmedName,description:(firstLine2??"").slice(0,80),type:"project",body}),ctx.ui.notify(`Memory "${trimmedName}" saved.`,"info")}async function forget(ctx,store){let memories=await store.list();if(memories.length===0){ctx.ui.notify("No memories to forget.","info");return}let selected=await ctx.ui.select("Select a memory to forget",memories.map(formatOption));if(selected===void 0)return;let memory=memories.find(m3=>formatOption(m3)===selected);if(!memory)return;if(!await ctx.ui.confirm("Forget memory",`Delete "${memory.name}" permanently?`)){ctx.ui.notify("Cancelled.","info");return}await store.remove(memory.fileName),ctx.ui.notify(`Forgot "${memory.name}".`,"info")}function registerMemoryCommand(pi,deps){pi.registerCommand("memory",{description:"Browse, add, or forget per-project long-term memories",handler:async(args2,ctx)=>{let store=deps.storeFor(ctx),arg=args2.trim();if(arg===""){if(ctx.mode!=="tui"){await showIndex(ctx,store);return}await browse(ctx,store);return}if(arg==="index"){await showIndex(ctx,store);return}if(ctx.mode!=="tui"){ctx.ui.notify(`${USAGE} \u2014 add/forget require interactive mode.`,"warning");return}if(arg==="add"){await add2(ctx,store);return}if(arg==="forget"){await forget(ctx,store);return}ctx.ui.notify(USAGE,"info")}})}var USAGE,init_command=__esm({"packages/plus/src/extensions/memory/command.ts"(){init_frontmatter();init_store();USAGE="Usage: /memory (browse/edit) | /memory add | /memory forget | /memory index"}});import*as os11 from"node:os";function emptyUsage(){return{input:0,output:0,cacheRead:0,cacheWrite:0,cost:0,contextTokens:0,turns:0}}function formatTokens2(count){return count<1e3?count.toString():count<1e4?`${(count/1e3).toFixed(1)}k`:count<1e6?`${Math.round(count/1e3)}k`:`${(count/1e6).toFixed(1)}M`}function formatUsageStats(usage,model){let parts=[];return usage.turns&&parts.push(`${usage.turns} turn${usage.turns>1?"s":""}`),usage.input&&parts.push(`\u2191${formatTokens2(usage.input)}`),usage.output&&parts.push(`\u2193${formatTokens2(usage.output)}`),usage.cacheRead&&parts.push(`R${formatTokens2(usage.cacheRead)}`),usage.cacheWrite&&parts.push(`W${formatTokens2(usage.cacheWrite)}`),usage.cost&&parts.push(`$${usage.cost.toFixed(4)}`),usage.contextTokens&&usage.contextTokens>0&&parts.push(`ctx:${formatTokens2(usage.contextTokens)}`),model&&parts.push(model),parts.join(" ")}function formatToolCall(toolName2,args2,themeFg){let shortenPath3=p=>{let home=os11.homedir();return p.startsWith(home)?`~${p.slice(home.length)}`:p};switch(toolName2){case"bash":{let command=args2.command||"...",preview=command.length>60?`${command.slice(0,60)}...`:command;return themeFg("muted","$ ")+themeFg("toolOutput",preview)}case"read":{let rawPath=args2.file_path||args2.path||"...",filePath=shortenPath3(rawPath),offset=args2.offset,limit3=args2.limit,text=themeFg("accent",filePath);if(offset!==void 0||limit3!==void 0){let startLine=offset??1,endLine=limit3!==void 0?startLine+limit3-1:"";text+=themeFg("warning",`:${startLine}${endLine?`-${endLine}`:""}`)}return themeFg("muted","read ")+text}case"write":{let rawPath=args2.file_path||args2.path||"...",filePath=shortenPath3(rawPath),lines2=(args2.content||"").split(`
2380
2380
  `).length,text=themeFg("muted","write ")+themeFg("accent",filePath);return lines2>1&&(text+=themeFg("dim",` (${lines2} lines)`)),text}case"edit":{let rawPath=args2.file_path||args2.path||"...";return themeFg("muted","edit ")+themeFg("accent",shortenPath3(rawPath))}case"ls":{let rawPath=args2.path||".";return themeFg("muted","ls ")+themeFg("accent",shortenPath3(rawPath))}case"find":{let pattern=args2.pattern||"*",rawPath=args2.path||".";return themeFg("muted","find ")+themeFg("accent",pattern)+themeFg("dim",` in ${shortenPath3(rawPath)}`)}case"grep":{let pattern=args2.pattern||"",rawPath=args2.path||".";return themeFg("muted","grep ")+themeFg("accent",`/${pattern}/`)+themeFg("dim",` in ${shortenPath3(rawPath)}`)}default:{let argsStr=JSON.stringify(args2),preview=argsStr.length>50?`${argsStr.slice(0,50)}...`:argsStr;return themeFg("accent",toolName2)+themeFg("dim",` ${preview}`)}}}function getDisplayItems(messages){let items=[];for(let msg of messages)if(msg.role==="assistant")for(let part of msg.content)part.type==="text"?items.push({type:"text",text:part.text}):part.type==="toolCall"&&items.push({type:"toolCall",name:part.name,args:part.arguments});return items}function getFinalOutput(messages){for(let i2=messages.length-1;i2>=0;i2--){let msg=messages[i2];if(msg.role==="assistant"){for(let part of msg.content)if(part.type==="text")return part.text}}return""}function isFailedResult(result){return result.exitCode!==0||result.stopReason==="error"||result.stopReason==="aborted"}function getResultOutput(result){return isFailedResult(result)?result.errorMessage||result.stderr||getFinalOutput(result.messages)||"(no output)":getFinalOutput(result.messages)||"(no output)"}function truncateOutput2(output,cap=PER_TASK_OUTPUT_CAP){let byteLength2=Buffer.byteLength(output,"utf8");if(byteLength2<=cap)return output;let truncated2=output.slice(0,cap);for(;Buffer.byteLength(truncated2,"utf8")>cap;)truncated2=truncated2.slice(0,-1);return`${truncated2}
2381
2381
 
2382
- [Output truncated: ${byteLength2-Buffer.byteLength(truncated2,"utf8")} bytes omitted. Full output preserved in tool details.]`}var COLLAPSED_ITEM_COUNT,PER_TASK_OUTPUT_CAP,init_format5=__esm({"packages/plus/src/extensions/subagent/format.ts"(){COLLAPSED_ITEM_COUNT=10,PER_TASK_OUTPUT_CAP=50*1024}});import{spawn as spawn16}from"node:child_process";import*as fs22 from"node:fs";import*as os12 from"node:os";import*as path24 from"node:path";async function writePromptToTempFile(agentName,prompt){let tmpDir=await fs22.promises.mkdtemp(path24.join(os12.tmpdir(),"pi-subagent-")),safeName=agentName.replace(/[^\w.-]+/g,"_"),filePath=path24.join(tmpDir,`prompt-${safeName}.md`);return await withFileMutationQueue(filePath,async()=>{await fs22.promises.writeFile(filePath,prompt,{encoding:"utf-8",mode:384})}),{dir:tmpDir,filePath}}function getPiInvocationCandidates(args2){let candidates=[],currentScript=process.argv[1],isBunVirtualScript=currentScript?.startsWith("/$bunfs/root/");currentScript&&!isBunVirtualScript&&fs22.existsSync(currentScript)&&candidates.push({command:process.execPath,args:[currentScript,...args2]});let execName=path24.basename(process.execPath).toLowerCase();return/^(node|bun)(\.exe)?$/.test(execName)||candidates.push({command:process.execPath,args:args2}),candidates.push({command:"pipi",args:args2}),candidates.push({command:"pi",args:args2}),candidates}async function runSingleAgent(defaultCwd,dispatchDefaults,agent,task,cwd,signal,onUpdate){let args2=["--mode","json","-p","--no-session"],inheritsDispatchConfig=!agent.model,model=agent.model??dispatchDefaults.model;model&&args2.push("--model",model),inheritsDispatchConfig&&dispatchDefaults.thinkingLevel&&args2.push("--thinking",dispatchDefaults.thinkingLevel),agent.tools&&agent.tools.length>0?args2.push("--tools",agent.tools.join(",")):args2.push("--exclude-tools","subagent");let tmpPromptDir=null,tmpPromptPath=null,currentResult={agent:agent.name,agentSource:agent.source,task,exitCode:0,messages:[],stderr:"",usage:emptyUsage(),model},emitUpdate=()=>{onUpdate&&onUpdate({content:[{type:"text",text:getFinalOutput(currentResult.messages)||"(running...)"}],details:currentResult})};try{if(agent.systemPrompt.trim()){let tmp=await writePromptToTempFile(agent.name,agent.systemPrompt);tmpPromptDir=tmp.dir,tmpPromptPath=tmp.filePath,args2.push("--append-system-prompt",tmpPromptPath)}args2.push(`Task: ${task}`);let wasAborted=!1,invocationCandidates=getPiInvocationCandidates(args2),exitCode=await new Promise(resolve26=>{let trySpawn=candidateIndex=>{if(candidateIndex>=invocationCandidates.length){currentResult.stderr+=`Failed to spawn pi CLI (tried: ${invocationCandidates.map(c2=>c2.command).join(", ")}). Install pi-plus (pipi) or pi so it is on PATH.
2382
+ [Output truncated: ${byteLength2-Buffer.byteLength(truncated2,"utf8")} bytes omitted. Full output preserved in tool details.]`}var COLLAPSED_ITEM_COUNT,PER_TASK_OUTPUT_CAP,init_format5=__esm({"packages/plus/src/extensions/subagent/format.ts"(){COLLAPSED_ITEM_COUNT=10,PER_TASK_OUTPUT_CAP=50*1024}});import{spawn as spawn16}from"node:child_process";import*as fs22 from"node:fs";import*as os12 from"node:os";import*as path24 from"node:path";async function writePromptToTempFile(agentName,prompt){let tmpDir=await fs22.promises.mkdtemp(path24.join(os12.tmpdir(),"pi-subagent-")),safeName=agentName.replace(/[^\w.-]+/g,"_"),filePath=path24.join(tmpDir,`prompt-${safeName}.md`);return await withFileMutationQueue(filePath,async()=>{await fs22.promises.writeFile(filePath,prompt,{encoding:"utf-8",mode:384})}),{dir:tmpDir,filePath}}function getPiInvocationCandidates(args2){let candidates=[],isElectronHost=typeof process.versions.electron=="string",currentScript=process.argv[1],isBunVirtualScript=currentScript?.startsWith("/$bunfs/root/");!isElectronHost&&currentScript&&!isBunVirtualScript&&fs22.existsSync(currentScript)&&candidates.push({command:process.execPath,args:[currentScript,...args2]});let execName=path24.basename(process.execPath).toLowerCase(),isGenericRuntime=/^(node|bun)(\.exe)?$/.test(execName);return!isElectronHost&&!isGenericRuntime&&candidates.push({command:process.execPath,args:args2}),candidates.push({command:"pipi",args:args2}),candidates.push({command:"pi",args:args2}),candidates}async function runSingleAgent(defaultCwd,dispatchDefaults,agent,task,cwd,signal,onUpdate){let args2=["--mode","json","-p","--no-session"],inheritsDispatchConfig=!agent.model,model=agent.model??dispatchDefaults.model;model&&args2.push("--model",model),inheritsDispatchConfig&&dispatchDefaults.thinkingLevel&&args2.push("--thinking",dispatchDefaults.thinkingLevel),agent.tools&&agent.tools.length>0?args2.push("--tools",agent.tools.join(",")):args2.push("--exclude-tools","subagent");let tmpPromptDir=null,tmpPromptPath=null,currentResult={agent:agent.name,agentSource:agent.source,task,exitCode:0,messages:[],stderr:"",usage:emptyUsage(),model},emitUpdate=()=>{onUpdate&&onUpdate({content:[{type:"text",text:getFinalOutput(currentResult.messages)||"(running...)"}],details:currentResult})};try{if(agent.systemPrompt.trim()){let tmp=await writePromptToTempFile(agent.name,agent.systemPrompt);tmpPromptDir=tmp.dir,tmpPromptPath=tmp.filePath,args2.push("--append-system-prompt",tmpPromptPath)}args2.push(`Task: ${task}`);let wasAborted=!1,invocationCandidates=getPiInvocationCandidates(args2),exitCode=await new Promise(resolve26=>{let trySpawn=candidateIndex=>{if(candidateIndex>=invocationCandidates.length){currentResult.stderr+=`Failed to spawn pi CLI (tried: ${invocationCandidates.map(c2=>c2.command).join(", ")}). Install pi-plus (pipi) or pi so it is on PATH.
2383
2383
  `,resolve26(1);return}let invocation=invocationCandidates[candidateIndex],proc=spawn16(invocation.command,invocation.args,{cwd:cwd??defaultCwd,shell:!1,stdio:["ignore","pipe","pipe"]}),buffer="",processLine=line=>{if(!line.trim())return;let event;try{event=JSON.parse(line)}catch{return}let json3=event;if(json3.type==="message_end"&&json3.message){let msg=json3.message;if(currentResult.messages.push(msg),msg.role==="assistant"){currentResult.usage.turns++;let usage=msg.usage;usage&&(currentResult.usage.input+=usage.input||0,currentResult.usage.output+=usage.output||0,currentResult.usage.cacheRead+=usage.cacheRead||0,currentResult.usage.cacheWrite+=usage.cacheWrite||0,currentResult.usage.cost+=usage.cost?.total||0,currentResult.usage.contextTokens=usage.totalTokens||0),!currentResult.model&&msg.model&&(currentResult.model=msg.model),msg.stopReason&&(currentResult.stopReason=msg.stopReason),msg.errorMessage&&(currentResult.errorMessage=msg.errorMessage)}emitUpdate()}json3.type==="tool_result_end"&&json3.message&&(currentResult.messages.push(json3.message),emitUpdate())};if(proc.stdout.on("data",data=>{buffer+=data.toString();let lines2=buffer.split(`
2384
2384
  `);buffer=lines2.pop()||"";for(let line of lines2)processLine(line)}),proc.stderr.on("data",data=>{currentResult.stderr+=data.toString()}),proc.on("close",code=>{buffer.trim()&&processLine(buffer),resolve26(code??0)}),proc.on("error",err2=>{if(err2.code==="ENOENT"&&candidateIndex<invocationCandidates.length-1){trySpawn(candidateIndex+1);return}resolve26(1)}),signal){let killProc=()=>{wasAborted=!0,proc.kill("SIGTERM"),setTimeout(()=>{proc.killed||proc.kill("SIGKILL")},5e3)};signal.aborted?killProc():signal.addEventListener("abort",killProc,{once:!0})}};trySpawn(0)});if(currentResult.exitCode=exitCode,wasAborted)throw new Error("Subagent was aborted");return currentResult}finally{if(tmpPromptPath)try{fs22.unlinkSync(tmpPromptPath)}catch{}if(tmpPromptDir)try{fs22.rmdirSync(tmpPromptDir)}catch{}}}var init_run=__esm({"packages/plus/src/extensions/subagent/run.ts"(){init_file_mutation_queue();init_format5()}});import{existsSync as existsSync36,readFileSync as readFileSync31}from"node:fs";import{homedir as homedir16}from"node:os";import{join as join63}from"node:path";function readMemorySettingsFile(path28){try{if(!existsSync36(path28))return;let value=JSON.parse(readFileSync31(path28,"utf8")).memory;if(typeof value!="object"||value===null||Array.isArray(value))return;let memory=value,settings2={};return typeof memory.enabled=="boolean"&&(settings2.enabled=memory.enabled),typeof memory.autoExtract=="boolean"&&(settings2.autoExtract=memory.autoExtract),typeof memory.extractMinMessages=="number"&&Number.isFinite(memory.extractMinMessages)&&(settings2.extractMinMessages=memory.extractMinMessages),typeof memory.extractCooldownMs=="number"&&Number.isFinite(memory.extractCooldownMs)&&(settings2.extractCooldownMs=memory.extractCooldownMs),settings2}catch{return}}function readMemorySettings(cwd){let project=readMemorySettingsFile(join63(cwd,".pi","settings.json"));if(project)return{...DEFAULTS,...project};let agent=readMemorySettingsFile(join63(getAgentDir(),"settings.json"));if(agent)return{...DEFAULTS,...agent};let baseFile=getBaseSettingsPath();if(baseFile&&baseFile!==join63(getAgentDir(),"settings.json")){let base=readMemorySettingsFile(baseFile);if(base)return{...DEFAULTS,...base}}let home=readMemorySettingsFile(join63(homedir16(),".pi","settings.json"));return home?{...DEFAULTS,...home}:{...DEFAULTS}}var DEFAULTS,init_settings3=__esm({"packages/plus/src/extensions/memory/settings.ts"(){init_config();init_profile_settings();DEFAULTS={enabled:!0,autoExtract:!0,extractMinMessages:8,extractCooldownMs:18e4}}});function createExtractState(){return{mainAgentSavedThisRun:!1,lastExtractAt:0,lastExtractMessageCount:0,running:!1}}function renderMessage(message2){let m3=message2;if(m3.role==="system")return null;if(m3.role==="user"){let text2=extractText(m3.content);return text2?`user: ${truncate3(text2,MAX_TOOL_RESULT_CHARS)}`:null}if(m3.role==="assistant"){let parts=[],text2=extractText(m3.content);text2&&parts.push(text2);for(let block of m3.content)block.type==="toolCall"&&parts.push(`[called tool ${block.name}]`);return parts.length>0?`assistant: ${truncate3(parts.join(" "),MAX_TOOL_RESULT_CHARS)}`:null}let text=extractText(m3.content);return text?`tool (${m3.toolName}): ${truncate3(text,MAX_TOOL_RESULT_CHARS)}`:null}function extractText(content){if(typeof content=="string")return content;if(!Array.isArray(content))return"";let parts=[];for(let block of content)typeof block=="object"&&block!==null&&"text"in block&&typeof block.text=="string"&&parts.push(block.text);return parts.join(`
2385
2385
  `)}function truncate3(text,max){return text.length<=max?text:`${text.slice(0,max)}\u2026`}async function buildExtractionTask(ctx,store){let index3=(await store.readIndex()).trim(),messages=[];try{messages=ctx.sessionManager.buildSessionProjection().messages}catch{}let lines2=[];for(let message2 of messages.slice(-MAX_MESSAGES)){let rendered=renderMessage(message2);rendered&&lines2.push(rendered)}let transcript=lines2.join(`