@sourcegraph/amp 0.0.1763755286-g1cf767 → 0.0.1763784077-g7729e7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/main.js +10 -10
- package/package.json +1 -1
package/dist/main.js
CHANGED
|
@@ -2237,7 +2237,7 @@ IMPORTANT: Always use the ${X2} tool to plan and track tasks throughout the conv
|
|
|
2237
2237
|
|
|
2238
2238
|
`});class ND1{async*stream({model:J,thread:Q,buildSystemPromptDeps:Y,signal:X,agentMode:G,clientRequestId:Z}){let{systemPrompt:q,tools:V}=await sJ(Y,Q,{enableTodos:!0,enableTask:!0,enableOracle:!0},{model:J,provider:"vertexai",agentMode:G??"smart"},X),K=V.map((U)=>x2(J,U)),W=DD1(Q),H=AD1(J,W,K,q.map((U)=>U.text).join(`
|
|
2239
2239
|
|
|
2240
|
-
`),Q,{configService:Y.configService},X,AV(Q)?.messageId,Z),z;for await(let U of H)if(z=Du4(z,U),z)yield Ou4(z)}}function DD1(J){let{summaryBlock:Q,index:Y}=hX(J)??{summaryBlock:void 0,index:0},X=[];if(Q&&Q.summary.type==="message")X.push({role:"model",parts:[{text:Q.summary.summary.trimEnd()}]});for(let G=Y+(Q?1:0);G<J.messages.length;G++){let Z=J.messages[G];if(!Z)continue;switch(Z.role){case"user":{let q=Bu4(Z,J);if(q.length===0)continue;X.push({role:"user",parts:q});break}case"assistant":{let q=Z.content.filter((W)=>{if(W.type==="tool_use"&&!W.complete)return!1;return!0}),V=iJ(J);for(let W of q)if(W.type==="tool_use"){if(!V.get(W.id)?.run)throw Error(`(bug) corresponding tool_result not found for tool_use (id=${W.id}, name=${W.name})`)}if(Z.nativeMessage?.type==="vertexai"){X.push(x8(Z.nativeMessage.message.candidates?.[0]?.content??{role:"model",parts:[]}));break}if(q.length===0)break;let K=Nu4(q);if(K.length>0)X.push({role:"model",parts:K});break}case"info":{let q=[];for(let V of Z.content)if(V.type==="manual_bash_invocation"){let K=SU(V);q.push(...K.map((W)=>({text:W.text})))}else if(V.type==="text"&&V.text.trim().length>0)q.push({text:V.text});if(q.length>0)X.push({role:"user",parts:q});break}}}return X}function LD1(J){let Q=Object.values(R8).find((Y)=>Y.provider===Q5.VERTEXAI&&Y.name===J);if(Q===void 0)return x.warn(`Unknown gemini model ${J}`),{...R8.GEMINI_2_5_PRO,name:J,displayName:J};return Q}async function*AD1(J,Q,Y,X,G,Z,q,V,K){let W=LD1(J),H=await Z.configService.getLatest(q),z=await bv0(H,{threadMeta:G,messageId:V,clientRequestId:K}),U={model:W.name,contents:x8(Q),config:{seed:Date.now()%1e4,tools:hv0(Y),systemInstruction:X,maxOutputTokens:W.maxOutputTokens,temperature:1,thinkingConfig:{includeThoughts:!0,thinkingLevel:H.settings["gemini.thinkingLevel"]==="low"?Xv.LOW:H.settings["gemini.thinkingLevel"]==="high"?Xv.HIGH:void 0},abortSignal:q}},B=await z.models.generateContentStream(U),O;for await(let M of B)O=M,yield M;return{model:J,"~debugParamsUsed":{model:W,streamParams:U},"~debugUsage":{model:J,maxInputTokens:W.contextWindow-W.maxOutputTokens,inputTokens:0,outputTokens:(O?.usageMetadata?.candidatesTokenCount??0)+(O?.usageMetadata?.thoughtsTokenCount??0),totalInputTokens:O?.usageMetadata?.promptTokenCount??0,cacheCreationInputTokens:(O?.usageMetadata?.promptTokenCount??0)-(O?.usageMetadata?.cachedContentTokenCount??0),cacheReadInputTokens:O?.usageMetadata?.cachedContentTokenCount??0,credits:0}}}async function so(J,Q,Y,X,G,Z,q,V){let K=LD1(J),H=await(await bv0(G,{threadMeta:X,clientRequestId:V})).models.generateContent({model:K.name,contents:x8(Q),config:{tools:hv0(Y),seed:Date.now()%1e4,temperature:0.1,maxOutputTokens:K.maxOutputTokens,abortSignal:Z,...q}});return{message:H,"~debugUsage":{model:K.name,maxInputTokens:K.contextWindow-K.maxOutputTokens,inputTokens:0,outputTokens:(H.usageMetadata?.candidatesTokenCount??0)+(H.usageMetadata?.thoughtsTokenCount??0),totalInputTokens:H.usageMetadata?.promptTokenCount??0,cacheCreationInputTokens:(H.usageMetadata?.promptTokenCount??0)-(H.usageMetadata?.cachedContentTokenCount??0),cacheReadInputTokens:H.usageMetadata?.cachedContentTokenCount??0,credits:0}}}function hv0(J){if(J.length===0)return[];return[{functionDeclarations:[...J.map(Fu4)]}]}function Fu4(J){return{name:J.name,description:J.description??"",parameters:BD1(J.inputSchema)}}function BD1(J){let Q={},Y=Uu4[J.type??"any"];if(Y)Q.type=Y;if(J.description)Q.description=J.description;if(J.required)Q.required=J.required;let X=J.examples;if(Array.isArray(X)&&X.length>0)Q.example=X[0];if(J.properties)Q.properties=Object.fromEntries(Object.entries(J.properties).map(([G,Z])=>[G,BD1(Z)]));if(J.items)Q.items=BD1(J.items);return Q}async function bv0(J,Q){let{settings:Y,secrets:X}=J,{url:G}=Y,Z=await X.getToken("apiKey",G);if(!Z)throw Error("API key not found. You must provide an API key in settings.");let q={GOOGLE_CLOUD_PROJECT:process.env.GOOGLE_CLOUD_PROJECT,GCLOUD_PROJECT:process.env.GCLOUD_PROJECT,GOOGLE_APPLICATION_CREDENTIALS:process.env.GOOGLE_APPLICATION_CREDENTIALS};delete process.env.GOOGLE_CLOUD_PROJECT,delete process.env.GCLOUD_PROJECT,delete process.env.GOOGLE_APPLICATION_CREDENTIALS;let V=new qU1({apiKey:"placeholder",vertexai:!0,googleAuthOptions:{},httpOptions:{baseUrl:new URL("/api/provider/google",G).toString(),headers:{Authorization:"Bearer "+Z,[zY]:"amp.chat",...Q?.messageId!=null?{[bX]:String(Q.messageId)}:{},...Q?.clientRequestId!=null?{[FY]:Q.clientRequestId}:{},...UY(Q?.threadMeta)}}});for(let[K,W]of Object.entries(q))if(W!==void 0)process.env[K]=W;return V}function Bu4(J,Q){let Y=[];if(J.fileMentions&&J.fileMentions.files.length>0)Y.push({text:oX(J.fileMentions)});if(J.userState)Y.push({text:nV(J.userState)});for(let X of J.content)if(X.type==="text")Y.push({text:X.text});else if(X.type==="image"){if(X.source.type==="base64"&&"mediaType"in X.source&&"data"in X.source)Y.push({inlineData:{mimeType:X.source.mediaType,data:X.source.data}});else if(X.source.type==="url"&&"url"in X.source)Y.push({text:`[Image URL: ${X.source.url}]`})}else if(X.type==="tool_result"){let G={};if(X.run.status==="done")G.output=X.run.result;else if(X.run.status==="error")G.error=X.run.error?.message??"Error executing tool";else G.error=`Tool status: ${X.run.status}`;let Z,[,q]=X.toolUseID.split("__");if(q)Z=q;else for(let K of Q.messages)if(K.role==="assistant"){for(let W of K.content)if(W.type==="tool_use"&&W.id===X.toolUseID){Z=W.name;break}if(Z)break}if(!Z)throw Error(`Could not find tool name for tool_result with ID: ${X.toolUseID}`);let V={name:Z,response:G};Y.push({functionResponse:V})}return Y}function Nu4(J){let Q=[];for(let Y of J)if(Y.type==="text")Q.push({text:Y.text});else if(Y.type==="tool_use")Q.push({functionCall:{name:Y.name,args:Y.input??{}}});else if(Y.type==="thinking")Q.push({text:Y.thinking,thought:!0,thoughtSignature:Y.signature});else if(Y.type==="redacted_thinking")Q.push({text:"[Redacted thinking]"});return Q}function Du4(J,Q){if(!J)return Q;let Y=J.candidates&&Q.candidates?J.candidates.map((G,Z)=>{let q=Q.candidates?.[Z];if(!q)return G;return{...q,content:{...q.content,parts:[...G.content?.parts??[],...q.content?.parts??[]]}}}):Q.candidates,X=new GU;return Object.assign(X,{...Q,candidates:Y}),X}function Ou4(J){function Q(){let G=[];for(let Z of J.candidates?.at(0)?.content?.parts??[])if(Z.text&&Z.thought){let q=G.at(-1);if(q?.type==="thinking")G[G.length-1]={type:"thinking",thinking:q.thinking+Z.text,signature:"",provider:"vertexai"};else G.push({type:"thinking",thinking:Z.text,signature:"",provider:"vertexai"})}else if(Z.text){let q=G.at(-1);if(q?.type==="text")G[G.length-1]={type:"text",text:q.text+Z.text};else G.push({type:"text",text:Z.text})}else if(Z.functionCall)G.push({type:"tool_use",complete:!0,id:Z.functionCall.id??VO(),name:Z.functionCall.name??"",input:Z.functionCall.args??{}});return G}function Y(){if(!J.usageMetadata)return;let G=LD1(J.modelVersion??"");return{model:G.name,maxInputTokens:G.contextWindow-G.maxOutputTokens,inputTokens:0,cacheReadInputTokens:J.usageMetadata?.cachedContentTokenCount??0,cacheCreationInputTokens:(J.usageMetadata?.promptTokenCount??0)-(J.usageMetadata?.cachedContentTokenCount??0),outputTokens:(J.usageMetadata?.totalTokenCount??0)-(J.usageMetadata?.promptTokenCount??0),totalInputTokens:J.usageMetadata?.promptTokenCount??0,credits:0}}function X(){let G=J.candidates?.at(0)?.finishReason,Z=J.candidates?.at(0)?.finishMessage;switch(G){case S3.STOP:{if(J.candidates?.at(0)?.content?.parts?.some((V)=>V.functionCall!==void 0))return{type:"complete",stopReason:"tool_use"};return{type:"complete",stopReason:"end_turn"}}case S3.MAX_TOKENS:return{type:"complete",stopReason:"max_tokens"};case S3.BLOCKLIST:case S3.SAFETY:case S3.RECITATION:case S3.LANGUAGE:case S3.PROHIBITED_CONTENT:case S3.IMAGE_PROHIBITED_CONTENT:case S3.IMAGE_SAFETY:case S3.SPII:case S3.OTHER:case S3.FINISH_REASON_UNSPECIFIED:case S3.NO_IMAGE:return{type:"error",error:{message:`provider refused to continue with code '${G}': ${Z}`}};case S3.UNEXPECTED_TOOL_CALL:case S3.MALFORMED_FUNCTION_CALL:return{type:"error",error:{message:`provider failed with code '${G}': ${Z}`}};case void 0:return{type:"streaming"}}}return{role:"assistant",content:Q(),state:X(),usage:Y(),nativeMessage:{type:"vertexai",message:J}}}var OD1,MD1,fv0,t69,Uu4;var hP=G1(()=>{Zr();Zr();WY();H0();KU();wV();wH();V9();$M();K5();C5();Dx();OD1=R8.GEMINI_2_5_PRO.name,MD1=R8.GEMINI_2_5_FLASH_LITE.name,fv0=R8.GEMINI_2_5_FLASH_LITE_PREVIEW_09_2025.name,t69=R8.GEMINI_2_5_FLASH_PREVIEW_09_2025.name;Uu4={string:IQ.STRING,number:IQ.NUMBER,integer:IQ.INTEGER,boolean:IQ.BOOLEAN,object:IQ.OBJECT,array:IQ.ARRAY}});function uv0(J){return J+ ++Mu4}var Mu4=0;function gv0(J){if(!J._regex)try{J._regex=new RegExp(J.pattern,J.caseInsensitive?"gi":"g")}catch(Q){x.warn("Error compiling regex",{pattern:J.id,error:Q}),J._regex=new RegExp("$^")}return J._regex}var mv0;var pv0=G1(()=>{H0();mv0=[{id:"sourcegraph-access-token-v3",category:"sourcegraph",title:"Sourcegraph Access Token (v3)",pattern:String.raw`(sgp_(?:[a-fA-F0-9]{16}|local)_[a-fA-F0-9]{40})`,keywords:["sgp_"]},{id:"sourcegraph-access-token-v2",category:"sourcegraph",title:"Sourcegraph Access Token (v2, deprecated)",pattern:String.raw`(sgp_[a-fA-F0-9]{40})`,keywords:["sgp_"]},{id:"sourcegraph-dotcom-user-gateway",category:"sourcegraph",title:"Sourcegraph Dotcom User Gateway Access Token",pattern:String.raw`(sgd_[a-fA-F0-9]{64})`,keywords:["sgd_"]},{id:"sourcegraph-license-key",category:"sourcegraph",title:"Sourcegraph License Key Token",pattern:String.raw`(slk_[a-fA-F0-9]{64})`,keywords:["slk_"]},{id:"sourcegraph-enterprise-subscription",category:"sourcegraph",title:"Sourcegraph Enterprise subscription Token",pattern:String.raw`(sgs_[a-fA-F0-9]{64})`,keywords:["sgs_"]},{id:"sourcegraph-amp",category:"sourcegraph",title:"Sourcegraph Amp Access Token",pattern:String.raw`(sgamp_user_[A-Z0-9]{26}_[a-f0-9]{64})`,keywords:["sgamp_user_"]},{id:"sourcegraph-amp-auth-bypass",category:"sourcegraph",title:"Sourcegraph Amp Auth Bypass Token",pattern:String.raw`(sgamp_user_auth-bypass_[a-zA-Z0-9_-]+)`,keywords:["sgamp_user_auth-bypass_"]},{id:"sourcegraph-workspace-token",category:"sourcegraph",title:"Sourcegraph Workspace Access Token",pattern:String.raw`(sgp_ws[a-fA-F0-9]{32}_[a-fA-F0-9]{40})`,keywords:["sgp_ws"]},{id:"github-pat",category:"github",title:"GitHub Personal Access Token",pattern:String.raw`(ghp_[0-9a-zA-Z]{36})`,keywords:["ghp_"]},{id:"github-oauth",category:"github",title:"GitHub OAuth Access Token",pattern:String.raw`(gho_[0-9a-zA-Z]{36})`,keywords:["gho_"]},{id:"github-app-token",category:"github",title:"GitHub App Token",pattern:String.raw`((ghu|ghs)_[0-9a-zA-Z]{36})`,keywords:["ghu_","ghs_"]},{id:"github-refresh-token",category:"github",title:"GitHub Refresh Token",pattern:String.raw`(ghr_[0-9a-zA-Z]{76})`,keywords:["ghr_"]},{id:"github-fine-grained-pat",category:"github",title:"GitHub Fine-grained personal access tokens",pattern:String.raw`(github_pat_[a-zA-Z0-9]{22}_[a-zA-Z0-9]{59})`,keywords:["github_pat_"]},{id:"gitlab-pat",category:"gitlab",title:"GitLab Personal Access Token",pattern:String.raw`(glpat-[0-9a-zA-Z_-]{20})`,keywords:["glpat-"]},{id:"aws-access-key-id",category:"aws",title:"AWS Access Key ID",pattern:String.raw`((A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16})`,keywords:["AKIA","AGPA","AIDA","AROA","AIPA","ANPA","ANVA","ASIA"]},{id:"hugging-face-access-token",category:"huggingface",title:"Hugging Face Access Token",pattern:String.raw`(hf_[A-Za-z0-9]{34,40})`,keywords:["hf_"]},{id:"private-key",category:"asymmetric-private-key",title:"Asymmetric Private Key",pattern:String.raw`-----\s*?BEGIN[ A-Z0-9_-]*?PRIVATE KEY( BLOCK)?\s*?-----[\s]*?([A-Za-z0-9=+/\\\\r\n][A-Za-z0-9=+/\\\\s]+)[\s]*?-----\s*?END[ A-Z0-9_-]*? PRIVATE KEY( BLOCK)?\s*?-----`,keywords:["-----"],caseInsensitive:!0},{id:"shopify-token",category:"shopify",title:"Shopify token",pattern:String.raw`(shp(ss|at|ca|pa)_[a-fA-F0-9]{32})`,keywords:["shpss_","shpat_","shpca_","shppa_"]},{id:"slack-access-token",category:"slack",title:"Slack token",pattern:String.raw`((xox[baoprs]-|xapp-|xwfp-)([0-9a-zA-Z-]{10,100}))`,keywords:["xoxb-","xoxa-","xoxp-","xoxr-","xoxs-","xoxo-","xapp-","xwfp-"]},{id:"slack-config-refresh-token",category:"slack",title:"Slack config refresh token",pattern:String.raw`(xoxe-\d-[a-zA-Z0-9]{146})`,caseInsensitive:!0,keywords:["xoxe-"]},{id:"slack-config-access-token",category:"slack",title:"Slack config access token",pattern:String.raw`(xoxe.xox[bp]-\d-[A-Z0-9]{163,166})`,caseInsensitive:!0,keywords:["xoxe.xoxb-","xoxe.xoxp-"]},{id:"slack-web-hook",category:"slack",title:"Slack Webhook",pattern:String.raw`(https:\/\/hooks\.slack\.com\/(services|triggers|workflows)\/[A-Za-z0-9+\/]{43,56})`,caseInsensitive:!0,keywords:["hooks.slack.com"]},{id:"stripe-secret-token",category:"stripe",title:"Stripe Secret Key",pattern:String.raw`(sk_(test|live)_[0-9a-z]{10,99})`,keywords:["sk_test_","sk_live_"],caseInsensitive:!0},{id:"supabase-service-key",category:"supabase",title:"Supabase Service Key",pattern:String.raw`(sbp_[a-fA-F0-9]{40})`,keywords:["sbp_"]},{id:"pypi-upload-token",category:"pypi",title:"PyPI upload token",pattern:String.raw`(pypi-AgEIcHlwaS5vcmc[A-Za-z0-9_-]{50,1000})`,keywords:["pypi-AgEIcHlwaS5vcmc"]},{id:"gcp-service-account",category:"google",title:"Google (GCP) Service-account",pattern:String.raw`("type": "service_account")`,keywords:['"type": "service_account"']},{id:"heroku-api-key",category:"heroku",title:"Heroku API Key",pattern:String.raw`(?:heroku[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"](\d[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12})['"]`,keywords:["heroku"],caseInsensitive:!0},{id:"twilio-api-key",category:"twilio",title:"Twilio API Key",pattern:String.raw`(SK[0-9a-fA-F]{32})`,keywords:["SK"]},{id:"age-secret-key",category:"age",title:"Age secret key",pattern:String.raw`(AGE-SECRET-KEY-1[QPZRY9X8GF2TVDW0S3JN54KHCE6MUA7L]{58})`,keywords:["AGE-SECRET-KEY-1"]},{id:"jwt-token",category:"jwt",title:"JWT token",pattern:String.raw`(ey[a-zA-Z0-9]{17,}\.ey[a-zA-Z0-9/\\_-]{17,}\.(?:[a-zA-Z0-9/\\_-]{10,}={0,2})?)`,keywords:[".eyJ"]},{id:"npm-access-token",category:"npm",title:"npm access token",pattern:String.raw`(npm_[a-z0-9]{36})`,keywords:["npm_"],caseInsensitive:!0},{id:"sendgrid-api-token",category:"sendgrid",title:"SendGrid API token",pattern:String.raw`(SG\.[a-z0-9_.-]{66})`,keywords:["SG."],caseInsensitive:!0},{id:"aws-secret-access-key",category:"aws",title:"AWS Secret Access Key",pattern:String.raw`(aws[_-]secret[_-]access[_-]key[_-][A-Za-z0-9/+=]{40})`,keywords:["key"],caseInsensitive:!0},{id:"dockerconfig-secret",category:"docker",title:"Dockerconfig secret exposed",pattern:String.raw`((\.dockerconfigjson|dockercfg):\s*\|*\s*((ey|ew)+[A-Za-z0-9/+=]+))`,keywords:["dockerc"],caseInsensitive:!0},{id:"linear-api-token",category:"linear",title:"Linear API token",pattern:String.raw`(lin_api_[a-z0-9]{40})`,keywords:["lin_api_"],caseInsensitive:!0},{id:"sendinblue-api-token",category:"sendinblue",title:"Sendinblue API token",pattern:String.raw`(xkeysib-[a-f0-9]{64}-[a-z0-9]{16})`,keywords:["xkeysib-"],caseInsensitive:!0},{id:"planetscale-api-token",category:"planetscale",title:"PlanetScale API token",pattern:String.raw`(pscale_tkn_[a-z0-9_.-]{43})`,keywords:["pscale_tkn_"],caseInsensitive:!0},{id:"doppler-api-token",category:"doppler",title:"Doppler API token",pattern:String.raw`(dp\.pt\.[a-z0-9]{43})`,keywords:["dp.pt."],caseInsensitive:!0},{id:"discord-api-token",category:"discord",title:"Discord API key",pattern:String.raw`(?:discord[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-h0-9]{64})['"]`,keywords:["discord"],caseInsensitive:!0},{id:"pulumi-api-token",category:"pulumi",title:"Pulumi API token",pattern:String.raw`(pul-[a-f0-9]{40})`,keywords:["pul-"]},{id:"postman-api-token",category:"postman",title:"Postman API token",pattern:String.raw`(PMAK-[a-f0-9]{24}-[a-f0-9]{34})`,keywords:["PMAK-"],caseInsensitive:!0},{id:"facebook-token",category:"facebook",title:"Facebook token",pattern:String.raw`(?:facebook[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-f0-9]{32})['"]`,keywords:["facebook"],caseInsensitive:!0},{id:"twitter-token",category:"twitter",title:"Twitter token",pattern:String.raw`(?:twitter[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-f0-9]{35,44})['"]`,keywords:["twitter"],caseInsensitive:!0},{id:"adobe-client-id",category:"adobe",title:"Adobe Client ID (Oauth Web)",pattern:String.raw`(?:adobe[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-f0-9]{32})['"]`,keywords:["adobe"],caseInsensitive:!0},{id:"adobe-client-secret",category:"adobe",title:"Adobe Client Secret",pattern:String.raw`(p8e-[a-z0-9]{32})`,keywords:["p8e-"],caseInsensitive:!0},{id:"alibaba-access-key-id",category:"alibaba",title:"Alibaba AccessKey ID",pattern:String.raw`((LTAI)[a-z0-9]{20})`,keywords:["LTAI"],caseInsensitive:!0},{id:"alibaba-secret-key",category:"alibaba",title:"Alibaba Secret Key",pattern:String.raw`(?:alibaba[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-z0-9]{30})['"]`,keywords:["alibaba"],caseInsensitive:!0},{id:"asana-client-id",category:"asana",title:"Asana Client ID",pattern:String.raw`(?:asana[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([0-9]{16})['"]`,keywords:["asana"],caseInsensitive:!0},{id:"asana-client-secret",category:"asana",title:"Asana Client Secret",pattern:String.raw`(?:asana[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-z0-9]{32})['"]`,keywords:["asana"],caseInsensitive:!0},{id:"atlassian-api-token",category:"atlassian",title:"Atlassian API token",pattern:String.raw`(?:atlassian[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-z0-9]{24})['"]`,keywords:["atlassian"],caseInsensitive:!0},{id:"beamer-api-token",category:"beamer",title:"Beamer API token",pattern:String.raw`(?:beamer[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"](b_[a-z0-9=_-]{44})['"]`,keywords:["beamer"],caseInsensitive:!0},{id:"buildkite-agent-token",category:"buildkite",title:"Buildkite API Token V2",pattern:String.raw`(bkua_[a-fA-F0-9]{40})`,keywords:["bkua_"]},{id:"clojars-api-token",category:"clojars",title:"Clojars API token",pattern:String.raw`(CLOJARS_[a-z0-9]{60})`,keywords:["CLOJARS_"],caseInsensitive:!0},{id:"contentful-delivery-api-token",category:"contentful-delivery",title:"Contentful delivery API token",pattern:String.raw`(?:contentful[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-z0-9=_-]{43})['"]`,keywords:["contentful"],caseInsensitive:!0},{id:"databricks-api-token",category:"databricks",title:"Databricks API token",pattern:String.raw`(dapi[a-h0-9]{32})`,keywords:["dapi"]},{id:"discord-client-id",category:"discord",title:"Discord client ID",pattern:String.raw`(?:discord[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([0-9]{18})['"]`,keywords:["discord"],caseInsensitive:!0},{id:"discord-client-secret",category:"discord",title:"Discord client secret",pattern:String.raw`(?:discord[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-z0-9=_-]{32})['"]`,keywords:["discord"],caseInsensitive:!0},{id:"dropbox-api-secret",category:"dropbox",title:"Dropbox API secret/key",pattern:String.raw`(?:dropbox[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-z0-9]{15})['"]`,keywords:["dropbox"],caseInsensitive:!0},{id:"dropbox-short-lived-api-token",category:"dropbox",title:"Dropbox short lived API token",pattern:String.raw`(?:dropbox[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"](sl\.[a-z0-9=_-]{135})['"]`,keywords:["dropbox"],caseInsensitive:!0},{id:"dropbox-long-lived-api-token",category:"dropbox",title:"Dropbox long lived API token",pattern:String.raw`(?:dropbox[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-z0-9]{11}(AAAAAAAAAA)[a-z0-9_=-]{43})['"]`,keywords:["dropbox"],caseInsensitive:!0},{id:"duffel-api-token",category:"duffel",title:"Duffel API token",pattern:String.raw`(duffel_(test|live)_[a-z0-9_-]{43})`,keywords:["duffel_test_","duffel_live_"],caseInsensitive:!0},{id:"dynatrace-api-token",category:"dynatrace",title:"Dynatrace API token",pattern:String.raw`(dt0c01\.[a-z0-9]{24}\.[a-z0-9]{64})`,keywords:["dt0c01."],caseInsensitive:!0},{id:"easypost-api-token",category:"easypost",title:"EasyPost API token",pattern:String.raw`(EZ[AT]K[a-z0-9]{54})`,keywords:["EZAK","EZAT"],caseInsensitive:!0},{id:"fastly-api-token",category:"fastly",title:"Fastly API token",pattern:String.raw`(?:fastly[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-z0-9=_-]{32})['"]`,keywords:["fastly"],caseInsensitive:!0},{id:"finicity-client-secret",category:"finicity",title:"Finicity client secret",pattern:String.raw`(?:finicity[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-z0-9]{20})['"]`,keywords:["finicity"],caseInsensitive:!0},{id:"finicity-api-token",category:"finicity",title:"Finicity API token",pattern:String.raw`(?:finicity[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-f0-9]{32})['"]`,keywords:["finicity"],caseInsensitive:!0},{id:"flutterwave-public-key",category:"flutterwave",title:"Flutterwave public/secret key",pattern:String.raw`(FLW(PUB|SEC)K_TEST-[a-h0-9]{32}-X)`,keywords:["FLWSECK_TEST-","FLWPUBK_TEST-"],caseInsensitive:!0},{id:"flutterwave-enc-key",category:"flutterwave",title:"Flutterwave encrypted key",pattern:String.raw`(FLWSECK_TEST[a-h0-9]{12})`,keywords:["FLWSECK_TEST"]},{id:"frameio-api-token",category:"frameio",title:"Frame.io API token",pattern:String.raw`(fio-u-[a-z0-9_=-]{64})`,keywords:["fio-u-"],caseInsensitive:!0},{id:"gocardless-api-token",category:"gocardless",title:"GoCardless API token",pattern:String.raw`(live_[a-z0-9_=-]{40})`,keywords:["live_"],caseInsensitive:!0},{id:"grafana-api-token",category:"grafana",title:"Grafana API token",pattern:String.raw`(eyJrIjoi[a-z0-9_=-]{72,92})`,keywords:["eyJrIjoi"],caseInsensitive:!0},{id:"hashicorp-tf-api-token",category:"hashicorp",title:"HashiCorp Terraform user/org API token",pattern:String.raw`([a-z0-9]{14}\.atlasv1\.[a-z0-9_=-]{60,70})`,keywords:["atlasv1."],caseInsensitive:!0},{id:"hubspot-api-token",category:"hubspot",title:"HubSpot API token",pattern:String.raw`(?:hubspot[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-h0-9]{8}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{12})['"]`,keywords:["hubspot"],caseInsensitive:!0},{id:"intercom-api-token",category:"intercom",title:"Intercom API token",pattern:String.raw`(?:intercom[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-z0-9=_]{60})['"]`,keywords:["intercom"],caseInsensitive:!0},{id:"intercom-client-secret",category:"intercom",title:"Intercom client secret/ID",pattern:String.raw`(?:intercom[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-h0-9]{8}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{12})['"]`,keywords:["intercom"],caseInsensitive:!0},{id:"ionic-api-token",category:"ionic",title:"Ionic API token",pattern:String.raw`(?:ionic[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"](ion_[a-z0-9]{42})['"]`,keywords:["ionic"],caseInsensitive:!0},{id:"linear-client-secret",category:"linear",title:"Linear client secret/ID",pattern:String.raw`(?:linear[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-f0-9]{32})['"]`,keywords:["linear"],caseInsensitive:!0},{id:"lob-api-key",category:"lob",title:"Lob API Key",pattern:String.raw`(?:lob[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]((live|test)_[a-f0-9]{35})['"]`,keywords:["lob"],caseInsensitive:!0},{id:"mailchimp-api-key",category:"mailchimp",title:"Mailchimp API key",pattern:String.raw`(?:mailchimp[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-f0-9]{32}-us20)['"]`,keywords:["mailchimp"],caseInsensitive:!0},{id:"mailgun-token",category:"mailgun",title:"Mailgun private API token",pattern:String.raw`(?:mailgun[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]((pub)?key-[a-f0-9]{32})['"]`,keywords:["mailgun"],caseInsensitive:!0},{id:"mailgun-signing-key",category:"mailgun",title:"Mailgun webhook signing key",pattern:String.raw`(?:mailgun[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-h0-9]{32}-[a-h0-9]{8}-[a-h0-9]{8})['"]`,keywords:["mailgun"],caseInsensitive:!0},{id:"mapbox-api-token",category:"mapbox",title:"Mapbox API token",pattern:String.raw`(pk\.[a-z0-9]{60}\.[a-z0-9]{22})`,keywords:["pk."],caseInsensitive:!0},{id:"messagebird-api-token",category:"messagebird",title:"MessageBird API token",pattern:String.raw`(?:messagebird[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-z0-9]{25})['"]`,keywords:["messagebird"],caseInsensitive:!0},{id:"messagebird-client-id",category:"messagebird",title:"MessageBird API client ID",pattern:String.raw`(?:messagebird[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-h0-9]{8}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{12})['"]`,keywords:["messagebird"],caseInsensitive:!0},{id:"new-relic-user-api-key",category:"newrelic",title:"New Relic user API Key",pattern:String.raw`(NRAK-[A-Z0-9]{27})`,keywords:["NRAK-"]},{id:"new-relic-user-api-id",category:"newrelic",title:"New Relic user API ID",pattern:String.raw`(?:newrelic[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([A-Z0-9]{64})['"]`,keywords:["newrelic"],caseInsensitive:!0},{id:"new-relic-browser-api-token",category:"newrelic",title:"New Relic ingest browser API token",pattern:String.raw`(NRJS-[a-f0-9]{19})`,keywords:["NRJS-"]},{id:"planetscale-password",category:"planetscale",title:"PlanetScale password",pattern:String.raw`(pscale_pw_[a-z0-9_.-]{43})`,keywords:["pscale_pw_"],caseInsensitive:!0},{id:"private-packagist-token",category:"private-packagist",title:"Private Packagist token",pattern:String.raw`(packagist_[ou][ru]t_[a-f0-9]{68})`,keywords:["packagist_uut_","packagist_ort_","packagist_out_"],caseInsensitive:!0},{id:"rubygems-api-token",category:"rubygems",title:"Rubygem API token",pattern:String.raw`(rubygems_[a-f0-9]{48})`,keywords:["rubygems_"]},{id:"shippo-api-token",category:"shippo",title:"Shippo API token",pattern:String.raw`(shippo_(live|test)_[a-f0-9]{40})`,keywords:["shippo_live_","shippo_test_"]},{id:"linkedin-client-secret",category:"linkedin",title:"LinkedIn Client secret",pattern:String.raw`(?:linkedin[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-z]{16})['"]`,keywords:["linkedin"],caseInsensitive:!0},{id:"linkedin-client-id",category:"linkedin",title:"LinkedIn Client ID",pattern:String.raw`(?:linkedin[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-z0-9]{14})['"]`,keywords:["linkedin"],caseInsensitive:!0},{id:"twitch-api-token",category:"twitch",title:"Twitch API token",pattern:String.raw`(?:twitch[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-z0-9]{30})['"]`,keywords:["twitch"],caseInsensitive:!0},{id:"typeform-api-token",category:"typeform",title:"Typeform API token",pattern:String.raw`(?:typeform[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}(tfp_[a-z0-9_.=-]{59})`,keywords:["typeform"],caseInsensitive:!0},{id:"todoist-api-token",category:"todoist",title:"Todoist API token",pattern:String.raw`(?:todoist[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:)[\s'"]{0,3}([0-9a-f]{40})`,keywords:["todoist"],caseInsensitive:!0},{id:"openai-api-key",category:"openai",title:"OpenAI API Key",pattern:String.raw`(sk-[a-zA-Z0-9]{50})`,caseInsensitive:!1,keywords:["sk-"]},{id:"openai-api-key-project",category:"openai",title:"OpenAI Project-scoped API Key",pattern:String.raw`(sk-proj-[A-Za-z0-9]{24}-[A-Za-z0-9]{40,128})`,caseInsensitive:!0,keywords:["sk-proj-"]},{id:"openai-api-key-env",category:"openai",title:"OpenAI Environment-scoped API Key",pattern:String.raw`(sk-(?:live|test)-[A-Za-z0-9]{24}-[A-Za-z0-9]{40,128})`,caseInsensitive:!0,keywords:["sk-live-","sk-test-"]},{id:"anthropic-api-key",category:"anthropic",title:"Anthropic API Key",pattern:String.raw`(sk-ant-([a-zA-Z0-9]{1,10}-)?[a-zA-Z0-9_-]{32,128})`,caseInsensitive:!1,keywords:["sk-ant-"]},{id:"canva-token",category:"canva",title:"Canva Token",pattern:String.raw`\b(cnv[a-z0-9]{2}[A-Za-z0-9_=-]+[a-f0-9]{8})\b`,caseInsensitive:!1,keywords:["cnv"]},{id:"api-key",category:"unknown",title:"Unknown API Key",pattern:String.raw`(?:[a-z0-9_ .,-]{0,25}api[-_](?:key|token)(?!length|count|max|min|maxlength|_length|_count|_min|_maxlength)[a-z0-9_ .,-]{0,25})\s*(?:=|>|:=|\|\|:|<=|=>|:)\s*['"]?((?!.*(?:api|key|secret|foo|example|dummy|password|12345|abcde|placeholder|fake|token))[a-z0-9+/_-]{6,128})['"]?(?=\s|$|[;,\]})'"])`,keywords:["api-key","api_key","api-token","api_token"],caseInsensitive:!0},{id:"webhook-secret",category:"unknown",title:"Unknown Webhook Secret",pattern:String.raw`(?:[a-z0-9_ .,-]{0,25}webhook[-_]secret(?!length|count|max|min|maxlength|_length|_count|_min|_maxlength)[a-z0-9_ .,-]{0,25})\s*(?:=|>|:=|\|\|:|<=|=>|:)\s*['"]?((?!.*(?:api|key|secret|foo|example|dummy|password|12345|abcde|placeholder|fake|token|webhook))[a-z0-9+/=_-]{6,128})['"]?(?=\s|$|[;,\]})'"])`,keywords:["webhook-secret","webhook_secret"],caseInsensitive:!0},{id:"password",category:"unknown",title:"Unknown Password",pattern:String.raw`(?:[a-z0-9_ .,-]{0,25}password(?!length|count|max|min|maxlength|_length|_count|_min|_maxlength)[a-z0-9_ .,-]{0,25})\s*(?:=|>|:=|\|\|:|<=|=>|:)\s*['"]?((?!.*(?:api|key|secret|foo|example|dummy|password|12345|abcde|placeholder|fake|token|password|pass|pwd))[a-z0-9+/=_-]{6,128})['"]?(?=\s|$|[;,\]})'"])`,keywords:["password"],caseInsensitive:!0},{id:"sk-secret",category:"unknown",title:"Unknown SK Secret",pattern:String.raw`(?:^|['"\s])(sk(?:[-_][a-z0-9]{1,10})?[-_][a-z0-9]{10,99})(?:$|['"\s])`,caseInsensitive:!0,keywords:["sk-","sk_"]}]});function Au4(J){if(!J||typeof J!=="string")return J;let Q=J.replace(Lu4,"");if(Q.length!==J.length){let Y=J.length-Q.length;x.info("Invisible Unicode tag characters removed during sanitization",{removedCount:Y})}return Q}function wu4(J){if(!J||typeof J!=="string")return J;let Q=Au4(J);for(let Y of mv0){if(!Y.keywords.some((G)=>Y.caseInsensitive?Q.toLowerCase().includes(G.toLowerCase()):Q.includes(G)))continue;let X=gv0(Y);Q=Q.replace(X,(G,Z)=>{return G.replace(Z,`[REDACTED:${Y.id}]`)})}return Q}function to(J,Q){if(!J||typeof J==="number"||typeof J==="boolean")return J;if(typeof J==="string")return Q(J);if(Array.isArray(J))return J.map((Y)=>{if(typeof Y==="string")return Q(Y);else if(Y&&typeof Y==="object")return to(Y,Q);return Y});if(J&&typeof J==="object"){if("type"in J&&(J.type==="base64"||J.type==="image")&&"data"in J)return{...J};if("isImage"in J&&J.isImage===!0&&"content"in J&&typeof J.content==="string"){let Y={};for(let[X,G]of Object.entries(J))if(X==="content")Y[X]=G;else Y[X]=to(G,Q);return Y}}return Object.fromEntries(Object.entries(J).map(([Y,X])=>[Y,to(X,Q)]))}function eo(J){return to(J,wu4)}var Lu4;var dv0=G1(()=>{H0();pv0();Lu4=/[\uDB40][\uDC00-\uDC7F]/g});function Eu4(J){return{[a5]:"oracle",[t3]:"subagent",[t8]:"codebase-search",[hE]:"codebase-search",[bE]:"codebase-search",[fF]:"codebase-search",[uE]:"codebase-search",[xF]:"codebase-search"}[J]||null}function Iu4(J,Q){let Y=J["~debug"];if(!Y)return null;x.debug("Extracting usage from tool debug info",{operationType:Q,debugInfoKeys:Object.keys(Y),hasUsage:!!Y.usage,hasInferences:Array.isArray(Y.inferences),inferenceCount:Array.isArray(Y.inferences)?Y.inferences.length:0});let X=[];if(Q==="subagent"){if(Y.usage)X=[{usage:Y.usage}];else if(Array.isArray(Y.inferences))X=Y.inferences}else X=Array.isArray(Y.inferences)?Y.inferences:[];if(X.length===0)return x.debug("No inferences found in tool debug",{operationType:Q}),null;let G=Pu4(X);return x.debug("Aggregated tool usage from inferences",{operationType:Q,inferenceCount:X.length,totalCredits:G.credits}),G}function Pu4(J){let Q=J.reduce((X,G)=>({inputTokens:X.inputTokens+(G.usage?.inputTokens??0),outputTokens:X.outputTokens+(G.usage?.outputTokens??0),cacheCreationInputTokens:X.cacheCreationInputTokens+(G.usage?.cacheCreationInputTokens??0),cacheReadInputTokens:X.cacheReadInputTokens+(G.usage?.cacheReadInputTokens??0),credits:X.credits+(G.usage?.credits??0)}),{inputTokens:0,outputTokens:0,cacheCreationInputTokens:0,cacheReadInputTokens:0,credits:0}),Y=J[J.length-1]?.usage;return{model:Y?.model,maxInputTokens:Y?.maxInputTokens??0,inputTokens:Q.inputTokens,outputTokens:Q.outputTokens,totalInputTokens:Q.inputTokens+Q.cacheCreationInputTokens+Q.cacheReadInputTokens,cacheCreationInputTokens:Q.cacheCreationInputTokens,cacheReadInputTokens:Q.cacheReadInputTokens,credits:Q.credits}}function Tu4(J,Q){if(Q==="subagent")return J["~debug"]?.threadID||J.threadID;return}function Ru4(J){let Q,Y=-1;for(let G=J.length-1;G>=0;G--){let Z=J[G];if(Z?.role==="assistant"){Q=Z.messageId,Y=G;break}}if(Y===-1)return{fromMessageId:void 0,toMessageId:Q};let X;for(let G=Y-1;G>=0;G--){let Z=J[G];if(Z?.role==="user"){X=Z.messageId;break}}return{fromMessageId:X,toMessageId:Q}}function cv0(J,Q,Y){let X=iE(J,Q);if(!X?.block?.name){x.debug("Tool block not found for ledger extraction",{toolUse:Q});return}let G=Eu4(X.block.name);if(x.debug("Processing tool completion for ledger",{toolName:X.block.name,toolUse:Q,operationType:G,hasDebugInfo:!!Y["~debug"],debugKeys:Y["~debug"]?Object.keys(Y["~debug"]):[]}),!G)return;let Z=Iu4(Y,G);if(!Z){x.debug("No usage extracted from tool debug info",{toolName:X.block.name,operationType:G,hasDebug:!!Y["~debug"]});return}let q=Tu4(Y,G),V;for(let K of J.messages)if(K.role==="assistant"&&Array.isArray(K.content)){for(let W of K.content)if(W.type==="tool_use"&&W.id===Q){V=K.messageId;break}if(V!==void 0)break}x.debug("Adding tool usage to thread ledger",{toolName:X.block.name,operationType:G,credits:Z.credits,subagentThreadID:q,triggeringMessageId:V}),bx(J,Z,G,q,V,Q)}function bx(J,Q,Y="inference",X,G,Z){if(!J.usageLedger)J.usageLedger={events:[]};let q,V;if(Y==="inference"&&J.messages){let H=Ru4(J.messages);q=H.fromMessageId,V=H.toMessageId}else if(G!==void 0)q=G,V=G;let K={id:crypto.randomUUID(),timestamp:new Date().toISOString(),model:Q.model,credits:Q.credits??0,tokens:{input:Q.inputTokens??0,output:Q.outputTokens??0},operationType:Y,subagentThreadID:X,fromMessageId:q,toMessageId:V,toolUseID:Z};J.usageLedger.events.push(K);let W=J.usageLedger.events.reduce((H,z)=>H+z.credits,0);x.debug("usage-ledger:event",{threadId:J.id,operationType:Y,eventId:K.id,toolUseID:Z,addedCredits:K.credits,totalCredits:W,eventCount:J.usageLedger.events.length,fromMessageId:q,toMessageId:V})}function lv0(J){return J.usageLedger?.events.reduce((Q,Y)=>Q+Y.credits,0)??0}function iv0(J,Q){let Y=J.usageLedger?.events??[],X=new Map;for(let Z of Y){let q=Z.model?.trim()||"unknown",V=`${q}|${Z.operationType}`,K=X.get(V)??{model:q,operationType:Z.operationType,credits:0,tokensIn:0,tokensOut:0};K.credits+=Z.credits||0,K.tokensIn+=Z.tokens?.input||0,K.tokensOut+=Z.tokens?.output||0,X.set(V,K)}let G=Array.from(X.values());if(!Q?.includeZero)G=G.filter((Z)=>Z.credits>0);return G.sort((Z,q)=>q.credits-Z.credits||Z.model.localeCompare(q.model)||Z.operationType.localeCompare(q.operationType)),G}function nv0(J){let Q=new Map,Y=0,X=0,G=0;for(let q of J){let V=Q.get(q.model);if(!V)V={model:q.model,totalCredits:0,totalTokensIn:0,totalTokensOut:0,rows:[]},Q.set(q.model,V);V.rows.push({operationType:q.operationType,credits:q.credits,tokensIn:q.tokensIn,tokensOut:q.tokensOut}),V.totalCredits+=q.credits,V.totalTokensIn+=q.tokensIn,V.totalTokensOut+=q.tokensOut,Y+=q.credits,X+=q.tokensIn,G+=q.tokensOut}let Z=Array.from(Q.values());Z.sort((q,V)=>V.totalCredits-q.totalCredits||q.model.localeCompare(V.model));for(let q of Z)q.rows.sort((V,K)=>K.credits-V.credits||V.operationType.localeCompare(K.operationType));return{models:Z,grandTotal:{credits:Y,tokensIn:X,tokensOut:G}}}function Js(J,Q){return J.usageLedger?.events.filter((Y)=>Y.toolUseID===Q).reduce((Y,X)=>Y+X.credits,0)??0}function wD1(J){if(J?.role!=="user")return!1;let Q=Array.isArray(J.content)?J.content:[];if(Q.length===0)return!1;return Q.every((Y)=>Y&&Y.type==="tool_result")}function Cu4(J,Q){for(let Y=J.length-1;Y>=0;Y--){let X=J[Y];if(X?.messageId===Q){if(X.role==="user"&&!wD1(X))return Q;if(X.role==="user"&&wD1(X))for(let G=Y-1;G>=0;G--){let Z=J[G];if(Z?.role==="user"&&!wD1(Z))return Z.messageId}break}}return Q}function av0(J){if(!J.usageLedger?.events.length||!J.messages)return 0;let Q=J.usageLedger.events.filter((G)=>G.operationType==="inference");if(!Q.length)return 0;let Y=Q[Q.length-1];if(!Y||Y.fromMessageId===void 0)return Y?.credits??0;let X=Cu4(J.messages,Y.fromMessageId);return J.usageLedger.events.filter((G)=>G.fromMessageId!==void 0&&G.fromMessageId>=X).reduce((G,Z)=>G+Z.credits,0)}var bP=G1(()=>{H0();K4();V9()});function ju4(J){return J?J.length>=Su4:!1}function TH(J){if(J.nextMessageId===void 0)J.nextMessageId=0;return J.nextMessageId++}function _u4(J,Q){J["~debug"]={...J["~debug"]??{},...Q.usage?{lastInferenceUsage:Q.usage}:{}}}function rv0(J){return(Q)=>{switch(Q.v++,J.type){case"cancelled":{Qs(Q);let Y=Q.messages.at(-1);if(Y?.role==="user"){let X=Y.content.findLast((G)=>G.type==="tool_result");if(X)X.run.status="cancelled"}break}case"user:message:interrupt":{let Y=Q.messages[J.messageIndex];if(Y?.role==="user")Y.interrupted=!0;break}case"artifact:update":{if(!Q.artifacts)Q.artifacts={};let Y=Q.artifacts[J.artifactId];Q.artifacts[J.artifactId]={type:"plan",content:J.content,created:Y?.created??Date.now(),updated:Date.now(),version:J.version??(Y?.version??0)+1};break}case"summary:created":{if(J.summary.type==="external"){if(!Q.summaryThreads)Q.summaryThreads=[];Q.summaryThreads.push(J.summary.summaryThreadID),Q.messages.push({role:"info",messageId:TH(Q),content:[{type:"summary",summary:{type:"thread",thread:J.summary.summaryThreadID}}]})}else if(J.summary.type==="internal"){let Y=TH(Q);if(Q.messages.push({role:"info",messageId:Y,content:[{type:"summary",summary:{type:"message",summary:J.summary.summary}}]}),J.summary.usage)x.debug("summary:created delta handler: adding usage to ledger",{usage:{...J.summary.usage},messageId:Y,threadId:Q.id}),bx(Q,J.summary.usage,"summarization",void 0,Y);else x.warn("summary:created delta handler: no usage in internal summary")}break}case"fork:created":{if(!Q.forkThreads)Q.forkThreads={};let Y=Q.forkThreads[J.fromMessageIndex]||[];Q.forkThreads={...Q.forkThreads,[J.fromMessageIndex]:[...Y,J.forkThreadID]},Q.v++;break}case"thread:truncate":{if(Q.messages.splice(J.fromIndex),Q.forkThreads){let Y=[];for(let X in Q.forkThreads){let G=Number(X);if(G>=J.fromIndex)Y.push(G)}for(let X of Y)delete Q.forkThreads[X];if(Object.keys(Q.forkThreads).length===0)Q.forkThreads=void 0}break}case"user:message":{Qs(Q);let Y={role:"user",messageId:TH(Q),...J.message,content:J.message.content??[]},X=eo(Y);if(J.index!==void 0){if(!Q.messages[J.index])throw Error(`user message at index ${J.index} not found`);let G=Q.messages[J.index];if(Q.messages.filter((V)=>V.role==="user")[0]===G&&Y.agentMode&&!Q.mainThreadID)Q.agentMode=Y.agentMode;Q.messages.splice(J.index,Q.messages.length-J.index,X)}else{let G=PZ(Q)===0;if((!Q.agentMode||G)&&Y.agentMode&&!Q.mainThreadID)Q.agentMode=Y.agentMode;if(Q.messages.push(X),Y.agentMode==="plan"&&Q.messages.length===1&&!Q.artifacts?.plan){if(!Q.artifacts)Q.artifacts={};let Z=Date.now();Q.artifacts.plan={type:"plan",content:CZ,created:Z,version:0,updated:Z}}if(Q.draft)Q.draft=void 0}break}case"user:message-queue:dequeue":{if(Qs(Q),!Q.queuedMessages)return;let[Y,...X]=Q.queuedMessages;if(!Y)return;Q.messages.push(Y.queuedMessage),Q.queuedMessages=X;break}case"user:tool-input":{if(!U$(Q,J.toolUse)){x.debug(`Ignoring user:tool-input delta for missing tool use ${J.toolUse} (likely deleted due to thread edit/truncation)`);break}let X=x8(bF(Q,J.toolUse));if(!X){x.debug(`Ignoring user:tool-input delta for missing tool result block ${J.toolUse} (likely deleted due to thread edit/truncation)`);break}X.userInput=J.value;break}case"tool:data":{if(!iE(Q,J.toolUse)){x.debug(`Ignoring tool:data delta for missing tool use ${J.toolUse} (likely deleted due to thread edit/truncation)`);break}let X=x8(eo(J.data));if(ov0(Q,J.toolUse,X),X&&"status"in X&&X.status==="done"){if(cv0(Q,J.toolUse,X),X.result&&typeof X.result==="object"&&"artifact"in X.result&&X.result.artifact&&typeof X.result.artifact==="object"&&"id"in X.result.artifact&&"content"in X.result.artifact){let{id:G,content:Z}=X.result.artifact;if(!Q.artifacts)Q.artifacts={};let q=Q.artifacts[G],V=q?.created??Date.now(),K=q?.version??0;Q.artifacts[G]={type:"plan",content:Z,created:V,updated:Date.now(),version:K+1}}}break}case"tool:processed":{let Y=iE(Q,J.toolUse);if(!Y){x.debug(`Ignoring tool:processed delta for missing tool use ${J.toolUse} (likely deleted due to thread edit/truncation)`);break}let X=Y.block.input;Y.block.input=J.newArgs,Y.message.originalToolUseInput={...Y.message.originalToolUseInput,[J.toolUse]:X};break}case"assistant:message":{let Y=e3(Q,"assistant"),X=Y?.content.filter((Z)=>Z.type==="tool_use").map((Z)=>Z.id)||[];if(Qs(Q),Y?.state.type==="cancelled"){for(let Z of Q.messages)if(Z.role==="user")Z.content=Z.content.filter((q)=>{if(q.type==="tool_result"&&X.includes(q.toolUseID))return!1;return!0})}let G={...J.message,messageId:TH(Q)};Q.messages.push(x8(G));break}case"assistant:message-update":{let Y=x8(J.message),X=Q.messages.at(-1);if(X?.role==="assistant")Q.messages=[...Q.messages.slice(0,-1),{...Y,messageId:X?.messageId}];else Q.messages=[...Q.messages,{...Y,messageId:TH(Q)}];break}case"inference:completed":{if(_u4(Q,{usage:J.usage}),!Q.env)Q.env={initial:{}};if(!Q.env.initial.tags)Q.env.initial.tags=[];let Y=`model:${J.model}`;if(!Q.env.initial.tags.includes(Y))Q.env.initial.tags=[...Q.env.initial.tags,Y];if(J.usage){let X=x8(e3(Q,"assistant"));if(bx(Q,J.usage,"inference"),X){let G=av0(Q);X.usage={...J.usage,creditsSinceLastUserMessage:G}}}break}case"title":{if(Q.title=J.value||void 0,J.usage)bx(Q,J.usage,"title-generation",void 0,0);break}case"max-tokens":{Q.maxTokens=J.value||void 0;break}case"main-thread":{Q.mainThreadID=J.value||void 0;break}case"agent-mode":{if(PZ(Q)>0)throw Error("(bug) cannot change agentMode after first message");Q.agentMode=J.mode;break}case"environment":{Q.env=x8(J.env);break}case"user:message-queue:enqueue":{if(!Q.queuedMessages)Q.queuedMessages=[];if(ju4(Q.queuedMessages))break;let Y={role:"user",messageId:TH(Q),...J.message,content:J.message.content??[]},X=eo(Y);Q.queuedMessages.push({id:uv0("queued-"),queuedMessage:x8(X)});break}case"user:message-queue:discard":{if(J.id===void 0){Q.queuedMessages=[];break}let Y=Q.queuedMessages?.findIndex((X)=>X.id===J.id);if(Y===void 0)throw Error(`queued message with id ${J.id} not found`);Q?.queuedMessages?.splice(Y,1);break}case"info:manual-bash-invocation":{Q.messages.push({role:"info",messageId:TH(Q),content:[{type:"manual_bash_invocation",args:x8(J.args),toolRun:x8(J.toolRun),hidden:J.hidden}]});break}case"info:skill-injection":{Q.messages.push({role:"info",messageId:TH(Q),content:[{type:"text",text:J.content}]});break}}}}function Qs(J){let Q=x8(e3(J,"assistant"));if(!Q)return;let Y=!1,X=[];if(Q.state.type==="streaming")Q.state={type:"cancelled"},Y=!0;else if(Q.state.type==="complete"){if(Q.content.some((Z)=>Z.type==="tool_use"&&!P3(Z)))Q.state={type:"cancelled"},Y=!0}if(Y){for(let Z=0;Z<Q.content.length;Z++){let q=Q.content[Z];if(q?.type==="tool_use"&&!P3(q)){X.push(q.id),x.debug(`Cleaning up incomplete tool_use ${q.id}`,{name:"markPriorStreamingAssistantMessageAsCancelled",threadID:J.id,blockID:q.id});let V={type:"tool_use",id:q.id,name:q.name,complete:!0,input:q.inputIncomplete??q.input??{}};Q.content[Z]=V}}let G=iJ(J);for(let Z of X)if(!G.has(Z))ov0(J,Z,{status:"cancelled"})}}function ov0(J,Q,Y){let X,G=iE(J,Q);if(G){let q=G.messageIndex;for(let V=q+1;V<J.messages.length;V++){let K=J.messages[V];if(K?.role==="user"){X=K;break}}}if(!X)X={role:"user",messageId:TH(J),content:[]},J.messages.push(X);let Z=bF(J,Q);if(Z)Z.run=x8(Y);else Z={type:"tool_result",toolUseID:Q,run:x8(Y)},X.content.push(Z)}function Ys(J){try{return fX(J.replace(/\\+$/,"")+'"')}catch{return fX(J)}}var Su4=5;var $s=G1(()=>{eD();WY();H0();dv0();V9();bP()});function L4(J,Q,Y,X,G){if(X==="m")throw TypeError("Private method is not writable");if(X==="a"&&!G)throw TypeError("Private accessor was defined without a setter");if(typeof Q==="function"?J!==Q||!G:!Q.has(J))throw TypeError("Cannot write private member to an object whose class did not declare it");return X==="a"?G.call(J,Y):G?G.value=Y:Q.set(J,Y),Y}function O0(J,Q,Y,X){if(Y==="a"&&!X)throw TypeError("Private accessor was defined without a getter");if(typeof Q==="function"?J!==Q||!X:!Q.has(J))throw TypeError("Cannot read private member from an object whose class did not declare it");return Y==="m"?X:Y==="a"?X.call(J):X?X.value:Q.get(J)}var $G=()=>{};var ED1=function(){let{crypto:J}=globalThis;if(J?.randomUUID)return ED1=J.randomUUID.bind(J),J.randomUUID();let Q=new Uint8Array(1),Y=J?()=>J.getRandomValues(Q)[0]:()=>Math.random()*255&255;return"10000000-1000-4000-8000-100000000000".replace(/[018]/g,(X)=>(+X^Y()&15>>+X/4).toString(16))};function ux(J){return typeof J==="object"&&J!==null&&(("name"in J)&&J.name==="AbortError"||("message"in J)&&String(J.message).includes("FetchRequestCanceledException"))}var gx=(J)=>{if(J instanceof Error)return J;if(typeof J==="object"&&J!==null){try{if(Object.prototype.toString.call(J)==="[object Error]"){let Q=Error(J.message,J.cause?{cause:J.cause}:{});if(J.stack)Q.stack=J.stack;if(J.cause&&!Q.cause)Q.cause=J.cause;if(J.name)Q.name=J.name;return Q}}catch{}try{return Error(JSON.stringify(J))}catch{}}return Error(J)};var s6,x7,Y3,FM,UM,mx,px,dx,cx,lx,ix,nx,ax,rx,ox,RH;var eV=G1(()=>{s6=class s6 extends Error{};x7=class x7 extends s6{constructor(J,Q,Y,X){super(`${x7.makeMessage(J,Q,Y)}`);this.status=J,this.headers=X,this.requestID=X?.get("x-request-id"),this.error=Q;let G=Q;this.code=G?.code,this.param=G?.param,this.type=G?.type}static makeMessage(J,Q,Y){let X=Q?.message?typeof Q.message==="string"?Q.message:JSON.stringify(Q.message):Q?JSON.stringify(Q):Y;if(J&&X)return`${J} ${X}`;if(J)return`${J} status code (no body)`;if(X)return X;return"(no status code or body)"}static generate(J,Q,Y,X){if(!J||!X)return new FM({message:Y,cause:gx(Q)});let G=Q?.error;if(J===400)return new mx(J,G,Y,X);if(J===401)return new px(J,G,Y,X);if(J===403)return new dx(J,G,Y,X);if(J===404)return new cx(J,G,Y,X);if(J===409)return new lx(J,G,Y,X);if(J===422)return new ix(J,G,Y,X);if(J===429)return new nx(J,G,Y,X);if(J>=500)return new ax(J,G,Y,X);return new x7(J,G,Y,X)}};Y3=class Y3 extends x7{constructor({message:J}={}){super(void 0,void 0,J||"Request was aborted.",void 0)}};FM=class FM extends x7{constructor({message:J,cause:Q}){super(void 0,void 0,J||"Connection error.",void 0);if(Q)this.cause=Q}};UM=class UM extends FM{constructor({message:J}={}){super({message:J??"Request timed out."})}};mx=class mx extends x7{};px=class px extends x7{};dx=class dx extends x7{};cx=class cx extends x7{};lx=class lx extends x7{};ix=class ix extends x7{};nx=class nx extends x7{};ax=class ax extends x7{};rx=class rx extends s6{constructor(){super("Could not parse response content as the length limit was reached")}};ox=class ox extends s6{constructor(){super("Could not parse response content as the request was rejected by the content filter")}};RH=class RH extends Error{constructor(J){super(J)}}});function PD1(J){if(typeof J!=="object")return{};return J??{}}function tv0(J){if(!J)return!0;for(let Q in J)return!1;return!0}function ev0(J,Q){return Object.prototype.hasOwnProperty.call(J,Q)}function sx(J){return J!=null&&typeof J==="object"&&!Array.isArray(J)}var yu4,sv0=(J)=>{return yu4.test(J)},tJ=(J)=>(tJ=Array.isArray,tJ(J)),ID1,Jx0=(J,Q)=>{if(typeof Q!=="number"||!Number.isInteger(Q))throw new s6(`${J} must be an integer`);if(Q<0)throw new s6(`${J} must be a positive integer`);return Q},Qx0=(J)=>{try{return JSON.parse(J)}catch(Q){return}};var CH=G1(()=>{eV();yu4=/^[a-z][a-z0-9+.-]*:/i,ID1=tJ});var JK=(J)=>new Promise((Q)=>setTimeout(Q,J));var xU="6.7.0";function vu4(){if(typeof Deno<"u"&&Deno.build!=null)return"deno";if(typeof EdgeRuntime<"u")return"edge";if(Object.prototype.toString.call(typeof globalThis.process<"u"?globalThis.process:0)==="[object process]")return"node";return"unknown"}function fu4(){if(typeof navigator>"u"||!navigator)return null;let J=[{key:"edge",pattern:/Edge(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"ie",pattern:/MSIE(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"ie",pattern:/Trident(?:.*rv\:(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"chrome",pattern:/Chrome(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"firefox",pattern:/Firefox(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"safari",pattern:/(?:Version\W+(\d+)\.(\d+)(?:\.(\d+))?)?(?:\W+Mobile\S*)?\W+Safari/}];for(let{key:Q,pattern:Y}of J){let X=Y.exec(navigator.userAgent);if(X){let G=X[1]||0,Z=X[2]||0,q=X[3]||0;return{browser:Q,version:`${G}.${Z}.${q}`}}}return null}var Gx0=()=>{return typeof window<"u"&&typeof window.document<"u"&&typeof navigator<"u"},xu4=()=>{let J=vu4();if(J==="deno")return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":xU,"X-Stainless-OS":$x0(Deno.build.os),"X-Stainless-Arch":Yx0(Deno.build.arch),"X-Stainless-Runtime":"deno","X-Stainless-Runtime-Version":typeof Deno.version==="string"?Deno.version:Deno.version?.deno??"unknown"};if(typeof EdgeRuntime<"u")return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":xU,"X-Stainless-OS":"Unknown","X-Stainless-Arch":`other:${EdgeRuntime}`,"X-Stainless-Runtime":"edge","X-Stainless-Runtime-Version":globalThis.process.version};if(J==="node")return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":xU,"X-Stainless-OS":$x0(globalThis.process.platform??"unknown"),"X-Stainless-Arch":Yx0(globalThis.process.arch??"unknown"),"X-Stainless-Runtime":"node","X-Stainless-Runtime-Version":globalThis.process.version??"unknown"};let Q=fu4();if(Q)return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":xU,"X-Stainless-OS":"Unknown","X-Stainless-Arch":"unknown","X-Stainless-Runtime":`browser:${Q.browser}`,"X-Stainless-Runtime-Version":Q.version};return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":xU,"X-Stainless-OS":"Unknown","X-Stainless-Arch":"unknown","X-Stainless-Runtime":"unknown","X-Stainless-Runtime-Version":"unknown"}},Yx0=(J)=>{if(J==="x32")return"x32";if(J==="x86_64"||J==="x64")return"x64";if(J==="arm")return"arm";if(J==="aarch64"||J==="arm64")return"arm64";if(J)return`other:${J}`;return"unknown"},$x0=(J)=>{if(J=J.toLowerCase(),J.includes("ios"))return"iOS";if(J==="android")return"Android";if(J==="darwin")return"MacOS";if(J==="win32")return"Windows";if(J==="freebsd")return"FreeBSD";if(J==="openbsd")return"OpenBSD";if(J==="linux")return"Linux";if(J)return`Other:${J}`;return"Unknown"},Xx0,Zx0=()=>{return Xx0??(Xx0=xu4())};var TD1=()=>{};function qx0(){if(typeof fetch<"u")return fetch;throw Error("`fetch` is not defined as a global; Either pass `fetch` to the client, `new OpenAI({ fetch })` or polyfill the global, `globalThis.fetch = fetch`")}function RD1(...J){let Q=globalThis.ReadableStream;if(typeof Q>"u")throw Error("`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`");return new Q(...J)}function Xs(J){let Q=Symbol.asyncIterator in J?J[Symbol.asyncIterator]():J[Symbol.iterator]();return RD1({start(){},async pull(Y){let{done:X,value:G}=await Q.next();if(X)Y.close();else Y.enqueue(G)},async cancel(){await Q.return?.()}})}function CD1(J){if(J[Symbol.asyncIterator])return J;let Q=J.getReader();return{async next(){try{let Y=await Q.read();if(Y?.done)Q.releaseLock();return Y}catch(Y){throw Q.releaseLock(),Y}},async return(){let Y=Q.cancel();return Q.releaseLock(),await Y,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}async function Vx0(J){if(J===null||typeof J!=="object")return;if(J[Symbol.asyncIterator]){await J[Symbol.asyncIterator]().return?.();return}let Q=J.getReader(),Y=Q.cancel();Q.releaseLock(),await Y}var Kx0=({headers:J,body:Q})=>{return{bodyHeaders:{"content-type":"application/json"},body:JSON.stringify(Q)}};var Gs="RFC3986",SD1=(J)=>String(J),Zs,jD1="RFC1738";var qs=G1(()=>{Zs={RFC1738:(J)=>String(J).replace(/%20/g,"+"),RFC3986:SD1}});function Hx0(J){if(!J||typeof J!=="object")return!1;return!!(J.constructor&&J.constructor.isBuffer&&J.constructor.isBuffer(J))}function kD1(J,Q){if(tJ(J)){let Y=[];for(let X=0;X<J.length;X+=1)Y.push(Q(J[X]));return Y}return Q(J)}var Vs=(J,Q)=>(Vs=Object.hasOwn??Function.prototype.call.bind(Object.prototype.hasOwnProperty),Vs(J,Q)),QK,_D1=1024,Wx0=(J,Q,Y,X,G)=>{if(J.length===0)return J;let Z=J;if(typeof J==="symbol")Z=Symbol.prototype.toString.call(J);else if(typeof J!=="string")Z=String(J);if(Y==="iso-8859-1")return escape(Z).replace(/%u[0-9a-f]{4}/gi,function(V){return"%26%23"+parseInt(V.slice(2),16)+"%3B"});let q="";for(let V=0;V<Z.length;V+=_D1){let K=Z.length>=_D1?Z.slice(V,V+_D1):Z,W=[];for(let H=0;H<K.length;++H){let z=K.charCodeAt(H);if(z===45||z===46||z===95||z===126||z>=48&&z<=57||z>=65&&z<=90||z>=97&&z<=122||G===jD1&&(z===40||z===41)){W[W.length]=K.charAt(H);continue}if(z<128){W[W.length]=QK[z];continue}if(z<2048){W[W.length]=QK[192|z>>6]+QK[128|z&63];continue}if(z<55296||z>=57344){W[W.length]=QK[224|z>>12]+QK[128|z>>6&63]+QK[128|z&63];continue}H+=1,z=65536+((z&1023)<<10|K.charCodeAt(H)&1023),W[W.length]=QK[240|z>>18]+QK[128|z>>12&63]+QK[128|z>>6&63]+QK[128|z&63]}q+=W.join("")}return q};var zx0=G1(()=>{qs();CH();QK=(()=>{let J=[];for(let Q=0;Q<256;++Q)J.push("%"+((Q<16?"0":"")+Q.toString(16)).toUpperCase());return J})()});function uu4(J){return typeof J==="string"||typeof J==="number"||typeof J==="boolean"||typeof J==="symbol"||typeof J==="bigint"}function Nx0(J,Q,Y,X,G,Z,q,V,K,W,H,z,U,B,O,M,L,E){let I=J,P=E,R=0,j=!1;while((P=P.get(yD1))!==void 0&&!j){let b=P.get(J);if(R+=1,typeof b<"u")if(b===R)throw RangeError("Cyclic object value");else j=!0;if(typeof P.get(yD1)>"u")R=0}if(typeof W==="function")I=W(Q,I);else if(I instanceof Date)I=U?.(I);else if(Y==="comma"&&tJ(I))I=kD1(I,function(b){if(b instanceof Date)return U?.(b);return b});if(I===null){if(Z)return K&&!M?K(Q,$3.encoder,L,"key",B):Q;I=""}if(uu4(I)||Hx0(I)){if(K){let b=M?Q:K(Q,$3.encoder,L,"key",B);return[O?.(b)+"="+O?.(K(I,$3.encoder,L,"value",B))]}return[O?.(Q)+"="+O?.(String(I))]}let y=[];if(typeof I>"u")return y;let h;if(Y==="comma"&&tJ(I)){if(M&&K)I=kD1(I,K);h=[{value:I.length>0?I.join(",")||null:void 0}]}else if(tJ(W))h=W;else{let b=Object.keys(I);h=H?b.sort(H):b}let g=V?String(Q).replace(/\./g,"%2E"):String(Q),p=X&&tJ(I)&&I.length===1?g+"[]":g;if(G&&tJ(I)&&I.length===0)return p+"[]";for(let b=0;b<h.length;++b){let i=h[b],t=typeof i==="object"&&typeof i.value<"u"?i.value:I[i];if(q&&t===null)continue;let r=z&&V?i.replace(/\./g,"%2E"):i,m=tJ(I)?typeof Y==="function"?Y(p,r):p:p+(z?"."+r:"["+r+"]");E.set(J,R);let s=new WeakMap;s.set(yD1,E),Bx0(y,Nx0(t,m,Y,X,G,Z,q,V,Y==="comma"&&M&&tJ(I)?null:K,W,H,z,U,B,O,M,L,s))}return y}function gu4(J=$3){if(typeof J.allowEmptyArrays<"u"&&typeof J.allowEmptyArrays!=="boolean")throw TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(typeof J.encodeDotInKeys<"u"&&typeof J.encodeDotInKeys!=="boolean")throw TypeError("`encodeDotInKeys` option can only be `true` or `false`, when provided");if(J.encoder!==null&&typeof J.encoder<"u"&&typeof J.encoder!=="function")throw TypeError("Encoder has to be a function.");let Q=J.charset||$3.charset;if(typeof J.charset<"u"&&J.charset!=="utf-8"&&J.charset!=="iso-8859-1")throw TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");let Y=Gs;if(typeof J.format<"u"){if(!Vs(Zs,J.format))throw TypeError("Unknown format option provided.");Y=J.format}let X=Zs[Y],G=$3.filter;if(typeof J.filter==="function"||tJ(J.filter))G=J.filter;let Z;if(J.arrayFormat&&J.arrayFormat in Ux0)Z=J.arrayFormat;else if("indices"in J)Z=J.indices?"indices":"repeat";else Z=$3.arrayFormat;if("commaRoundTrip"in J&&typeof J.commaRoundTrip!=="boolean")throw TypeError("`commaRoundTrip` must be a boolean, or absent");let q=typeof J.allowDots>"u"?!!J.encodeDotInKeys===!0?!0:$3.allowDots:!!J.allowDots;return{addQueryPrefix:typeof J.addQueryPrefix==="boolean"?J.addQueryPrefix:$3.addQueryPrefix,allowDots:q,allowEmptyArrays:typeof J.allowEmptyArrays==="boolean"?!!J.allowEmptyArrays:$3.allowEmptyArrays,arrayFormat:Z,charset:Q,charsetSentinel:typeof J.charsetSentinel==="boolean"?J.charsetSentinel:$3.charsetSentinel,commaRoundTrip:!!J.commaRoundTrip,delimiter:typeof J.delimiter>"u"?$3.delimiter:J.delimiter,encode:typeof J.encode==="boolean"?J.encode:$3.encode,encodeDotInKeys:typeof J.encodeDotInKeys==="boolean"?J.encodeDotInKeys:$3.encodeDotInKeys,encoder:typeof J.encoder==="function"?J.encoder:$3.encoder,encodeValuesOnly:typeof J.encodeValuesOnly==="boolean"?J.encodeValuesOnly:$3.encodeValuesOnly,filter:G,format:Y,formatter:X,serializeDate:typeof J.serializeDate==="function"?J.serializeDate:$3.serializeDate,skipNulls:typeof J.skipNulls==="boolean"?J.skipNulls:$3.skipNulls,sort:typeof J.sort==="function"?J.sort:null,strictNullHandling:typeof J.strictNullHandling==="boolean"?J.strictNullHandling:$3.strictNullHandling}}function vD1(J,Q={}){let Y=J,X=gu4(Q),G,Z;if(typeof X.filter==="function")Z=X.filter,Y=Z("",Y);else if(tJ(X.filter))Z=X.filter,G=Z;let q=[];if(typeof Y!=="object"||Y===null)return"";let V=Ux0[X.arrayFormat],K=V==="comma"&&X.commaRoundTrip;if(!G)G=Object.keys(Y);if(X.sort)G.sort(X.sort);let W=new WeakMap;for(let U=0;U<G.length;++U){let B=G[U];if(X.skipNulls&&Y[B]===null)continue;Bx0(q,Nx0(Y[B],B,V,K,X.allowEmptyArrays,X.strictNullHandling,X.skipNulls,X.encodeDotInKeys,X.encode?X.encoder:null,X.filter,X.sort,X.allowDots,X.serializeDate,X.format,X.formatter,X.encodeValuesOnly,X.charset,W))}let H=q.join(X.delimiter),z=X.addQueryPrefix===!0?"?":"";if(X.charsetSentinel)if(X.charset==="iso-8859-1")z+="utf8=%26%2310003%3B&";else z+="utf8=%E2%9C%93&";return H.length>0?z+H:""}var Ux0,Bx0=function(J,Q){Array.prototype.push.apply(J,tJ(Q)?Q:[Q])},Fx0,$3,yD1;var Dx0=G1(()=>{zx0();qs();CH();Ux0={brackets(J){return String(J)+"[]"},comma:"comma",indices(J,Q){return String(J)+"["+Q+"]"},repeat(J){return String(J)}},$3={addQueryPrefix:!1,allowDots:!1,allowEmptyArrays:!1,arrayFormat:"indices",charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encodeDotInKeys:!1,encoder:Wx0,encodeValuesOnly:!1,format:Gs,formatter:SD1,indices:!1,serializeDate(J){return(Fx0??(Fx0=Function.prototype.call.bind(Date.prototype.toISOString)))(J)},skipNulls:!1,strictNullHandling:!1};yD1={}});var Ox0=G1(()=>{qs();Dx0()});function Ax0(J){let Q=0;for(let G of J)Q+=G.length;let Y=new Uint8Array(Q),X=0;for(let G of J)Y.set(G,X),X+=G.length;return Y}function uP(J){let Q;return(Mx0??(Q=new globalThis.TextEncoder,Mx0=Q.encode.bind(Q)))(J)}function xD1(J){let Q;return(Lx0??(Q=new globalThis.TextDecoder,Lx0=Q.decode.bind(Q)))(J)}var Mx0,Lx0;class gP{constructor(){f$.set(this,void 0),h$.set(this,void 0),L4(this,f$,new Uint8Array,"f"),L4(this,h$,null,"f")}decode(J){if(J==null)return[];let Q=J instanceof ArrayBuffer?new Uint8Array(J):typeof J==="string"?uP(J):J;L4(this,f$,Ax0([O0(this,f$,"f"),Q]),"f");let Y=[],X;while((X=pu4(O0(this,f$,"f"),O0(this,h$,"f")))!=null){if(X.carriage&&O0(this,h$,"f")==null){L4(this,h$,X.index,"f");continue}if(O0(this,h$,"f")!=null&&(X.index!==O0(this,h$,"f")+1||X.carriage)){Y.push(xD1(O0(this,f$,"f").subarray(0,O0(this,h$,"f")-1))),L4(this,f$,O0(this,f$,"f").subarray(O0(this,h$,"f")),"f"),L4(this,h$,null,"f");continue}let G=O0(this,h$,"f")!==null?X.preceding-1:X.preceding,Z=xD1(O0(this,f$,"f").subarray(0,G));Y.push(Z),L4(this,f$,O0(this,f$,"f").subarray(X.index),"f"),L4(this,h$,null,"f")}return Y}flush(){if(!O0(this,f$,"f").length)return[];return this.decode(`
|
|
2240
|
+
`),Q,{configService:Y.configService},X,AV(Q)?.messageId,Z),z;for await(let U of H)if(z=Du4(z,U),z)yield Ou4(z)}}function DD1(J){let{summaryBlock:Q,index:Y}=hX(J)??{summaryBlock:void 0,index:0},X=[];if(Q&&Q.summary.type==="message")X.push({role:"model",parts:[{text:Q.summary.summary.trimEnd()}]});for(let G=Y+(Q?1:0);G<J.messages.length;G++){let Z=J.messages[G];if(!Z)continue;switch(Z.role){case"user":{let q=Bu4(Z,J);if(q.length===0)continue;X.push({role:"user",parts:q});break}case"assistant":{let q=Z.content.filter((W)=>{if(W.type==="tool_use"&&!W.complete)return!1;return!0}),V=iJ(J);for(let W of q)if(W.type==="tool_use"){if(!V.get(W.id)?.run)throw Error(`(bug) corresponding tool_result not found for tool_use (id=${W.id}, name=${W.name})`)}if(Z.nativeMessage?.type==="vertexai"){let W=Z.nativeMessage.message.candidates?.[0]?.content,H={role:W?.role??"model",parts:W?.parts??[]};X.push(x8(H));break}if(q.length===0)break;let K=Nu4(q);if(K.length>0)X.push({role:"model",parts:K});break}case"info":{let q=[];for(let V of Z.content)if(V.type==="manual_bash_invocation"){let K=SU(V);q.push(...K.map((W)=>({text:W.text})))}else if(V.type==="text"&&V.text.trim().length>0)q.push({text:V.text});if(q.length>0)X.push({role:"user",parts:q});break}}}return X}function LD1(J){let Q=Object.values(R8).find((Y)=>Y.provider===Q5.VERTEXAI&&Y.name===J);if(Q===void 0)return x.warn(`Unknown gemini model ${J}`),{...R8.GEMINI_2_5_PRO,name:J,displayName:J};return Q}async function*AD1(J,Q,Y,X,G,Z,q,V,K){let W=LD1(J),H=await Z.configService.getLatest(q),z=await bv0(H,{threadMeta:G,messageId:V,clientRequestId:K}),U={model:W.name,contents:x8(Q),config:{seed:Date.now()%1e4,tools:hv0(Y),systemInstruction:X,maxOutputTokens:W.maxOutputTokens,temperature:1,thinkingConfig:{includeThoughts:!0,thinkingLevel:H.settings["gemini.thinkingLevel"]==="low"?Xv.LOW:H.settings["gemini.thinkingLevel"]==="high"?Xv.HIGH:void 0},abortSignal:q}},B=await z.models.generateContentStream(U),O;for await(let M of B)O=M,yield M;return{model:J,"~debugParamsUsed":{model:W,streamParams:U},"~debugUsage":{model:J,maxInputTokens:W.contextWindow-W.maxOutputTokens,inputTokens:0,outputTokens:(O?.usageMetadata?.candidatesTokenCount??0)+(O?.usageMetadata?.thoughtsTokenCount??0),totalInputTokens:O?.usageMetadata?.promptTokenCount??0,cacheCreationInputTokens:(O?.usageMetadata?.promptTokenCount??0)-(O?.usageMetadata?.cachedContentTokenCount??0),cacheReadInputTokens:O?.usageMetadata?.cachedContentTokenCount??0,credits:0}}}async function so(J,Q,Y,X,G,Z,q,V){let K=LD1(J),H=await(await bv0(G,{threadMeta:X,clientRequestId:V})).models.generateContent({model:K.name,contents:x8(Q),config:{tools:hv0(Y),seed:Date.now()%1e4,temperature:0.1,maxOutputTokens:K.maxOutputTokens,abortSignal:Z,...q}});return{message:H,"~debugUsage":{model:K.name,maxInputTokens:K.contextWindow-K.maxOutputTokens,inputTokens:0,outputTokens:(H.usageMetadata?.candidatesTokenCount??0)+(H.usageMetadata?.thoughtsTokenCount??0),totalInputTokens:H.usageMetadata?.promptTokenCount??0,cacheCreationInputTokens:(H.usageMetadata?.promptTokenCount??0)-(H.usageMetadata?.cachedContentTokenCount??0),cacheReadInputTokens:H.usageMetadata?.cachedContentTokenCount??0,credits:0}}}function hv0(J){if(J.length===0)return[];return[{functionDeclarations:[...J.map(Fu4)]}]}function Fu4(J){return{name:J.name,description:J.description??"",parameters:BD1(J.inputSchema)}}function BD1(J){let Q={},Y=Uu4[J.type??"any"];if(Y)Q.type=Y;if(J.description)Q.description=J.description;if(J.required)Q.required=J.required;let X=J.examples;if(Array.isArray(X)&&X.length>0)Q.example=X[0];if(J.properties)Q.properties=Object.fromEntries(Object.entries(J.properties).map(([G,Z])=>[G,BD1(Z)]));if(J.items)Q.items=BD1(J.items);return Q}async function bv0(J,Q){let{settings:Y,secrets:X}=J,{url:G}=Y,Z=await X.getToken("apiKey",G);if(!Z)throw Error("API key not found. You must provide an API key in settings.");let q={GOOGLE_CLOUD_PROJECT:process.env.GOOGLE_CLOUD_PROJECT,GCLOUD_PROJECT:process.env.GCLOUD_PROJECT,GOOGLE_APPLICATION_CREDENTIALS:process.env.GOOGLE_APPLICATION_CREDENTIALS};delete process.env.GOOGLE_CLOUD_PROJECT,delete process.env.GCLOUD_PROJECT,delete process.env.GOOGLE_APPLICATION_CREDENTIALS;let V=new qU1({apiKey:"placeholder",vertexai:!0,googleAuthOptions:{},httpOptions:{baseUrl:new URL("/api/provider/google",G).toString(),headers:{Authorization:"Bearer "+Z,[zY]:"amp.chat",...Q?.messageId!=null?{[bX]:String(Q.messageId)}:{},...Q?.clientRequestId!=null?{[FY]:Q.clientRequestId}:{},...UY(Q?.threadMeta)}}});for(let[K,W]of Object.entries(q))if(W!==void 0)process.env[K]=W;return V}function Bu4(J,Q){let Y=[];if(J.fileMentions&&J.fileMentions.files.length>0)Y.push({text:oX(J.fileMentions)});if(J.userState)Y.push({text:nV(J.userState)});for(let X of J.content)if(X.type==="text")Y.push({text:X.text});else if(X.type==="image"){if(X.source.type==="base64"&&"mediaType"in X.source&&"data"in X.source)Y.push({inlineData:{mimeType:X.source.mediaType,data:X.source.data}});else if(X.source.type==="url"&&"url"in X.source)Y.push({text:`[Image URL: ${X.source.url}]`})}else if(X.type==="tool_result"){let G={};if(X.run.status==="done")G.output=X.run.result;else if(X.run.status==="error")G.error=X.run.error?.message??"Error executing tool";else G.error=`Tool status: ${X.run.status}`;let Z,[,q]=X.toolUseID.split("__");if(q)Z=q;else for(let K of Q.messages)if(K.role==="assistant"){for(let W of K.content)if(W.type==="tool_use"&&W.id===X.toolUseID){Z=W.name;break}if(Z)break}if(!Z)throw Error(`Could not find tool name for tool_result with ID: ${X.toolUseID}`);let V={name:Z,response:G};Y.push({functionResponse:V})}return Y}function Nu4(J){let Q=[];for(let Y of J)if(Y.type==="text")Q.push({text:Y.text});else if(Y.type==="tool_use")Q.push({functionCall:{name:Y.name,args:Y.input??{}}});else if(Y.type==="thinking")Q.push({text:Y.thinking,thought:!0,thoughtSignature:Y.signature});else if(Y.type==="redacted_thinking")Q.push({text:"[Redacted thinking]"});return Q}function Du4(J,Q){if(!J)return Q;let Y=J.candidates&&Q.candidates?J.candidates.map((G,Z)=>{let q=Q.candidates?.[Z];if(!q)return G;return{...q,content:{role:q.content?.role??G.content?.role??"model",parts:[...G.content?.parts??[],...q.content?.parts??[]]}}}):Q.candidates,X=new GU;return Object.assign(X,{...Q,candidates:Y}),X}function Ou4(J){function Q(){let G=[];for(let Z of J.candidates?.at(0)?.content?.parts??[])if(Z.text&&Z.thought){let q=G.at(-1);if(q?.type==="thinking")G[G.length-1]={type:"thinking",thinking:q.thinking+Z.text,signature:"",provider:"vertexai"};else G.push({type:"thinking",thinking:Z.text,signature:"",provider:"vertexai"})}else if(Z.text){let q=G.at(-1);if(q?.type==="text")G[G.length-1]={type:"text",text:q.text+Z.text};else G.push({type:"text",text:Z.text})}else if(Z.functionCall)G.push({type:"tool_use",complete:!0,id:Z.functionCall.id??VO(),name:Z.functionCall.name??"",input:Z.functionCall.args??{}});return G}function Y(){if(!J.usageMetadata)return;let G=LD1(J.modelVersion??"");return{model:G.name,maxInputTokens:G.contextWindow-G.maxOutputTokens,inputTokens:0,cacheReadInputTokens:J.usageMetadata?.cachedContentTokenCount??0,cacheCreationInputTokens:(J.usageMetadata?.promptTokenCount??0)-(J.usageMetadata?.cachedContentTokenCount??0),outputTokens:(J.usageMetadata?.totalTokenCount??0)-(J.usageMetadata?.promptTokenCount??0),totalInputTokens:J.usageMetadata?.promptTokenCount??0,credits:0}}function X(){let G=J.candidates?.at(0)?.finishReason,Z=J.candidates?.at(0)?.finishMessage;switch(G){case S3.STOP:{if(J.candidates?.at(0)?.content?.parts?.some((V)=>V.functionCall!==void 0))return{type:"complete",stopReason:"tool_use"};return{type:"complete",stopReason:"end_turn"}}case S3.MAX_TOKENS:return{type:"complete",stopReason:"max_tokens"};case S3.BLOCKLIST:case S3.SAFETY:case S3.RECITATION:case S3.LANGUAGE:case S3.PROHIBITED_CONTENT:case S3.IMAGE_PROHIBITED_CONTENT:case S3.IMAGE_SAFETY:case S3.SPII:case S3.OTHER:case S3.FINISH_REASON_UNSPECIFIED:case S3.NO_IMAGE:return{type:"error",error:{message:`provider refused to continue with code '${G}': ${Z}`}};case S3.UNEXPECTED_TOOL_CALL:case S3.MALFORMED_FUNCTION_CALL:return{type:"error",error:{message:`provider failed with code '${G}': ${Z}`}};case void 0:return{type:"streaming"}}}return{role:"assistant",content:Q(),state:X(),usage:Y(),nativeMessage:{type:"vertexai",message:J}}}var OD1,MD1,fv0,t69,Uu4;var hP=G1(()=>{Zr();Zr();WY();H0();KU();wV();wH();V9();$M();K5();C5();Dx();OD1=R8.GEMINI_2_5_PRO.name,MD1=R8.GEMINI_2_5_FLASH_LITE.name,fv0=R8.GEMINI_2_5_FLASH_LITE_PREVIEW_09_2025.name,t69=R8.GEMINI_2_5_FLASH_PREVIEW_09_2025.name;Uu4={string:IQ.STRING,number:IQ.NUMBER,integer:IQ.INTEGER,boolean:IQ.BOOLEAN,object:IQ.OBJECT,array:IQ.ARRAY}});function uv0(J){return J+ ++Mu4}var Mu4=0;function gv0(J){if(!J._regex)try{J._regex=new RegExp(J.pattern,J.caseInsensitive?"gi":"g")}catch(Q){x.warn("Error compiling regex",{pattern:J.id,error:Q}),J._regex=new RegExp("$^")}return J._regex}var mv0;var pv0=G1(()=>{H0();mv0=[{id:"sourcegraph-access-token-v3",category:"sourcegraph",title:"Sourcegraph Access Token (v3)",pattern:String.raw`(sgp_(?:[a-fA-F0-9]{16}|local)_[a-fA-F0-9]{40})`,keywords:["sgp_"]},{id:"sourcegraph-access-token-v2",category:"sourcegraph",title:"Sourcegraph Access Token (v2, deprecated)",pattern:String.raw`(sgp_[a-fA-F0-9]{40})`,keywords:["sgp_"]},{id:"sourcegraph-dotcom-user-gateway",category:"sourcegraph",title:"Sourcegraph Dotcom User Gateway Access Token",pattern:String.raw`(sgd_[a-fA-F0-9]{64})`,keywords:["sgd_"]},{id:"sourcegraph-license-key",category:"sourcegraph",title:"Sourcegraph License Key Token",pattern:String.raw`(slk_[a-fA-F0-9]{64})`,keywords:["slk_"]},{id:"sourcegraph-enterprise-subscription",category:"sourcegraph",title:"Sourcegraph Enterprise subscription Token",pattern:String.raw`(sgs_[a-fA-F0-9]{64})`,keywords:["sgs_"]},{id:"sourcegraph-amp",category:"sourcegraph",title:"Sourcegraph Amp Access Token",pattern:String.raw`(sgamp_user_[A-Z0-9]{26}_[a-f0-9]{64})`,keywords:["sgamp_user_"]},{id:"sourcegraph-amp-auth-bypass",category:"sourcegraph",title:"Sourcegraph Amp Auth Bypass Token",pattern:String.raw`(sgamp_user_auth-bypass_[a-zA-Z0-9_-]+)`,keywords:["sgamp_user_auth-bypass_"]},{id:"sourcegraph-workspace-token",category:"sourcegraph",title:"Sourcegraph Workspace Access Token",pattern:String.raw`(sgp_ws[a-fA-F0-9]{32}_[a-fA-F0-9]{40})`,keywords:["sgp_ws"]},{id:"github-pat",category:"github",title:"GitHub Personal Access Token",pattern:String.raw`(ghp_[0-9a-zA-Z]{36})`,keywords:["ghp_"]},{id:"github-oauth",category:"github",title:"GitHub OAuth Access Token",pattern:String.raw`(gho_[0-9a-zA-Z]{36})`,keywords:["gho_"]},{id:"github-app-token",category:"github",title:"GitHub App Token",pattern:String.raw`((ghu|ghs)_[0-9a-zA-Z]{36})`,keywords:["ghu_","ghs_"]},{id:"github-refresh-token",category:"github",title:"GitHub Refresh Token",pattern:String.raw`(ghr_[0-9a-zA-Z]{76})`,keywords:["ghr_"]},{id:"github-fine-grained-pat",category:"github",title:"GitHub Fine-grained personal access tokens",pattern:String.raw`(github_pat_[a-zA-Z0-9]{22}_[a-zA-Z0-9]{59})`,keywords:["github_pat_"]},{id:"gitlab-pat",category:"gitlab",title:"GitLab Personal Access Token",pattern:String.raw`(glpat-[0-9a-zA-Z_-]{20})`,keywords:["glpat-"]},{id:"aws-access-key-id",category:"aws",title:"AWS Access Key ID",pattern:String.raw`((A3T[A-Z0-9]|AKIA|AGPA|AIDA|AROA|AIPA|ANPA|ANVA|ASIA)[A-Z0-9]{16})`,keywords:["AKIA","AGPA","AIDA","AROA","AIPA","ANPA","ANVA","ASIA"]},{id:"hugging-face-access-token",category:"huggingface",title:"Hugging Face Access Token",pattern:String.raw`(hf_[A-Za-z0-9]{34,40})`,keywords:["hf_"]},{id:"private-key",category:"asymmetric-private-key",title:"Asymmetric Private Key",pattern:String.raw`-----\s*?BEGIN[ A-Z0-9_-]*?PRIVATE KEY( BLOCK)?\s*?-----[\s]*?([A-Za-z0-9=+/\\\\r\n][A-Za-z0-9=+/\\\\s]+)[\s]*?-----\s*?END[ A-Z0-9_-]*? PRIVATE KEY( BLOCK)?\s*?-----`,keywords:["-----"],caseInsensitive:!0},{id:"shopify-token",category:"shopify",title:"Shopify token",pattern:String.raw`(shp(ss|at|ca|pa)_[a-fA-F0-9]{32})`,keywords:["shpss_","shpat_","shpca_","shppa_"]},{id:"slack-access-token",category:"slack",title:"Slack token",pattern:String.raw`((xox[baoprs]-|xapp-|xwfp-)([0-9a-zA-Z-]{10,100}))`,keywords:["xoxb-","xoxa-","xoxp-","xoxr-","xoxs-","xoxo-","xapp-","xwfp-"]},{id:"slack-config-refresh-token",category:"slack",title:"Slack config refresh token",pattern:String.raw`(xoxe-\d-[a-zA-Z0-9]{146})`,caseInsensitive:!0,keywords:["xoxe-"]},{id:"slack-config-access-token",category:"slack",title:"Slack config access token",pattern:String.raw`(xoxe.xox[bp]-\d-[A-Z0-9]{163,166})`,caseInsensitive:!0,keywords:["xoxe.xoxb-","xoxe.xoxp-"]},{id:"slack-web-hook",category:"slack",title:"Slack Webhook",pattern:String.raw`(https:\/\/hooks\.slack\.com\/(services|triggers|workflows)\/[A-Za-z0-9+\/]{43,56})`,caseInsensitive:!0,keywords:["hooks.slack.com"]},{id:"stripe-secret-token",category:"stripe",title:"Stripe Secret Key",pattern:String.raw`(sk_(test|live)_[0-9a-z]{10,99})`,keywords:["sk_test_","sk_live_"],caseInsensitive:!0},{id:"supabase-service-key",category:"supabase",title:"Supabase Service Key",pattern:String.raw`(sbp_[a-fA-F0-9]{40})`,keywords:["sbp_"]},{id:"pypi-upload-token",category:"pypi",title:"PyPI upload token",pattern:String.raw`(pypi-AgEIcHlwaS5vcmc[A-Za-z0-9_-]{50,1000})`,keywords:["pypi-AgEIcHlwaS5vcmc"]},{id:"gcp-service-account",category:"google",title:"Google (GCP) Service-account",pattern:String.raw`("type": "service_account")`,keywords:['"type": "service_account"']},{id:"heroku-api-key",category:"heroku",title:"Heroku API Key",pattern:String.raw`(?:heroku[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"](\d[0-9A-F]{8}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{4}-[0-9A-F]{12})['"]`,keywords:["heroku"],caseInsensitive:!0},{id:"twilio-api-key",category:"twilio",title:"Twilio API Key",pattern:String.raw`(SK[0-9a-fA-F]{32})`,keywords:["SK"]},{id:"age-secret-key",category:"age",title:"Age secret key",pattern:String.raw`(AGE-SECRET-KEY-1[QPZRY9X8GF2TVDW0S3JN54KHCE6MUA7L]{58})`,keywords:["AGE-SECRET-KEY-1"]},{id:"jwt-token",category:"jwt",title:"JWT token",pattern:String.raw`(ey[a-zA-Z0-9]{17,}\.ey[a-zA-Z0-9/\\_-]{17,}\.(?:[a-zA-Z0-9/\\_-]{10,}={0,2})?)`,keywords:[".eyJ"]},{id:"npm-access-token",category:"npm",title:"npm access token",pattern:String.raw`(npm_[a-z0-9]{36})`,keywords:["npm_"],caseInsensitive:!0},{id:"sendgrid-api-token",category:"sendgrid",title:"SendGrid API token",pattern:String.raw`(SG\.[a-z0-9_.-]{66})`,keywords:["SG."],caseInsensitive:!0},{id:"aws-secret-access-key",category:"aws",title:"AWS Secret Access Key",pattern:String.raw`(aws[_-]secret[_-]access[_-]key[_-][A-Za-z0-9/+=]{40})`,keywords:["key"],caseInsensitive:!0},{id:"dockerconfig-secret",category:"docker",title:"Dockerconfig secret exposed",pattern:String.raw`((\.dockerconfigjson|dockercfg):\s*\|*\s*((ey|ew)+[A-Za-z0-9/+=]+))`,keywords:["dockerc"],caseInsensitive:!0},{id:"linear-api-token",category:"linear",title:"Linear API token",pattern:String.raw`(lin_api_[a-z0-9]{40})`,keywords:["lin_api_"],caseInsensitive:!0},{id:"sendinblue-api-token",category:"sendinblue",title:"Sendinblue API token",pattern:String.raw`(xkeysib-[a-f0-9]{64}-[a-z0-9]{16})`,keywords:["xkeysib-"],caseInsensitive:!0},{id:"planetscale-api-token",category:"planetscale",title:"PlanetScale API token",pattern:String.raw`(pscale_tkn_[a-z0-9_.-]{43})`,keywords:["pscale_tkn_"],caseInsensitive:!0},{id:"doppler-api-token",category:"doppler",title:"Doppler API token",pattern:String.raw`(dp\.pt\.[a-z0-9]{43})`,keywords:["dp.pt."],caseInsensitive:!0},{id:"discord-api-token",category:"discord",title:"Discord API key",pattern:String.raw`(?:discord[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-h0-9]{64})['"]`,keywords:["discord"],caseInsensitive:!0},{id:"pulumi-api-token",category:"pulumi",title:"Pulumi API token",pattern:String.raw`(pul-[a-f0-9]{40})`,keywords:["pul-"]},{id:"postman-api-token",category:"postman",title:"Postman API token",pattern:String.raw`(PMAK-[a-f0-9]{24}-[a-f0-9]{34})`,keywords:["PMAK-"],caseInsensitive:!0},{id:"facebook-token",category:"facebook",title:"Facebook token",pattern:String.raw`(?:facebook[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-f0-9]{32})['"]`,keywords:["facebook"],caseInsensitive:!0},{id:"twitter-token",category:"twitter",title:"Twitter token",pattern:String.raw`(?:twitter[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-f0-9]{35,44})['"]`,keywords:["twitter"],caseInsensitive:!0},{id:"adobe-client-id",category:"adobe",title:"Adobe Client ID (Oauth Web)",pattern:String.raw`(?:adobe[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-f0-9]{32})['"]`,keywords:["adobe"],caseInsensitive:!0},{id:"adobe-client-secret",category:"adobe",title:"Adobe Client Secret",pattern:String.raw`(p8e-[a-z0-9]{32})`,keywords:["p8e-"],caseInsensitive:!0},{id:"alibaba-access-key-id",category:"alibaba",title:"Alibaba AccessKey ID",pattern:String.raw`((LTAI)[a-z0-9]{20})`,keywords:["LTAI"],caseInsensitive:!0},{id:"alibaba-secret-key",category:"alibaba",title:"Alibaba Secret Key",pattern:String.raw`(?:alibaba[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-z0-9]{30})['"]`,keywords:["alibaba"],caseInsensitive:!0},{id:"asana-client-id",category:"asana",title:"Asana Client ID",pattern:String.raw`(?:asana[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([0-9]{16})['"]`,keywords:["asana"],caseInsensitive:!0},{id:"asana-client-secret",category:"asana",title:"Asana Client Secret",pattern:String.raw`(?:asana[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-z0-9]{32})['"]`,keywords:["asana"],caseInsensitive:!0},{id:"atlassian-api-token",category:"atlassian",title:"Atlassian API token",pattern:String.raw`(?:atlassian[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-z0-9]{24})['"]`,keywords:["atlassian"],caseInsensitive:!0},{id:"beamer-api-token",category:"beamer",title:"Beamer API token",pattern:String.raw`(?:beamer[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"](b_[a-z0-9=_-]{44})['"]`,keywords:["beamer"],caseInsensitive:!0},{id:"buildkite-agent-token",category:"buildkite",title:"Buildkite API Token V2",pattern:String.raw`(bkua_[a-fA-F0-9]{40})`,keywords:["bkua_"]},{id:"clojars-api-token",category:"clojars",title:"Clojars API token",pattern:String.raw`(CLOJARS_[a-z0-9]{60})`,keywords:["CLOJARS_"],caseInsensitive:!0},{id:"contentful-delivery-api-token",category:"contentful-delivery",title:"Contentful delivery API token",pattern:String.raw`(?:contentful[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-z0-9=_-]{43})['"]`,keywords:["contentful"],caseInsensitive:!0},{id:"databricks-api-token",category:"databricks",title:"Databricks API token",pattern:String.raw`(dapi[a-h0-9]{32})`,keywords:["dapi"]},{id:"discord-client-id",category:"discord",title:"Discord client ID",pattern:String.raw`(?:discord[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([0-9]{18})['"]`,keywords:["discord"],caseInsensitive:!0},{id:"discord-client-secret",category:"discord",title:"Discord client secret",pattern:String.raw`(?:discord[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-z0-9=_-]{32})['"]`,keywords:["discord"],caseInsensitive:!0},{id:"dropbox-api-secret",category:"dropbox",title:"Dropbox API secret/key",pattern:String.raw`(?:dropbox[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-z0-9]{15})['"]`,keywords:["dropbox"],caseInsensitive:!0},{id:"dropbox-short-lived-api-token",category:"dropbox",title:"Dropbox short lived API token",pattern:String.raw`(?:dropbox[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"](sl\.[a-z0-9=_-]{135})['"]`,keywords:["dropbox"],caseInsensitive:!0},{id:"dropbox-long-lived-api-token",category:"dropbox",title:"Dropbox long lived API token",pattern:String.raw`(?:dropbox[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-z0-9]{11}(AAAAAAAAAA)[a-z0-9_=-]{43})['"]`,keywords:["dropbox"],caseInsensitive:!0},{id:"duffel-api-token",category:"duffel",title:"Duffel API token",pattern:String.raw`(duffel_(test|live)_[a-z0-9_-]{43})`,keywords:["duffel_test_","duffel_live_"],caseInsensitive:!0},{id:"dynatrace-api-token",category:"dynatrace",title:"Dynatrace API token",pattern:String.raw`(dt0c01\.[a-z0-9]{24}\.[a-z0-9]{64})`,keywords:["dt0c01."],caseInsensitive:!0},{id:"easypost-api-token",category:"easypost",title:"EasyPost API token",pattern:String.raw`(EZ[AT]K[a-z0-9]{54})`,keywords:["EZAK","EZAT"],caseInsensitive:!0},{id:"fastly-api-token",category:"fastly",title:"Fastly API token",pattern:String.raw`(?:fastly[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-z0-9=_-]{32})['"]`,keywords:["fastly"],caseInsensitive:!0},{id:"finicity-client-secret",category:"finicity",title:"Finicity client secret",pattern:String.raw`(?:finicity[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-z0-9]{20})['"]`,keywords:["finicity"],caseInsensitive:!0},{id:"finicity-api-token",category:"finicity",title:"Finicity API token",pattern:String.raw`(?:finicity[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-f0-9]{32})['"]`,keywords:["finicity"],caseInsensitive:!0},{id:"flutterwave-public-key",category:"flutterwave",title:"Flutterwave public/secret key",pattern:String.raw`(FLW(PUB|SEC)K_TEST-[a-h0-9]{32}-X)`,keywords:["FLWSECK_TEST-","FLWPUBK_TEST-"],caseInsensitive:!0},{id:"flutterwave-enc-key",category:"flutterwave",title:"Flutterwave encrypted key",pattern:String.raw`(FLWSECK_TEST[a-h0-9]{12})`,keywords:["FLWSECK_TEST"]},{id:"frameio-api-token",category:"frameio",title:"Frame.io API token",pattern:String.raw`(fio-u-[a-z0-9_=-]{64})`,keywords:["fio-u-"],caseInsensitive:!0},{id:"gocardless-api-token",category:"gocardless",title:"GoCardless API token",pattern:String.raw`(live_[a-z0-9_=-]{40})`,keywords:["live_"],caseInsensitive:!0},{id:"grafana-api-token",category:"grafana",title:"Grafana API token",pattern:String.raw`(eyJrIjoi[a-z0-9_=-]{72,92})`,keywords:["eyJrIjoi"],caseInsensitive:!0},{id:"hashicorp-tf-api-token",category:"hashicorp",title:"HashiCorp Terraform user/org API token",pattern:String.raw`([a-z0-9]{14}\.atlasv1\.[a-z0-9_=-]{60,70})`,keywords:["atlasv1."],caseInsensitive:!0},{id:"hubspot-api-token",category:"hubspot",title:"HubSpot API token",pattern:String.raw`(?:hubspot[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-h0-9]{8}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{12})['"]`,keywords:["hubspot"],caseInsensitive:!0},{id:"intercom-api-token",category:"intercom",title:"Intercom API token",pattern:String.raw`(?:intercom[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-z0-9=_]{60})['"]`,keywords:["intercom"],caseInsensitive:!0},{id:"intercom-client-secret",category:"intercom",title:"Intercom client secret/ID",pattern:String.raw`(?:intercom[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-h0-9]{8}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{12})['"]`,keywords:["intercom"],caseInsensitive:!0},{id:"ionic-api-token",category:"ionic",title:"Ionic API token",pattern:String.raw`(?:ionic[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"](ion_[a-z0-9]{42})['"]`,keywords:["ionic"],caseInsensitive:!0},{id:"linear-client-secret",category:"linear",title:"Linear client secret/ID",pattern:String.raw`(?:linear[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-f0-9]{32})['"]`,keywords:["linear"],caseInsensitive:!0},{id:"lob-api-key",category:"lob",title:"Lob API Key",pattern:String.raw`(?:lob[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]((live|test)_[a-f0-9]{35})['"]`,keywords:["lob"],caseInsensitive:!0},{id:"mailchimp-api-key",category:"mailchimp",title:"Mailchimp API key",pattern:String.raw`(?:mailchimp[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-f0-9]{32}-us20)['"]`,keywords:["mailchimp"],caseInsensitive:!0},{id:"mailgun-token",category:"mailgun",title:"Mailgun private API token",pattern:String.raw`(?:mailgun[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]((pub)?key-[a-f0-9]{32})['"]`,keywords:["mailgun"],caseInsensitive:!0},{id:"mailgun-signing-key",category:"mailgun",title:"Mailgun webhook signing key",pattern:String.raw`(?:mailgun[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-h0-9]{32}-[a-h0-9]{8}-[a-h0-9]{8})['"]`,keywords:["mailgun"],caseInsensitive:!0},{id:"mapbox-api-token",category:"mapbox",title:"Mapbox API token",pattern:String.raw`(pk\.[a-z0-9]{60}\.[a-z0-9]{22})`,keywords:["pk."],caseInsensitive:!0},{id:"messagebird-api-token",category:"messagebird",title:"MessageBird API token",pattern:String.raw`(?:messagebird[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-z0-9]{25})['"]`,keywords:["messagebird"],caseInsensitive:!0},{id:"messagebird-client-id",category:"messagebird",title:"MessageBird API client ID",pattern:String.raw`(?:messagebird[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-h0-9]{8}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{4}-[a-h0-9]{12})['"]`,keywords:["messagebird"],caseInsensitive:!0},{id:"new-relic-user-api-key",category:"newrelic",title:"New Relic user API Key",pattern:String.raw`(NRAK-[A-Z0-9]{27})`,keywords:["NRAK-"]},{id:"new-relic-user-api-id",category:"newrelic",title:"New Relic user API ID",pattern:String.raw`(?:newrelic[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([A-Z0-9]{64})['"]`,keywords:["newrelic"],caseInsensitive:!0},{id:"new-relic-browser-api-token",category:"newrelic",title:"New Relic ingest browser API token",pattern:String.raw`(NRJS-[a-f0-9]{19})`,keywords:["NRJS-"]},{id:"planetscale-password",category:"planetscale",title:"PlanetScale password",pattern:String.raw`(pscale_pw_[a-z0-9_.-]{43})`,keywords:["pscale_pw_"],caseInsensitive:!0},{id:"private-packagist-token",category:"private-packagist",title:"Private Packagist token",pattern:String.raw`(packagist_[ou][ru]t_[a-f0-9]{68})`,keywords:["packagist_uut_","packagist_ort_","packagist_out_"],caseInsensitive:!0},{id:"rubygems-api-token",category:"rubygems",title:"Rubygem API token",pattern:String.raw`(rubygems_[a-f0-9]{48})`,keywords:["rubygems_"]},{id:"shippo-api-token",category:"shippo",title:"Shippo API token",pattern:String.raw`(shippo_(live|test)_[a-f0-9]{40})`,keywords:["shippo_live_","shippo_test_"]},{id:"linkedin-client-secret",category:"linkedin",title:"LinkedIn Client secret",pattern:String.raw`(?:linkedin[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-z]{16})['"]`,keywords:["linkedin"],caseInsensitive:!0},{id:"linkedin-client-id",category:"linkedin",title:"LinkedIn Client ID",pattern:String.raw`(?:linkedin[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-z0-9]{14})['"]`,keywords:["linkedin"],caseInsensitive:!0},{id:"twitch-api-token",category:"twitch",title:"Twitch API token",pattern:String.raw`(?:twitch[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}['"]([a-z0-9]{30})['"]`,keywords:["twitch"],caseInsensitive:!0},{id:"typeform-api-token",category:"typeform",title:"Typeform API token",pattern:String.raw`(?:typeform[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:).{0,5}(tfp_[a-z0-9_.=-]{59})`,keywords:["typeform"],caseInsensitive:!0},{id:"todoist-api-token",category:"todoist",title:"Todoist API token",pattern:String.raw`(?:todoist[a-z0-9_ .,-]{0,25})(?:=|>|:=|\|\|:|<=|=>|:)[\s'"]{0,3}([0-9a-f]{40})`,keywords:["todoist"],caseInsensitive:!0},{id:"openai-api-key",category:"openai",title:"OpenAI API Key",pattern:String.raw`(sk-[a-zA-Z0-9]{50})`,caseInsensitive:!1,keywords:["sk-"]},{id:"openai-api-key-project",category:"openai",title:"OpenAI Project-scoped API Key",pattern:String.raw`(sk-proj-[A-Za-z0-9]{24}-[A-Za-z0-9]{40,128})`,caseInsensitive:!0,keywords:["sk-proj-"]},{id:"openai-api-key-env",category:"openai",title:"OpenAI Environment-scoped API Key",pattern:String.raw`(sk-(?:live|test)-[A-Za-z0-9]{24}-[A-Za-z0-9]{40,128})`,caseInsensitive:!0,keywords:["sk-live-","sk-test-"]},{id:"anthropic-api-key",category:"anthropic",title:"Anthropic API Key",pattern:String.raw`(sk-ant-([a-zA-Z0-9]{1,10}-)?[a-zA-Z0-9_-]{32,128})`,caseInsensitive:!1,keywords:["sk-ant-"]},{id:"canva-token",category:"canva",title:"Canva Token",pattern:String.raw`\b(cnv[a-z0-9]{2}[A-Za-z0-9_=-]+[a-f0-9]{8})\b`,caseInsensitive:!1,keywords:["cnv"]},{id:"api-key",category:"unknown",title:"Unknown API Key",pattern:String.raw`(?:[a-z0-9_ .,-]{0,25}api[-_](?:key|token)(?!length|count|max|min|maxlength|_length|_count|_min|_maxlength)[a-z0-9_ .,-]{0,25})\s*(?:=|>|:=|\|\|:|<=|=>|:)\s*['"]?((?!.*(?:api|key|secret|foo|example|dummy|password|12345|abcde|placeholder|fake|token))[a-z0-9+/_-]{6,128})['"]?(?=\s|$|[;,\]})'"])`,keywords:["api-key","api_key","api-token","api_token"],caseInsensitive:!0},{id:"webhook-secret",category:"unknown",title:"Unknown Webhook Secret",pattern:String.raw`(?:[a-z0-9_ .,-]{0,25}webhook[-_]secret(?!length|count|max|min|maxlength|_length|_count|_min|_maxlength)[a-z0-9_ .,-]{0,25})\s*(?:=|>|:=|\|\|:|<=|=>|:)\s*['"]?((?!.*(?:api|key|secret|foo|example|dummy|password|12345|abcde|placeholder|fake|token|webhook))[a-z0-9+/=_-]{6,128})['"]?(?=\s|$|[;,\]})'"])`,keywords:["webhook-secret","webhook_secret"],caseInsensitive:!0},{id:"password",category:"unknown",title:"Unknown Password",pattern:String.raw`(?:[a-z0-9_ .,-]{0,25}password(?!length|count|max|min|maxlength|_length|_count|_min|_maxlength)[a-z0-9_ .,-]{0,25})\s*(?:=|>|:=|\|\|:|<=|=>|:)\s*['"]?((?!.*(?:api|key|secret|foo|example|dummy|password|12345|abcde|placeholder|fake|token|password|pass|pwd))[a-z0-9+/=_-]{6,128})['"]?(?=\s|$|[;,\]})'"])`,keywords:["password"],caseInsensitive:!0},{id:"sk-secret",category:"unknown",title:"Unknown SK Secret",pattern:String.raw`(?:^|['"\s])(sk(?:[-_][a-z0-9]{1,10})?[-_][a-z0-9]{10,99})(?:$|['"\s])`,caseInsensitive:!0,keywords:["sk-","sk_"]}]});function Au4(J){if(!J||typeof J!=="string")return J;let Q=J.replace(Lu4,"");if(Q.length!==J.length){let Y=J.length-Q.length;x.info("Invisible Unicode tag characters removed during sanitization",{removedCount:Y})}return Q}function wu4(J){if(!J||typeof J!=="string")return J;let Q=Au4(J);for(let Y of mv0){if(!Y.keywords.some((G)=>Y.caseInsensitive?Q.toLowerCase().includes(G.toLowerCase()):Q.includes(G)))continue;let X=gv0(Y);Q=Q.replace(X,(G,Z)=>{return G.replace(Z,`[REDACTED:${Y.id}]`)})}return Q}function to(J,Q){if(!J||typeof J==="number"||typeof J==="boolean")return J;if(typeof J==="string")return Q(J);if(Array.isArray(J))return J.map((Y)=>{if(typeof Y==="string")return Q(Y);else if(Y&&typeof Y==="object")return to(Y,Q);return Y});if(J&&typeof J==="object"){if("type"in J&&(J.type==="base64"||J.type==="image")&&"data"in J)return{...J};if("isImage"in J&&J.isImage===!0&&"content"in J&&typeof J.content==="string"){let Y={};for(let[X,G]of Object.entries(J))if(X==="content")Y[X]=G;else Y[X]=to(G,Q);return Y}}return Object.fromEntries(Object.entries(J).map(([Y,X])=>[Y,to(X,Q)]))}function eo(J){return to(J,wu4)}var Lu4;var dv0=G1(()=>{H0();pv0();Lu4=/[\uDB40][\uDC00-\uDC7F]/g});function Eu4(J){return{[a5]:"oracle",[t3]:"subagent",[t8]:"codebase-search",[hE]:"codebase-search",[bE]:"codebase-search",[fF]:"codebase-search",[uE]:"codebase-search",[xF]:"codebase-search"}[J]||null}function Iu4(J,Q){let Y=J["~debug"];if(!Y)return null;x.debug("Extracting usage from tool debug info",{operationType:Q,debugInfoKeys:Object.keys(Y),hasUsage:!!Y.usage,hasInferences:Array.isArray(Y.inferences),inferenceCount:Array.isArray(Y.inferences)?Y.inferences.length:0});let X=[];if(Q==="subagent"){if(Y.usage)X=[{usage:Y.usage}];else if(Array.isArray(Y.inferences))X=Y.inferences}else X=Array.isArray(Y.inferences)?Y.inferences:[];if(X.length===0)return x.debug("No inferences found in tool debug",{operationType:Q}),null;let G=Pu4(X);return x.debug("Aggregated tool usage from inferences",{operationType:Q,inferenceCount:X.length,totalCredits:G.credits}),G}function Pu4(J){let Q=J.reduce((X,G)=>({inputTokens:X.inputTokens+(G.usage?.inputTokens??0),outputTokens:X.outputTokens+(G.usage?.outputTokens??0),cacheCreationInputTokens:X.cacheCreationInputTokens+(G.usage?.cacheCreationInputTokens??0),cacheReadInputTokens:X.cacheReadInputTokens+(G.usage?.cacheReadInputTokens??0),credits:X.credits+(G.usage?.credits??0)}),{inputTokens:0,outputTokens:0,cacheCreationInputTokens:0,cacheReadInputTokens:0,credits:0}),Y=J[J.length-1]?.usage;return{model:Y?.model,maxInputTokens:Y?.maxInputTokens??0,inputTokens:Q.inputTokens,outputTokens:Q.outputTokens,totalInputTokens:Q.inputTokens+Q.cacheCreationInputTokens+Q.cacheReadInputTokens,cacheCreationInputTokens:Q.cacheCreationInputTokens,cacheReadInputTokens:Q.cacheReadInputTokens,credits:Q.credits}}function Tu4(J,Q){if(Q==="subagent")return J["~debug"]?.threadID||J.threadID;return}function Ru4(J){let Q,Y=-1;for(let G=J.length-1;G>=0;G--){let Z=J[G];if(Z?.role==="assistant"){Q=Z.messageId,Y=G;break}}if(Y===-1)return{fromMessageId:void 0,toMessageId:Q};let X;for(let G=Y-1;G>=0;G--){let Z=J[G];if(Z?.role==="user"){X=Z.messageId;break}}return{fromMessageId:X,toMessageId:Q}}function cv0(J,Q,Y){let X=iE(J,Q);if(!X?.block?.name){x.debug("Tool block not found for ledger extraction",{toolUse:Q});return}let G=Eu4(X.block.name);if(x.debug("Processing tool completion for ledger",{toolName:X.block.name,toolUse:Q,operationType:G,hasDebugInfo:!!Y["~debug"],debugKeys:Y["~debug"]?Object.keys(Y["~debug"]):[]}),!G)return;let Z=Iu4(Y,G);if(!Z){x.debug("No usage extracted from tool debug info",{toolName:X.block.name,operationType:G,hasDebug:!!Y["~debug"]});return}let q=Tu4(Y,G),V;for(let K of J.messages)if(K.role==="assistant"&&Array.isArray(K.content)){for(let W of K.content)if(W.type==="tool_use"&&W.id===Q){V=K.messageId;break}if(V!==void 0)break}x.debug("Adding tool usage to thread ledger",{toolName:X.block.name,operationType:G,credits:Z.credits,subagentThreadID:q,triggeringMessageId:V}),bx(J,Z,G,q,V,Q)}function bx(J,Q,Y="inference",X,G,Z){if(!J.usageLedger)J.usageLedger={events:[]};let q,V;if(Y==="inference"&&J.messages){let H=Ru4(J.messages);q=H.fromMessageId,V=H.toMessageId}else if(G!==void 0)q=G,V=G;let K={id:crypto.randomUUID(),timestamp:new Date().toISOString(),model:Q.model,credits:Q.credits??0,tokens:{input:Q.inputTokens??0,output:Q.outputTokens??0},operationType:Y,subagentThreadID:X,fromMessageId:q,toMessageId:V,toolUseID:Z};J.usageLedger.events.push(K);let W=J.usageLedger.events.reduce((H,z)=>H+z.credits,0);x.debug("usage-ledger:event",{threadId:J.id,operationType:Y,eventId:K.id,toolUseID:Z,addedCredits:K.credits,totalCredits:W,eventCount:J.usageLedger.events.length,fromMessageId:q,toMessageId:V})}function lv0(J){return J.usageLedger?.events.reduce((Q,Y)=>Q+Y.credits,0)??0}function iv0(J,Q){let Y=J.usageLedger?.events??[],X=new Map;for(let Z of Y){let q=Z.model?.trim()||"unknown",V=`${q}|${Z.operationType}`,K=X.get(V)??{model:q,operationType:Z.operationType,credits:0,tokensIn:0,tokensOut:0};K.credits+=Z.credits||0,K.tokensIn+=Z.tokens?.input||0,K.tokensOut+=Z.tokens?.output||0,X.set(V,K)}let G=Array.from(X.values());if(!Q?.includeZero)G=G.filter((Z)=>Z.credits>0);return G.sort((Z,q)=>q.credits-Z.credits||Z.model.localeCompare(q.model)||Z.operationType.localeCompare(q.operationType)),G}function nv0(J){let Q=new Map,Y=0,X=0,G=0;for(let q of J){let V=Q.get(q.model);if(!V)V={model:q.model,totalCredits:0,totalTokensIn:0,totalTokensOut:0,rows:[]},Q.set(q.model,V);V.rows.push({operationType:q.operationType,credits:q.credits,tokensIn:q.tokensIn,tokensOut:q.tokensOut}),V.totalCredits+=q.credits,V.totalTokensIn+=q.tokensIn,V.totalTokensOut+=q.tokensOut,Y+=q.credits,X+=q.tokensIn,G+=q.tokensOut}let Z=Array.from(Q.values());Z.sort((q,V)=>V.totalCredits-q.totalCredits||q.model.localeCompare(V.model));for(let q of Z)q.rows.sort((V,K)=>K.credits-V.credits||V.operationType.localeCompare(K.operationType));return{models:Z,grandTotal:{credits:Y,tokensIn:X,tokensOut:G}}}function Js(J,Q){return J.usageLedger?.events.filter((Y)=>Y.toolUseID===Q).reduce((Y,X)=>Y+X.credits,0)??0}function wD1(J){if(J?.role!=="user")return!1;let Q=Array.isArray(J.content)?J.content:[];if(Q.length===0)return!1;return Q.every((Y)=>Y&&Y.type==="tool_result")}function Cu4(J,Q){for(let Y=J.length-1;Y>=0;Y--){let X=J[Y];if(X?.messageId===Q){if(X.role==="user"&&!wD1(X))return Q;if(X.role==="user"&&wD1(X))for(let G=Y-1;G>=0;G--){let Z=J[G];if(Z?.role==="user"&&!wD1(Z))return Z.messageId}break}}return Q}function av0(J){if(!J.usageLedger?.events.length||!J.messages)return 0;let Q=J.usageLedger.events.filter((G)=>G.operationType==="inference");if(!Q.length)return 0;let Y=Q[Q.length-1];if(!Y||Y.fromMessageId===void 0)return Y?.credits??0;let X=Cu4(J.messages,Y.fromMessageId);return J.usageLedger.events.filter((G)=>G.fromMessageId!==void 0&&G.fromMessageId>=X).reduce((G,Z)=>G+Z.credits,0)}var bP=G1(()=>{H0();K4();V9()});function ju4(J){return J?J.length>=Su4:!1}function TH(J){if(J.nextMessageId===void 0)J.nextMessageId=0;return J.nextMessageId++}function _u4(J,Q){J["~debug"]={...J["~debug"]??{},...Q.usage?{lastInferenceUsage:Q.usage}:{}}}function rv0(J){return(Q)=>{switch(Q.v++,J.type){case"cancelled":{Qs(Q);let Y=Q.messages.at(-1);if(Y?.role==="user"){let X=Y.content.findLast((G)=>G.type==="tool_result");if(X)X.run.status="cancelled"}break}case"user:message:interrupt":{let Y=Q.messages[J.messageIndex];if(Y?.role==="user")Y.interrupted=!0;break}case"artifact:update":{if(!Q.artifacts)Q.artifacts={};let Y=Q.artifacts[J.artifactId];Q.artifacts[J.artifactId]={type:"plan",content:J.content,created:Y?.created??Date.now(),updated:Date.now(),version:J.version??(Y?.version??0)+1};break}case"summary:created":{if(J.summary.type==="external"){if(!Q.summaryThreads)Q.summaryThreads=[];Q.summaryThreads.push(J.summary.summaryThreadID),Q.messages.push({role:"info",messageId:TH(Q),content:[{type:"summary",summary:{type:"thread",thread:J.summary.summaryThreadID}}]})}else if(J.summary.type==="internal"){let Y=TH(Q);if(Q.messages.push({role:"info",messageId:Y,content:[{type:"summary",summary:{type:"message",summary:J.summary.summary}}]}),J.summary.usage)x.debug("summary:created delta handler: adding usage to ledger",{usage:{...J.summary.usage},messageId:Y,threadId:Q.id}),bx(Q,J.summary.usage,"summarization",void 0,Y);else x.warn("summary:created delta handler: no usage in internal summary")}break}case"fork:created":{if(!Q.forkThreads)Q.forkThreads={};let Y=Q.forkThreads[J.fromMessageIndex]||[];Q.forkThreads={...Q.forkThreads,[J.fromMessageIndex]:[...Y,J.forkThreadID]},Q.v++;break}case"thread:truncate":{if(Q.messages.splice(J.fromIndex),Q.forkThreads){let Y=[];for(let X in Q.forkThreads){let G=Number(X);if(G>=J.fromIndex)Y.push(G)}for(let X of Y)delete Q.forkThreads[X];if(Object.keys(Q.forkThreads).length===0)Q.forkThreads=void 0}break}case"user:message":{Qs(Q);let Y={role:"user",messageId:TH(Q),...J.message,content:J.message.content??[]},X=eo(Y);if(J.index!==void 0){if(!Q.messages[J.index])throw Error(`user message at index ${J.index} not found`);let G=Q.messages[J.index];if(Q.messages.filter((V)=>V.role==="user")[0]===G&&Y.agentMode&&!Q.mainThreadID)Q.agentMode=Y.agentMode;Q.messages.splice(J.index,Q.messages.length-J.index,X)}else{let G=PZ(Q)===0;if((!Q.agentMode||G)&&Y.agentMode&&!Q.mainThreadID)Q.agentMode=Y.agentMode;if(Q.messages.push(X),Y.agentMode==="plan"&&Q.messages.length===1&&!Q.artifacts?.plan){if(!Q.artifacts)Q.artifacts={};let Z=Date.now();Q.artifacts.plan={type:"plan",content:CZ,created:Z,version:0,updated:Z}}if(Q.draft)Q.draft=void 0}break}case"user:message-queue:dequeue":{if(Qs(Q),!Q.queuedMessages)return;let[Y,...X]=Q.queuedMessages;if(!Y)return;Q.messages.push(Y.queuedMessage),Q.queuedMessages=X;break}case"user:tool-input":{if(!U$(Q,J.toolUse)){x.debug(`Ignoring user:tool-input delta for missing tool use ${J.toolUse} (likely deleted due to thread edit/truncation)`);break}let X=x8(bF(Q,J.toolUse));if(!X){x.debug(`Ignoring user:tool-input delta for missing tool result block ${J.toolUse} (likely deleted due to thread edit/truncation)`);break}X.userInput=J.value;break}case"tool:data":{if(!iE(Q,J.toolUse)){x.debug(`Ignoring tool:data delta for missing tool use ${J.toolUse} (likely deleted due to thread edit/truncation)`);break}let X=x8(eo(J.data));if(ov0(Q,J.toolUse,X),X&&"status"in X&&X.status==="done"){if(cv0(Q,J.toolUse,X),X.result&&typeof X.result==="object"&&"artifact"in X.result&&X.result.artifact&&typeof X.result.artifact==="object"&&"id"in X.result.artifact&&"content"in X.result.artifact){let{id:G,content:Z}=X.result.artifact;if(!Q.artifacts)Q.artifacts={};let q=Q.artifacts[G],V=q?.created??Date.now(),K=q?.version??0;Q.artifacts[G]={type:"plan",content:Z,created:V,updated:Date.now(),version:K+1}}}break}case"tool:processed":{let Y=iE(Q,J.toolUse);if(!Y){x.debug(`Ignoring tool:processed delta for missing tool use ${J.toolUse} (likely deleted due to thread edit/truncation)`);break}let X=Y.block.input;Y.block.input=J.newArgs,Y.message.originalToolUseInput={...Y.message.originalToolUseInput,[J.toolUse]:X};break}case"assistant:message":{let Y=e3(Q,"assistant"),X=Y?.content.filter((Z)=>Z.type==="tool_use").map((Z)=>Z.id)||[];if(Qs(Q),Y?.state.type==="cancelled"){for(let Z of Q.messages)if(Z.role==="user")Z.content=Z.content.filter((q)=>{if(q.type==="tool_result"&&X.includes(q.toolUseID))return!1;return!0})}let G={...J.message,messageId:TH(Q)};Q.messages.push(x8(G));break}case"assistant:message-update":{let Y=x8(J.message),X=Q.messages.at(-1);if(X?.role==="assistant")Q.messages=[...Q.messages.slice(0,-1),{...Y,messageId:X?.messageId}];else Q.messages=[...Q.messages,{...Y,messageId:TH(Q)}];break}case"inference:completed":{if(_u4(Q,{usage:J.usage}),!Q.env)Q.env={initial:{}};if(!Q.env.initial.tags)Q.env.initial.tags=[];let Y=`model:${J.model}`;if(!Q.env.initial.tags.includes(Y))Q.env.initial.tags=[...Q.env.initial.tags,Y];if(J.usage){let X=x8(e3(Q,"assistant"));if(bx(Q,J.usage,"inference"),X){let G=av0(Q);X.usage={...J.usage,creditsSinceLastUserMessage:G}}}break}case"title":{if(Q.title=J.value||void 0,J.usage)bx(Q,J.usage,"title-generation",void 0,0);break}case"max-tokens":{Q.maxTokens=J.value||void 0;break}case"main-thread":{Q.mainThreadID=J.value||void 0;break}case"agent-mode":{if(PZ(Q)>0)throw Error("(bug) cannot change agentMode after first message");Q.agentMode=J.mode;break}case"environment":{Q.env=x8(J.env);break}case"user:message-queue:enqueue":{if(!Q.queuedMessages)Q.queuedMessages=[];if(ju4(Q.queuedMessages))break;let Y={role:"user",messageId:TH(Q),...J.message,content:J.message.content??[]},X=eo(Y);Q.queuedMessages.push({id:uv0("queued-"),queuedMessage:x8(X)});break}case"user:message-queue:discard":{if(J.id===void 0){Q.queuedMessages=[];break}let Y=Q.queuedMessages?.findIndex((X)=>X.id===J.id);if(Y===void 0)throw Error(`queued message with id ${J.id} not found`);Q?.queuedMessages?.splice(Y,1);break}case"info:manual-bash-invocation":{Q.messages.push({role:"info",messageId:TH(Q),content:[{type:"manual_bash_invocation",args:x8(J.args),toolRun:x8(J.toolRun),hidden:J.hidden}]});break}case"info:skill-injection":{Q.messages.push({role:"info",messageId:TH(Q),content:[{type:"text",text:J.content}]});break}}}}function Qs(J){let Q=x8(e3(J,"assistant"));if(!Q)return;let Y=!1,X=[];if(Q.state.type==="streaming")Q.state={type:"cancelled"},Y=!0;else if(Q.state.type==="complete"){if(Q.content.some((Z)=>Z.type==="tool_use"&&!P3(Z)))Q.state={type:"cancelled"},Y=!0}if(Y){for(let Z=0;Z<Q.content.length;Z++){let q=Q.content[Z];if(q?.type==="tool_use"&&!P3(q)){X.push(q.id),x.debug(`Cleaning up incomplete tool_use ${q.id}`,{name:"markPriorStreamingAssistantMessageAsCancelled",threadID:J.id,blockID:q.id});let V={type:"tool_use",id:q.id,name:q.name,complete:!0,input:q.inputIncomplete??q.input??{}};Q.content[Z]=V}}let G=iJ(J);for(let Z of X)if(!G.has(Z))ov0(J,Z,{status:"cancelled"})}}function ov0(J,Q,Y){let X,G=iE(J,Q);if(G){let q=G.messageIndex;for(let V=q+1;V<J.messages.length;V++){let K=J.messages[V];if(K?.role==="user"){X=K;break}}}if(!X)X={role:"user",messageId:TH(J),content:[]},J.messages.push(X);let Z=bF(J,Q);if(Z)Z.run=x8(Y);else Z={type:"tool_result",toolUseID:Q,run:x8(Y)},X.content.push(Z)}function Ys(J){try{return fX(J.replace(/\\+$/,"")+'"')}catch{return fX(J)}}var Su4=5;var $s=G1(()=>{eD();WY();H0();dv0();V9();bP()});function L4(J,Q,Y,X,G){if(X==="m")throw TypeError("Private method is not writable");if(X==="a"&&!G)throw TypeError("Private accessor was defined without a setter");if(typeof Q==="function"?J!==Q||!G:!Q.has(J))throw TypeError("Cannot write private member to an object whose class did not declare it");return X==="a"?G.call(J,Y):G?G.value=Y:Q.set(J,Y),Y}function O0(J,Q,Y,X){if(Y==="a"&&!X)throw TypeError("Private accessor was defined without a getter");if(typeof Q==="function"?J!==Q||!X:!Q.has(J))throw TypeError("Cannot read private member from an object whose class did not declare it");return Y==="m"?X:Y==="a"?X.call(J):X?X.value:Q.get(J)}var $G=()=>{};var ED1=function(){let{crypto:J}=globalThis;if(J?.randomUUID)return ED1=J.randomUUID.bind(J),J.randomUUID();let Q=new Uint8Array(1),Y=J?()=>J.getRandomValues(Q)[0]:()=>Math.random()*255&255;return"10000000-1000-4000-8000-100000000000".replace(/[018]/g,(X)=>(+X^Y()&15>>+X/4).toString(16))};function ux(J){return typeof J==="object"&&J!==null&&(("name"in J)&&J.name==="AbortError"||("message"in J)&&String(J.message).includes("FetchRequestCanceledException"))}var gx=(J)=>{if(J instanceof Error)return J;if(typeof J==="object"&&J!==null){try{if(Object.prototype.toString.call(J)==="[object Error]"){let Q=Error(J.message,J.cause?{cause:J.cause}:{});if(J.stack)Q.stack=J.stack;if(J.cause&&!Q.cause)Q.cause=J.cause;if(J.name)Q.name=J.name;return Q}}catch{}try{return Error(JSON.stringify(J))}catch{}}return Error(J)};var s6,x7,Y3,FM,UM,mx,px,dx,cx,lx,ix,nx,ax,rx,ox,RH;var eV=G1(()=>{s6=class s6 extends Error{};x7=class x7 extends s6{constructor(J,Q,Y,X){super(`${x7.makeMessage(J,Q,Y)}`);this.status=J,this.headers=X,this.requestID=X?.get("x-request-id"),this.error=Q;let G=Q;this.code=G?.code,this.param=G?.param,this.type=G?.type}static makeMessage(J,Q,Y){let X=Q?.message?typeof Q.message==="string"?Q.message:JSON.stringify(Q.message):Q?JSON.stringify(Q):Y;if(J&&X)return`${J} ${X}`;if(J)return`${J} status code (no body)`;if(X)return X;return"(no status code or body)"}static generate(J,Q,Y,X){if(!J||!X)return new FM({message:Y,cause:gx(Q)});let G=Q?.error;if(J===400)return new mx(J,G,Y,X);if(J===401)return new px(J,G,Y,X);if(J===403)return new dx(J,G,Y,X);if(J===404)return new cx(J,G,Y,X);if(J===409)return new lx(J,G,Y,X);if(J===422)return new ix(J,G,Y,X);if(J===429)return new nx(J,G,Y,X);if(J>=500)return new ax(J,G,Y,X);return new x7(J,G,Y,X)}};Y3=class Y3 extends x7{constructor({message:J}={}){super(void 0,void 0,J||"Request was aborted.",void 0)}};FM=class FM extends x7{constructor({message:J,cause:Q}){super(void 0,void 0,J||"Connection error.",void 0);if(Q)this.cause=Q}};UM=class UM extends FM{constructor({message:J}={}){super({message:J??"Request timed out."})}};mx=class mx extends x7{};px=class px extends x7{};dx=class dx extends x7{};cx=class cx extends x7{};lx=class lx extends x7{};ix=class ix extends x7{};nx=class nx extends x7{};ax=class ax extends x7{};rx=class rx extends s6{constructor(){super("Could not parse response content as the length limit was reached")}};ox=class ox extends s6{constructor(){super("Could not parse response content as the request was rejected by the content filter")}};RH=class RH extends Error{constructor(J){super(J)}}});function PD1(J){if(typeof J!=="object")return{};return J??{}}function tv0(J){if(!J)return!0;for(let Q in J)return!1;return!0}function ev0(J,Q){return Object.prototype.hasOwnProperty.call(J,Q)}function sx(J){return J!=null&&typeof J==="object"&&!Array.isArray(J)}var yu4,sv0=(J)=>{return yu4.test(J)},tJ=(J)=>(tJ=Array.isArray,tJ(J)),ID1,Jx0=(J,Q)=>{if(typeof Q!=="number"||!Number.isInteger(Q))throw new s6(`${J} must be an integer`);if(Q<0)throw new s6(`${J} must be a positive integer`);return Q},Qx0=(J)=>{try{return JSON.parse(J)}catch(Q){return}};var CH=G1(()=>{eV();yu4=/^[a-z][a-z0-9+.-]*:/i,ID1=tJ});var JK=(J)=>new Promise((Q)=>setTimeout(Q,J));var xU="6.7.0";function vu4(){if(typeof Deno<"u"&&Deno.build!=null)return"deno";if(typeof EdgeRuntime<"u")return"edge";if(Object.prototype.toString.call(typeof globalThis.process<"u"?globalThis.process:0)==="[object process]")return"node";return"unknown"}function fu4(){if(typeof navigator>"u"||!navigator)return null;let J=[{key:"edge",pattern:/Edge(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"ie",pattern:/MSIE(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"ie",pattern:/Trident(?:.*rv\:(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"chrome",pattern:/Chrome(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"firefox",pattern:/Firefox(?:\W+(\d+)\.(\d+)(?:\.(\d+))?)?/},{key:"safari",pattern:/(?:Version\W+(\d+)\.(\d+)(?:\.(\d+))?)?(?:\W+Mobile\S*)?\W+Safari/}];for(let{key:Q,pattern:Y}of J){let X=Y.exec(navigator.userAgent);if(X){let G=X[1]||0,Z=X[2]||0,q=X[3]||0;return{browser:Q,version:`${G}.${Z}.${q}`}}}return null}var Gx0=()=>{return typeof window<"u"&&typeof window.document<"u"&&typeof navigator<"u"},xu4=()=>{let J=vu4();if(J==="deno")return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":xU,"X-Stainless-OS":$x0(Deno.build.os),"X-Stainless-Arch":Yx0(Deno.build.arch),"X-Stainless-Runtime":"deno","X-Stainless-Runtime-Version":typeof Deno.version==="string"?Deno.version:Deno.version?.deno??"unknown"};if(typeof EdgeRuntime<"u")return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":xU,"X-Stainless-OS":"Unknown","X-Stainless-Arch":`other:${EdgeRuntime}`,"X-Stainless-Runtime":"edge","X-Stainless-Runtime-Version":globalThis.process.version};if(J==="node")return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":xU,"X-Stainless-OS":$x0(globalThis.process.platform??"unknown"),"X-Stainless-Arch":Yx0(globalThis.process.arch??"unknown"),"X-Stainless-Runtime":"node","X-Stainless-Runtime-Version":globalThis.process.version??"unknown"};let Q=fu4();if(Q)return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":xU,"X-Stainless-OS":"Unknown","X-Stainless-Arch":"unknown","X-Stainless-Runtime":`browser:${Q.browser}`,"X-Stainless-Runtime-Version":Q.version};return{"X-Stainless-Lang":"js","X-Stainless-Package-Version":xU,"X-Stainless-OS":"Unknown","X-Stainless-Arch":"unknown","X-Stainless-Runtime":"unknown","X-Stainless-Runtime-Version":"unknown"}},Yx0=(J)=>{if(J==="x32")return"x32";if(J==="x86_64"||J==="x64")return"x64";if(J==="arm")return"arm";if(J==="aarch64"||J==="arm64")return"arm64";if(J)return`other:${J}`;return"unknown"},$x0=(J)=>{if(J=J.toLowerCase(),J.includes("ios"))return"iOS";if(J==="android")return"Android";if(J==="darwin")return"MacOS";if(J==="win32")return"Windows";if(J==="freebsd")return"FreeBSD";if(J==="openbsd")return"OpenBSD";if(J==="linux")return"Linux";if(J)return`Other:${J}`;return"Unknown"},Xx0,Zx0=()=>{return Xx0??(Xx0=xu4())};var TD1=()=>{};function qx0(){if(typeof fetch<"u")return fetch;throw Error("`fetch` is not defined as a global; Either pass `fetch` to the client, `new OpenAI({ fetch })` or polyfill the global, `globalThis.fetch = fetch`")}function RD1(...J){let Q=globalThis.ReadableStream;if(typeof Q>"u")throw Error("`ReadableStream` is not defined as a global; You will need to polyfill it, `globalThis.ReadableStream = ReadableStream`");return new Q(...J)}function Xs(J){let Q=Symbol.asyncIterator in J?J[Symbol.asyncIterator]():J[Symbol.iterator]();return RD1({start(){},async pull(Y){let{done:X,value:G}=await Q.next();if(X)Y.close();else Y.enqueue(G)},async cancel(){await Q.return?.()}})}function CD1(J){if(J[Symbol.asyncIterator])return J;let Q=J.getReader();return{async next(){try{let Y=await Q.read();if(Y?.done)Q.releaseLock();return Y}catch(Y){throw Q.releaseLock(),Y}},async return(){let Y=Q.cancel();return Q.releaseLock(),await Y,{done:!0,value:void 0}},[Symbol.asyncIterator](){return this}}}async function Vx0(J){if(J===null||typeof J!=="object")return;if(J[Symbol.asyncIterator]){await J[Symbol.asyncIterator]().return?.();return}let Q=J.getReader(),Y=Q.cancel();Q.releaseLock(),await Y}var Kx0=({headers:J,body:Q})=>{return{bodyHeaders:{"content-type":"application/json"},body:JSON.stringify(Q)}};var Gs="RFC3986",SD1=(J)=>String(J),Zs,jD1="RFC1738";var qs=G1(()=>{Zs={RFC1738:(J)=>String(J).replace(/%20/g,"+"),RFC3986:SD1}});function Hx0(J){if(!J||typeof J!=="object")return!1;return!!(J.constructor&&J.constructor.isBuffer&&J.constructor.isBuffer(J))}function kD1(J,Q){if(tJ(J)){let Y=[];for(let X=0;X<J.length;X+=1)Y.push(Q(J[X]));return Y}return Q(J)}var Vs=(J,Q)=>(Vs=Object.hasOwn??Function.prototype.call.bind(Object.prototype.hasOwnProperty),Vs(J,Q)),QK,_D1=1024,Wx0=(J,Q,Y,X,G)=>{if(J.length===0)return J;let Z=J;if(typeof J==="symbol")Z=Symbol.prototype.toString.call(J);else if(typeof J!=="string")Z=String(J);if(Y==="iso-8859-1")return escape(Z).replace(/%u[0-9a-f]{4}/gi,function(V){return"%26%23"+parseInt(V.slice(2),16)+"%3B"});let q="";for(let V=0;V<Z.length;V+=_D1){let K=Z.length>=_D1?Z.slice(V,V+_D1):Z,W=[];for(let H=0;H<K.length;++H){let z=K.charCodeAt(H);if(z===45||z===46||z===95||z===126||z>=48&&z<=57||z>=65&&z<=90||z>=97&&z<=122||G===jD1&&(z===40||z===41)){W[W.length]=K.charAt(H);continue}if(z<128){W[W.length]=QK[z];continue}if(z<2048){W[W.length]=QK[192|z>>6]+QK[128|z&63];continue}if(z<55296||z>=57344){W[W.length]=QK[224|z>>12]+QK[128|z>>6&63]+QK[128|z&63];continue}H+=1,z=65536+((z&1023)<<10|K.charCodeAt(H)&1023),W[W.length]=QK[240|z>>18]+QK[128|z>>12&63]+QK[128|z>>6&63]+QK[128|z&63]}q+=W.join("")}return q};var zx0=G1(()=>{qs();CH();QK=(()=>{let J=[];for(let Q=0;Q<256;++Q)J.push("%"+((Q<16?"0":"")+Q.toString(16)).toUpperCase());return J})()});function uu4(J){return typeof J==="string"||typeof J==="number"||typeof J==="boolean"||typeof J==="symbol"||typeof J==="bigint"}function Nx0(J,Q,Y,X,G,Z,q,V,K,W,H,z,U,B,O,M,L,E){let I=J,P=E,R=0,j=!1;while((P=P.get(yD1))!==void 0&&!j){let b=P.get(J);if(R+=1,typeof b<"u")if(b===R)throw RangeError("Cyclic object value");else j=!0;if(typeof P.get(yD1)>"u")R=0}if(typeof W==="function")I=W(Q,I);else if(I instanceof Date)I=U?.(I);else if(Y==="comma"&&tJ(I))I=kD1(I,function(b){if(b instanceof Date)return U?.(b);return b});if(I===null){if(Z)return K&&!M?K(Q,$3.encoder,L,"key",B):Q;I=""}if(uu4(I)||Hx0(I)){if(K){let b=M?Q:K(Q,$3.encoder,L,"key",B);return[O?.(b)+"="+O?.(K(I,$3.encoder,L,"value",B))]}return[O?.(Q)+"="+O?.(String(I))]}let y=[];if(typeof I>"u")return y;let h;if(Y==="comma"&&tJ(I)){if(M&&K)I=kD1(I,K);h=[{value:I.length>0?I.join(",")||null:void 0}]}else if(tJ(W))h=W;else{let b=Object.keys(I);h=H?b.sort(H):b}let g=V?String(Q).replace(/\./g,"%2E"):String(Q),p=X&&tJ(I)&&I.length===1?g+"[]":g;if(G&&tJ(I)&&I.length===0)return p+"[]";for(let b=0;b<h.length;++b){let i=h[b],t=typeof i==="object"&&typeof i.value<"u"?i.value:I[i];if(q&&t===null)continue;let r=z&&V?i.replace(/\./g,"%2E"):i,m=tJ(I)?typeof Y==="function"?Y(p,r):p:p+(z?"."+r:"["+r+"]");E.set(J,R);let s=new WeakMap;s.set(yD1,E),Bx0(y,Nx0(t,m,Y,X,G,Z,q,V,Y==="comma"&&M&&tJ(I)?null:K,W,H,z,U,B,O,M,L,s))}return y}function gu4(J=$3){if(typeof J.allowEmptyArrays<"u"&&typeof J.allowEmptyArrays!=="boolean")throw TypeError("`allowEmptyArrays` option can only be `true` or `false`, when provided");if(typeof J.encodeDotInKeys<"u"&&typeof J.encodeDotInKeys!=="boolean")throw TypeError("`encodeDotInKeys` option can only be `true` or `false`, when provided");if(J.encoder!==null&&typeof J.encoder<"u"&&typeof J.encoder!=="function")throw TypeError("Encoder has to be a function.");let Q=J.charset||$3.charset;if(typeof J.charset<"u"&&J.charset!=="utf-8"&&J.charset!=="iso-8859-1")throw TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");let Y=Gs;if(typeof J.format<"u"){if(!Vs(Zs,J.format))throw TypeError("Unknown format option provided.");Y=J.format}let X=Zs[Y],G=$3.filter;if(typeof J.filter==="function"||tJ(J.filter))G=J.filter;let Z;if(J.arrayFormat&&J.arrayFormat in Ux0)Z=J.arrayFormat;else if("indices"in J)Z=J.indices?"indices":"repeat";else Z=$3.arrayFormat;if("commaRoundTrip"in J&&typeof J.commaRoundTrip!=="boolean")throw TypeError("`commaRoundTrip` must be a boolean, or absent");let q=typeof J.allowDots>"u"?!!J.encodeDotInKeys===!0?!0:$3.allowDots:!!J.allowDots;return{addQueryPrefix:typeof J.addQueryPrefix==="boolean"?J.addQueryPrefix:$3.addQueryPrefix,allowDots:q,allowEmptyArrays:typeof J.allowEmptyArrays==="boolean"?!!J.allowEmptyArrays:$3.allowEmptyArrays,arrayFormat:Z,charset:Q,charsetSentinel:typeof J.charsetSentinel==="boolean"?J.charsetSentinel:$3.charsetSentinel,commaRoundTrip:!!J.commaRoundTrip,delimiter:typeof J.delimiter>"u"?$3.delimiter:J.delimiter,encode:typeof J.encode==="boolean"?J.encode:$3.encode,encodeDotInKeys:typeof J.encodeDotInKeys==="boolean"?J.encodeDotInKeys:$3.encodeDotInKeys,encoder:typeof J.encoder==="function"?J.encoder:$3.encoder,encodeValuesOnly:typeof J.encodeValuesOnly==="boolean"?J.encodeValuesOnly:$3.encodeValuesOnly,filter:G,format:Y,formatter:X,serializeDate:typeof J.serializeDate==="function"?J.serializeDate:$3.serializeDate,skipNulls:typeof J.skipNulls==="boolean"?J.skipNulls:$3.skipNulls,sort:typeof J.sort==="function"?J.sort:null,strictNullHandling:typeof J.strictNullHandling==="boolean"?J.strictNullHandling:$3.strictNullHandling}}function vD1(J,Q={}){let Y=J,X=gu4(Q),G,Z;if(typeof X.filter==="function")Z=X.filter,Y=Z("",Y);else if(tJ(X.filter))Z=X.filter,G=Z;let q=[];if(typeof Y!=="object"||Y===null)return"";let V=Ux0[X.arrayFormat],K=V==="comma"&&X.commaRoundTrip;if(!G)G=Object.keys(Y);if(X.sort)G.sort(X.sort);let W=new WeakMap;for(let U=0;U<G.length;++U){let B=G[U];if(X.skipNulls&&Y[B]===null)continue;Bx0(q,Nx0(Y[B],B,V,K,X.allowEmptyArrays,X.strictNullHandling,X.skipNulls,X.encodeDotInKeys,X.encode?X.encoder:null,X.filter,X.sort,X.allowDots,X.serializeDate,X.format,X.formatter,X.encodeValuesOnly,X.charset,W))}let H=q.join(X.delimiter),z=X.addQueryPrefix===!0?"?":"";if(X.charsetSentinel)if(X.charset==="iso-8859-1")z+="utf8=%26%2310003%3B&";else z+="utf8=%E2%9C%93&";return H.length>0?z+H:""}var Ux0,Bx0=function(J,Q){Array.prototype.push.apply(J,tJ(Q)?Q:[Q])},Fx0,$3,yD1;var Dx0=G1(()=>{zx0();qs();CH();Ux0={brackets(J){return String(J)+"[]"},comma:"comma",indices(J,Q){return String(J)+"["+Q+"]"},repeat(J){return String(J)}},$3={addQueryPrefix:!1,allowDots:!1,allowEmptyArrays:!1,arrayFormat:"indices",charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encodeDotInKeys:!1,encoder:Wx0,encodeValuesOnly:!1,format:Gs,formatter:SD1,indices:!1,serializeDate(J){return(Fx0??(Fx0=Function.prototype.call.bind(Date.prototype.toISOString)))(J)},skipNulls:!1,strictNullHandling:!1};yD1={}});var Ox0=G1(()=>{qs();Dx0()});function Ax0(J){let Q=0;for(let G of J)Q+=G.length;let Y=new Uint8Array(Q),X=0;for(let G of J)Y.set(G,X),X+=G.length;return Y}function uP(J){let Q;return(Mx0??(Q=new globalThis.TextEncoder,Mx0=Q.encode.bind(Q)))(J)}function xD1(J){let Q;return(Lx0??(Q=new globalThis.TextDecoder,Lx0=Q.decode.bind(Q)))(J)}var Mx0,Lx0;class gP{constructor(){f$.set(this,void 0),h$.set(this,void 0),L4(this,f$,new Uint8Array,"f"),L4(this,h$,null,"f")}decode(J){if(J==null)return[];let Q=J instanceof ArrayBuffer?new Uint8Array(J):typeof J==="string"?uP(J):J;L4(this,f$,Ax0([O0(this,f$,"f"),Q]),"f");let Y=[],X;while((X=pu4(O0(this,f$,"f"),O0(this,h$,"f")))!=null){if(X.carriage&&O0(this,h$,"f")==null){L4(this,h$,X.index,"f");continue}if(O0(this,h$,"f")!=null&&(X.index!==O0(this,h$,"f")+1||X.carriage)){Y.push(xD1(O0(this,f$,"f").subarray(0,O0(this,h$,"f")-1))),L4(this,f$,O0(this,f$,"f").subarray(O0(this,h$,"f")),"f"),L4(this,h$,null,"f");continue}let G=O0(this,h$,"f")!==null?X.preceding-1:X.preceding,Z=xD1(O0(this,f$,"f").subarray(0,G));Y.push(Z),L4(this,f$,O0(this,f$,"f").subarray(X.index),"f"),L4(this,h$,null,"f")}return Y}flush(){if(!O0(this,f$,"f").length)return[];return this.decode(`
|
|
2241
2241
|
`)}}function pu4(J,Q){for(let G=Q??0;G<J.length;G++){if(J[G]===10)return{preceding:G,index:G+1,carriage:!1};if(J[G]===13)return{preceding:G,index:G+1,carriage:!0}}return null}function wx0(J){for(let X=0;X<J.length-1;X++){if(J[X]===10&&J[X+1]===10)return X+2;if(J[X]===13&&J[X+1]===13)return X+2;if(J[X]===13&&J[X+1]===10&&X+3<J.length&&J[X+2]===13&&J[X+3]===10)return X+4}return-1}var f$,h$;var Ex0=G1(()=>{$G();f$=new WeakMap,h$=new WeakMap;gP.NEWLINE_CHARS=new Set([`
|
|
2242
2242
|
`,"\r"]);gP.NEWLINE_REGEXP=/\r\n|[\n\r]/g});function tx(){}function Ks(J,Q,Y){if(!Q||Ws[J]>Ws[Y])return tx;else return Q[J].bind(Q)}function z7(J){let Q=J.logger,Y=J.logLevel??"off";if(!Q)return du4;let X=Ix0.get(Q);if(X&&X[0]===Y)return X[1];let G={error:Ks("error",Q,Y),warn:Ks("warn",Q,Y),info:Ks("info",Q,Y),debug:Ks("debug",Q,Y)};return Ix0.set(Q,[Y,G]),G}var Ws,fD1=(J,Q,Y)=>{if(!J)return;if(ev0(Ws,J))return J;z7(Y).warn(`${Q} was set to ${JSON.stringify(J)}, expected one of ${JSON.stringify(Object.keys(Ws))}`);return},du4,Ix0,SH=(J)=>{if(J.options)J.options={...J.options},delete J.options.headers;if(J.headers)J.headers=Object.fromEntries((J.headers instanceof Headers?[...J.headers]:Object.entries(J.headers)).map(([Q,Y])=>[Q,Q.toLowerCase()==="authorization"||Q.toLowerCase()==="cookie"||Q.toLowerCase()==="set-cookie"?"***":Y]));if("retryOfRequestLogID"in J){if(J.retryOfRequestLogID)J.retryOf=J.retryOfRequestLogID;delete J.retryOfRequestLogID}return J};var ex=G1(()=>{CH();Ws={off:0,error:200,warn:300,info:400,debug:500};du4={error:tx,warn:tx,info:tx,debug:tx},Ix0=new WeakMap});async function*cu4(J,Q){if(!J.body){if(Q.abort(),typeof globalThis.navigator<"u"&&globalThis.navigator.product==="ReactNative")throw new s6("The default react-native fetch implementation does not support streaming. Please use expo/fetch: https://docs.expo.dev/versions/latest/sdk/expo/#expofetch-api");throw new s6("Attempted to iterate over a response with no body")}let Y=new Px0,X=new gP,G=CD1(J.body);for await(let Z of lu4(G))for(let q of X.decode(Z)){let V=Y.decode(q);if(V)yield V}for(let Z of X.flush()){let q=Y.decode(Z);if(q)yield q}}async function*lu4(J){let Q=new Uint8Array;for await(let Y of J){if(Y==null)continue;let X=Y instanceof ArrayBuffer?new Uint8Array(Y):typeof Y==="string"?uP(Y):Y,G=new Uint8Array(Q.length+X.length);G.set(Q),G.set(X,Q.length),Q=G;let Z;while((Z=wx0(Q))!==-1)yield Q.slice(0,Z),Q=Q.slice(Z)}if(Q.length>0)yield Q}class Px0{constructor(){this.event=null,this.data=[],this.chunks=[]}decode(J){if(J.endsWith("\r"))J=J.substring(0,J.length-1);if(!J){if(!this.event&&!this.data.length)return null;let G={event:this.event,data:this.data.join(`
|
|
2243
2243
|
`),raw:this.chunks};return this.event=null,this.data=[],this.chunks=[],G}if(this.chunks.push(J),J.startsWith(":"))return null;let[Q,Y,X]=iu4(J,":");if(X.startsWith(" "))X=X.substring(1);if(Q==="event")this.event=X;else if(Q==="data")this.data.push(X);return null}}function iu4(J,Q){let Y=J.indexOf(Q);if(Y!==-1)return[J.substring(0,Y),Q,J.substring(Y+Q.length)];return[J,"",""]}var Jf,b$;var hD1=G1(()=>{$G();eV();Ex0();ex();eV();b$=class b${constructor(J,Q,Y){this.iterator=J,Jf.set(this,void 0),this.controller=Q,L4(this,Jf,Y,"f")}static fromSSEResponse(J,Q,Y){let X=!1,G=Y?z7(Y):console;async function*Z(){if(X)throw new s6("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");X=!0;let q=!1;try{for await(let V of cu4(J,Q)){if(q)continue;if(V.data.startsWith("[DONE]")){q=!0;continue}if(V.event===null||!V.event.startsWith("thread.")){let K;try{K=JSON.parse(V.data)}catch(W){throw G.error("Could not parse message into JSON:",V.data),G.error("From chunk:",V.raw),W}if(K&&K.error)throw new x7(void 0,K.error,void 0,J.headers);yield K}else{let K;try{K=JSON.parse(V.data)}catch(W){throw console.error("Could not parse message into JSON:",V.data),console.error("From chunk:",V.raw),W}if(V.event=="error")throw new x7(void 0,K.error,K.message,void 0);yield{event:V.event,data:K}}}q=!0}catch(V){if(ux(V))return;throw V}finally{if(!q)Q.abort()}}return new b$(Z,Q,Y)}static fromReadableStream(J,Q,Y){let X=!1;async function*G(){let q=new gP,V=CD1(J);for await(let K of V)for(let W of q.decode(K))yield W;for(let K of q.flush())yield K}async function*Z(){if(X)throw new s6("Cannot iterate over a consumed stream, use `.tee()` to split the stream.");X=!0;let q=!1;try{for await(let V of G()){if(q)continue;if(V)yield JSON.parse(V)}q=!0}catch(V){if(ux(V))return;throw V}finally{if(!q)Q.abort()}}return new b$(Z,Q,Y)}[(Jf=new WeakMap,Symbol.asyncIterator)](){return this.iterator()}tee(){let J=[],Q=[],Y=this.iterator(),X=(G)=>{return{next:()=>{if(G.length===0){let Z=Y.next();J.push(Z),Q.push(Z)}return G.shift()}}};return[new b$(()=>X(J),this.controller,O0(this,Jf,"f")),new b$(()=>X(Q),this.controller,O0(this,Jf,"f"))]}toReadableStream(){let J=this,Q;return RD1({async start(){Q=J[Symbol.asyncIterator]()},async pull(Y){try{let{value:X,done:G}=await Q.next();if(G)return Y.close();let Z=uP(JSON.stringify(X)+`
|
|
@@ -4393,11 +4393,11 @@ Actual: ${G}`)}async function uV8(J,Q,Y){let{execSync:X}=await import("node:ch
|
|
|
4393
4393
|
${B}`;if(G==="pnpm"&&B.includes("Unable to find the global bin directory"))O+=`
|
|
4394
4394
|
|
|
4395
4395
|
Hint: Try running "pnpm setup" to configure pnpm global directory, or use npm instead:
|
|
4396
|
-
npm install -g @sourcegraph/amp`;V(Error(O))}},error:(U)=>{if(!H)H=!0,V(Error(`Failed to spawn ${G}: ${U.message}`))},complete:()=>{if(!H)H=!0,q()}})})}H0();H0();async function e61(J,Q){let X=Q||"https://registry.npmjs.org";try{let G=new AbortController,Z=setTimeout(()=>G.abort(),5000),q=await fetch(`${X}/@sourcegraph/amp`,{signal:G.signal});if(clearTimeout(Z),!q.ok)return{hasUpdate:!1,currentVersion:J,source:"npm"};let V=await q.json(),K=V["dist-tags"]?.latest;if(!K)return{hasUpdate:!1,currentVersion:J,source:"npm"};let W=cV8(J,K),H=W<0,z,U;if(V.time){let B=V.time[J],O=V.time[K],M=Date.now();if(B)z=Math.floor((M-new Date(B).getTime())/3600000);if(O)U=Math.floor((M-new Date(O).getTime())/3600000)}return x.info("NPM version comparison",{currentVersion:J,latestVersion:K,compareResult:W,hasUpdate:H,currentVersionAge:z,latestVersionAge:U}),{hasUpdate:H,latestVersion:K,currentVersion:J,currentVersionAge:z,latestVersionAge:U,source:"npm"}}catch(G){return x.debug("Error checking npm version",{error:G}),{hasUpdate:!1,currentVersion:J,source:"npm"}}}function cV8(J,Q){let Y=(q)=>{let[V,K]=q.split("-");return{parts:V?.split(".").map(Number)||[],label:K}},X=Y(J),G=Y(Q),Z=Math.max(X.parts.length,G.parts.length);for(let q=0;q<Z;q++){let V=X.parts[q]||0,K=G.parts[q]||0;if(V<K)return-1;if(V>K)return 1}if(X.label===G.label)return 0;if(!X.label&&G.label)return 1;if(X.label&&!G.label)return-1;if(X.label&&G.label)return X.label<G.label?-1:1;return 0}g0();function J41(J,Q){let Y=new u4,X=Y.pipe(p8({shouldCountRefs:!1}));return setImmediate(async()=>{let G=new UV().scoped("update"),Z=X.subscribe({next:(q)=>{G.debug("emit new state",q)}});try{let q=process.env.AMP_TEST_UPDATE_STATUS;if(q){G.debug("using fake update status for testing",{status:q}),await CU(500),Y.next(q);return}if(process.env.AMP_SKIP_UPDATE_CHECK==="1"){G.debug("checking disabled via AMP_SKIP_UPDATE_CHECK environment variable");return}let V=await Q.get("updates.mode");if(V==="disabled"){G.debug("checking disabled");return}G.debug("checking",{currentVersion:J,mode:V});let K=gL(),W=await e61(J,K);if(!(W.latestVersion&&W.hasUpdate)){G.debug("no update available");return}let H=()=>{if(W.currentVersionAge!==void 0&&W.latestVersionAge!==void 0){let U=W.currentVersionAge-W.latestVersionAge,B=0.5;if(Math.abs(U)<0.5)return G.debug("versions too close together, suppressing update warning",{currentVersionAge:W.currentVersionAge,latestVersionAge:W.latestVersionAge,ageDifferenceHours:U}),!0}return!1},z=await t61();if(!V)V=z==="pnpm"?"warn":"auto",G.debug("no configured update mode; selected default based on package manager",{packageManager:z,mode:V});if(V==="warn"){if(!H())Y.next("update-available");return}if(!z){if(G.debug("auto-update not supported, falling back to warn mode"),!H())Y.next("update-available");return}try{await Pu(W.latestVersion,z);let U=await gB(W.latestVersion),B={from:W.currentVersion,to:W.latestVersion,...U};if(U.status==="same")G.info("success",B),Y.next("updated");else G.warn("success with warning",B),Y.next("updated-with-warning")}catch(U){Y.next("update-error")}}catch(q){G.debug("check failed",{error:q})}finally{await CU(5000),Y.next("hidden"),Z.unsubscribe(),Y.complete()}}),{state:X}}import{stderr as RK}from"node:process";function G26(J){let Q=new TL().name("install").description("Install required tools like ripgrep to $AMP_HOME/bin").option("--force","Force reinstallation even if already installed").option("--verbose","Show installation progress and results").action(async(X)=>{await aR1(X.force||!1,X.verbose||!1,"0.0.
|
|
4396
|
+
npm install -g @sourcegraph/amp`;V(Error(O))}},error:(U)=>{if(!H)H=!0,V(Error(`Failed to spawn ${G}: ${U.message}`))},complete:()=>{if(!H)H=!0,q()}})})}H0();H0();async function e61(J,Q){let X=Q||"https://registry.npmjs.org";try{let G=new AbortController,Z=setTimeout(()=>G.abort(),5000),q=await fetch(`${X}/@sourcegraph/amp`,{signal:G.signal});if(clearTimeout(Z),!q.ok)return{hasUpdate:!1,currentVersion:J,source:"npm"};let V=await q.json(),K=V["dist-tags"]?.latest;if(!K)return{hasUpdate:!1,currentVersion:J,source:"npm"};let W=cV8(J,K),H=W<0,z,U;if(V.time){let B=V.time[J],O=V.time[K],M=Date.now();if(B)z=Math.floor((M-new Date(B).getTime())/3600000);if(O)U=Math.floor((M-new Date(O).getTime())/3600000)}return x.info("NPM version comparison",{currentVersion:J,latestVersion:K,compareResult:W,hasUpdate:H,currentVersionAge:z,latestVersionAge:U}),{hasUpdate:H,latestVersion:K,currentVersion:J,currentVersionAge:z,latestVersionAge:U,source:"npm"}}catch(G){return x.debug("Error checking npm version",{error:G}),{hasUpdate:!1,currentVersion:J,source:"npm"}}}function cV8(J,Q){let Y=(q)=>{let[V,K]=q.split("-");return{parts:V?.split(".").map(Number)||[],label:K}},X=Y(J),G=Y(Q),Z=Math.max(X.parts.length,G.parts.length);for(let q=0;q<Z;q++){let V=X.parts[q]||0,K=G.parts[q]||0;if(V<K)return-1;if(V>K)return 1}if(X.label===G.label)return 0;if(!X.label&&G.label)return 1;if(X.label&&!G.label)return-1;if(X.label&&G.label)return X.label<G.label?-1:1;return 0}g0();function J41(J,Q){let Y=new u4,X=Y.pipe(p8({shouldCountRefs:!1}));return setImmediate(async()=>{let G=new UV().scoped("update"),Z=X.subscribe({next:(q)=>{G.debug("emit new state",q)}});try{let q=process.env.AMP_TEST_UPDATE_STATUS;if(q){G.debug("using fake update status for testing",{status:q}),await CU(500),Y.next(q);return}if(process.env.AMP_SKIP_UPDATE_CHECK==="1"){G.debug("checking disabled via AMP_SKIP_UPDATE_CHECK environment variable");return}let V=await Q.get("updates.mode");if(V==="disabled"){G.debug("checking disabled");return}G.debug("checking",{currentVersion:J,mode:V});let K=gL(),W=await e61(J,K);if(!(W.latestVersion&&W.hasUpdate)){G.debug("no update available");return}let H=()=>{if(W.currentVersionAge!==void 0&&W.latestVersionAge!==void 0){let U=W.currentVersionAge-W.latestVersionAge,B=0.5;if(Math.abs(U)<0.5)return G.debug("versions too close together, suppressing update warning",{currentVersionAge:W.currentVersionAge,latestVersionAge:W.latestVersionAge,ageDifferenceHours:U}),!0}return!1},z=await t61();if(!V)V=z==="pnpm"?"warn":"auto",G.debug("no configured update mode; selected default based on package manager",{packageManager:z,mode:V});if(V==="warn"){if(!H())Y.next("update-available");return}if(!z){if(G.debug("auto-update not supported, falling back to warn mode"),!H())Y.next("update-available");return}try{await Pu(W.latestVersion,z);let U=await gB(W.latestVersion),B={from:W.currentVersion,to:W.latestVersion,...U};if(U.status==="same")G.info("success",B),Y.next("updated");else G.warn("success with warning",B),Y.next("updated-with-warning")}catch(U){Y.next("update-error")}}catch(q){G.debug("check failed",{error:q})}finally{await CU(5000),Y.next("hidden"),Z.unsubscribe(),Y.complete()}}),{state:X}}import{stderr as RK}from"node:process";function G26(J){let Q=new TL().name("install").description("Install required tools like ripgrep to $AMP_HOME/bin").option("--force","Force reinstallation even if already installed").option("--verbose","Show installation progress and results").action(async(X)=>{await aR1(X.force||!1,X.verbose||!1,"0.0.1763784077-g7729e7"),process.exit()});J.addCommand(Q,{hidden:!0});let Y=new TL("update").summary("Update Amp CLI").description("Update Amp CLI to the latest version. You can specify a particular version to install, or leave blank to get the latest stable release.").option("--version <version>","Update to a specific version").allowUnknownOption(!1).action(async(X)=>{await lV8(X.version)});J.addCommand(Y)}async function lV8(J){if(process.env.AMP_SKIP_UPDATE_CHECK==="1")RK.write(S4.yellow(`Note: AMP_SKIP_UPDATE_CHECK=1 is set, which disables automatic update checking. Manual updates will still work.
|
|
4397
4397
|
|
|
4398
4398
|
`));try{if(!J){RK.write(S4.blue(`Checking for updates...
|
|
4399
|
-
`));let Y=gL(),{hasUpdate:X,latestVersion:G}=await e61("0.0.
|
|
4400
|
-
`));let Z=await gB("0.0.
|
|
4399
|
+
`));let Y=gL(),{hasUpdate:X,latestVersion:G}=await e61("0.0.1763784077-g7729e7",Y);if(!X){RK.write(S4.green(`✓ Amp CLI is already up to date.
|
|
4400
|
+
`));let Z=await gB("0.0.1763784077-g7729e7");if(Z.warning)RK.write(`
|
|
4401
4401
|
`+S4.yellow(Z.warning)+`
|
|
4402
4402
|
`);process.exit(0)}if(!G)RK.write(S4.yellow("[WARN] could not find latest version")),process.exit(0);J=G}RK.write(S4.blue(`Updating to version ${J}...
|
|
4403
4403
|
`)),await Pu(J,void 0,(Y)=>{RK.write(S4.dim(`Running: ${Y}
|
|
@@ -5019,7 +5019,7 @@ exit code: ${Z}`,new U1({color:X.foreground,dim:!0,italic:!0})));if(q)V.push(new
|
|
|
5019
5019
|
`,U),...B],M=new l0({crossAxisAlignment:"stretch",mainAxisSize:"min",children:[new l1({text:new Y1("",void 0,O)})]});return X8.child(new e0({constraints:new p6(40,120,0,1/0),child:new G4({mainAxisAlignment:"center",crossAxisAlignment:"center",children:[new F4({flex:1,child:new iC1({width:40,height:40,agentMode:this.agentMode,fps:q==="fast"?60:q==="slow"?15:0,...q==="disabled"&&{seed:42,t:3}})}),new N0({width:1}),new F4({flex:2,child:M})]})}))}}H0();V9();K4();K5();V9();g0();function ON8(J,Q){return`${J}:${Q}`}class L_1{threadService;workers=new Map;threadsMap=new Map;subthreadsMap=new Map;mainThreadSubs=new Map;subthreadsSubs=new Map;workerStatusSubs=new Map;subthreadPatchSubs=new Map;mainThreadObservable;subthreadObservable;workerStatusObservable;emitMainThread=null;emitSubthread=null;emitWorkerStatus=null;constructor(J){this.threadService=J;this.mainThreadObservable=new J0((Q)=>{return this.emitMainThread=(Y)=>Q.next(Y),()=>{this.emitMainThread=null}}),this.subthreadObservable=new J0((Q)=>{return this.emitSubthread=(Y)=>Q.next(Y),()=>{this.emitSubthread=null}}),this.workerStatusObservable=new J0((Q)=>{return this.emitWorkerStatus=(Y)=>Q.next(Y),()=>{this.emitWorkerStatus=null}})}registerWorker(J){let Q=J.thread.id;if(this.workers.has(Q))this.unregisterWorker(Q);this.threadsMap.set(Q,J.thread),this.subthreadsMap.set(Q,[]),this.workers.set(Q,{state:"initial"});let Y=this.threadService.observePatches(Q).pipe(KO()).subscribe((Z)=>{this.threadsMap.set(Q,Z);let q=this.subthreadsMap.get(Q)||[],V=this.workers.get(Q)||{state:"initial"};if(this.emitMainThread)this.emitMainThread({threadID:Q,mainThread:Z,subthreads:q,workerStatus:V})});this.mainThreadSubs.set(Q,Y);let X=J.status.subscribe((Z)=>{if(this.workers.set(Q,Z),this.emitWorkerStatus)this.emitWorkerStatus({threadID:Q,status:Z})});this.workerStatusSubs.set(Q,X);let G=J.subthreads.subscribe((Z)=>{this.subthreadsMap.set(Q,Z);for(let q of Z){let V=ON8(Q,q.toolUse.id);if(this.subthreadPatchSubs.has(V))continue;let K=this.threadService.observePatches(q.threadID).pipe(KO()).subscribe((W)=>{if(this.emitSubthread)this.emitSubthread({threadID:Q,thread:W,subthread:q})});this.subthreadPatchSubs.set(V,K)}});this.subthreadsSubs.set(Q,G)}unregisterWorker(J){let Q=this.mainThreadSubs.get(J);if(Q)Q.unsubscribe(),this.mainThreadSubs.delete(J);let Y=this.workerStatusSubs.get(J);if(Y)Y.unsubscribe(),this.workerStatusSubs.delete(J);let X=this.subthreadsSubs.get(J);if(X)X.unsubscribe(),this.subthreadsSubs.delete(J);for(let[G,Z]of this.subthreadPatchSubs.entries())if(G.startsWith(`${J}:`))Z.unsubscribe(),this.subthreadPatchSubs.delete(G);this.workers.delete(J),this.threadsMap.delete(J),this.subthreadsMap.delete(J)}observeThread(J){return{mainThread:new J0((Q)=>{return this.mainThreadObservable.subscribe((Y)=>{if(Y.threadID===J)Q.next(Y)})}),subthreads:new J0((Q)=>{return this.subthreadObservable.subscribe((Y)=>{if(Y.threadID===J)Q.next(Y)})}),workerStatus:new J0((Q)=>{return this.workerStatusObservable.subscribe((Y)=>{if(Y.threadID===J)Q.next(Y)})})}}get threadViewStates(){let J={};for(let[Q,Y]of this.threadsMap){let X=this.workers.get(Q);if(X)J[Q]=VL(Y,X)}return J}dispose(){for(let J of this.mainThreadSubs.values())J.unsubscribe();for(let J of this.subthreadsSubs.values())J.unsubscribe();for(let J of this.workerStatusSubs.values())J.unsubscribe();for(let J of this.subthreadPatchSubs.values())J.unsubscribe();this.mainThreadSubs.clear(),this.subthreadsSubs.clear(),this.workerStatusSubs.clear(),this.subthreadPatchSubs.clear(),this.workers.clear(),this.threadsMap.clear(),this.subthreadsMap.clear()}}function MN8(J,Q){switch(Q.type){case"subthread-patch":{let{thread:Y,subthread:X}=Q,G=J.subagents[X.threadID];if(!G){if(G={subThreadID:Y.id,parentToolID:X.toolUse.id,taskDescription:X.toolUse.input.description||"Task",isCompleted:!1,agentState:{type:"idle"}},J.mainThread){let W=iJ(J.mainThread);G.isCompleted=RY6(W,X.toolUse.id)}}let Z=LN8(Y,G.agentState),q=G.agentState===Z?G:{...G,agentState:Z},V={...J.tools},K=wC(Y).items.filter((W)=>W.type==="toolResult");for(let W of K)V[W.id]={id:W.id,subthreadID:Y.id,toolRun:W.toolResult.run,toolUse:W.toolUse};return{subagents:{...J.subagents,[X.threadID]:q},tools:V,items:J.items,viewState:J.viewState,todosList:J.todosList,mainThread:J.mainThread}}case"main-thread-patch":{let{thread:Y,subthreads:X,workerStatus:G}=Q,Z=iJ(Y),q={...J.subagents};for(let z of X){let U=q[z.threadID];if(!U)continue;let B=RY6(Z,z.toolUse.id);q[z.threadID]={...U,isCompleted:B}}let{items:V}=wC(Y),K=VL(Y,G),W=aE({messages:Y.messages}),H=Array.isArray(W)?W:[];return{...J,subagents:q,items:V,viewState:K,todosList:H,mainThread:Y}}case"worker-status-change":{if(!J.mainThread)return J;let Y=VL(J.mainThread,Q.workerStatus);if(Y===J.viewState)return J;return{...J,viewState:Y}}default:return J}}function wC(J){let Q=[],Y=new Map,X=new Set;for(let[G,Z]of J.messages.entries()){let q=`${Z.role}-${G}`;switch(Z.role){case"assistant":{let V=Z.state.type==="streaming";for(let W of Z.content)if(W.type==="tool_use"){if(Y.set(W.id,W),V)X.add(W.id)}if(Z.content.some((W)=>W.type==="text"&&W.text.trim()||W.type==="thinking"))Q.push({type:"message",id:q,message:Z});for(let W of Z.content)if(W.type==="tool_use"){let H=!1;for(let z=G+1;z<J.messages.length;z++){let U=J.messages[z];if(U){for(let B of U.content)if(B.type==="tool_result"&&B.toolUseID===W.id){H=!0;break}}if(H)break}if(!H)Q.push({type:"toolResult",id:W.id,toolUse:W,toolResult:{type:"tool_result",toolUseID:W.id,run:{status:V?"in-progress":"queued"}}})}break}case"info":Q.push({type:"message",id:q,message:Z});break;case"user":{if(Z.content.some((K)=>K.type==="text"&&K.text.trim()||K.type==="image"))Q.push({type:"message",id:q,message:Z});for(let K of Z.content)if(K.type==="tool_result"){let W=Y.get(K.toolUseID)??U$(J,K.toolUseID);if(!W)throw Error(`(bug) tool use ${K.toolUseID} not found`);Q.push({type:"toolResult",id:K.toolUseID,toolUse:W,toolResult:K})}break}}}return{items:Q}}function RY6(J,Q){let Y=J.get(Q);return(Y&&V7(Y.run))??!1}function LN8(J,Q){let Y=J.messages.at(-1);if(Y?.content.some((G)=>G.type==="tool_result"&&G.run.status==="blocked-on-user"))return x.info("Subagent status: idle (blocked-on-user)",{threadID:J.id}),{type:"idle"};if(wC(J).items.some((G)=>G.type==="toolResult"&&G.toolResult.run.status==="in-progress")){let G=Q?.type==="running-tools"?Q.startTime:Date.now();return x.info("Subagent status: running-tools",{threadID:J.id,startTime:G,hasStartTime:!!G}),{type:"running-tools",startTime:G}}if(Y&&Y.role==="assistant"&&Y.state.type==="streaming")switch(Y.content.at(-1)?.type){case"text":return x.info("Subagent status: streaming-text",{threadID:J.id}),{type:"streaming-text"};case"thinking":return x.info("Subagent status: streaming-thinking",{threadID:J.id}),{type:"streaming-thinking"};case"tool_use":{let Z=Q?.type==="running-tools"?Q.startTime:Date.now();return x.info("Subagent status: running-tools (streaming tool_use)",{threadID:J.id,startTime:Z,hasStartTime:!!Z}),{type:"running-tools",startTime:Z}}default:return x.info("Subagent status: streaming-text (default)",{threadID:J.id}),{type:"streaming-text"}}return x.info("Subagent status: idle (default)",{threadID:J.id}),{type:"idle"}}class A_1 extends Q6{props;constructor(J){super();this.props=J}createState(){return new CY6}}class CY6 extends J6{state={subagents:{},tools:{},items:[],viewState:{state:"initial",interactionState:!1,toolState:{running:0,blocked:0}},todosList:[],mainThread:null};workerController;subscriptions=[];currentWorker;constructor(){super();this.workerController=null,this.currentWorker=null}initState(){let{threadService:J,worker:Q}=this.widget.props;this.workerController=new L_1(J),this.currentWorker=Q,this.setupSubscriptions(Q)}dispose(){this.cleanup()}didUpdateWidget(J){if(J.props.threadService!==this.widget.props.threadService||J.props.worker!==this.widget.props.worker)this.cleanup(),this.setupSubscriptions(this.widget.props.worker)}setupSubscriptions(J){this.workerController.registerWorker(J);let Q=this.workerController.observeThread(J.thread.id),Y=Q.mainThread.subscribe((Z)=>{this.dispatch({type:"main-thread-patch",thread:Z.mainThread,subthreads:Z.subthreads,workerStatus:Z.workerStatus})});this.subscriptions.push(Y);let X=Q.subthreads.subscribe((Z)=>{this.dispatch({type:"subthread-patch",thread:Z.thread,subthread:Z.subthread})});this.subscriptions.push(X);let G=Q.workerStatus.subscribe((Z)=>{this.dispatch({type:"worker-status-change",workerStatus:Z.status})});this.subscriptions.push(G)}cleanup(){this.subscriptions.forEach((J)=>J.unsubscribe()),this.subscriptions=[]}switchWorker(J){this.cleanup(),this.setState(()=>{this.currentWorker=J}),this.setState(()=>{this.state={subagents:{},tools:{},items:[],viewState:{state:"initial",interactionState:!1,toolState:{running:0,blocked:0}},todosList:[],mainThread:null}}),this.setupSubscriptions(J)}dispatch(J){this.setState(()=>{this.state=MN8(this.state,J)})}getThreadData(){let J=Object.values(this.state.tools).map((Z)=>({toolUse:Z.toolUse,toolRun:Z.toolRun,subthreadID:Z.subthreadID})),Q={};for(let Z of Object.values(this.state.subagents)){let q=J.filter((V)=>V.subthreadID===Z.subThreadID);Q[Z.parentToolID]=q}let Y=(Z)=>Z===a5||Z===t8||Z===hE||Z===xF||Z===fF||Z===bE||Z===uE||Z===F$,X=new Map;for(let Z of this.state.items)if(Z.type==="toolResult"&&Y(Z.toolUse.name))X.set(Z.toolUse.id,{toolUseId:Z.toolUse.id,toolName:Z.toolUse.name,toolRun:Z.toolResult.run});let G=Array.from(X.values());for(let{toolUseId:Z,toolRun:q}of G){let V=[],K;if(q.status==="in-progress"||q.status==="done"||q.status==="error"||q.status==="cancelled")K=q.progress;if(K){let W=0;for(let H of K)if(H.tool_uses)for(let z of H.tool_uses){let U=`${Z}:progress:${W++}`;V.push({toolUse:lE(z.tool_name,z.input,U),toolRun:{status:z.status}})}}Q[Z]=V}return{...this.state,subagents:Object.values(this.state.subagents),subagentActiveTools:J,subagentToolsByParentID:Q}}build(J){let Q=this.getThreadData();return this.widget.props.builder(J,Q,this.workerController,(Y)=>this.switchWorker(Y),()=>this.currentWorker)}}class w_1 extends Q6{props;constructor(J){super({key:J.key});this.props=J}createState(){return new SY6}}class SY6 extends J6{build(J){let Y=x6.of(J).colors,{todos:X,title:G="TODOs"}=this.widget.props;if(!Array.isArray(X)||X.length===0)return new N0({width:0,height:0});let Z=X.map((q)=>this.buildTodoItem(q,Y));return new e0({child:new u6({padding:j0.symmetric(1,0),child:new l0({crossAxisAlignment:"stretch",mainAxisSize:"min",children:[new l1({text:new Y1(G,new U1({bold:!0,color:Y.foreground}))}),...Z]})})})}buildTodoItem(J,Q){let Y=this.getStatusIcon(J.status),X=J.status==="completed",G=new U1({bold:J.status==="in-progress",color:Q.foreground,dim:X}),Z=new U1({bold:J.status==="in-progress",strikethrough:J.status==="completed",color:Q.foreground,dim:X});return new G4({crossAxisAlignment:"start",children:[new l1({text:new Y1(Y,G)}),new N0({width:1}),new F4({child:new l1({text:new Y1(J.content,Z)})})]})}getStatusIcon(J){return J==="completed"?"✓":"•"}}class E_1 extends T6{ad;onDismiss;onButtonClick;constructor({key:J,ad:Q,onDismiss:Y,onButtonClick:X}){super({key:J});this.ad=Q,this.onDismiss=Y,this.onButtonClick=X}build(J){let Q=x6.of(J),Y=Q.colors.primary,X=Q.colors.foreground;return new e0({decoration:new P8(void 0,new n4(new j4(Y,1,"rounded"),new j4(Y,1,"rounded"),void 0,new j4(Y,1,"rounded"))),child:new u6({padding:j0.horizontal(1),child:new l0({children:[new G4({crossAxisAlignment:"start",children:[new F4({child:new l1({text:new Y1(this.ad.content,new U1({color:X}))})}),new N0({width:4}),new XQ({uri:"https://ampcode.com/free",text:"Ad",style:new U1({color:X,dim:!0}),onError:(G)=>{}})]}),new G4({crossAxisAlignment:"start",children:[new XS1({text:this.ad.buttonLabel,onPressed:()=>this.onButtonClick?.(),padding:j0.horizontal(1),color:Y,reverse:!0}),new N0({width:2}),new l1({text:new Y1(this.ad.destinationUrlHostname,new U1({color:X,dim:!0}))})]})]})})})}}class I_1 extends Q6{props;constructor(J){super();this.props=J}createState(){return new jY6(this.props.autofocus??!0)}}class jY6 extends J6{autofocus;constructor(J){super();this.autofocus=J}build(J){let Q=(V)=>{if(V.key==="Enter"&&this.widget.props.showCopyOption)return this.widget.props.onSelect("copy"),"handled";if(V.ctrlKey&&V.key==="c"||V.key==="Escape")return this.widget.props.onSelect(null),"handled";return"ignored"},Y=q8.sizeOf(J),X=Math.min(60,Y.width-4),G=Y.height-4,Z=[];if(this.widget.props.title)Z.push(new l1({text:new Y1(this.widget.props.title,new U1({bold:!0,color:M1.blue}))}),new N0({height:1}));if(this.widget.props.message)Z.push(new l1({text:new Y1(this.widget.props.message,void 0,void 0,{uri:this.widget.props.message,id:"ad-link"})}));if(this.widget.props.message)Z.push(new N0({height:1}));let q=[];if(this.widget.props.showCopyOption)q.push(new l1({text:new Y1("Enter to copy",new U1({dim:!0}))}));return q.push(new l1({text:new Y1("Escape to close",new U1({dim:!0}))})),Z.push(new G4({children:q.flatMap((V,K)=>K<q.length-1?[V,new N0({width:1}),new l1({text:new Y1("•",new U1({dim:!0}))}),new N0({width:1})]:[V]),mainAxisSize:"min"})),new X8({child:new e0({constraints:new p6(X,X,0,G),decoration:new P8(M1.default(),new n4(new j4(M1.blue,1,"rounded"),new j4(M1.blue,1,"rounded"),new j4(M1.blue,1,"rounded"),new j4(M1.blue,1,"rounded"))),padding:new j0(2,2,2,2),child:new a8({autofocus:this.autofocus,onKey:Q,child:new l0({children:Z,mainAxisSize:"min"})})})})}}class p81 extends Error{constructor(J="Command timed out"){super(J);this.name="CommandTimeoutError",Object.setPrototypeOf(this,p81.prototype)}}class d81 extends Error{constructor(J){let Q=`${J.noun}: ${J.verb} command cancelled`;super(Q);this.name="CommandCancelledError",Object.setPrototypeOf(this,d81.prototype)}}function P_1(J){let Q=J.match(/"([^"]*)"|'([^']*)'|([^\s"']+)/g);if(!Q)return[];return Q.map((Y)=>{if(Y.startsWith('"')&&Y.endsWith('"')||Y.startsWith("'")&&Y.endsWith("'"))return Y.slice(1,-1);return Y})}mF();H0();import{spawn as AN8}from"node:child_process";import{promises as wN8}from"node:fs";function _Y6(J){return J.kind==="executable"}function kY6(J){return J.kind==="markdown"}var Uz=50000,yY6=300000;async function T_1(J,Q,Y,X={}){let{timeoutMs:G=yY6,signal:Z,source:q}=X;try{let V=await Y.getCommand(J,q);if(!V)return{success:!1,output:"",error:`Command '${J}' not found`};if(!await Y.isCommandAvailable(J,q))return{success:!1,output:"",error:`Command '${J}' is not available for execution`};if(x.debug("Executing command",{commandName:J,filePath:V.filePath,args:Q}),kY6(V))return await EN8(V,Q);else if(_Y6(V))return await IN8(V,Q,G,Z);else return{success:!1,output:"",error:"Unsupported command type"}}catch(V){return x.error("Failed to execute command",{commandName:J,error:V}),{success:!1,output:"",error:V instanceof Error?V.message:"Unknown error occurred"}}}async function EN8(J,Q){try{if(Q.length>0)return{success:!1,output:"",error:"Markdown commands do not accept arguments"};let Y=await wN8.readFile(J.filePath,"utf8");return{success:!0,output:(Y.length>Uz?Y.slice(0,Uz)+`
|
|
5020
5020
|
... (output truncated at ${Uz} characters)`:Y).trim(),exitCode:0}}catch(Y){return{success:!1,output:"",error:Y instanceof Error?Y.message:"Failed to read markdown file"}}}async function IN8(J,Q,Y=yY6,X){return new Promise((G)=>{let[Z,q]=PN8(J,Q);x.debug("Spawning command",{spawnCommand:Z,spawnArgs:q.slice(0,10),filePath:J.filePath,timeoutMs:Y});let V=FD0(X),K=!1,W=setTimeout(()=>{K=!0,V.abort(),x.warn("Command execution timed out",{commandName:J.name,timeoutMs:Y})},Y),H=AN8(Z,q,{stdio:["pipe","pipe","pipe"],signal:V.signal,detached:!0}),z=[],U=[],B=0;H.stdout?.on("data",(O)=>{let M=O.toString();if(B+=M.length,B<=Uz)z.push(M);else{let L=Uz-(B-M.length);if(L>0)z.push(M.slice(0,L))}}),H.stderr?.on("data",(O)=>{let M=O.toString();if(B+=M.length,B<=Uz)U.push(M);else{let L=Uz-(B-M.length);if(L>0)U.push(M.slice(0,L))}}),H.on("close",(O)=>{if(clearTimeout(W),K){G({success:!1,output:z.join(""),error:`Command timed out after ${Y}ms`,exitCode:void 0});return}if(V.signal.aborted){G({success:!1,output:z.join(""),error:"The command was aborted",exitCode:O??void 0});return}let M=O===0||O===1,L=z.join(""),E=U.join(""),I=L;if(!M&&!L.trim()&&E.trim())I=E;else if(E.trim())I+=L?`
|
|
5021
5021
|
${E}`:E;if(B>Uz)I+=`
|
|
5022
|
-
... (output truncated at ${Uz} characters)`;G({success:M,output:I.trim(),error:!M?E.trim()||"Command failed":void 0,exitCode:O??void 0})}),H.on("error",(O)=>{clearTimeout(W);let M=O.message;if(K)M=`Command timed out after ${Y}ms`;else if(O.message.includes("operation was aborted")||O.name==="AbortError")M="The command was aborted";G({success:!1,output:z.join(""),error:M})})})}function PN8(J,Q){let{filePath:Y,interpreter:X,extension:G}=J;if(process.platform==="win32")return RN8(Y,X?[...X]:null,G,Q);else return TN8(Y,X?[...X]:null,G,Q)}function TN8(J,Q,Y,X){if(Q&&Q.length>0&&Q[0])return[Q[0],[...Q.slice(1),J,...X]];else return[J,X]}function RN8(J,Q,Y,X){if(Q&&Q.length>0&&Q[0])return[Q[0],[...Q.slice(1),J,...X]];switch(Y.toLowerCase()){case".bat":case".cmd":return["cmd.exe",["/c",J,...X]];case".ps1":return["powershell.exe",["-ExecutionPolicy","Bypass","-File",J,...X]];case".exe":return[J,X];default:return[J,X]}}H0();rZ();C5();fW();aZ();nZ();PV();wH();ve();K5();b_();g0();ZP();import{writeFile as uY6}from"fs/promises";import gY6 from"path";H0();aZ();class R_1{enabled;configService;commandCounts=new Map;timer=null;bufferTimeMs=1e4;constructor(J,Q){this.enabled=J;this.configService=Q;this.startTimer()}startTimer(){this.timer=setInterval(()=>{this.flushEvents()},this.bufferTimeMs)}async flushEvents(){if(this.commandCounts.size===0||!await this.enabled())return;let J=Array.from(this.commandCounts.entries()).map(([Q,Y])=>({feature:"cli.command",action:Q,source:{client:"cli",clientVersion:"0.0.
|
|
5022
|
+
... (output truncated at ${Uz} characters)`;G({success:M,output:I.trim(),error:!M?E.trim()||"Command failed":void 0,exitCode:O??void 0})}),H.on("error",(O)=>{clearTimeout(W);let M=O.message;if(K)M=`Command timed out after ${Y}ms`;else if(O.message.includes("operation was aborted")||O.name==="AbortError")M="The command was aborted";G({success:!1,output:z.join(""),error:M})})})}function PN8(J,Q){let{filePath:Y,interpreter:X,extension:G}=J;if(process.platform==="win32")return RN8(Y,X?[...X]:null,G,Q);else return TN8(Y,X?[...X]:null,G,Q)}function TN8(J,Q,Y,X){if(Q&&Q.length>0&&Q[0])return[Q[0],[...Q.slice(1),J,...X]];else return[J,X]}function RN8(J,Q,Y,X){if(Q&&Q.length>0&&Q[0])return[Q[0],[...Q.slice(1),J,...X]];switch(Y.toLowerCase()){case".bat":case".cmd":return["cmd.exe",["/c",J,...X]];case".ps1":return["powershell.exe",["-ExecutionPolicy","Bypass","-File",J,...X]];case".exe":return[J,X];default:return[J,X]}}H0();rZ();C5();fW();aZ();nZ();PV();wH();ve();K5();b_();g0();ZP();import{writeFile as uY6}from"fs/promises";import gY6 from"path";H0();aZ();class R_1{enabled;configService;commandCounts=new Map;timer=null;bufferTimeMs=1e4;constructor(J,Q){this.enabled=J;this.configService=Q;this.startTimer()}startTimer(){this.timer=setInterval(()=>{this.flushEvents()},this.bufferTimeMs)}async flushEvents(){if(this.commandCounts.size===0||!await this.enabled())return;let J=Array.from(this.commandCounts.entries()).map(([Q,Y])=>({feature:"cli.command",action:Q,source:{client:"cli",clientVersion:"0.0.1763784077-g7729e7"},parameters:{metadata:{count:Y}},timestamp:Date.now()*1000}));this.commandCounts.clear();try{let Q=JSON.stringify(J);await oo(Q,this.configService)}catch(Q){x.error("Failed to export command telemetry events",Q)}}async submit(J){if(!await this.enabled()||this.timer===null)return;let Q=this.commandCounts.get(J)||0;this.commandCounts.set(J,Q+1)}async dispose(){if(await this.flushEvents(),this.timer!==null)clearInterval(this.timer),this.timer=null}}class C_1 extends Q6{props;constructor(J){super();this.props=J}createState(){return new vY6}}class vY6 extends J6{_state;initState(){super.initState(),this._state=this.widget.props.initialState}build(J){let Q=(Y)=>{this.setState(()=>{this._state=Y(this._state)})};return this.widget.props.builder(J,Q,this._state)}}class xY6 extends J6{controller=new _G;focusNode=new b8({debugLabel:"CommandArgumentPrompt",onKey:(J)=>{if(J.key==="Escape")return this.widget.props.onDismiss(),"handled";return"ignored"}});_textListener=()=>{this.setState(()=>{})};initState(){this.focusNode.requestFocus(),this.controller.addListener(this._textListener)}dispose(){this.controller.removeListener(this._textListener),this.focusNode.dispose()}build(J){let Q=x6.of(J),{colors:Y,app:X}=Q,G=this.widget.props.isRequiredArg??!0,Z=this.controller.text.trim().length>0,q=!G||Z,V=n4.all(new j4(Y.foreground,1,"solid")),K=new oL({controller:this.controller,focusNode:this.focusNode,placeholder:this.widget.props.placeholder??"Enter command argument...",onSubmitted:(B)=>{let O=B.trim();if(G&&O.length===0)return;this.widget.props.onSubmit(O)},autofocus:!0,style:{textColor:Y.foreground,border:null},maxLines:1}),W=new G4({children:[new e0({decoration:{color:M1.default()},child:new l1({text:new Y1(">",new U1({color:Y.foreground}))})}),new F4({child:K})]}),H=new e0({padding:j0.symmetric(1,0),child:new l1({text:new Y1("",void 0,[new Y1("Command: ",new U1({color:Y.foreground})),new Y1(this.widget.props.commandName,new U1({color:M1.yellow,bold:!0}))])})}),z=[];if(q)z.push(new Y1("Enter",new U1({color:X.keybind}))),z.push(new Y1(" to submit, ",new U1({color:Y.foreground,dim:!0})));z.push(new Y1("Esc",new U1({color:X.keybind}))),z.push(new Y1(" to cancel",new U1({color:Y.foreground,dim:!0})));let U=new e0({padding:j0.symmetric(1,0),child:new l1({text:new Y1("",void 0,z)})});return new e0({decoration:{border:V,color:M1.default()},padding:j0.all(1),child:new l0({children:[H,new N0({height:1}),W,new m5,U]})})}}class c81 extends Q6{props;constructor(J){super();this.props=J}createState(){return new xY6}}PV();class fY6 extends J6{controller=new _G;imageAttachments=[];imagePaths=[];isConfirmingClearInput=!1;clearInputConfirmTimeout=null;focusNode=new b8({debugLabel:"CommandMultilinePrompt",onKey:(J)=>{if(J.key==="Escape"){if(this.isConfirmingClearInput){if(this.controller.clear(),this.setState(()=>{this.isConfirmingClearInput=!1,this.imageAttachments=[],this.imagePaths=[]}),this.clearInputConfirmTimeout)clearTimeout(this.clearInputConfirmTimeout),this.clearInputConfirmTimeout=null;return"handled"}if(this.controller.text.trim()!==""||this.imageAttachments.length>0){if(this.setState(()=>{this.isConfirmingClearInput=!0}),this.clearInputConfirmTimeout)clearTimeout(this.clearInputConfirmTimeout);return this.clearInputConfirmTimeout=setTimeout(()=>{this.setState(()=>{this.isConfirmingClearInput=!1}),this.clearInputConfirmTimeout=null},1000),"handled"}return this.widget.props.onDismiss(),"handled"}return"ignored"}});initState(){if(this.widget.props.initialText)this.controller.text=this.widget.props.initialText;if(this.widget.props.initialImages)this.imageAttachments=[...this.widget.props.initialImages];this.focusNode.requestFocus()}_handleInsertImage=(J)=>{if(this.imageAttachments.length>=pF)return!1;let Q=GC(J);if(typeof Q==="object")return this.setState(()=>{this.imageAttachments=[...this.imageAttachments,Q],this.imagePaths=[...this.imagePaths,J]}),!1;return!1};_handlePopImage=()=>{if(this.imageAttachments.length>0)this.setState(()=>{this.imageAttachments=this.imageAttachments.slice(0,-1),this.imagePaths=this.imagePaths.slice(0,-1)})};dispose(){if(this.clearInputConfirmTimeout)clearTimeout(this.clearInputConfirmTimeout),this.clearInputConfirmTimeout=null;this.focusNode.dispose(),this.controller.dispose()}build(J){let Q=x6.of(J),{colors:Y,app:X}=Q,Z=q8.of(J).size.height,q=Math.max(Math.floor(Z*0.5),10),V=new HA({controller:this.controller,triggers:[new YN],completionBuilder:this.widget.props.completionBuilder,ampURL:this.widget.props.ampURL,onSubmitted:(B)=>{this.widget.props.onSubmit(B.trim(),this.imageAttachments)},theme:Y,placeholder:this.widget.props.placeholder||"Enter your message...",enabled:this.widget.props.enabled??!0,autofocus:!0,clipboard:N9.instance.tuiInstance.clipboard,showMenuBelow:!0,onInsertImage:this.widget.props.onInsertImage??this._handleInsertImage,imageAttachments:this.imageAttachments,popImage:this._handlePopImage}),K=new a8({focusNode:this.focusNode,child:V}),W=new e0({constraints:new p6({maxHeight:q}),padding:j0.symmetric(1,0),child:K}),H=new e0({padding:j0.symmetric(1,0),child:new l1({text:new Y1("",void 0,[new Y1("Command: ",new U1({color:Y.foreground})),new Y1(this.widget.props.commandName,new U1({color:M1.yellow,bold:!0}))])})}),z=new e0({padding:j0.symmetric(1,0),child:new l1({text:this.isConfirmingClearInput?new Y1("",void 0,[new Y1("Esc",new U1({color:X.keybind})),new Y1(" again to clear input",new U1({color:Y.foreground,dim:!0}))]):new Y1("",void 0,[new Y1("Press ",new U1({color:Y.foreground,dim:!0})),new Y1("Enter",new U1({color:X.keybind})),new Y1(" to submit, ",new U1({color:Y.foreground,dim:!0})),new Y1("Esc",new U1({color:X.keybind})),new Y1(" to clear",new U1({color:Y.foreground,dim:!0}))])})}),U=[H,new N0({height:1}),new F4({child:W}),new N0({height:1}),z];return new e0({decoration:{border:n4.all(new j4(Y.foreground,1,"solid")),color:M1.default()},padding:j0.all(1),child:new l0({children:U})})}}class zA extends Q6{props;constructor(J){super();this.props=J}createState(){return new fY6}}class S_1 extends T6{props;constructor(J){super();this.props=J}build(){return new X8({child:new l1({text:new Y1("",void 0,[new Y1(`Forked to new thread:
|
|
5023
5023
|
|
|
5024
5024
|
`,new U1({color:M1.white,dim:!0})),new Y1(`"${this.props.newThreadTitle||"Untitled"}"`,new U1({color:M1.white}))]),textAlign:"center"})})}}class Bz extends Q6{props;constructor(J){super();this.props=J}createState(){return new hY6}}class hY6 extends J6{_spinner=new fK;animationInterval=null;initState(){super.initState(),this.animationInterval=setInterval(()=>{this._spinner.step(),this.setState(()=>{})},100)}dispose(){if(this.animationInterval)clearInterval(this.animationInterval),this.animationInterval=null;super.dispose()}build(J){let Q=x6.of(J),{colors:Y}=Q,X=n4.all(new j4(Y.foreground,1,"solid")),G=this._spinner.toBraille(),Z=new l1({textAlign:"center",text:new Y1("",void 0,[new Y1(G,new U1({color:M1.yellow})),new Y1(" ",void 0),new Y1(this.widget.props.message,new U1({color:Y.foreground}))])}),V=[new F4({child:new l0({mainAxisAlignment:"center",crossAxisAlignment:"center",children:[Z]})})];if(this.widget.props.onAbort)V.push(new N0({height:2,child:new e0({padding:j0.symmetric(2,0),child:new l1({text:new Y1("",new U1({dim:!0}),[new Y1("Press ",new U1({color:Y.foreground})),new Y1("Esc",new U1({color:Y.info})),new Y1(" to cancel",new U1({color:Y.foreground}))])})})}));let K=new e0({decoration:new P8(M1.default(),X),child:new N0({width:60,height:7,child:new l0({mainAxisAlignment:"start",children:V})})});if(this.widget.props.onAbort)return new a8({debugLabel:"LoadingDialog",autofocus:!0,onKey:(W)=>{if(W.key==="Escape")return this.widget.props.onAbort?.(),"handled";return"ignored"},child:K});return K}}class Nz extends Q6{props;constructor(J){super();this.props=J}createState(){return new bY6}}class bY6 extends J6{dispose(){super.dispose()}isWidgetMessage(J){return J instanceof kK}build(J){let Q=this.widget.props.message,Y=(()=>{if(this.isWidgetMessage(Q))return{title:Q.title,type:Q.type};if(Q instanceof Error&&Q.name==="CommandCancelledError")return{title:"Cancelled",type:"info",description:Q.message};if(Q instanceof Error&&Q.name==="CommandTimeoutError")return{title:"Timeout",type:"error",description:Q.message};let W=o41(Q);return{title:W.title,type:W.type,description:W.description}})(),X=Y.type==="error"?M1.red:M1.yellow,G=n4.all(new j4(M1.default(),1,"solid")),Z=new e0({padding:j0.symmetric(1,0),child:new l1({text:new Y1(Y.title,new U1({color:X,bold:!0}))})}),q=this.isWidgetMessage(Q)?Q.widget:new l1({text:new Y1(Y.description,new U1({color:M1.default()})),selectable:!0}),V=new F4({child:new nL({child:new e0({padding:j0.symmetric(1,0),child:q})})}),K=new e0({padding:j0.symmetric(1,0),child:new l1({text:this.widget.props.onRetry?new Y1("",void 0,[new Y1("Press ",new U1({color:M1.default(),dim:!0})),new Y1("R",new U1({color:M1.yellow})),new Y1(" to retry, ",new U1({color:M1.default(),dim:!0})),new Y1("Esc",new U1({color:M1.yellow})),new Y1(" to cancel",new U1({color:M1.default(),dim:!0}))]):new Y1("Press any key to close",new U1({color:M1.default(),dim:!0,italic:!0}))})});return new a8({onKey:(W)=>{if(this.widget.props.onRetry&&W.key==="r")return this.widget.props.onRetry(),"handled";if(W.key==="Escape")return this.widget.props.onDismiss(),"handled";if(!this.widget.props.onRetry)return this.widget.props.onDismiss(),"handled";return"ignored"},autofocus:!0,child:new e0({decoration:{border:G,color:M1.default()},padding:j0.all(1),child:new l0({mainAxisAlignment:"center",children:[Z,new N0({height:1}),V,K]})})})}}class j_1 extends T6{build(){return new X8({child:new l1({text:new Y1("",void 0,[new Y1(`✓ Thread Shared
|
|
5025
5025
|
|
|
@@ -5105,7 +5105,7 @@ https://www.jetbrains.com/help/idea/managing-plugins.html#install_plugin_from_di
|
|
|
5105
5105
|
`)?`${V}...`:G,W=new U1({color:M1.index(8)}),H=[new Y1(K,W)];if(q>0){let z=new U1({color:Y.success});for(let U=1;U<=q;U++)H.push(new Y1(" ")),H.push(new Y1(`[${U}]`,z))}return new u6({padding:j0.only({bottom:0}),child:new G4({crossAxisAlignment:"start",children:[new u6({padding:j0.only({right:1}),child:new l1({text:new Y1("•",new U1({color:M1.index(8)}))})}),new F4({child:new l1({text:new Y1("",void 0,H)})})]})})}}class Zk1 extends Q6{createState(){return new y$6}}class y$6 extends J6{_animationTimer;_visible=!0;initState(){super.initState(),this._startAnimation()}dispose(){this._stopAnimation(),super.dispose()}_startAnimation(){this._animationTimer=setInterval(()=>{this.setState(()=>{this._visible=!this._visible})},500)}_stopAnimation(){if(this._animationTimer)clearInterval(this._animationTimer),this._animationTimer=void 0}build(J){let Q=new U1({color:M1.red}),Y=new U1({color:this._visible?M1.red:M1.transparent()});return new G4({children:[new l1({text:new Y1("⏺",Y)}),new N0({width:1}),new l1({text:new Y1("Replay",Q)})]})}}function hD8(J){let Y=new Date().getTime()-J.getTime(),X=Math.floor(Y/3600000),G=Math.floor(X/24),Z=Math.floor(G/7),q=Math.floor(G/30);if(X<1)return"Just now";if(X<24)return`${X}h ago`;if(G<7)return`${G}d ago`;if(Z<=4)return`${Z}w ago`;return`${q}mo ago`}class qk1{threadHistoryService;constructor(J){this.threadHistoryService=J}async fetchThreadSummaries(J=""){try{return{ok:!0,threads:(await new Promise((G)=>{let Z=this.threadHistoryService.observeThreadList().subscribe((q)=>{Z.unsubscribe(),G(q)})})).filter((G)=>{if(!J.trim())return!0;let Z=G.title?.toLowerCase()||"untitled",q=G.id.toLowerCase(),V=J.toLowerCase();return Z.includes(V)||q.includes(V)}).map((G)=>{let Z=new Date(G.userLastInteractedAt),q=hD8(Z),V=G.id.slice(-8),K=G.env?.initial.trees?.[0]?.uri;return{id:G.id,title:G.title||"Untitled",updatedAt:new Date(G.userLastInteractedAt).toISOString(),description:{timeAgo:q,title:G.title||"Untitled",shortThreadID:V},diffStats:G.summaryStats?.diffStats,workspaceURI:K,parentRelationships:G.parentRelationships}})}}catch(Q){return{ok:!1,errorMsg:Q instanceof Error?Q.message:"An unexpected error occurred"}}}}H0();V9();class Vk1{currentId=null;current=null;subscribeTimer=null;subscription=null;listeners=[];threadService=null;scrollController=new b3;constructor(){}setThreadService(J){this.threadService=J}async select(J){if(!this.threadService){x.error("TUI assert failed: ThreadService used before being set");return}if(this.currentId===J)return;this.cancelTimerAndSubscription(),this.currentId=J;let Q=await this.threadService.get(J);if(Q){if(this.currentId===J)this.current=Q,this.notifyListeners()}this.subscribeTimer=setTimeout(()=>{this.subscribeLive(J)},1000)}clear(){this.cancelTimerAndSubscription(),this.currentId=null,this.current=null,this.notifyListeners()}addListener(J){this.listeners.push(J)}removeListener(J){let Q=this.listeners.indexOf(J);if(Q!==-1)this.listeners.splice(Q,1)}dispose(){this.cancelTimerAndSubscription(),this.scrollController.dispose(),this.listeners=[]}subscribeLive(J){if(!this.threadService){x.error("TUI assert failed: ThreadService used before being set");return}if(this.currentId!==J)return;this.subscription=this.threadService.observePatches(J).pipe(KO()).subscribe((Q)=>{if(this.currentId===J)this.current=Q,this.notifyListeners()})}cancelTimerAndSubscription(){if(this.subscribeTimer)clearTimeout(this.subscribeTimer),this.subscribeTimer=null;if(this.subscription)this.subscription.unsubscribe(),this.subscription=null}notifyListeners(){for(let J of this.listeners)J(this.current)}}function v$6(J,Q){switch(J){case"update-available":return[new Y1("A newer Amp is available. Run ",new U1({color:Q.foreground,dim:!0})),new Y1("amp update",new U1({color:Q.warning}))];case"updated":return null;case"updated-with-warning":return[new Y1("Update complete, run ",new U1({color:Q.foreground,dim:!0})),new Y1("amp update",new U1({color:Q.warning})),new Y1(" to see warnings",new U1({color:Q.foreground,dim:!0}))];case"update-error":return[new Y1("Update failed, run ",new U1({color:Q.foreground,dim:!0})),new Y1("amp update",new U1({color:Q.warning})),new Y1(" to see warnings",new U1({color:Q.foreground,dim:!0}))];case"hidden":return null}}async function pD8(J){return new Promise((Q)=>{uD8("git",["branch","--show-current"],{cwd:J},(Y,X)=>{if(Y){Q(null);return}let G=X.trim();Q(G||null)})})}class b$6 extends Q6{dependencies;constructor(J){super();this.dependencies=J}createState(){return new u$6}}class u$6 extends J6{themeColors=null;themeApp=null;selectionListener=null;ideStatus=null;connectedClientsStatus=null;connectedClientsStatusExpanded=!1;randomAd=null;adSubscription=null;lastAdImpressionId=null;lastUserInteractionTime=Date.now();isConfirmingExit=!1;isExiting=!1;isConfirmingClearInput=!1;isConfirmingCancelProcessing=!1;copyMessageTimer=null;isShowingHelp=!1;isShowingConsoleOverlay=!1;isShowingConfirmationOverlay=!1;isShowingFileChangesOverlay=!1;isShowingCostBreakdownOverlay=!1;confirmationOverlayContent="";exitConfirmTimeout=null;clearInputConfirmTimeout=null;cancelProcessingConfirmTimeout=null;historyIndex=-1;historyDraft=null;bashInvocations=[];dismissedEphemeralErrorKey=null;currentTitle=void 0;currentShellModeStatus=void 0;imageAttachments=[];displayMessage=null;executingCommand=null;isShowingJetBrainsInstaller=!1;isShowingIdePicker=!1;isShowingPalette=!1;threadsForPicker=[];isLoadingThreads=!1;threadPreviewController=new Vk1;previewThread=null;planScrollController=(()=>{let J=new b3;return J.followMode=!1,J})();todoScrollController=(()=>{let J=new b3;return J.followMode=!1,J})();showingSelectionCopiedHint=!1;isShowingStandaloneThreadPicker=!1;filterThreadPickerByWorkspace=!0;agentModePulseSeq=0;currentGitBranch=null;messageViewFocusNode=new b8({debugLabel:"MessageViewFocus"});autocompleteFocusNode=new b8({debugLabel:"AutocompleteFocus"});isTextfieldAndAutocompleteFocused=!1;submitDisabledHint=null;submitDisabledHintTimer=null;showingCannotToggleMessage=null;showImageUnsupportedHint=!1;imageUnsupportedHintTimer=null;adActionModal=null;bottomGridUserHeight=void 0;bottomGridDragStartY=null;bottomGridDragStartHeight=null;pendingMCPServers=[];mcpTrustSubscription=null;agentModeSubscription=null;currentAgentMode="smart";hasToggledAgentMode=!1;inMemoryAgentModeOverride=null;cachedVisibleModes=BG();freeTierStatus=void 0;updateState="hidden";updateServiceSubscription=null;isMessageViewInSelectionMode=!1;threadBackStack=[];threadForwardStack=[];replayDisplayedMessages=[];replayAbortController=new AbortController;replayTypingTimer=null;recordNavigation(J){this.threadBackStack.push(J),this.threadForwardStack=[]}navigateBack=async()=>{if(this.threadBackStack.length===0)return;let J=this.widget.dependencies.worker.thread.id,Q=this.threadBackStack.pop();this.threadForwardStack.push(J),await this.switchToExistingThread(Q,{recordInNavigationHistory:!1})};navigateForward=async()=>{if(this.threadForwardStack.length===0)return;let J=this.widget.dependencies.worker.thread.id,Q=this.threadForwardStack.pop();this.threadBackStack.push(J),await this.switchToExistingThread(Q,{recordInNavigationHistory:!1})};startAndSwitchToNewThread=async()=>{let J=this.widget.dependencies.worker.thread.id;this.recordNavigation(J);let Q=await this.widget.dependencies.startNewThread();return this.widget.dependencies.worker=Q,this.widget.dependencies.threadID=Q.thread.id,this.widget.dependencies.switchWorker(Q),this.setState(()=>{this.isMessageViewInSelectionMode=!1}),Q};async startReplay(){let J=this.widget.dependencies.replayMode;if(!J)return;let{thread:Q,typingEnabled:Y,baseWpm:X}=J,G=Q.messages;for(let Z=0;Z<G.length;Z++){if(this.replayAbortController.signal.aborted)break;let q=G[Z];if(!q)continue;if(Z>0)await this.replaySleep(J.messageDelayMs);if(q.role==="user"&&Y){let W=q.content.filter((H)=>H.type==="text").map((H)=>H.text).join(`
|
|
5106
5106
|
`);if(W)await this.replayTypeMessage(W,X)}if(q.role==="assistant"){let W=q.content.some((U)=>U.type==="tool_use"),H=G[Z+1],z=H?.role==="user"&&H.content.some((U)=>U.type==="tool_result");if(W&&z){let U={...q,state:{type:"streaming"}};this.setState(()=>{this.replayDisplayedMessages=[...this.replayDisplayedMessages,U],this.textController.clear()});let B=J.thread.id;this.getMessageScrollController(B).scrollToBottom(),await this.replaySleep(J.toolProgressDelayMs),this.setState(()=>{this.replayDisplayedMessages=[...this.replayDisplayedMessages.slice(0,-1),q]});continue}}this.setState(()=>{this.replayDisplayedMessages=[...this.replayDisplayedMessages,q],this.textController.clear()});let V=J.thread.id;this.getMessageScrollController(V).scrollToBottom()}await this.replaySleep(J.exitDelayMs),N9.instance.stop()}async replayTypeMessage(J,Q){this.textController.clear();let Y=J.split(/(?<=\s)/),X=60000/Q;for(let G of Y){if(this.replayAbortController.signal.aborted)break;let Z=X/G.length;for(let q of G){this.textController.text=this.textController.text+q,this.textController.cursorPosition=this.textController.text.length,this.setState(()=>{});let V=0.8+Math.random()*0.4,K=Z*V;await this.replaySleep(K)}}}replaySleep(J){return new Promise((Q)=>{this.replayTypingTimer=setTimeout(Q,J)})}getEffectiveAgentMode(){return w41(this.widget.dependencies.worker.thread,this.inMemoryAgentModeOverride?{agentMode:this.inMemoryAgentModeOverride}:null,this.freeTierStatus,{"experimental.agentMode":this.currentAgentMode})}isProcessing(){let{threadState:J}=this.widget.dependencies;if(!J.mainThread)return!1;if(J.viewState.state!=="active")return!1;if(Boolean(J.viewState.inferenceState==="running"))return!0;let Y=J.items.filter((Z)=>Z.type==="toolResult").filter((Z)=>Z.toolResult.run.status==="in-progress"||Z.toolResult.run.status==="queued"),X=J.subagentActiveTools.filter((Z)=>Z.toolRun.status==="in-progress"||Z.toolRun.status==="queued");return[...Y,...X].length>0}showSubmitDisabledHint(J){if(this.submitDisabledHintTimer)clearTimeout(this.submitDisabledHintTimer);this.setState(()=>{this.submitDisabledHint=J}),this.submitDisabledHintTimer=setTimeout(()=>{this.setState(()=>{this.submitDisabledHint=null}),this.submitDisabledHintTimer=null},3000)}getUIHint(){let J=this.themeColors?.colorScheme;if(!J)return null;let Q=this.themeApp;if(!Q)return null;if(this.submitDisabledHint)return new Y1(this.submitDisabledHint,new U1({color:J.foreground,dim:!0}));if(this.isExiting)return new Y1("Exiting...",new U1({color:J.foreground,dim:!0}));if(this.isConfirmingExit)return new Y1("",void 0,[new Y1("Ctrl+C",new U1({color:Q.keybind})),new Y1(" again to exit",new U1({color:J.foreground,dim:!0}))]);if(this.isConfirmingClearInput)return new Y1("",void 0,[new Y1("Esc",new U1({color:Q.keybind})),new Y1(" again to clear input",new U1({color:J.foreground,dim:!0}))]);if(this.isShowingHelp)return new Y1("",void 0,[new Y1("Escape",new U1({color:Q.keybind})),new Y1(" to close help",new U1({color:J.foreground,dim:!0}))]);if(this.showImageUnsupportedHint){let G=this.getEffectiveAgentMode(),Z=zk1(G);return new Y1("",void 0,[new Y1("Images aren't supported in ",new U1({color:J.warning,dim:!1})),new Y1(G,new U1({color:Z})),new Y1(" mode.",new U1({color:J.warning,dim:!1}))])}if(this.isProcessing()||this.bashInvocations.length>0){if(this.isConfirmingCancelProcessing)return new Y1("",void 0,[new Y1("Esc",new U1({color:Q.keybind})),new Y1(" again to cancel",new U1({color:J.foreground,dim:!0}))]);return new Y1("",void 0,[new Y1("Esc",new U1({color:Q.keybind})),new Y1(" to cancel",new U1({color:J.foreground,dim:!0}))])}if(this.showingSelectionCopiedHint)return new Y1("Selection copied to clipboard",new U1({color:J.foreground,dim:!0}));if(this.showingCannotToggleMessage)return new Y1(this.showingCannotToggleMessage,new U1({color:J.warning,dim:!1}));let Y=v$6(this.updateState,J);if(Y)return new Y1("",void 0,Y);let X=this.widget.dependencies.worker.thread;if(X.agentMode==="plan"&&dL(X))return new Y1("",void 0,[new Y1("Ctrl+O",new U1({color:Q.keybind})),new Y1(" → Execute Plan",new U1({color:J.foreground,dim:!0}))]);return null}isTranscriptEmpty(){let{threadState:J}=this.widget.dependencies;return J.items.length===0}handleMessageRestoreSubmit=async(J)=>{let{threadState:Q,worker:Y}=this.widget.dependencies;if(!Q.mainThread?.id)return;let G=Q.mainThread?.messages.findIndex((Z)=>Z===J);if(G===void 0||G===-1)return;try{this.cancelBashInvocations(),await Y.cancel(),await Y.handle({type:"thread:truncate",fromIndex:G}),this.scrollMessageViewToBottom(),this.setState(()=>{this.imageAttachments=[]})}catch(Z){x.error("Failed to edit message:",Z)}};forkMessage=async(J)=>{let{threadState:Q,workerDeps:Y,threadSyncService:X}=this.widget.dependencies,G=Q.mainThread?.id;if(!G)return;let Z=Q.mainThread?.messages.findIndex((q)=>q===J);if(Z===void 0||Z<=0)return;try{let q=await q3.getOrCreateForThread(Y,G),V=await SR(q,X,Z-1);await this.switchToExistingThread(V)}catch(q){x.error("Failed to fork thread:",q),this.showErrorMessage(`Failed to fork thread: ${q}`)}};handleMessageEditSubmit=async(J,Q)=>{let{threadState:Y,worker:X}=this.widget.dependencies,G=Y.mainThread;if(!G)return;let Z=G.messages.findIndex((q)=>q.messageId!==void 0&&q.messageId===J.messageId);if(Z===-1)return;try{this.cancelBashInvocations(),await X.cancel(),this.widget.dependencies.history.add(Q);let q=aB(Q);if(q)await X.handle({type:"thread:truncate",fromIndex:Z}),this.invokeBashCommand(q.cmd,{visibility:q.visibility});else{let V=[{type:"text",text:Q}];if(this.imageAttachments.length>0)V.push(...this.imageAttachments);let K={content:V,agentMode:G.agentMode},W=Z===0;if(G.agentMode&&!W&&K.agentMode!==G.agentMode){x.error(`Cannot edit message: This thread uses ${G.agentMode} mode. To change mode, create a new thread.`);return}await X.handle({type:"user:message",message:K,index:Z})}this.scrollMessageViewToBottom(),this.setState(()=>{this.imageAttachments=[]})}catch(q){x.error("Failed to edit message:",q)}};getAffectedFiles=async(J)=>{let{worker:Q}=this.widget.dependencies;try{return(await Q.getFilesAffectedByTruncation(J)).map((X)=>{try{return new URL(X).pathname}catch{return X}})}catch(Y){return x.error("Failed to get affected files:",Y),[]}};textController=new _G;messageScrollControllers=new Map;getMessageScrollController(J){if(!this.messageScrollControllers.has(J))this.messageScrollControllers.set(J,new b3);return this.messageScrollControllers.get(J)}scrollMessageViewToBottom(){let{threadState:J}=this.widget.dependencies,Q=J.mainThread?.id;if(!Q)return;this.getMessageScrollController(Q).scrollToBottom()}findElementByKey(J){return this.searchElementTreeByKey(this.context.element,J)}searchElementTreeByKey(J,Q){if(!J)return null;if(J?.widget?.key?.value===Q)return J;if(J?.child){let X=this.searchElementTreeByKey(J.child,Q);if(X)return X}if(J?.children)for(let X of J.children){let G=this.searchElementTreeByKey(X,Q);if(G)return G}return null}setupSelectionListener(){let J=this.findElementByKey("message-view-selection-area");if(J?.state){let Q=J.state;if(Q?.controller&&!this.selectionListener)this.selectionListener=()=>{this.setState(()=>{})},Q.controller.addListener(this.selectionListener),Q.controller.onSelectionCopied=()=>{if(this.copyMessageTimer)clearTimeout(this.copyMessageTimer);this.setState(()=>{this.showingSelectionCopiedHint=!0}),this.copyMessageTimer=setTimeout(()=>{this.setState(()=>{this.showingSelectionCopiedHint=!1}),this.copyMessageTimer=null},2000)}}}updateTerminalTitle(){let{threadState:J}=this.widget.dependencies,Q=J.mainThread?.title;if(Q!==this.currentTitle){this.currentTitle=Q;let Y=process.cwd().replace(process.env.HOME||"","~"),X=Q?`amp - ${Q} - ${Y}`:"";process.stdout.write(KC1(X))}}_handleTextCopy(J){if(J&&J.length>0){if(this.setState(()=>{this.showingSelectionCopiedHint=!0}),this.copyMessageTimer)clearTimeout(this.copyMessageTimer);this.copyMessageTimer=setTimeout(()=>{this.setState(()=>{this.showingSelectionCopiedHint=!1}),this.copyMessageTimer=null},2000)}}textFieldKey=new c2("text-field");ideStatusSubscription=null;ideMessageSubscription=null;ideAppendToPromptSubscription=null;connectedClientsStatusSubscription=null;paletteCommands=null;completionBuilder=null;textChangeListener=()=>{let J=this.textController.text;if(J==="/"){this.showCommandPalette(),this.textController.clear();return}let Y=aB(J)?.visibility;if(Y!==this.currentShellModeStatus)this.currentShellModeStatus=Y,this.setState(()=>{})};navigateHistoryPrevious=()=>{let J=this.widget.dependencies.history.previous();if(J!==null){if(this.historyIndex===-1)this.historyDraft=this.textController.text;this.historyIndex++,this.textController.text=J,this.textController.moveCursorToStart()}};navigateHistoryNext=()=>{let J=this.widget.dependencies.history.next();if(J!==null)this.historyIndex--,this.textController.text=J,this.textController.moveCursorToEnd();else if(this.historyIndex>-1)this.historyIndex=-1,this.textController.text=this.historyDraft||"",this.textController.moveCursorToEnd(),this.historyDraft=null};resetHistory=()=>{this.widget.dependencies.history.reset(),this.historyIndex=-1,this.historyDraft=null};openJetBrainsInstaller=()=>{this.setState(()=>{this.isShowingJetBrainsInstaller=!0})};dismissJetBrainsInstaller=()=>{this.setState(()=>{this.isShowingJetBrainsInstaller=!1})};openIdePicker=()=>{this.setState(()=>{this.isShowingIdePicker=!0})};dismissIdePicker=()=>{this.setState(()=>{this.isShowingIdePicker=!1}),B9.instance.addPostFrameCallback(()=>{this.autocompleteFocusNode.requestFocus()})};handleIdeSelection=async(J,Q)=>{if(this.widget.dependencies.ideClient.getSelectedConfig()?.pid===J.pid){this.dismissIdePicker();return}try{await this.connectToSelectedIde(J,Q)}catch(Y){let X=Y instanceof Error?Y.message:String(Y);this.setState(()=>{this.displayMessage=Error(`Failed to connect to IDE: ${X}`)})}this.widget.dependencies.ideClient.selectConfig(J),this.dismissIdePicker()};async connectToSelectedIde(J,Q){await this.widget.dependencies.ideClient.start(J,!0,Q)}previewControllerListener=(J)=>{this.setState(()=>{this.previewThread=J})};showStandaloneThreadPicker=()=>{this.loadThreadsForPicker(),this.setState(()=>{this.isShowingStandaloneThreadPicker=!0})};dismissStandaloneThreadPicker=()=>{this.exitApplication()};handleStandaloneThreadSelect=async(J)=>{try{await this.switchToExistingThread(J,{recordInNavigationHistory:!1}),this.threadPreviewController.clear(),this.setState(()=>{this.isShowingStandaloneThreadPicker=!1}),B9.instance.addPostFrameCallback(()=>{if(!this.isMessageViewInSelectionMode&&!this.isShowingPalette&&!this.isShowingStandaloneThreadPicker)this.autocompleteFocusNode.requestFocus()})}catch(Q){x.error("Failed to switch thread:",Q),this.showErrorMessage(`Failed to switch thread: ${Q}`)}};toggleThreadPickerWorkspaceFilter=()=>{this.setState(()=>{this.filterThreadPickerByWorkspace=!this.filterThreadPickerByWorkspace})};showCommandPalette(){if(this.setState(()=>{this.isShowingPalette=!this.isShowingPalette}),this.isShowingPalette)this.loadThreadsForPicker()}getPaletteCommands(){if(!this.paletteCommands)this.paletteCommands=new k_1(this.widget.dependencies.configService,this.widget.dependencies.commandRegistry,(J)=>{this.setState(()=>{this.executingCommand=J})},()=>{this.setState(()=>{this.executingCommand=null})},this.widget.dependencies.isDogfooding);return this.paletteCommands}getCompletionBuilder(){if(!this.completionBuilder)this.completionBuilder=new x_1(this.widget.dependencies.fuzzyServer,this.widget.dependencies.threadFuzzyIndexer);return this.completionBuilder}dismissPalette=()=>{this.setState(()=>{this.isShowingPalette=!1})};getCommandPaletteContext=()=>{let{threadState:J}=this.widget.dependencies;if(!J.mainThread)return null;let Q=p0.file(process.cwd()),Y=U6(Q);return{worker:this.widget.dependencies.worker,editorState:this.textController,isProcessing:this.isProcessing(),thread:J.mainThread,ampURL:this.widget.dependencies.ampURL,threadSyncService:this.widget.dependencies.threadSyncService,configService:this.widget.dependencies.configService,openInEditor:this.openInEditor,takeImageAttachments:()=>{let X=this.imageAttachments;return this.setState(()=>{this.imageAttachments=[]}),X},setImageAttachments:(X)=>{this.setState(()=>{this.imageAttachments=X})},editorDispatch:(X)=>{switch(X.type){case"set-input":this.textController.clear(),this.textController.insertText(X.input);break;case"insert-text":this.textController.insertText(X.text);break;case"clear":this.textController.clear();break}},submitMessage:(X)=>{return this.proceedWithUserMessage(X)},exitApp:this.exitApplication,openHelp:()=>{this.setState(()=>{this.isShowingHelp=!0})},settingsStorage:this.widget.dependencies.settingsStorage,clientId:this.widget.dependencies.clientId,connectedClientsService:this.widget.dependencies.connectedClientsService,mcpService:this.widget.dependencies.mcpService,startNewThread:async()=>{await this.startAndSwitchToNewThread()},navigateBack:this.navigateBack,navigateForward:this.navigateForward,canNavigateBack:this.threadBackStack.length>0,canNavigateForward:this.threadForwardStack.length>0,canUseAmpFree:this.widget.dependencies.freeTierStatus?.canUseAmpFree??!1,switchToThread:async(X)=>{return await this.switchToExistingThread(X),this.setState(()=>{this.isMessageViewInSelectionMode=!1}),this.widget.dependencies.worker},generateHandoffPrompt:async(X,G,Z)=>{let q=this.widget.dependencies.threadState.mainThread?.id;if(!q)throw Error("No active thread");let V=setTimeout(()=>{Z.throwIfAborted()},60000);try{let K=await this.widget.dependencies.threadService.generateHandoffPrompt(q,X,G,this.widget.dependencies.configService,Z);return clearTimeout(V),K}catch(K){throw clearTimeout(V),K}},handleHandoff:async(X,G)=>{let{goal:Z,generatedPrompt:q,images:V}=G;if(!Z&&!q)return{ok:!1,error:Error("Either goal or generatedPrompt required")};try{let K=this.widget.dependencies.threadState.mainThread?.id;if(!K)return{ok:!1,error:Error("No active thread")};let W=setTimeout(()=>X.abort(new p81("Handoff took too long and was aborted (timeout: 60s)")),60000);try{let H=await this.widget.dependencies.threadService.createHandoffThread(K,{goal:Z,generatedPrompt:q,images:V},this.widget.dependencies.configService,X.signal);return clearTimeout(W),await this.switchToExistingThread(H),{ok:!0}}catch(H){if(clearTimeout(W),H instanceof Error&&(H.name==="AbortError"||H.message.includes("aborted")))throw X.signal.reason;throw H}}catch(K){return x.error("Failed to create handoff thread",K),{ok:!1,error:K instanceof Error?K:Error(String(K))}}},getGuidanceFiles:async(X)=>{if(!J.mainThread)return[];return(await Go({filesystem:this.widget.dependencies.worker.fs.fileSystemReader(),configService:this.widget.dependencies.configService,threadService:this.widget.dependencies.threadService},J.mainThread,X)).map((Z)=>({uri:Z.uri,type:Z.type}))},openIdePicker:()=>{this.openIdePicker()},getInMemoryAgentModeOverride:()=>{return this.inMemoryAgentModeOverride},setInMemoryAgentModeOverride:(X)=>{this.setState(()=>{this.inMemoryAgentModeOverride=X,this.hasToggledAgentMode=!0})},toggleAgentMode:this.toggleAgentMode,getEffectiveAgentMode:()=>this.getEffectiveAgentMode(),getEditorText:()=>this.textController.text,workspace:this.widget.dependencies.workspace??null,handleExecutePlan:async()=>{try{let X=J.mainThread?.id;if(!X){this.setState(()=>{this.displayMessage=Error("No active thread")});return}let G=await this.widget.dependencies.threadService.createPlanExecutionThread(X,"smart");await this.switchToExistingThread(G)}catch(X){x.error("Failed to execute plan",X),this.setState(()=>{this.displayMessage=Error(`Failed to execute plan: ${X instanceof Error?X.message:String(X)}`)})}},planFileManager:this.widget.dependencies.planFileManager,completionBuilder:this.getCompletionBuilder(),threads:this.threadsForPicker,previewController:this.threadPreviewController,isLoadingThreads:this.isLoadingThreads,filterByWorkspace:this.filterThreadPickerByWorkspace,currentWorkspace:Y,threadViewStates:this.widget.dependencies.workerController.threadViewStates}};async loadThreadsForPicker(){if(this.isLoadingThreads)return;this.setState(()=>{this.isLoadingThreads=!0});try{let Q=await new qk1(this.widget.dependencies.threadHistoryService).fetchThreadSummaries();if(Q.ok)this.setState(()=>{this.threadsForPicker=Q.threads})}finally{this.setState(()=>{this.isLoadingThreads=!1})}}updateGitBranch=async()=>{let J=await pD8(process.cwd());this.setState(()=>{this.currentGitBranch=J})};removeBashInvocation=(J)=>{this.setState(()=>{this.bashInvocations=this.bashInvocations.filter((Q)=>Q.id!==J)})};invokeBashCommand=(J,{visibility:Q})=>{let Y=Date.now(),X=`bash-${Y}-${Math.random().toString(36).substring(7)}`,G={cmd:J},Z=new AbortController;this.widget.dependencies.worker.invokeBashTool(G,Z.signal,Q===nB).subscribe({next:(q)=>{this.setState(()=>{if(this.bashInvocations.find((K)=>K.id===X))this.bashInvocations=this.bashInvocations.map((K)=>K.id===X?{...K,toolRun:q}:K);else{let K={id:X,args:G,toolRun:q,startTime:Y,abortController:Z,hidden:Q===nB};this.bashInvocations=[...this.bashInvocations,K]}})},error:()=>this.removeBashInvocation(X),complete:()=>this.removeBashInvocation(X)})};cancelBashInvocations=()=>{let J=this.bashInvocations.find((Q)=>Q.toolRun.status==="in-progress");if(J)J.abortController.abort()};toggleConnectedClientsStatus=()=>{this.setState(()=>{this.connectedClientsStatusExpanded=!this.connectedClientsStatusExpanded})};toggleAgentMode=()=>{let J=this.widget.dependencies.getCurrentWorker()||this.widget.dependencies.worker;if(PZ(J.thread)>0)return;if(this.freeTierStatus?.canUseAmpFree){let X=this.getEffectiveAgentMode(),G=wb(X,this.cachedVisibleModes);if(G!==X)this.setState(()=>{this.hasToggledAgentMode=!0,this.inMemoryAgentModeOverride=G,this.agentModePulseSeq++,this.showingCannotToggleMessage=null,this.showImageUnsupportedHint=!1});return}let Q=this.getEffectiveAgentMode(),Y=wb(Q,this.cachedVisibleModes);if(Y===Q)return;if(this.setState(()=>{this.hasToggledAgentMode=!0,this.inMemoryAgentModeOverride=Y,this.agentModePulseSeq++,this.showingCannotToggleMessage=null,this.showImageUnsupportedHint=!1}),W5(Y))this.checkAndShowFreeModeModal()};checkAndShowFreeModeModal=()=>{if(this.freeTierStatus?.canUseAmpFree)return;if(this.freeTierStatus){if(!this.freeTierStatus.eligible){this.setState(()=>{this.showingCannotToggleMessage="Amp Free is unavailable. Switch to another mode."}),setTimeout(()=>{this.setState(()=>{this.showingCannotToggleMessage=null})},3000);return}else if(!this.freeTierStatus.workspaceAllowsAmpFree){this.setState(()=>{this.showingCannotToggleMessage="Your workspace does not allow Amp Free. Switch to another mode."}),setTimeout(()=>{this.setState(()=>{this.showingCannotToggleMessage=null})},3000);return}}};isInRestrictedFreeMode(){if(this.getEffectiveAgentMode()!=="free")return!1;if(this.freeTierStatus?.canUseAmpFree)return!1;return!0}handleInsertImage=(J)=>{let Q=this.getEffectiveAgentMode();if(!ah(Q)){if(this.imageUnsupportedHintTimer)clearTimeout(this.imageUnsupportedHintTimer);return this.setState(()=>{this.showImageUnsupportedHint=!0}),this.imageUnsupportedHintTimer=setTimeout(()=>{this.setState(()=>{this.showImageUnsupportedHint=!1}),this.imageUnsupportedHintTimer=null},5000),!1}if(this.imageAttachments.length>=pF)return!1;let Y=GC(J);if(typeof Y==="object")return this.setState(()=>{this.imageAttachments=[...this.imageAttachments,Y]}),!1;return this.setState(()=>{this.displayMessage=Error(`Failed to attach image: ${Y}`)}),!1};handlePopImage=()=>{if(this.imageAttachments.length>0)this.setState(()=>{this.imageAttachments=this.imageAttachments.slice(0,-1)})};openInEditor=async(J)=>{let{mkdtemp:Q,readFile:Y,unlink:X,rmdir:G,writeFile:Z}=await import("node:fs/promises"),{tmpdir:q}=await import("node:os"),V=await import("node:path");try{let K=await Q(V.join(q(),"amp-edit-")),W=V.join(K,"message.amp.md");await Z(W,J,"utf-8"),await qz(W);try{let H=await Y(W,"utf-8");this.textController.text=H}catch(H){if(H?.code!=="ENOENT")x.error("Failed to read temporary file",H)}try{await X(W),await G(K)}catch(H){x.warn("Failed to clean up temporary file",H)}}catch(K){x.error("Error opening editor:",K)}};onTextSubmitted=async(J)=>{if(!J.trim())return;let Q=aB(J);if(Q)if(!Q.cmd){this.showSubmitDisabledHint("No command provided");return}else if(this.isProcessing()){this.showSubmitDisabledHint("Unable to use shell mode while agent is active");return}else{this.invokeBashCommand(Q.cmd,{visibility:Q.visibility}),this.widget.dependencies.history.add(J),this.textController.clear(),this.resetHistory();return}this.textController.clear(),this.resetHistory(),await this.updateGitBranch(),await this.sendUserMessage(J)};initState(){if(r$.getInstance().interceptConsole(),this.threadPreviewController.setThreadService(this.widget.dependencies.threadService),this.threadPreviewController.addListener(this.previewControllerListener),this.widget.dependencies.openThreadSwitcher)this.showStandaloneThreadPicker();N9.instance.on("key",()=>{this.lastUserInteractionTime=Date.now()}),N9.instance.on("mouse",()=>{this.lastUserInteractionTime=Date.now()}),N9.instance.on("paste",()=>{this.lastUserInteractionTime=Date.now()}),this.autocompleteFocusNode.addListener((Y)=>{B9.instance.addPostFrameCallback(()=>{this.setState(()=>{this.isTextfieldAndAutocompleteFocused=Y.hasFocus})})}),this.freeTierStatus=this.widget.dependencies.freeTierStatus,W6(this.widget.dependencies.configService.config).then((Y)=>{let X=w41(this.widget.dependencies.worker.thread,this.widget.dependencies.sessionState??null,this.freeTierStatus,Y.settings);if(x.info(`[initState] Resolved agentMode: ${X}`),this.widget.dependencies.sessionState?.agentMode)this.setState(()=>{this.inMemoryAgentModeOverride=X})}),this.updateGitBranch(),this.adSubscription=SC1(this.widget.dependencies.internalAPIClient,this.widget.dependencies.configService,()=>{return(this.inMemoryAgentModeOverride&&W5(this.inMemoryAgentModeOverride)||this.randomAd===null)&&CC1(this.lastUserInteractionTime)}).subscribe({next:(Y)=>{if(Y){let X=gD8(16).toString("hex");this.lastAdImpressionId=X,Promise.resolve().then(() => (K91(),V91)).then(({recordAdEvent:G})=>{let Z=this.widget.dependencies.worker.thread,q=Z.messages[Z.messages.length-1];G("viewed",{adId:Y.id,advertiserId:Y.advertiserId,threadId:Z.id,messageId:q?.messageId,impressionId:X,placement:"tui",matchType:Y.metadata?.matchType,matchedPatterns:Y.metadata?.matchedPatterns,candidateAdPoolCount:Y.metadata?.candidateAdPoolCount,clientRegion:Y.metadata?.clientRegion})})}this.setState(()=>{this.randomAd=Y}),B9.instance.addPostFrameCallback(()=>{if(!this.isMessageViewInSelectionMode&&!this.isShowingPalette&&!this.isShowingStandaloneThreadPicker&&!this.isShowingIdePicker)this.autocompleteFocusNode.requestFocus()})}});let{mcpTrustHandler:J}=this.widget.dependencies;this.mcpTrustSubscription=J.pendingServers$.subscribe((Y)=>{this.setState(()=>{this.pendingMCPServers=Y})}),this.ideStatusSubscription=this.widget.dependencies.ideClient.status.subscribe((Y)=>{this.setState(()=>{this.ideStatus=Y})}),this.ideMessageSubscription=this.widget.dependencies.ideClient.messages.subscribe(async(Y)=>{let X=this.widget.dependencies.getCurrentWorker();if(!X){x.warn("No active thread worker found to handle IDE message");return}await new Promise((G)=>setTimeout(G,50)),await X.handle({type:"user:message",message:{content:[{type:"text",text:Y}]}}),x.debug("Message sent from IDE to agent",{message:Y.slice(0,100)})}),this.ideAppendToPromptSubscription=this.widget.dependencies.ideClient.appendToPrompt.subscribe((Y)=>{this.textController.insertText(Y),x.debug("Appended text to CLI prompt from IDE",{text:Y.slice(0,100)})}),this.connectedClientsStatusSubscription=this.widget.dependencies.connectedClientsService.status.subscribe((Y)=>{this.setState(()=>{this.connectedClientsStatus=Y})}),this.updateServiceSubscription=this.widget.dependencies.updateService.state.subscribe((Y)=>{this.setState(()=>{this.updateState=Y})}),this.agentModeSubscription=this.widget.dependencies.configService.config.subscribe((Y)=>{let X=BG(Y.settings,this.freeTierStatus?.canUseAmpFree);this.setState(()=>{this.cachedVisibleModes=X})}),this.textController.addListener(this.textChangeListener),this.updateTerminalTitle();let Q=this.widget.dependencies.ideClient.getSelectedConfig();if(Q)this.connectToSelectedIde(Q,"auto-startup").catch((Y)=>{let X=Y instanceof Error?Y.message:String(Y);this.setState(()=>{this.displayMessage=Error(`Failed to connect to IDE: ${X}`)})});else if(this.widget.dependencies.showIdePicker)this.openIdePicker();else if(this.widget.dependencies.showJetBrainsInstaller)this.openJetBrainsInstaller();if(this.widget.dependencies.replayMode)setTimeout(()=>this.startReplay(),100)}didUpdateWidget(J){super.didUpdateWidget(J),this.setupSelectionListener()}dispose(){if(this.replayAbortController.abort(),this.replayTypingTimer)clearTimeout(this.replayTypingTimer);if(this.ideStatusSubscription)this.ideStatusSubscription.unsubscribe();if(this.ideMessageSubscription)this.ideMessageSubscription.unsubscribe();if(this.ideAppendToPromptSubscription)this.ideAppendToPromptSubscription.unsubscribe();if(this.connectedClientsStatusSubscription)this.connectedClientsStatusSubscription.unsubscribe();if(this.updateServiceSubscription)this.updateServiceSubscription.unsubscribe();if(this.agentModeSubscription)this.agentModeSubscription.unsubscribe();if(this.adSubscription)this.adSubscription.unsubscribe();if(this.mcpTrustSubscription)this.mcpTrustSubscription.unsubscribe();if(this.threadPreviewController.removeListener(this.previewControllerListener),this.threadPreviewController.dispose(),this.exitConfirmTimeout)clearTimeout(this.exitConfirmTimeout),this.exitConfirmTimeout=null;if(this.clearInputConfirmTimeout)clearTimeout(this.clearInputConfirmTimeout),this.clearInputConfirmTimeout=null;this.textController.removeListener(this.textChangeListener);for(let J of this.messageScrollControllers.values())J.dispose();if(this.messageScrollControllers.clear(),process.stdout.write(KC1("")),this.shouldUseProgressBar())process.stdout.write(a26())}getCurrentConfirmation(){let{threadState:J}=this.widget.dependencies,X=[...J.items.filter((V)=>V.type==="toolResult").map((V)=>({toolUse:V.toolUse,toolRun:V.toolResult.run,subthreadID:void 0})),...J.subagentActiveTools].filter((V)=>V.toolRun.status==="blocked-on-user");if(X.length===0)return null;let G=X[0],Z=G.toolRun.status==="blocked-on-user"?G.toolRun.toAllow??[]:[],q=G.toolRun.status==="blocked-on-user"?G.toolRun.reason:void 0;return{type:"tool-use",tools:[{useBlock:G.toolUse,toAllow:Z}],subthreadID:G.subthreadID,reason:q}}shouldUseProgressBar(){return!1}updateProgressBar(){}onConfirmationResponse=async(J)=>{let Q=this.getCurrentConfirmation();if(!Q||Q.type!=="tool-use"){x.error("No current tool confirmation found");return}let Y=Q.tools[0]?.useBlock;if(!Y){x.error("No tool use block found in confirmation");return}if(J==="allow-all-session")DZ("dangerouslyAllowAll",!0);if(J==="allow-all-persistent")try{await this.widget.dependencies.settingsStorage.set("dangerouslyAllowAll",!0,"global")}catch(G){if(G&&G instanceof Error)this.setState(()=>{this.displayMessage=G});else x.error("Failed to write dangerouslyAllowAll setting:",G);return}if(J==="always-guarded"){let G=Q.tools[0]?.toAllow??[],Z=await this.widget.dependencies.settingsStorage.get("guardedFiles.allowlist")||[],q=[...G,...Z];await this.widget.dependencies.settingsStorage.set("guardedFiles.allowlist",q,"global")}if(J==="connect-github"){let G=new URL("/settings#code-host-connections",this.widget.dependencies.ampURL).toString();try{await pJ(G)}catch(Z){x.error("Failed to open settings page:",Z),await this.showErrorMessage(`Cannot open browser. Please go to ${G} to connect to GitHub`)}return}if(J==="disable-librarian"){let G=await this.widget.dependencies.settingsStorage.get("tools.disable")??[];if(!G.includes(F$))await this.widget.dependencies.settingsStorage.set("tools.disable",[...G,F$],"global")}let X=J!==null&&["yes","allow-all-session","allow-all-persistent","always-guarded"].includes(J);try{let G={type:"user:tool-input",toolUse:Y.id,value:{accepted:X}};if(Q.subthreadID)await(await q3.getOrCreateForThread(this.widget.dependencies.workerDeps,Q.subthreadID)).handle(G);else await this.widget.dependencies.worker.handle(G)}catch(G){x.error("Failed to send tool confirmation:",G)}};showConfirmationOverlay=(J)=>{this.setState(()=>{this.isShowingConfirmationOverlay=!0,this.confirmationOverlayContent=J})};getErrorKey(J){return`${J.constructor.name}:${J.message}`}getCurrentEphemeralError(){let{threadState:J}=this.widget.dependencies,Q=J.viewState;if(Q.state!=="active"||!Q.ephemeralError)return null;let Y=this.getErrorKey(Q.ephemeralError);if(this.dismissedEphemeralErrorKey===Y)return null;return Q.ephemeralError}handleEphemeralErrorResponse=async(J)=>{let Q=this.getCurrentEphemeralError(),Y=this.widget.dependencies.worker;switch(J){case"retry":this.dismissedEphemeralErrorKey=null,await Y.retry();break;case"dismiss":if(Q)this.dismissedEphemeralErrorKey=this.getErrorKey(Q);break;case"new-thread":{this.setState(()=>{this.dismissedEphemeralErrorKey=null}),await this.startAndSwitchToNewThread();break}case"new-smart-thread":{this.setState(()=>{this.inMemoryAgentModeOverride="smart",this.dismissedEphemeralErrorKey=null}),G41({agentMode:"smart"}),await this.startAndSwitchToNewThread();break}}this.setState(()=>{})};handleDisplayMessageDismiss=()=>{this.setState(()=>{this.displayMessage=null})};handleMCPTrustOpenSettings=async()=>{let{mcpTrustHandler:J,settingsStorage:Q}=this.widget.dependencies;await J.deny();try{await qz(Q.getSettingsFilePath())}catch(Y){let X=Y instanceof Error?Y.message:String(Y);await this.showErrorMessage(`Failed to open settings: ${X}`)}};cancelStreamingMessage=async()=>{await q3.cancel(this.widget.dependencies.threadID)};markLastUserMessageAsInterrupted=async()=>{let J=this.widget.dependencies.threadState.mainThread;if(!J)return;for(let Q=J.messages.length-1;Q>=0;Q--){let Y=J.messages[Q];if(Y?.role==="user"&&!Y.interrupted){await this.widget.dependencies.worker.handle({type:"user:message:interrupt",messageIndex:Q});break}}};switchToExistingThread=async(J,Q={})=>{let{recordInNavigationHistory:Y=!0}=Q;if(Y){let X=this.widget.dependencies.worker.thread.id;if(X!==J)this.recordNavigation(X)}try{x.info(`[switchToExistingThread] Switching to thread: ${J}`);let X=await this.widget.dependencies.switchToThread(J);x.info(`[switchToExistingThread] Got worker for thread ${J}, thread.agentMode: ${X.thread.agentMode}`);let G=await this.widget.dependencies.configService.getLatest(),Z=w41(X.thread,this.widget.dependencies.sessionState??null,this.freeTierStatus,G.settings);if(x.info(`[switchToExistingThread] Thread ${J} resolved agentMode: ${Z}`),this.widget.dependencies.worker=X,this.widget.dependencies.threadID=X.thread.id,this.widget.dependencies.switchWorker(X),this.setState(()=>{x.info("[switchToExistingThread] Clearing inMemoryAgentModeOverride"),this.inMemoryAgentModeOverride=null}),X.thread.draft)if(x.info("[switchToExistingThread] Loading draft content into text controller"),this.textController.clear(),typeof X.thread.draft==="string")this.textController.insertText(X.thread.draft);else{let q=X.thread.draft.filter((W)=>W.type==="text"),V=X.thread.draft.filter((W)=>W.type==="image"),K=q.map((W)=>W.text).join(`
|
|
5107
5107
|
`);if(K)this.textController.insertText(K);if(V.length>0)this.setState(()=>{this.imageAttachments=V})}}catch(X){throw x.error("Failed to switch to thread:",J,X),Error(`Failed to switch to thread: ${J}`)}};sendUserMessage=async(J)=>{await this.proceedWithUserMessage(J)};proceedWithUserMessage=async(J)=>{this.cancelBashInvocations(),this.widget.dependencies.history.add(J);let Q=this.widget.dependencies.getCurrentWorker()||this.widget.dependencies.worker,Y=PZ(Q.thread)===0,X=this.getEffectiveAgentMode();if(Q.thread.agentMode&&!Y&&X!==Q.thread.agentMode){await this.showErrorMessage(`This thread uses ${Q.thread.agentMode} mode. To change mode, edit the first message or create a new thread.`);return}let G=[{type:"text",text:J}];if(this.imageAttachments.length>0)G.push(...this.imageAttachments);if(await Q.handle({type:"user:message",message:{content:G,agentMode:X}}),Y)G41({agentMode:X});this.scrollMessageViewToBottom(),this.setState(()=>{this.imageAttachments=[]}),B9.instance.addPostFrameCallback(()=>{if(!this.isMessageViewInSelectionMode&&!this.isShowingPalette&&!this.isShowingStandaloneThreadPicker&&!this.isShowingIdePicker)this.autocompleteFocusNode.requestFocus()})};async showErrorMessage(J){this.setState(()=>{this.displayMessage=Error(J)})}exitApplication=async()=>{this.setState(()=>{this.isExiting=!0});let J=this.widget.dependencies.threadState.mainThread;if(J?.messages.length===0){if(J.relationships?.find((X)=>X.type==="handoff"&&X.role==="child"))await this.widget.dependencies.threadService.discardHandoffThread(J.id).catch(()=>{})}let Q=this.getEffectiveAgentMode();G41({agentMode:Q}).catch((Y)=>{x.warn("Failed to save session state on exit:",Y)}).finally(()=>{N9.instance.stop()})};onExitPressed=()=>{if(this.isConfirmingExit){if(this.exitConfirmTimeout)clearTimeout(this.exitConfirmTimeout),this.exitConfirmTimeout=null;this.exitApplication()}else{if(this.setState(()=>{this.isConfirmingExit=!0}),this.exitConfirmTimeout)clearTimeout(this.exitConfirmTimeout);this.exitConfirmTimeout=setTimeout(()=>{this.setState(()=>{this.isConfirmingExit=!1}),this.exitConfirmTimeout=null},1000)}};toHomeRelative(J){let Q=mD8();if(J===Q)return"~";if(J.startsWith(Q+Og.sep))return"~"+J.slice(Q.length);return J}shorten(J){let Q=J.split(Og.sep).filter(Boolean);if(Q.length<=5)return J;return[Q.slice(0,2).join(Og.sep),"…",Q.slice(-2).join(Og.sep)].join(Og.sep)}build(J){let Q=q8.of(J),Y=x6.of(J),X=Y.base;this.themeColors=X;let{colors:G,app:Z}=Y;this.themeApp=Z;let q=this.widget.dependencies.getCurrentWorker()||this.widget.dependencies.worker,V=q.thread.agentMode&&W5(q.thread.agentMode)&&this.randomAd!==null,{threadState:K}=this.widget.dependencies;this.updateTerminalTitle(),this.updateProgressBar();let W=this.getCurrentConfirmation(),H=this.widget.dependencies.replayMode,z=Boolean(H),U=K.items,B=K.mainThread||void 0,O=K.subagentToolsByParentID,M=K.todosList;if(z){let G6={...H.thread,messages:this.replayDisplayedMessages};U=wC(G6).items,B=G6,O={};let o6=aE({messages:this.replayDisplayedMessages});M=Array.isArray(o6)?o6:[]}let L=B?.id,E=B,I=z?this.replayDisplayedMessages.length===0:this.isTranscriptEmpty(),P=(G6)=>new u81({key:new c2(`preview-message-view-${G6.id}`),items:wC(G6).items,controller:this.threadPreviewController.scrollController,autofocus:!1,thread:G6,focusNode:new b8({debugLabel:"PreviewFocus"})}),R=this.previewThread,j=R?R.messages.length>2000?new l0({mainAxisSize:"max",children:[new F4({child:new N0}),new u6({padding:j0.all(2),child:new X8({child:new l1({text:new Y1("Thread too long for preview",new U1({color:G.mutedForeground,dim:!0}))})})})]}):P(R):I?new m81({agentMode:this.getEffectiveAgentMode()}):new u81({key:L?new c2(`message-view-${L}`):void 0,items:U,subagentToolsByParentID:O,controller:L?this.getMessageScrollController(L):new b3,autofocus:!1,onCopy:z?void 0:this._handleTextCopy.bind(this),thread:E,onMessageEditSubmit:z?void 0:this.handleMessageEditSubmit,onMessageRestoreSubmit:z?void 0:this.handleMessageRestoreSubmit,onMessageForkSubmit:z?void 0:this.forkMessage,getAffectedFiles:z?void 0:this.getAffectedFiles,focusNode:this.messageViewFocusNode,onDismissFocus:()=>{if(this.setState(()=>{this.isMessageViewInSelectionMode=!1}),!this.isShowingIdePicker)this.autocompleteFocusNode.requestFocus()},isInSelectionMode:this.isMessageViewInSelectionMode}),y=Math.max(Math.floor(Q.size.height*0.4),12),h=this.getCurrentEphemeralError(),g=this.buildBottomWidget(h,W,G,Y,K,M,y,V?this.randomAd:null,z),p=Q.size.width<40,b=K.mainThread?gU0(K.mainThread):void 0,i=new Q81({threadViewState:K.viewState,threadTokenUsage:b,threadID:L??null,thread:K.mainThread??void 0,onFileChangesClick:()=>{this.setState(()=>{this.isShowingFileChangesOverlay=!this.isShowingFileChangesOverlay})},onCostBreakdownClick:()=>{this.setState(()=>{this.isShowingCostBreakdownOverlay=!this.isShowingCostBreakdownOverlay})},onShowIdePicker:this.openIdePicker,ideStatus:this.ideStatus,connectedClientsStatus:this.connectedClientsStatus,isNarrow:p,uiHint:this.getUIHint()??void 0,waitingForConfirmation:!!W,showingEphemeralError:Boolean(K.viewState.state==="active"&&K.viewState.ephemeralError),runningBashInvocations:this.bashInvocations.length>0,executingCommand:this.executingCommand?.name??null,executingCommandMessage:this.executingCommand?.statusMessage??null}),t=new J81({bashInvocations:this.bashInvocations}),r=[],m=this.getEffectiveAgentMode(),s=this.currentShellModeStatus,q1=zk1(m),H1=!s?m.length+1:0,a=Q.capabilities.animationSupport,o=a==="disabled"?0:a==="slow"?30:60,l=NK(m)?.uiHints?.fasterAnimation?3:1,z1=o>0&&this.agentModePulseSeq>0?new t5({children:[g,new h3({top:0,left:1,right:1,height:1,child:new $k1({color:q1,trigger:this.agentModePulseSeq,fps:o,speed:l,leftOffset:H1})})]}):g;r.push(new F4({child:j}),t);let j1=new t5({children:[new l0({mainAxisSize:"min",children:[V?new E_1({ad:this.randomAd,onButtonClick:async()=>{let G6=this.randomAd;if(this.lastAdImpressionId)Promise.resolve().then(() => (K91(),V91)).then(({recordAdEvent:o6})=>{let b4=this.widget.dependencies.worker.thread,t4=b4.messages[b4.messages.length-1];o6("clicked",{adId:G6.id,advertiserId:G6.advertiserId,threadId:b4.id,messageId:t4?.messageId,impressionId:this.lastAdImpressionId,placement:"tui",actionType:"link_to",matchType:G6.metadata?.matchType,matchedPatterns:G6.metadata?.matchedPatterns,candidateAdPoolCount:G6.metadata?.candidateAdPoolCount,clientRegion:G6.metadata?.clientRegion})});try{await pJ(G6.shortDestinationUrl)}catch(o6){let t4=N9.instance.tuiInstance.clipboard.isOsc52Supported();this.setState(()=>{this.adActionModal={showCopyOption:t4,url:G6.shortDestinationUrl}})}}}):new N0({height:0}),new e0({constraints:new p6(0,Q.size.width,0,y),child:z1})]}),V?new h3({top:0,left:0,right:0,child:new p$6({userHeight:this.bottomGridUserHeight,maxHeight:y,onInitializeHeight:(G6)=>{this.setState(()=>{this.bottomGridUserHeight=Math.min(G6,y)})},onDrag:(G6)=>{if(this.bottomGridDragStartY===null)this.bottomGridDragStartY=Math.floor(G6.localPosition.y),this.bottomGridDragStartHeight=this.bottomGridUserHeight;let o6=Math.floor(G6.localPosition.y)-this.bottomGridDragStartY,b4=Math.max(4,this.bottomGridDragStartHeight-o6),t4=Math.min(b4,y),c5=Math.floor(t4);if(this.bottomGridUserHeight!==c5)this.setState(()=>{this.bottomGridUserHeight=c5})},onRelease:()=>{this.bottomGridDragStartY=null,this.bottomGridDragStartHeight=null}})}):new N0({height:0})]});r.push(j1,new N0({height:1,child:new u6({padding:j0.horizontal(1),child:i})}));let e=new l0({crossAxisAlignment:"stretch",mainAxisSize:"max",children:r}),y1=z?new t5({children:[e,new h3({top:0,left:0,child:new Zk1})]}):e,R1=new n8(()=>{if(this.isShowingPalette)return this.dismissPalette(),"handled";if(this.pendingMCPServers.length>0)return this.widget.dependencies.mcpTrustHandler.deny(),"handled";if(this.getCurrentEphemeralError())return this.handleEphemeralErrorResponse("dismiss"),"handled";if(this.displayMessage)return this.handleDisplayMessageDismiss(),"handled";if(this.isShowingHelp)return this.setState(()=>{this.isShowingHelp=!1}),"handled";if(this.isShowingFileChangesOverlay)return this.setState(()=>{this.isShowingFileChangesOverlay=!1}),"handled";if(this.isShowingCostBreakdownOverlay)return this.setState(()=>{this.isShowingCostBreakdownOverlay=!1}),"handled";if(this.isShowingIdePicker)return this.dismissIdePicker(),"handled";if(this.isShowingJetBrainsInstaller)return this.dismissJetBrainsInstaller(),"handled";if(this.isShowingConfirmationOverlay)return this.setState(()=>{this.isShowingConfirmationOverlay=!1,this.confirmationOverlayContent=""}),"handled";if(this.isShowingConsoleOverlay)return this.setState(()=>{this.isShowingConsoleOverlay=!1}),"handled";if(this.textController.hasSelection)return this.textController.clearSelection(),"handled";if(this.isConfirmingClearInput){if(this.textController.clear(),this.setState(()=>{this.isConfirmingClearInput=!1,this.imageAttachments=[]}),this.clearInputConfirmTimeout)clearTimeout(this.clearInputConfirmTimeout),this.clearInputConfirmTimeout=null;return"handled"}if(this.isConfirmingCancelProcessing){if(this.bashInvocations.length>0)this.cancelBashInvocations();if(this.isProcessing())this.markLastUserMessageAsInterrupted().catch((o6)=>{x.error("Failed to mark message as interrupted:",o6)}),this.cancelStreamingMessage().catch((o6)=>{x.error("Failed to cancel streaming message:",o6)});if(this.setState(()=>{this.isConfirmingCancelProcessing=!1}),this.cancelProcessingConfirmTimeout)clearTimeout(this.cancelProcessingConfirmTimeout),this.cancelProcessingConfirmTimeout=null;return"handled"}if(this.executingCommand)return x.info("Canceling executing command:",this.executingCommand.name),this.executingCommand.abortController.abort(),"handled";if(this.bashInvocations.length>0||this.isProcessing()){if(this.setState(()=>{this.isConfirmingCancelProcessing=!0}),this.cancelProcessingConfirmTimeout)clearTimeout(this.cancelProcessingConfirmTimeout);return this.cancelProcessingConfirmTimeout=setTimeout(()=>{this.setState(()=>{this.isConfirmingCancelProcessing=!1}),this.cancelProcessingConfirmTimeout=null},1000),"handled"}if(this.textController.text.trim()!==""||this.imageAttachments.length>0){if(this.setState(()=>{this.isConfirmingClearInput=!0}),this.clearInputConfirmTimeout)clearTimeout(this.clearInputConfirmTimeout);return this.clearInputConfirmTimeout=setTimeout(()=>{this.setState(()=>{this.isConfirmingClearInput=!1}),this.clearInputConfirmTimeout=null},1000),"handled"}return"ignored"}),D0=new n8(()=>{return this.onExitPressed(),"handled"}),T1=new n8(()=>{return this.setState(()=>{this.isShowingConsoleOverlay=!this.isShowingConsoleOverlay}),"handled"}),a1=new n8(()=>{return DJ.instance.toggleAll(),"handled"}),F1=new n8(()=>{return this.widget.dependencies.configService.getLatest().then((G6)=>{DZ("internal.showCost",!(G6.settings["internal.showCost"]??!0))}),"handled"}),Q1=new n8(()=>{return N9.instance.toggleFrameStatsOverlay(),"handled"}),O1=new n8(()=>{return N9.instance.tuiInstance.getScreen().markForRefresh(),B9.instance.requestFrame(),"handled"}),L1=new n8(()=>{return this.toggleAgentMode(),"handled"}),w1=new n8(()=>{let o6=this.isShowingPalette&&this.previewThread?this.threadPreviewController.scrollController:(()=>{let{threadState:b4}=this.widget.dependencies,t4=b4.mainThread?.id;return t4?this.getMessageScrollController(t4):null})();if(o6){let b4=Math.max(Math.floor(Q.size.height*0.4),10),t4=Q.size.height-b4;o6.animatePageUp(t4,100)}return"handled"}),A1=new n8(()=>{let o6=this.isShowingPalette&&this.previewThread?this.threadPreviewController.scrollController:(()=>{let{threadState:b4}=this.widget.dependencies,t4=b4.mainThread?.id;return t4?this.getMessageScrollController(t4):null})();if(o6){let b4=Math.max(Math.floor(Q.size.height*0.4),10),t4=Q.size.height-b4;o6.animatePageDown(t4,100)}return"handled"}),u1=new n8(()=>{let o6=this.isShowingPalette&&this.previewThread?this.threadPreviewController.scrollController:(()=>{let{threadState:b4}=this.widget.dependencies,t4=b4.mainThread?.id;return t4?this.getMessageScrollController(t4):null})();if(o6)o6.animateTo(0,100);return"handled"}),v1=new n8(()=>{let o6=this.isShowingPalette&&this.previewThread?this.threadPreviewController.scrollController:(()=>{let{threadState:b4}=this.widget.dependencies,t4=b4.mainThread?.id;return t4?this.getMessageScrollController(t4):null})();if(o6)o6.animateTo(Number.MAX_SAFE_INTEGER,100);return"handled"}),n1=new n8(()=>{if(!this.isTextfieldAndAutocompleteFocused)return"ignored";let{threadState:G6}=this.widget.dependencies;if(!G6.mainThread?.messages.some((b4)=>b4.role==="user"||nE(b4)))return"ignored";return this.setState(()=>{this.isMessageViewInSelectionMode=!0}),"handled"}),$0=new n8((G6)=>{if(G6.direction==="previous")this.navigateHistoryPrevious();else this.navigateHistoryNext();return"handled"}),Q0=new n8(()=>{if(!this.isTextfieldAndAutocompleteFocused)return"ignored";return r41().then(async(G6)=>{if(G6)try{this.handleInsertImage(G6)}finally{try{let{unlink:o6}=await import("node:fs/promises");await o6(G6)}catch{}}}),"handled"}),A0=new Map([[V4.ctrl("c"),new iu],[V4.ctrl("l"),new su],[V4.ctrl("o"),new u41],[V4.ctrl("v"),new cu],[V4.alt("s"),new qC],[V4.ctrl("s"),new qC],[V4.alt("p"),new ou],[V4.ctrl("r"),new au],[V4.alt("d"),new ru],[V4.ctrl("t"),new tu],[V4.key("PageUp"),new x41],[V4.key("PageDown"),new f41],[V4.key("Home"),new h41],[V4.key("End"),new b41],[V4.key("Escape"),new lu],[V4.ctrl("p"),new VC("previous")],[V4.ctrl("n"),new VC("next")],[V4.key("Tab"),new eu]]);if(!u7())A0.set(V4.key("ArrowUp"),new eu);if(!1)A0.set(V4.alt("c"),new nu);let z6=new n8(()=>{if(this.isShowingStandaloneThreadPicker)return"handled";return this.showCommandPalette(),"handled"}),B4=new n8(()=>{return this.toggleThreadPickerWorkspaceFilter(),"handled"}),h4=new Map([[lu,R1],[su,O1],[qC,L1],[u41,z6],[cu,Q0],[nu,T1],[au,a1],[ru,F1],[ou,Q1],[tu,B4],[iu,D0],[x41,w1],[f41,A1],[h41,u1],[b41,v1],[eu,n1],[VC,$0]]),V8=[y1];if(this.isShowingConsoleOverlay)V8.push(new b_1);if(this.isShowingHelp){let G6=this.getPaletteCommands().getAllCommands();V8.push(new m_1({commands:G6}))}if(this.adActionModal)V8.push(new I_1({title:"Failed to open browser",message:this.adActionModal.url,showCopyOption:this.adActionModal.showCopyOption,onSelect:async(G6)=>{let o6=this.adActionModal.url;if(G6==="copy")try{await N9.instance.tuiInstance.clipboard.writeText(o6),this.setState(()=>{this.displayMessage=new JX("Link copied to clipboard")})}catch(b4){x.error("Failed to copy to clipboard",{error:b4}),this.setState(()=>{this.displayMessage=Error("Failed to copy to clipboard")})}this.setState(()=>{this.adActionModal=null})}}));if(this.pendingMCPServers.length>0){let{mcpTrustHandler:G6}=this.widget.dependencies;V8.push(new Xk1({servers:this.pendingMCPServers,onAlwaysTrust:G6.trustAlways.bind(G6),onTrustOnce:G6.trustOnce.bind(G6),onOpenSettings:this.handleMCPTrustOpenSettings,onDismiss:G6.deny.bind(G6)}))}if(this.isShowingFileChangesOverlay)V8.push(new PS1({threadData:K}));if(this.isShowingCostBreakdownOverlay&&K.mainThread)V8.push(new u_1({thread:K.mainThread}));if(this.isShowingConfirmationOverlay)V8.push(new f_1({details:this.confirmationOverlayContent}));let M0=this.getCommandPaletteContext();if(M0&&this.isShowingPalette)V8.push(new X8({child:new e0({constraints:p6.loose(80,20),child:new v_1({commandContext:M0,mainThread:K.mainThread,commands:this.getPaletteCommands(),onDismiss:this.dismissPalette})})}));if(this.isShowingIdePicker)V8.push(new d_1({onCancel:this.dismissIdePicker,onSelect:this.handleIdeSelection,jetbrainsMode:this.widget.dependencies.jetbrainsMode}));if(this.isShowingStandaloneThreadPicker){let G6=p0.file(process.cwd()),o6=U6(G6);V8.push(new X8({child:new e0({constraints:p6.loose(80,20),child:new FC({threads:this.threadsForPicker,title:"Continue Thread",onSelect:this.handleStandaloneThreadSelect,onDismiss:this.dismissStandaloneThreadPicker,previewController:this.threadPreviewController,isLoading:this.isLoadingThreads,currentWorkspaceURI:o6,filterByWorkspace:this.filterThreadPickerByWorkspace,threadViewStates:this.widget.dependencies.workerController.threadViewStates})})}))}let x0=new t5({children:V8});if(this.isShowingJetBrainsInstaller)return new rL({child:new gQ({actions:h4,child:new Lq({shortcuts:A0,debugLabel:"jetbrains-installer-shortcuts",child:new Yk1({configService:this.widget.dependencies.configService,ideClient:this.widget.dependencies.ideClient,onExit:()=>process.exit(0),onContinue:this.dismissJetBrainsInstaller})})})});let d6=new rB({onError:(G6)=>{this.showErrorMessage(G6.message)},child:x0});return new rL({child:new gQ({actions:h4,child:new Lq({shortcuts:A0,debugLabel:"main-app-shortcuts",child:d6})})})}buildScrollableTodoList(J,Q,Y){return new g$6({todos:J,enabled:Q,controller:this.todoScrollController,appTheme:Y})}buildBottomWidget(J,Q,Y,X,G,Z,q,V,K){if(J)return new g_1({error:J,ampURL:this.widget.dependencies.ampURL,onResponse:this.handleEphemeralErrorResponse});if(Q){if(this.displayMessage)this.handleDisplayMessageDismiss();return new h_1({confirmationRequest:Q,onResponse:this.onConfirmationResponse,onShowOverlay:this.showConfirmationOverlay})}if(this.displayMessage)return new Gk1({message:this.displayMessage,onDismiss:this.handleDisplayMessageDismiss});let W=X.app,H=e41(X),z=this.isInRestrictedFreeMode(),U=new HA({key:this.textFieldKey,controller:this.textController,triggers:K?[]:[new YN],completionBuilder:K?void 0:this.getCompletionBuilder(),ampURL:this.widget.dependencies.ampURL,onSubmitted:K?void 0:this.onTextSubmitted,theme:Y,placeholder:K?"Press Ctrl+C to exit":z?"Amp Free is not enabled. Press Ctrl+S to switch modes.":void 0,enabled:this.isTextfieldAndAutocompleteFocused&&!z&&!this.isShowingStandaloneThreadPicker,shellPromptRules:H,focusNode:this.autocompleteFocusNode,autofocus:!this.isMessageViewInSelectionMode&&!this.isShowingStandaloneThreadPicker&&!this.isShowingIdePicker,clipboard:N9.instance.tuiInstance.clipboard,onCopy:this._handleTextCopy.bind(this),onInsertImage:this.handleInsertImage,imageAttachments:this.imageAttachments,popImage:this.handlePopImage}),B=G.mainThread?.queuedMessages??[],O=Array.isArray(Z)&&Z.length>0,M=Array.isArray(B)&&B.length>0,L=G.mainThread?.agentMode==="plan"&&dL(G.mainThread),E,I;if(L){if(E=new aC1(new g81({thread:G.mainThread,onExecute:async()=>{let b=this.getCommandPaletteContext();if(b)await this.getPaletteCommands().execute("execute-plan",b,void 0,new AbortController)},onEdit:async()=>{try{let b=process.env.EDITOR||process.env.VISUAL||"nano",{filePath:i}=await this.widget.dependencies.planFileManager.ensureSync(G.mainThread.id);N9.instance.tuiInstance.suspend();let{execSync:t}=await import("child_process");t(`${b} "${i}"`,{stdio:"inherit"}),N9.instance.tuiInstance.resume()}catch(b){x.error("Failed to edit plan",b),this.setState(()=>{this.displayMessage=Error("Failed to edit plan")})}},controller:this.planScrollController,appTheme:X}),{clipBehavior:"antiAlias"}),M)I=new q91({queuedMessages:B});else if(O)I=this.buildScrollableTodoList(Z,this.isTextfieldAndAutocompleteFocused&&!z,X)}else E=M?new q91({queuedMessages:B}):void 0,I=O?this.buildScrollableTodoList(Z,this.isTextfieldAndAutocompleteFocused&&!z,X):void 0;let P=[],R=this.currentShellModeStatus;if(R)P.push({text:new Y1(R==="hidden"?"shell mode (incognito)":"shell mode",new U1({color:R==="hidden"?X.app.shellModeHidden:X.app.shellMode})),position:"top-left"});if(!R&&this.cachedVisibleModes.length>1){let b=this.previewThread,i=b?b.agentMode??this.getEffectiveAgentMode():this.getEffectiveAgentMode(),t=zk1(i);if(b)P.push({text:new Y1(i,new U1({color:t})),position:"top-left",offsetY:0});else{let m=wb(i,this.cachedVisibleModes)!==i,s=this.widget.dependencies.getCurrentWorker()||this.widget.dependencies.worker,q1=PZ(s.thread)===0,a=z||!this.hasToggledAgentMode&&m&&q1?new Y1("",void 0,[new Y1(i,new U1({color:t})),new Y1(" (click or ",new U1({color:Y.foreground,dim:!0})),new Y1("Ctrl+S",new U1({color:W.keybind})),new Y1(" to switch)",new U1({color:Y.foreground,dim:!0}))]):new Y1(i,new U1({color:t}));P.push({text:a,position:"top-left",offsetY:0,onClick:q1?this.toggleAgentMode:void 0})}}if(this.connectedClientsStatus&&this.connectedClientsStatus.enabled){let b=this.connectedClientsStatus,i=b.mode||"disconnected",t=!!b.errorMessage,r=b.clientID||"unknown",m,s;if(t)m="●",s=M1.red;else if(i==="presence")m="○",s=M1.yellow;else if(i==="connected"&&b.connected)m="●",s=M1.green;else m="○",s=M1.yellow;let q1=this.connectedClientsStatusExpanded?`${r} ${m}`:m;P.push({text:new Y1(q1,new U1({color:s})),position:"top-right",offsetX:-2,offsetY:0,onClick:this.toggleConnectedClientsStatus})}let j=K?this.widget.dependencies.replayMode.thread.env?.initial.trees?.[0]?.uri:G.mainThread?.env?.initial.trees?.[0]?.uri,y;if(j)y=p0.parse(j).fsPath;else y=process.cwd();let h=this.toHomeRelative(y),g=this.shorten(h),p=!K&&this.currentGitBranch?`${g} (${this.currentGitBranch})`:g;return P.push({text:new Y1(p,new U1({color:Y.foreground,dim:!0})),position:"bottom-right"}),new NS1({leftChild:new F4({child:U}),rightChild1:E,rightChild2:I,maxHeight:q,overlayTexts:P,borderColor:z||!this.isTextfieldAndAutocompleteFocused?M1.index(8):void 0,hasBanner:V!==null,userHeight:this.bottomGridUserHeight,onInitializeHeight:(b)=>{this.setState(()=>{this.bottomGridUserHeight=Math.min(b,q)})},onDrag:(b)=>{if(this.bottomGridDragStartY===null)this.bottomGridDragStartY=Math.floor(b.localPosition.y),this.bottomGridDragStartHeight=this.bottomGridUserHeight;let i=Math.floor(b.localPosition.y)-this.bottomGridDragStartY,t=Math.max(4,this.bottomGridDragStartHeight-i),r=Math.min(t,q),m=Math.floor(r);if(this.bottomGridUserHeight!==m)this.setState(()=>{this.bottomGridUserHeight=m})},onDragRelease:()=>{this.bottomGridDragStartY=null,this.bottomGridDragStartHeight=null},enableResize:V===null})}}async function Fk1(J){if((await J.configService.getLatest()).settings["terminal.animation"]===!1)N9.instance.tuiInstance.setOptions({queryOptions:{animationDisabled:!0}});let X=()=>null,Z=!1,q=new Gz(Z,1000,J.inspectorPort),V=J.features?.find((L)=>L.name==="amp-connect")?.enabled??!1,K=new A_1({threadService:J.threadService,worker:J.worker,builder:(L,E,I,P,R)=>{if(X=R,J.threadDependencies&&V)yC1(J.threadDependencies,J.configService,R,P,J.connectedClientsService,J.startNewThread,J.switchToThread,J.clientId).catch((g)=>{x.error("Failed to start automatic presence:",g)});let j=R(),y=j.thread.id,h={...J,worker:j,threadID:y};return new b$6({...h,threadState:E,workerController:I,switchWorker:P,getCurrentWorker:R})}}),W=new AS1({configService:J.configService,child:K}),H=new OS1({configService:J.configService,child:W}),z=new GS1(H),U=new x6({data:WC.fromBaseTheme(jG.default()),child:z});try{await IC1(U,{onRootElementMounted:(L)=>{if(x.info("TUI input ready for user interaction"),Z)q.start(L)}})}finally{if(Z)q.stop();if(J.threadDependencies&&V){let{stopGlobalSession:L}=await Promise.resolve().then(() => (vC1(),g76));L()}}let O=X()?.thread.id||J.threadID,M=await J.threadService.get(O);if(M&&M.messages.length>0){let L=`${J.ampURL.replace(/\/$/,"")}/threads/${O}`;V36(M,L,J.stdout)}}function zk1(J){return J==="smart"?M1.rgb(145,119,199):J==="rush"?M1.rgb(228,180,2):W5(J)?M1.rgb(0,184,255):J==="plan"?M1.rgb(153,102,255):dD8(J)}class g$6 extends Q6{props;constructor(J){super();this.props=J}createState(){return new m$6}}class m$6 extends J6{viewportHeight=1;scrollListenerAttached=!1;initState(){if(!this.scrollListenerAttached)this.widget.props.controller.addListener(()=>{this.updateViewportHeight()}),this.scrollListenerAttached=!0}build(J){let{todos:Q,controller:Y,appTheme:X}=this.widget.props;return new G4({crossAxisAlignment:"stretch",children:[new F4({child:new O7({controller:Y,autofocus:!1,child:new w_1({todos:Q})})}),new YX({controller:Y,thumbColor:X.app.scrollbarThumb,trackColor:X.app.scrollbarTrack,getScrollInfo:()=>{let{maxScrollExtent:G,offset:Z}=Y,q=this.viewportHeight,V=G+q;return{totalContentHeight:Math.max(V,0),viewportHeight:Math.max(q,1),scrollOffset:Math.max(Z,0)}}})]})}updateViewportHeight(){let J=this.getViewportHeight();if(J!==this.viewportHeight)this.viewportHeight=J}getViewportHeight(){let J=this.context.findRenderObject();if(!J)return this.viewportHeight;let Q=(X,G=0)=>{if(X&&"size"in X&&"children"in X){let Z=X.children||[];for(let q of Z){if(q&&"size"in q){let K=q.size;if(typeof K?.height==="number"&&K.height>0)return K.height}let V=Q(q,G+1);if(V>0)return V}}return 0},Y=Q(J);if(Y>0)return Y;if("size"in J){let X=J.size;if(typeof X?.height==="number"&&X.height>0)return X.height}return this.viewportHeight}}class p$6 extends T6{props;constructor(J){super();this.props=J}build(J){return new I8({child:new N0({height:1}),cursor:h9.NS_RESIZE,onDrag:(Q)=>{if(this.props.userHeight===void 0){let X=J.findRenderObject()?.size.height??0;if(X>0){this.props.onInitializeHeight(X);return}}this.props.onDrag(Q)},onRelease:this.props.onRelease})}}function dD8(J){let Q=0;for(let G=0;G<J.length;G++){let Z=J.charCodeAt(G);Q=(Q<<5)-Q+Z,Q=Q&Q}let Y=[9,10,11,12,13,14,15,208,209,210,211,212,213,214,215],X=Math.abs(Q)%Y.length;return M1.index(Y[X])}EC1();try{if(process.platform==="win32")await Promise.resolve().then(() => F6(mC(),1))}catch{}if(process.env.AMP_PWD)try{process.chdir(process.env.AMP_PWD),delete process.env.AMP_PWD}catch(J){gG.write(`Failed to change directory to ${process.env.AMP_PWD}: ${J}
|
|
5108
|
-
`)}var py1=my1.join(Oz0||my1.join(process.env.HOME||process.cwd(),".local","state"),"amp","last-thread-id");function zw8(J){process.emitWarning=function(Q,Y,X,G){let Z=typeof Q==="string"?Q:Q.message||String(Q),q=Y||"Warning",V=!1;J.warn(Z,{name:q,code:X})}}function Tq(J,Q){if(J.getOptionValueSourceWithGlobals("dangerouslyAllowAll")==="cli")DZ("dangerouslyAllowAll",Q.dangerouslyAllowAll);if(J.getOptionValueSourceWithGlobals("mode")==="cli")DZ("experimental.agentMode",Q.mode);if(J.getOptionValueSourceWithGlobals("useSonnet")==="cli")DZ("model.sonnet",Q.useSonnet)}async function cy1(J){try{await Kw8(my1.dirname(py1),{recursive:!0}),await Ww8(py1,J,"utf-8")}catch(Q){x.debug("Failed to save last thread ID",Q)}}async function Fw8(){try{return(await Uq6(py1,"utf-8")).trim()}catch(J){return null}}var Hq6=[{name:"notifications",long:"notifications",type:"flag",description:(J)=>`${J?"Enable":"Disable"} sound notifications (enabled by default when not in execute mode)`},{name:"color",long:"color",type:"flag",description:(J)=>`${J?"Enable":"Disable"} color output (enabled by default if stdout and stderr are sent to a TTY)`,deprecated:!0},{name:"settingsFile",long:"settings-file",type:"option",default:process.env.AMP_SETTINGS_FILE??PG,description:`Custom settings file path (overrides the default location ${PG})`},{name:"logLevel",long:"log-level",type:"option",description:`Set log level (${Object.keys(x).join(", ")})`},{name:"logFile",long:"log-file",type:"option",description:`Set log file location (overrides the default location ${CR1})`},{name:"format",long:"format",type:"option",description:"output using the standard or new-ui. Options: `ui`, `new-ui`",choices:["ui","jsonl","new-ui"],hidden:!0,deprecated:!0},{name:"dangerouslyAllowAll",long:"dangerously-allow-all",type:"switch",default:!1,description:"Disable all command confirmation prompts (agent will execute all commands without asking)"},{name:"jetbrains",long:"jetbrains",type:"flag",default:u7(),description:(J)=>J?"Enable JetBrains integration. When enabled, Amp automatically includes your open JetBrains file and text selection with every message.":"Disable JetBrains integration"},{name:"ide",long:"ide",type:"flag",default:!0,description:(J)=>J?"Enable IDE connection (default). When enabled, Amp automatically includes your open IDE's file and text selection with every message.":"Disable IDE connection"},{name:"interactive",long:"interactive",type:"flag",description:(J)=>J?"Enable interactive mode. This will enable the interactive UI.":"Disable interactive mode. This will disable the interactive UI.",hidden:!0,deprecated:!0},{name:"mcpConfig",long:"mcp-config",type:"option",description:"JSON configuration or file path for MCP servers to merge with existing settings"},{name:"useSonnet",long:"use-sonnet",type:"flag",description:(J)=>J?"Use Claude Sonnet 4.5 instead of Gemini 3":"Use default model (Gemini 3)"},{name:"mode",long:"mode",short:"m",type:"option",default:HR.SMART.key,description:`Set the agent mode (${BG().map((J)=>J.mode).join(", ")}) — controls the model, system prompt, and tool selection`,choices:BG().map((J)=>J.mode)}],zq6=(J)=>("deprecated"in J)&&J.deprecated===!0,Uw8=(J)=>("hidden"in J)&&J.hidden===!0,Bw8=(J)=>("default"in J),Nw8=(J)=>("default"in J)?J.default:void 0;function Dw8(J,Q){let Y=Q.args[0],X=Q.commands.map((Z)=>Z.name());if(Y&&!Y.includes(" ")&&Y.length<30&&!/[./\\]/.test(Y)){let Z=X.filter((V)=>Y.includes(V)||V.includes(Y)),q="Run amp --help for a list of available commands.";if(Z.length>0)q=`Did you mean: ${Z.join(", ")}? Or run amp --help for all commands.`;throw new A8(IG.unknownCommand(Y),1,q)}}var Bq6=null;function jH5(){return Bq6}function mg(J){return{...J,getThreadEnvironment:v61,vfs:xD0({os:J.fileSystem},J.configService.config),fileChangeTrackerStorage:new dh(J.fileSystem),generateThreadTitle:y16,deleteThread:(Q)=>J.threadService.delete(Q)}}var ly1=p0.file(Hw8.homedir()),Nq6=process.env.XDG_CONFIG_HOME?p0.file(process.env.XDG_CONFIG_HOME):t0.joinPath(ly1,".config");async function Rq(J,Q){tU0("0.0.
|
|
5108
|
+
`)}var py1=my1.join(Oz0||my1.join(process.env.HOME||process.cwd(),".local","state"),"amp","last-thread-id");function zw8(J){process.emitWarning=function(Q,Y,X,G){let Z=typeof Q==="string"?Q:Q.message||String(Q),q=Y||"Warning",V=!1;J.warn(Z,{name:q,code:X})}}function Tq(J,Q){if(J.getOptionValueSourceWithGlobals("dangerouslyAllowAll")==="cli")DZ("dangerouslyAllowAll",Q.dangerouslyAllowAll);if(J.getOptionValueSourceWithGlobals("mode")==="cli")DZ("experimental.agentMode",Q.mode);if(J.getOptionValueSourceWithGlobals("useSonnet")==="cli")DZ("model.sonnet",Q.useSonnet)}async function cy1(J){try{await Kw8(my1.dirname(py1),{recursive:!0}),await Ww8(py1,J,"utf-8")}catch(Q){x.debug("Failed to save last thread ID",Q)}}async function Fw8(){try{return(await Uq6(py1,"utf-8")).trim()}catch(J){return null}}var Hq6=[{name:"notifications",long:"notifications",type:"flag",description:(J)=>`${J?"Enable":"Disable"} sound notifications (enabled by default when not in execute mode)`},{name:"color",long:"color",type:"flag",description:(J)=>`${J?"Enable":"Disable"} color output (enabled by default if stdout and stderr are sent to a TTY)`,deprecated:!0},{name:"settingsFile",long:"settings-file",type:"option",default:process.env.AMP_SETTINGS_FILE??PG,description:`Custom settings file path (overrides the default location ${PG})`},{name:"logLevel",long:"log-level",type:"option",description:`Set log level (${Object.keys(x).join(", ")})`},{name:"logFile",long:"log-file",type:"option",description:`Set log file location (overrides the default location ${CR1})`},{name:"format",long:"format",type:"option",description:"output using the standard or new-ui. Options: `ui`, `new-ui`",choices:["ui","jsonl","new-ui"],hidden:!0,deprecated:!0},{name:"dangerouslyAllowAll",long:"dangerously-allow-all",type:"switch",default:!1,description:"Disable all command confirmation prompts (agent will execute all commands without asking)"},{name:"jetbrains",long:"jetbrains",type:"flag",default:u7(),description:(J)=>J?"Enable JetBrains integration. When enabled, Amp automatically includes your open JetBrains file and text selection with every message.":"Disable JetBrains integration"},{name:"ide",long:"ide",type:"flag",default:!0,description:(J)=>J?"Enable IDE connection (default). When enabled, Amp automatically includes your open IDE's file and text selection with every message.":"Disable IDE connection"},{name:"interactive",long:"interactive",type:"flag",description:(J)=>J?"Enable interactive mode. This will enable the interactive UI.":"Disable interactive mode. This will disable the interactive UI.",hidden:!0,deprecated:!0},{name:"mcpConfig",long:"mcp-config",type:"option",description:"JSON configuration or file path for MCP servers to merge with existing settings"},{name:"useSonnet",long:"use-sonnet",type:"flag",description:(J)=>J?"Use Claude Sonnet 4.5 instead of Gemini 3":"Use default model (Gemini 3)"},{name:"mode",long:"mode",short:"m",type:"option",default:HR.SMART.key,description:`Set the agent mode (${BG().map((J)=>J.mode).join(", ")}) — controls the model, system prompt, and tool selection`,choices:BG().map((J)=>J.mode)}],zq6=(J)=>("deprecated"in J)&&J.deprecated===!0,Uw8=(J)=>("hidden"in J)&&J.hidden===!0,Bw8=(J)=>("default"in J),Nw8=(J)=>("default"in J)?J.default:void 0;function Dw8(J,Q){let Y=Q.args[0],X=Q.commands.map((Z)=>Z.name());if(Y&&!Y.includes(" ")&&Y.length<30&&!/[./\\]/.test(Y)){let Z=X.filter((V)=>Y.includes(V)||V.includes(Y)),q="Run amp --help for a list of available commands.";if(Z.length>0)q=`Did you mean: ${Z.join(", ")}? Or run amp --help for all commands.`;throw new A8(IG.unknownCommand(Y),1,q)}}var Bq6=null;function jH5(){return Bq6}function mg(J){return{...J,getThreadEnvironment:v61,vfs:xD0({os:J.fileSystem},J.configService.config),fileChangeTrackerStorage:new dh(J.fileSystem),generateThreadTitle:y16,deleteThread:(Q)=>J.threadService.delete(Q)}}var ly1=p0.file(Hw8.homedir()),Nq6=process.env.XDG_CONFIG_HOME?p0.file(process.env.XDG_CONFIG_HOME):t0.joinPath(ly1,".config");async function Rq(J,Q){tU0("0.0.1763784077-g7729e7");let Y=rE1({storage:J.settings,secretStorage:J.secrets,workspaceRoots:J0.of([p0.file(process.cwd())]),defaultAmpURL:J.ampURL,homeDir:ly1,userConfigDir:Nq6}),{initializeCLITelemetry:X}=await Promise.resolve().then(() => (K91(),V91));X(Y);let G=await Y.getLatest();x.debug("Global configuration initialized",{settingsKeys:Object.keys(G.settings)});let Z=new qL({configService:Y}),q=new Map,V=()=>q.clear(),K=new EP1(Y,J.settings.getWorkspaceRootPath()),W=W16({configService:Y,trustStore:K,createOAuthProvider:async(t)=>{let r=q.get(t);if(r)return x.debug("Reusing existing OAuth provider for server",{serverName:t}),r;x.debug("Creating OAuth provider for server",{serverName:t});let m=(async()=>{let s=new IL(J.secrets),q1=await s.getClientInfo(t),H1=new qP1({storage:s,serverName:t,clientId:q1?.clientId,clientSecret:q1?.clientSecret,scopes:q1?.scopes});return x.debug("OAuth provider created",{serverName:t,hasManualClientId:!!q1?.clientId,willUseDCR:!q1?.clientId}),H1})();return q.set(t,m),m}}),H=a11({configService:Y,filesystem:H5,spawn:ML}),{initializeToolProviders:z}=await Promise.resolve().then(() => (Wq6(),Kq6)),{registrations:U,initErrors:B}=await z({toolServices:Z,providers:[W,H],initialTimeout:J.executeMode?15000:5000});for(let[t,r]of B)x.warn(`${t} provider initialization slow or failed:`,r);if(Q.jetbrains)oE("JetBrains");else if(Q.ide&&p56())oE("VS Code");else if(Q.ide&&d56())oE("Neovim");if(J.executeMode)eU0(!0);let O,M=F7.status.pipe(o0((t)=>Boolean(t.connected&&t.authenticated)),P4()).subscribe((t)=>{if(t){if(!O)O=Z.registerTool(OT)}else O?.dispose(),O=void 0}),L;if(!J.executeMode)L=new l61(process.cwd(),{},!0);else L=new class extends l61{async start(){}async query(){return[]}getStats(){return{state:"unstarted",stats:[]}}dispose(){}};if(!await J.secrets.get("apiKey",J.ampURL)){if(d5.write(`No API key found. Starting login flow...
|
|
5109
5109
|
`),!await Ow8(J))await bL(),process.exit(1)}let E=await P16({isDevelopment:!1}),I=new SP1(E,Y),P=new TP1(E,{lazy:!0}),R=new IP1(I,(t,r)=>{let m=q3.get(t);if(m)m.handle(r).catch((s)=>{x.error("Failed to apply artifact delta",s)})}),j=Q.notifications!==void 0?Q.notifications:!J.executeMode,y=g16({playNotificationSound:async(t)=>{if(j){u16(t);let r=AC1(),m=wC1();if((!r||m)&&G.settings["notifications.system.enabled"]!==!1){if(t==="idle")process.stdout.write("\x1B]777;notify;Amp;Agent is ready\x1B\\");else if(t==="requires-user-input")process.stdout.write("\x1B]777;notify;Amp;Waiting for approval\x1B\\")}}},windowFocused:()=>Promise.resolve(!1),threadService:I,configService:Y});x.info("Starting Amp background services");let h=x16({threadService:I,threadHistoryService:P,configService:Y,isExtensionDevelopment:!1}),g;F7.status.subscribe((t)=>{g=t});let p=new sX1({workspaceRoots:[p0.file(process.cwd())],getCurrentFile:()=>{if(!g?.openFile)return;try{return p0.parse(g.openFile)}catch(t){x.warn("Failed to parse current file URI",{uri:g.openFile,error:t});return}},getOpenFiles:()=>{if(!g?.visibleFiles?.length)return[];let t=g.openFile;return g.visibleFiles.filter((r)=>r!==t).map((r)=>{try{return p0.parse(r)}catch(m){return x.warn("Failed to parse visible file URI",{uri:r,error:m}),null}}).filter((r)=>r!==null)}}),b=new PC1,i={codebaseContextService:p,configService:Y,toolServices:Z,mcpService:W,trustStore:K,threadService:I,threadHistoryService:P,threadSyncService:h,planFileManager:R,threadStorage:E,secretStorage:J.secrets,settingsStorage:J.settings,fuzzyServer:L,notificationService:y,fileSystem:Q.jetbrains||Q.ide?M16:H5,terminal:b};return{...i,async asyncDispose(){for(let t of U.values())t.dispose();await i.mcpService.dispose(),V(),await i.threadService.asyncDispose(),i.configService.unsubscribe(),i.toolServices.dispose(),i.fuzzyServer.dispose(),i.threadSyncService.dispose(),i.settingsStorage[Symbol.dispose](),M.unsubscribe(),O?.dispose()}}}async function Ow8(J){if(!J.executeMode){if(!await eR1("Would you like to log in to Amp? [(y)es, (n)o]: "))return d5.write(`Login cancelled. Run the command again to retry.
|
|
5110
5110
|
`),!1}return await Dq6(J)}async function Dq6(J){let Q=Vw8(32).toString("hex"),Y=await tR1(J.ampURL,Q),X=new AbortController;try{await pJ(Y,X.signal)}catch(Z){x.error("Error opening browser",{error:Z})}let G=await tR1(J.ampURL,Q,!1);d5.write(`If your browser does not open automatically, visit:
|
|
5111
5111
|
|
|
@@ -5115,15 +5115,15 @@ ${S4.blue.bold(G)}
|
|
|
5115
5115
|
Login successful! You can now use the Amp CLI.
|
|
5116
5116
|
`),!0}catch(Z){return x.error("Login failed",{error:Z}),gG.write(`
|
|
5117
5117
|
Login failed: ${Z instanceof Error?Z.message:String(Z)}
|
|
5118
|
-
`),!1}}function Mw8(){let J=new TL().name("amp").description("AI-powered coding assistant").option("--visibility <visibility>","Set thread visibility (private, public, workspace, group)").configureOutput({writeErr:()=>{}});J.exitOverride((H)=>{if(H.code==="commander.help"||H.code==="commander.version"||H.exitCode===0)dR(),process.exit(0);let z=H.originalError??H;f96(z)}),J.option("-V, --version","Print the version number and exit",()=>{d5.write(`0.0.
|
|
5118
|
+
`),!1}}function Mw8(){let J=new TL().name("amp").description("AI-powered coding assistant").option("--visibility <visibility>","Set thread visibility (private, public, workspace, group)").configureOutput({writeErr:()=>{}});J.exitOverride((H)=>{if(H.code==="commander.help"||H.code==="commander.version"||H.exitCode===0)dR(),process.exit(0);let z=H.originalError??H;f96(z)}),J.option("-V, --version","Print the version number and exit",()=>{d5.write(`0.0.1763784077-g7729e7 (released 2025-11-22T04:06:32.424Z)
|
|
5119
5119
|
`),process.exit(0)}),J.addHelpText("after",u56()),J.configureHelp({formatHelp:g56}),J.command("logout").description("Log out by removing stored API key").action(async(H,z)=>{let U=z.optsWithGlobals(),B=await aQ(U);await Ew8(B)}),J.command("login").description("Log in to Amp").addHelpText("after","If AMP_URL is set during login, it will be persisted to global settings for future CLI invocations, though AMP_URL will continue to take precedence.").action(async(H,z)=>{let U=z.optsWithGlobals(),B=await aQ(U);await ww8(B,await mR1(U,B.settings))});let Q=async(H,z,U)=>{rE1({storage:z.settings,secretStorage:z.secrets,workspaceRoots:J0.of([p0.file(process.cwd())]),defaultAmpURL:z.ampURL,homeDir:ly1,userConfigDir:Nq6});let B={...z,executeMode:!1};await dy1(B,{...H,openThreadSwitcher:!0},U)},Y=J.command("threads").alias("t").alias("thread").summary("Manage threads").description("Thread management commands. When no subcommand is provided, defaults to listing threads.").action(async(H,z)=>{let U=z.optsWithGlobals(),B=await aQ(U);await Fq6(U,B,z)});Y.command("new").alias("n").summary("Create a new thread").description("Create a new thread and print its ID. The thread will be empty. You can set the visibility using the --visibility option.").option("--visibility <visibility>","Set thread visibility (private, public, workspace, group)").action(async(H,z)=>{let U=z.optsWithGlobals(),B=await aQ(U);await jw8(U,B,z)}),Y.command("continue [threadId]").alias("c").summary("Continue an existing thread").description("Continue an existing thread by resuming the conversation. By default, shows an interactive picker with the most recently used thread at the top. Use --last to continue the last thread directly without the picker.").option("--last","Continue the last thread directly without showing the picker").option("--pick","Pick a thread interactively from a list (DEPRECATED: picker is now the default)").action(async(H,z,U)=>{let B=U.optsWithGlobals(),O=await aQ(B);if(z.pick)gG.write(`${S4.yellow("Warning:")} The --pick flag is deprecated. The picker is now shown by default.
|
|
5120
5120
|
`);if(z.last||H||O.executeMode)await Sw8(B,O,H,U);else await Q(B,O,U)}),Y.command("fork [threadId]").alias("f").summary("Fork an existing thread").description("Create a new thread by forking an existing one. This copies the conversation history up to the current point and creates a new thread where you can explore different directions. If no thread ID is provided, the most recently used thread will be forked.").action(async(H,z,U)=>{let B=U.optsWithGlobals(),O=await aQ(B);await Cw8(B,O,H,U)}),Y.command("list").alias("l").alias("ls").summary("List all threads").description("List all your threads with their IDs, names, and last modified times.").action(async(H,z)=>{let U=z.optsWithGlobals(),B=await aQ(U);await Fq6(U,B,z)}),Y.command("share <threadId>").summary("Share a thread").description("Change thread visibility (private, public, unlisted, workspace, group) or share with Amp support for debugging. Use --visibility to change who can access the thread, or --support to share with the Amp team for troubleshooting.").alias("s").option("--visibility <visibility>","Set thread visibility (private, public, unlisted, workspace, group)").option("--support [message]","Share thread with Amp support for debugging").action(async(H,z,U)=>{let B=U.optsWithGlobals(),O=await aQ(B);await Rw8(B,O,H,U,z.support)}),Y.command("rename <threadId> <newName>").alias("r").summary("Rename a thread").description('Change the title of a thread. Quote names with spaces: amp threads rename T-123 "New thread name"').action(async(H,z,U,B)=>{let O=B.optsWithGlobals(),M=await aQ(O);await Iw8(O,M,H,z,B)}),Y.command("markdown <threadId>").alias("md").summary("Render thread as markdown").description("Render a thread as markdown. This outputs the entire conversation history in a readable markdown format.").action(async(H,z,U)=>{let B=U.optsWithGlobals(),O=await aQ(B);await Pw8(B,O,H,U)}),Y.command("replay <threadId>").alias("p").summary("Replay a thread").description("Replay a thread by downloading it and playing through all interactions. User messages are simulated with variable typing speed.").option("--wpm <wpm>","Typing speed in words per minute (default: 120)","120").option("--no-typing","Disable typing simulation and display messages instantly").option("--message-delay <ms>","Delay between messages in milliseconds (default: 1000)","1000").option("--tool-progress-delay <ms>","Delay to show tool in-progress state in milliseconds (default: 800)","800").option("--exit-delay <seconds>","Delay in seconds before exiting after replay completes (default: 3)","3").option("--no-indicator","Hide the replay progress indicator").action(async(H,z,U)=>{let B=U.optsWithGlobals(),O=await aQ(B);await Tw8(B,O,H,z,U)}),x76(J,async(H,z)=>{let U=await aQ(z);Tq(H,z);let B=await Rq(U,z);return{context:U,mcpService:B.mcpService,toolService:B.toolServices,toolServices:B.toolServices,configService:B.configService,cleanupTerminal:dR,asyncDispose:B.asyncDispose.bind(B)}}),E26(J,async(H)=>{let z=H.optsWithGlobals();return await aQ(z)}),F26(J,async(H)=>{let z=await aQ(H);return{settings:z.settings,secretStorage:z.secrets,getThreadDeps:async(U)=>{Tq(U,H);let B=await Rq(z,H);return{mcpService:B.mcpService,settings:z.settings,asyncDispose:B.asyncDispose.bind(B)}}}});function G(H,z,U){let O=typeof H.description==="string"?H.description:U===void 0?H.description(!0):H.description(U),M=new _B(z,O),L=Nw8(H);if(L)M.default(L);if(M.hidden=Uw8(H)||zq6(H),"choices"in H)M.choices([...H.choices]);return M}for(let H of Hq6)switch(H.type){case"flag":{J.addOption(G(H,`--${H.long}`)),J.addOption(G(H,`--no-${H.long}`,!1));break}case"switch":{J.addOption(G(H,`--${H.long}`,!0));break}default:{J.addOption(G(H,`${"short"in H?`-${H.short}, `:""}--${H.long} <value>`));break}}let Z=new _B("-x, --execute [message]","Use execute mode, optionally with user message. In execute mode, agent will execute provided prompt (either as argument, or via stdin). Only last assistant message is printed. Enabled automatically when redirecting stdout.").default(!1);J.addOption(Z);let q=new _B("-r, --remote","When used with -x/--execute, execute in an async agent on the Amp server.").default(!1).hideHelp();J.addOption(q);let V=new _B("--stream-json","When used with --execute, output in Claude Code-compatible stream JSON format instead of plain text.").default(!1);J.addOption(V);let K=new _B("--stream-json-input","Read JSON Lines user messages from stdin. Requires both --execute and --stream-json.").default(!1);J.addOption(K);let W=new _B("--stats","When used with --execute, output JSON with both result and token usage data (for /evals).").default(!1).hideHelp(!0);if(J.addOption(W),process.env.AMP_CONNECT==="1"){let H=new _B("--client-id <clientId>","Override the client ID for connect functionality (default: amp-<pid>@<hostname>)");J.addOption(H)}return J.action(async(H,z)=>{let U=H,B=await aQ(U);if(Object.keys(U).forEach((O)=>{let M=Hq6.find((L)=>L.name===O);if(M&&zq6(M)&&!Bw8(M))gG.write(S4.yellow(`Warning: '--${O}' flag is deprecated
|
|
5121
5121
|
`))}),z.args.length>0)Dw8(B,z);await dy1(B,U,z)}),G26(J),J}async function s91(J,Q){let{thread:Y,visibility:X}=Q,G=Y?.id??EZ(),Z=mg(J);if(Y)await J.threadStorage.set(G,Y);let q=await q3.getOrCreateForThread(Z,G),V=await J.threadStorage.get(G);if(Q.agentMode&&!V?.agentMode&&PZ(q.thread)===0)await q.handle({type:"agent-mode",mode:Q.agentMode});if(X)await J.threadSyncService.updateThreadMeta(G,$41(X));let K=J.threadService.observe(G).subscribe(async(W)=>{if(e3(W,"assistant"))await cy1(G),K.unsubscribe()});return await q.resume(),q}async function dy1(J,Q,Y){let X=Y41(Q);if(X instanceof Error)uG(X.message);let G,Z=null;if(Q.streamJsonInput)G="";else if(typeof Q.execute==="string"){G=Q.execute;let i=(await JC1()).trimEnd();if(i)Z=i}else G=(await JC1()).trimEnd();if(Q.remote&&!J.executeMode)throw new A8("The -r/--remote flag currently only works with --execute mode",1,'Use: amp --remote --execute "your message"');if(Q.streamJson&&!J.executeMode)throw new A8("The --stream-json flag requires --execute mode",1,'Use: amp --execute "your message" --stream-json');if(Q.streamJsonInput&&!J.executeMode)throw new A8("The --stream-json-input flag requires --execute mode",1,"Use: amp --execute --stream-json --stream-json-input");if(Q.streamJsonInput&&!Q.streamJson)throw new A8("The --stream-json-input flag requires --stream-json",1,"Use: amp --execute --stream-json --stream-json-input");if((J.executeMode||Q.streamJson)&&W5(Q.mode))throw new A8(`Execute mode is not permitted with --mode '${Q.mode}'`,1);if(Q.stats&&!J.executeMode)throw new A8("The --stats flag requires --execute mode",1,'Use: amp --execute "your message" --stats');if(Q.streamJsonInput&&typeof Q.execute==="string"&&Q.execute.trim()!=="")throw new A8("Do not provide a message argument when using --stream-json-input",1,`Supply messages via stdin JSONL instead: echo '{"type":"user","message":{"role":"user","content":[{"type":"text","text":"your message"}]}}' | amp --execute --stream-json --stream-json-input`);if(J.executeMode&&G===""&&!Q.streamJsonInput)throw new A8("User message must be provided through stdin or as argument when using execute mode",1,`Either pass a message as an argument: amp --execute "your message"
|
|
5122
5122
|
Or pipe via stdin: echo "your message" | amp --execute`);Tq(Y,Q);let q=await Rq(J,Q);Bq6=q;let V=mg(q),K=async(i)=>{let t=await Uq6(i,"utf-8"),r=JSON.parse(t);if(!IZ(r.id))throw new A8(IG.invalidThreadId);return s91(q,{visibility:X,agentMode:Q.mode,thread:r})},W=async(i)=>{if(!IZ(i))throw new A8(IG.invalidThreadId);try{let[r,m]=await Promise.all([M5.getThreadLinkInfo({thread:i},{config:q.configService}),M5.getUserInfo({},{config:q.configService})]);if(r.ok&&m.ok){let s=r.result.creatorUserID,q1=m.result.id;if(s&&s!==q1&&!process.env.AMP_RESUME_OTHER_USER_THREADS_INSECURE)throw new A8(`Cannot resume thread created by another user.
|
|
5123
5123
|
|
|
5124
5124
|
This thread belongs to a different user and cannot be continued for security reasons. Set AMP_RESUME_OTHER_USER_THREADS_INSECURE=1 to bypass this check.`)}}catch(r){if(r instanceof A8)throw r;x.warn("Failed to validate thread ownership in CLI, allowing to open",{error:r})}let t=await q.threadService.get(i)??void 0;return x.info(`[fetchAndStartThread] Loaded thread ${i}, agentMode: ${t?.agentMode??"undefined"}`),s91(q,{visibility:X,agentMode:t?void 0:Q.mode,thread:t})},H=async()=>{try{if(Q.threadId)return W(Q.threadId);else return s91(q,{visibility:X})}catch(i){if(i instanceof A8)throw i;throw await Fu(i,Q.threadId),Error("handleError should have called process.exit()")}},z=async()=>{return s91(q,{visibility:X})};if(Q.format==="jsonl")gG.write(`jsonl format is deprecated. Version "0.0.1752148945-gd8844f" or earlier is required to use jsonl format.
|
|
5125
|
-
`),await bL(),process.exit(1);if(J.executeMode&&Q.remote)await I26(G,Z,q.configService),await q.asyncDispose(),process.exit(0);let U=await H();if(J.executeMode)N26(q.mcpService,J.settings),await s96(U,U.threadID,G,Z,q,!!Q.streamJson,!!Q.streamJsonInput,!!Q.stats,J.ampURL),await q.asyncDispose(),process.exit(0);let B=!1,O=!1;if(Q.jetbrains||Q.ide){await Xh0();let i=DT({jetbrainsOnly:Q.jetbrains});if(i.length===0){if(Q.jetbrains)O=!await q.configService.get("jetbrains.skipInstall")}else if(i.length===1){let t=i[0];if(t)F7.selectConfig(t)}else B=!0}let M=J41("0.0.
|
|
5126
|
-
`);let Q=!!J.execute||!process.stdout.isTTY&&!J.streamJson,Y=process.stdout.isTTY&&process.stderr.isTTY,X=await E56({...J,workspaceTrust:{current:!0,changes:g_},getHook:process.env.AMP_URL?(Z,q)=>{if(Z==="url")return Promise.resolve(process.env.AMP_URL);return q()}:void 0});if(J.mcpConfig){let Z=await U26(J.mcpConfig);X=B26(X,Z)}let G=await X.get("url","global");if(!G)G=VY;if(!IF(G))x.info("Targeting custom Amp server",{ampURL:G});return X=OF0(X),{executeMode:Q,isTTY:Y,ampURL:G,settings:X,secrets:P26(await mR1(J,X))}}function Lw8(J){let Q={};for(let Y=0;Y<J.length;Y++){let X=J[Y];if(X?.startsWith("--")){let Z=X.slice(2).replace(/-([a-z])/g,(V,K)=>K.toUpperCase()),q=J[Y+1];if(q&&!q.startsWith("--"))Q[Z]=q,Y++}}return Q}async function Aw8(){let J=Lw8(process.argv);if(R96({logLevel:J.logLevel||process.env.AMP_LOG_LEVEL,logFile:J.logFile||process.env.AMP_LOG_FILE}),zw8(x),x.info("Starting Amp CLI.",{version:"0.0.
|
|
5125
|
+
`),await bL(),process.exit(1);if(J.executeMode&&Q.remote)await I26(G,Z,q.configService),await q.asyncDispose(),process.exit(0);let U=await H();if(J.executeMode)N26(q.mcpService,J.settings),await s96(U,U.threadID,G,Z,q,!!Q.streamJson,!!Q.streamJsonInput,!!Q.stats,J.ampURL),await q.asyncDispose(),process.exit(0);let B=!1,O=!1;if(Q.jetbrains||Q.ide){await Xh0();let i=DT({jetbrainsOnly:Q.jetbrains});if(i.length===0){if(Q.jetbrains)O=!await q.configService.get("jetbrains.skipInstall")}else if(i.length===1){let t=i[0];if(t)F7.selectConfig(t)}else B=!0}let M=J41("0.0.1763784077-g7729e7",q.settingsStorage),L=new Q61(q.threadStorage),E=J0.of([p0.file(process.cwd())]),I=KG1(void 0,E),P=new Q41(q.mcpService,J.settings.getWorkspaceRootPath());if(G)U.handle({type:"user:message",message:{content:[{type:"text",text:G}]}});let R=(async()=>{try{let i=await M5.getUserFreeTierStatus({},{config:q.configService,signal:AbortSignal.timeout(5000)});if(i.ok)return x.info("User free tier status:",i),i.result}catch(i){x.error("Failed to fetch free tier status:",i)}})(),j=(async()=>{try{let i=await M5.getUserInfo({},{config:q.configService});if(i.ok)return i.result}catch(i){x.debug("Failed to fetch user workspace info:",i)}})(),[y,h]=await Promise.all([R,j]),g=h?.email,p=g&&(g.endsWith("@sourcegraph.com")||g.endsWith("@ampcode.com")||g==="auth-bypass-user@example.com");if(p)q.toolServices.registerTool(b16);let b=await C26();x.info("Loaded session state:",b),await Fk1({codebaseContextService:q.codebaseContextService,stdout:process.stdout,history:new b61,fuzzyServer:q.fuzzyServer,settingsStorage:q.settingsStorage,threadService:q.threadService,threadHistoryService:q.threadHistoryService,threadSyncService:q.threadSyncService,planFileManager:q.planFileManager,threadID:U.threadID,threadFuzzyIndexer:L,worker:U,workerDeps:V,configService:q.configService,internalAPIClient:M5,ampURL:J.ampURL,startNewThread:z,switchToThread:W,ideClient:F7,connectedClientsService:new J01,commandRegistry:I,mcpService:q.mcpService,mcpTrustHandler:P,showJetBrainsInstaller:O,showIdePicker:B,openThreadSwitcher:Q.openThreadSwitcher,updateService:M,inspector:Q.inspector,inspectorPort:Q.inspectorPort,jetbrainsMode:Q.jetbrains,clientId:Q.clientId,sessionState:b,freeTierStatus:y,workspace:h?.team??null,features:h?.features??[],isDogfooding:p||!1,threadDependencies:q}),await q.asyncDispose(),process.exit(0)}async function aQ(J){if(J.interactive)gG.write(`Warning: --interactive flag is deprecated. Interactive mode is now the default unless --execute is used or output is redirected.
|
|
5126
|
+
`);let Q=!!J.execute||!process.stdout.isTTY&&!J.streamJson,Y=process.stdout.isTTY&&process.stderr.isTTY,X=await E56({...J,workspaceTrust:{current:!0,changes:g_},getHook:process.env.AMP_URL?(Z,q)=>{if(Z==="url")return Promise.resolve(process.env.AMP_URL);return q()}:void 0});if(J.mcpConfig){let Z=await U26(J.mcpConfig);X=B26(X,Z)}let G=await X.get("url","global");if(!G)G=VY;if(!IF(G))x.info("Targeting custom Amp server",{ampURL:G});return X=OF0(X),{executeMode:Q,isTTY:Y,ampURL:G,settings:X,secrets:P26(await mR1(J,X))}}function Lw8(J){let Q={};for(let Y=0;Y<J.length;Y++){let X=J[Y];if(X?.startsWith("--")){let Z=X.slice(2).replace(/-([a-z])/g,(V,K)=>K.toUpperCase()),q=J[Y+1];if(q&&!q.startsWith("--"))Q[Z]=q,Y++}}return Q}async function Aw8(){let J=Lw8(process.argv);if(R96({logLevel:J.logLevel||process.env.AMP_LOG_LEVEL,logFile:J.logFile||process.env.AMP_LOG_FILE}),zw8(x),x.info("Starting Amp CLI.",{version:"0.0.1763784077-g7729e7",buildTimestamp:"2025-11-22T04:06:32.424Z"}),parseInt(process.version.slice(1).split(".")[0]??"")<20)throw new A8(IG.nodeVersion(process.version),1,"Please upgrade your Node.js installation from https://nodejs.org");await Mw8().parseAsync(process.argv)}Ew1().startActiveSpan("main",async(J)=>{process.on("exit",()=>J.end()),await Aw8().catch(Fu)});async function ww8(J,Q){if(process.env.AMP_URL)await J.settings.set("url",process.env.AMP_URL,"global"),d5.write(`Saving custom server URL to settings: ${process.env.AMP_URL}
|
|
5127
5127
|
`);else if(!IF(J.ampURL))d5.write(`Logging in to ${new URL(J.ampURL).hostname}
|
|
5128
5128
|
`);let Y=process.env.AMP_API_KEY;if(Y)d5.write(`API key found in environment variable, storing...
|
|
5129
5129
|
`),await Q.set("apiKey",Y,J.ampURL),d5.write(`API key successfully stored.
|
|
@@ -5136,7 +5136,7 @@ This thread belongs to a different user and cannot be continued for security rea
|
|
|
5136
5136
|
`);else d5.write(`Successfully logged out from ${new URL(J.ampURL).hostname}.
|
|
5137
5137
|
`);process.exit(0)}async function Iw8(J,Q,Y,X,G){Tq(G,J);let Z=await Rq(Q,J);try{let q=t91(Y);if(!q)e91(Y);let V=q,K=X.trim();if(K.length===0)uG("Thread name cannot be empty");if(K.length>256)uG("Thread name cannot exceed 256 characters");if(!(await pC(V,Z)).messages.length)uG("Cannot rename an empty thread.");let H=mg(Z);await(await q3.getOrCreateForThread(H,V)).handle({type:"title",value:K}),x.info("GOT HERE"),await Z.threadSyncService.sync(),x.info("GOT THERE"),d5.write(S4.green(`✓ Thread ${V} renamed to "${K}"
|
|
5138
5138
|
`)),await Z.asyncDispose(),process.exit(0)}catch(q){await Z.asyncDispose();let V=`Failed to rename thread: ${q instanceof Error?q.message:String(q)}`;uG(V)}}async function Pw8(J,Q,Y,X){Tq(X,J);let G=await Rq(Q,J);try{let Z=t91(Y);if(!Z)e91(Y);let V=await pC(Z,G),K=pT(V);d5.write(K+`
|
|
5139
|
-
`),await G.asyncDispose(),process.exit(0)}catch(Z){await G.asyncDispose();let q=`Failed to render thread as markdown: ${Z instanceof Error?Z.message:String(Z)}`;uG(q)}}async function Tw8(J,Q,Y,X,G){Tq(G,J);let Z=await Rq(Q,J);try{let q=await iy1(Y),V=await pC(q,Z),K=X.typing!==!1,W=parseInt(X.wpm||"120",10),H=parseInt(X.messageDelay||"1000",10),z=parseInt(X.toolProgressDelay||"800",10),U=parseInt(X.exitDelay||"3",10)*1000,B=X.indicator!==!1,O=mg(Z),M=V.id;await Z.threadStorage.set(M,V);let L=await q3.getOrCreateForThread(O,M);await L.resume();let E=J61.fromWorker(L),I=new Q61(Z.threadStorage),P=J0.of([p0.file(process.cwd())]),R=KG1(void 0,P),j=new Q41(Z.mcpService,Q.settings.getWorkspaceRootPath()),y=J41("0.0.
|
|
5139
|
+
`),await G.asyncDispose(),process.exit(0)}catch(Z){await G.asyncDispose();let q=`Failed to render thread as markdown: ${Z instanceof Error?Z.message:String(Z)}`;uG(q)}}async function Tw8(J,Q,Y,X,G){Tq(G,J);let Z=await Rq(Q,J);try{let q=await iy1(Y),V=await pC(q,Z),K=X.typing!==!1,W=parseInt(X.wpm||"120",10),H=parseInt(X.messageDelay||"1000",10),z=parseInt(X.toolProgressDelay||"800",10),U=parseInt(X.exitDelay||"3",10)*1000,B=X.indicator!==!1,O=mg(Z),M=V.id;await Z.threadStorage.set(M,V);let L=await q3.getOrCreateForThread(O,M);await L.resume();let E=J61.fromWorker(L),I=new Q61(Z.threadStorage),P=J0.of([p0.file(process.cwd())]),R=KG1(void 0,P),j=new Q41(Z.mcpService,Q.settings.getWorkspaceRootPath()),y=J41("0.0.1763784077-g7729e7",Z.settingsStorage);await Fk1({codebaseContextService:Z.codebaseContextService,stdout:process.stdout,history:new b61,fuzzyServer:Z.fuzzyServer,settingsStorage:Z.settingsStorage,threadService:Z.threadService,threadHistoryService:Z.threadHistoryService,threadSyncService:Z.threadSyncService,planFileManager:Z.planFileManager,threadID:M,threadFuzzyIndexer:I,worker:E,workerDeps:O,configService:Z.configService,internalAPIClient:M5,ampURL:Q.ampURL,startNewThread:async()=>E,switchToThread:async()=>E,ideClient:F7,connectedClientsService:new J01,commandRegistry:R,mcpService:Z.mcpService,mcpTrustHandler:j,showJetBrainsInstaller:!1,updateService:y,isDogfooding:!1,replayMode:{thread:V,typingEnabled:K,baseWpm:W,messageDelayMs:H,toolProgressDelayMs:z,exitDelayMs:U,showIndicator:B}}),await Z.asyncDispose(),process.exit(0)}catch(q){await Z.asyncDispose(),await Fu(q,Y)}}async function Rw8(J,Q,Y,X,G){Tq(X,J);let Z=await Rq(Q,J);try{let q=t91(Y);if(!q)e91(Y);let V=q,K=await M5.getUserInfo({},{config:Z.configService}),W=K.ok?K.result:null,H=Y41(J,W);if(!H&&!G)uG("Must specify either --visibility or --support");if(H&&G)uG("Cannot specify both --visibility and --support at the same time");if(H instanceof Error)uG(H.message);if(H)await Z.threadSyncService.updateThreadMeta(V,$41(H)),d5.write(S4.green("✓ ")+`Thread ${V} visibility changed to ${H}.
|
|
5140
5140
|
`);if(G){await pC(V,Z);let z=typeof G==="string"?G:void 0;await Gv0(Z.threadService,V,Z.configService,z),d5.write(S4.green("✓ ")+`Thread ${V} has been shared with Amp support. These thread reports will be aggregated and analysed.
|
|
5141
5141
|
`)}await Z.asyncDispose(),process.exit(0)}catch(q){await Z.asyncDispose(),uG(`Failed to update thread: ${q instanceof Error?q.message:String(q)}`)}}async function Cw8(J,Q,Y,X){Tq(X,J);let G=await Rq(Q,J),Z=mg(G);try{let q=await iy1(Y),K=(await pC(q,G)).messages.length-1,W=await q3.getOrCreateForThread(Z,q),H=await SR(W,G.threadSyncService,K);await Promise.all([G.threadSyncService.uploadThread(q),G.threadSyncService.uploadThread(H)]),await cy1(H),d5.write(`${H}
|
|
5142
5142
|
`),await G.asyncDispose(),process.exit(0)}catch(q){gG.write(`Error forking thread: ${q instanceof Error?q.message:String(q)}
|