@github/copilot-language-server 1.418.0 → 1.420.0

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 CHANGED
@@ -1493,7 +1493,7 @@ ${r}+- `:"";return e+this.description+o}}},S0=class{constructor(e,r,n,o){this.la
1493
1493
  (using_declaration)
1494
1494
  (alias_declaration)
1495
1495
  (static_assert_declaration)
1496
- ] @statement`}};var iw=class{constructor(e,r,n){this.languageId=e;this.prefix=r;this.completion=n}static{a(this,"BlockTrimmer")}static isSupported(e){return S0.isSupported(e)}static isTrimmedByDefault(e){return S0.isTrimmedByDefault(e)}async withParsedStatementTree(e){var n=[];try{let r=Net(n,S0.create(this.languageId,this.prefix+this.completion,this.prefix.length,this.prefix.length+this.completion.length));await r.build();return await e(r)}catch(o){var s=o,c=!0}finally{Oet(n,s,c)}}trimmedCompletion(e){return e===void 0?this.completion:this.completion.substring(0,e)}getStatementAtCursor(e){return e.statementAt(Math.max(this.prefix.length-1,0))??e.statements[0]}getContainingBlockOffset(e){let r;if(e&&this.isCompoundStatement(e))r=e;else if(e){let n=e.parent;for(;n&&!this.isCompoundStatement(n);)n=n.parent;r=n}if(r){let n=this.asCompletionOffset(r.node.endIndex);if(n&&this.completion.substring(n).trim()!=="")return n}}hasNonStatementContentAfter(e){if(!e||!e.nextSibling)return!1;let r=this.asCompletionOffset(e.node.endIndex),n=this.asCompletionOffset(e.nextSibling.node.startIndex);return this.completion.substring(Math.max(0,r??0),Math.max(0,n??0)).trim()!==""}asCompletionOffset(e){return e===void 0?void 0:e-this.prefix.length}isCompoundStatement(e){return e.isCompoundStatementType||e.children.length>0}};var lPe=class extends iw{constructor(r,n,o,s=3,c=7){super(r,n,o);this.lineLimit=s;this.lookAhead=c;let l=[...this.completion.matchAll(/\n/g)],u=this.lineLimit+this.lookAhead;l.length>=this.lineLimit&&this.lineLimit>0&&(this.limitOffset=l[this.lineLimit-1].index),l.length>=u&&u>0&&(this.lookAheadOffset=l[u-1].index)}static{a(this,"TerseBlockTrimmer")}async getCompletionTrimOffset(){return await this.withParsedStatementTree(r=>{let n=r.statementAt(this.stmtStartPos()),o=this.getContainingBlockOffset(n);return o=this.trimAtFirstBlankLine(o),n&&(o=this.trimAtStatementChange(n,o)),this.limitOffset&&this.lookAheadOffset&&(o===void 0||o>this.lookAheadOffset)?this.limitOffset:o})}stmtStartPos(){let r=this.completion.match(/\S/);return r&&r.index!==void 0?this.prefix.length+r.index:Math.max(this.prefix.length-1,0)}trimAtFirstBlankLine(r){let n=[...this.trimmedCompletion(r).matchAll(/\r?\n\s*\r?\n/g)];for(;n.length>0&&(r===void 0||r>n[0].index);){let o=n.shift();if(this.completion.substring(0,o.index).trim()!=="")return o.index}return r}trimAtStatementChange(r,n){let o=this.prefix.length,s=this.prefix.length+(n??this.completion.length);if(r.node.endIndex>o&&this.isCompoundStatement(r))return r.nextSibling&&r.node.endIndex<s?this.asCompletionOffset(r.node.endIndex):n;let c=r,l=r.nextSibling;for(;l&&l.node.endIndex<=s&&!this.hasNonStatementContentAfter(c)&&!this.isCompoundStatement(l);)c=l,l=l.nextSibling;return l&&c.node.endIndex>o&&c.node.endIndex<s?this.asCompletionOffset(c.node.endIndex):n}};async function dyr(t,e){var l=[];try{let r=t.getText();let n=t.offsetAt(e);let o=Net(l,S0.create(t.detectedLanguageId,r,0,r.length));await o.build();let s=o.statementAt(n);if(!s)return"non-block";if(!s.isCompoundStatementType&&s.children.length===0)return s.parent&&!s.nextSibling&&s.node.endPosition.row<=e.line?"block-end":s.parent?"mid-block":"non-block";if(s.children.length===0)return"empty-block";let c=s.children[s.children.length-1];if(n<c.node.startIndex)return"mid-block";return"block-end"}catch(u){var d=u,p=!0}finally{Oet(l,d,p)}}a(dyr,"getBlockPositionType");f();function Mpi(t){return t.HTTPS_PROXY||t.https_proxy||t.HTTP_PROXY||t.http_proxy}a(Mpi,"getProxyFromEnvironment");function Lpi(t){return t.NODE_TLS_REJECT_UNAUTHORIZED!=="0"}a(Lpi,"getRejectUnauthorizedFromEnvironment");var fyr=T.Object({proxy:T.Optional(T.String()),proxyStrictSSL:T.Optional(T.Boolean()),proxyAuthorization:T.Optional(T.String()),proxyKerberosServicePrincipal:T.Optional(T.String()),noProxy:T.Optional(T.Array(T.String()))});function pyr(t){let e=Mpi(t),r=rde({proxy:e,proxyStrictSSL:Lpi(t)}),n=t.GH_COPILOT_KERBEROS_SERVICE_PRINCIPAL??t.GITHUB_COPILOT_KERBEROS_SERVICE_PRINCIPAL??t.AGENT_KERBEROS_SERVICE_PRINCIPAL;return n&&(r.proxyKerberosServicePrincipal=n),r}a(pyr,"getHttpSettingsFromEnvironment");function rde(t){if(!t.proxy)return{...t,proxy:""};try{let{protocol:e,host:r,username:n,password:o,pathname:s,search:c,hash:l}=new URL(t.proxy);return{...t,proxy:`${e}//${r}${s}${c}${l}`,proxyAuthorization:t.proxyAuthorization||Fpi(n,o),noProxy:t.noProxy||[]}}catch{return{...t,proxy:""}}}a(rde,"normalizeHttpSettings");function Fpi(t,e){return!t||!e?"":`${decodeURIComponent(t)}:${decodeURIComponent(e)}`}a(Fpi,"getAuth");var Tft={};ni(Tft,{build:()=>Qpi,buildType:()=>$pi,default:()=>Ypi,dependencies:()=>Wpi,description:()=>qpi,devDependencies:()=>Hpi,displayName:()=>Upi,engines:()=>Gpi,name:()=>Bpi,overrides:()=>zpi,scripts:()=>Vpi,version:()=>jpi});var Bpi="copilot",Upi="GitHub Copilot",qpi="Your AI pair programmer",jpi="1.418.0",Qpi="27",$pi="prod",Gpi={node:">=22.0.0",npm:">=10.0.0"},Vpi={build:"tsx esbuild.ts",clean:"./script/build/clean.sh",compress:"tsx ./script/compressTokenizer.ts",generate_languages:"tsx script/generateLanguages.ts && prettier --write lib/src/language/generatedLanguages.ts",get_token:"tsx script/deviceFlow.ts --save-as-test-token",lint:'run-p --aggregate-output "lint:*"',"lint:deps":"depcruise -c .dependency-cruiser.js .","lint:eslint":"eslint -f visualstudio --quiet --cache .","lint:prettier":"prettier --check . 2>&1","lint:types":"tsc --noEmit",prebuild:"npm install",pretest:"npm run build","pretest:headless":"npm run build","pretest:lsp-client":"npm run build","pretest:lib-e2e":"npm run build",prewatch:"npm run build","prewatch:esbuild":"npm run build",start:"npm run watch",test:'npm-run-all "test:headless --ignore-scripts" lint',"test:headless":'npm-run-all test:lib test:agent "test:lib-e2e --ignore-scripts" test:prompt "test:lsp-client --ignore-scripts" lint',"test:agent":'mocha "agent/src/**/*.test.{ts,tsx}"',"test:lib":'mocha "lib/src/**/*.test.{ts,tsx}"',"test:lib-e2e":'mocha "lib/e2e/src/**/*.test.{ts,tsx}" --exclude "lib/e2e/src/prompt/**/*.test.ts"',"test:lib-e2e-no-ci":'mocha "lib/e2e/no-ci/**/*.test.{ts,tsx}"',"test:lib-prompt-e2e":'mocha "lib/e2e/src/prompt/prompt.test.ts"',"test:lib-prompt-e2e-perf":"INCLUDE_PERFORMANCE=true npm run test:lib-prompt-e2e","test:lsp-client":'mocha "lsp-client/test/*.test.{ts,tsx}"',"test:prompt":'mocha "prompt/test/**/*.test.{ts,tsx}"',"test:prepare-msbench":"tsx script/setupMsbench.ts","test:run-msbench":"tsx lsp-client/test/msbench/agent/index.ts",watch:'run-p "watch:esbuild --ignore-scripts" "watch:types -- --preserveWatchOutput"',"watch:esbuild":"tsx esbuild.ts --watch","watch:types":"tsc --noEmit --watch"},Hpi={"@azure/identity":"^4.11.0","@azure/keyvault-secrets":"^4.10.0","@datadog/datadog-ci":"^3.17.0","@github/prettier-config":"0.0.6","@limegrass/eslint-plugin-import-alias":"^1.5.1","@parcel/watcher":"^2.5.1","@types/benchmark":"^2.1.5","@types/crypto-js":"^4.2.2","@types/diff":"^8.0.0","@types/git-url-parse":"^16.0.0","@types/js-yaml":"^4.0.6","@types/kerberos":"^1.1.2","@types/markdown-it":"^14.1.2","@types/mocha":"^10.0.10","@types/node":"~22.7.0","@types/semver":"^7.7.0","@types/sinon":"^17.0.4","@types/uuid":"^10.0.0","@types/vscode":"1.103.0","@types/yargs":"^17.0.24","@vscode/test-electron":"^2.5.2","@vscode/tree-sitter-wasm":"0.0.5-php.2","@vscode/vsce":"^3.6.0","@yao-pkg/pkg":"^6.11.0",benchmark:"^2.1.4",boxen:"^8.0.1",chalk:"^5.6.2","dependency-cruiser":"^17.0.1",electron:"^37.5.1",esbuild:"^0.25.8","esbuild-plugin-copy":"^2.1.1",eslint:"^9.32.0","eslint-formatter-visualstudio":"^8.40.0","eslint-plugin-mocha":"^10.5.0",glob:"^11.1.0",globals:"^16.3.0","js-yaml":"^4.1.0",mocha:"^11.2.2","mocha-junit-reporter":"^2.2.1","mocha-multi-reporters":"^1.5.1","npm-run-all":"^4.1.5",openai:"^5.11.0",prettier:"^3.5.3","prettier-plugin-organize-imports":"^4.2.0",proxy:"^2.1.1","simple-git":"^3.28.0",sinon:"^20.0.0","ts-dedent":"^2.2.0",tsx:"^4.19.4",typescript:"^5.9.2","typescript-eslint":"^8.39.1","vscode-dts":"^0.3.3","tree-sitter-powershell":"0.25.9","tree-sitter-bash":"^0.23.0"},Wpi={"@adobe/helix-fetch":"github:devm33/helix-fetch#2a08fa939591a0e14f34f611adcc3ed767579e9a","@agentclientprotocol/sdk":"^0.8.0","@anthropic-ai/sdk":"^0.56.0","@github/memoize":"1.1.5","@microsoft/1ds-core-js":"^4.3.10","@microsoft/1ds-post-js":"^4.3.10","@microsoft/applicationinsights-web-basic":"^3.3.6","@microsoft/tiktokenizer":"^1.0.10","@modelcontextprotocol/sdk":"^1.17.0","@octokit/graphql":"^8.0.1","@octokit/rest":"^22.0.0","@sinclair/typebox":"^0.34.33","@types/vscode-webview":"^1.57.4","@vscode/chat-lib":"^0.2.0","@vscode/codicons":"^0.0.39","@vscode/copilot-api":"^0.2.2","@vscode/policy-watcher":"^1.3.2","@vscode/prompt-tsx":"^0.4.0-alpha.5","@vscode/webview-ui-toolkit":"^1.3.1","await-lock":"^2.2.2","crypto-js":"^4.2.0",diff:"^8.0.2",dldr:"^0.0.10",events:"^3.3.0","get-stream":"^6.0.1","git-url-parse":"^16.0.3",kerberos:"^2.2.0","mac-ca":"^3.1.3","markdown-it":"^14.1.0",microjob:"^0.7.0",minimatch:"^9.0.3",open:"^10.2.0","os-browserify":"^0.3.0","path-browserify":"^1.0.1",semver:"^7.7.1",shiki:"~1.15.0","source-map-support":"^0.5.21",sqlite3:"^5.1.7",undici:"^7.16.0",uuid:"^11.1.0","vscode-languageclient":"^9.0.0","vscode-languageserver":"^9.0.0","vscode-languageserver-protocol":"^3.17","vscode-languageserver-textdocument":"~1.0.11","vscode-uri":"^3.1.0","web-tree-sitter":"^0.23.0","windows-ca-certs":"^0.2.2",ws:"^8.18.3",yargs:"^17.7.2"},zpi={fsevents:"<0",bindings:"npm:bundled-bindings@^1.5.0"},Ypi={name:Bpi,displayName:Upi,description:qpi,version:jpi,build:Qpi,buildType:$pi,engines:Gpi,scripts:Vpi,devDependencies:Hpi,dependencies:Wpi,overrides:zpi};var Lt={Enable:"enable",UserSelectedCompletionModel:"selectedCompletionModel",ShowEditorCompletions:"editor.showEditorCompletions",EnableAutoCompletions:"editor.enableAutoCompletions",DelayCompletions:"editor.delayCompletions",FilterCompletions:"editor.filterCompletions",FetchStrategy:"fetchStrategy",ToolConfirmAutoApprove:"agent.toolConfirmAutoApprove",TrustToolAnnotations:"agent.trustToolAnnotations",MaxToolCallingLoop:"agent.maxToolCallingLoop",EnableSkills:"agent.enableSkills",CompletionsDelay:"completionsDelay",CompletionsDebounce:"completionsDebounce",RelatedFilesVSCodeCSharp:"advanced.relatedFilesVSCodeCSharp",RelatedFilesVSCodeTypeScript:"advanced.relatedFilesVSCodeTypeScript",RelatedFilesVSCode:"advanced.relatedFilesVSCode",ContextProviders:"advanced.contextProviders",DebugOverrideLogLevels:"advanced.debug.overrideLogLevels",DebugFilterLogCategories:"advanced.debug.filterLogCategories",DebugSnippyOverrideUrl:"advanced.debug.codeRefOverrideUrl",DebugUseElectronFetcher:"advanced.debug.useElectronFetcher",DebugUseEditorFetcher:"advanced.debug.useEditorFetcher",UseSubsetMatching:"advanced.useSubsetMatching",ContextProviderTimeBudget:"advanced.contextProviderTimeBudget",DebugOverrideCapiUrl:"internal.capiUrl",DebugOverrideCapiUrlLegacy:"advanced.debug.overrideCapiUrl",DebugTestOverrideCapiUrl:"internal.capiTestUrl",DebugTestOverrideCapiUrlLegacy:"advanced.debug.testOverrideCapiUrl",DebugOverrideProxyUrl:"internal.completionsUrl",DebugOverrideProxyUrlLegacy:"advanced.debug.overrideProxyUrl",DebugTestOverrideProxyUrl:"internal.completionsTestUrl",DebugTestOverrideProxyUrlLegacy:"advanced.debug.testOverrideProxyUrl",DebugOverrideEngine:"internal.completionModel",DebugOverrideEngineLegacy:"advanced.debug.overrideEngine",AlwaysRequestMultiline:"internal.alwaysRequestMultiline",ModelAlwaysTerminatesSingleline:"internal.modelAlwaysTerminatesSingleline",TrimCompletionsAggressively:"internal.trimCompletionsAggressively",UseWorkspaceContextCoordinator:"internal.useWorkspaceContextCoordinator",ShowWorkspaceContextDebugger:"internal.showWorkspaceContextDebugger",IncludeNeighboringFiles:"internal.includeNeighboringFiles",ExcludeRelatedFiles:"internal.excludeRelatedFiles",DebugOverrideCppHeadersEnableSwitch:"internal.cppHeadersEnableSwitch",NESXTab:"internal.useXTab",UseSplitContextPrompt:"internal.useSplitContextPrompt",UseCompletionsComparisonPanel:"internal.useCompletionsComparisonPanel",ComparisonPanelModelIds:"internal.comparisonPanelModelIds",ComparisonPanelRandomizedMode:"internal.comparisonPanelRandomizedMode",UseFetchFetcher:"internal.useFetchFetcher",UseChatLibCompletions:"internal.useChatLibCompletions"};function hyr(t){return["server","parsingandserver"].includes(t)}a(hyr,"shouldDoServerTrimming");var ET=class{static{a(this,"BlockModeConfig")}},iK=class extends ET{static{a(this,"ConfigBlockModeConfig")}forLanguage(e,r,n){let o=e.get(Gt).overrideBlockMode(n);if(o)return Sft(o,r);let s=e.get(Gt).enableProgressiveReveal(n);return(Xi(e,Lt.AlwaysRequestMultiline)??s)||iw.isTrimmedByDefault(r)?Sft("moremultiline",r):r=="ruby"?"parsing":hy(r)?"parsingandserver":"server"}};function Kpi(t){return["parsing","parsingandserver","moremultiline"].includes(t)}a(Kpi,"blockModeRequiresTreeSitter");function Sft(t,e){return t==="moremultiline"&&S0.isSupported(e)?t:Kpi(t)&&!hy(e)?"server":t}a(Sft,"toApplicableBlockMode");var ru=class{static{a(this,"ConfigProvider")}requireReady(){return Promise.resolve()}},oK=class extends ru{constructor(){super(...arguments);this.onDidChangeCopilotSettings=a(()=>({dispose:a(()=>{},"dispose")}),"onDidChangeCopilotSettings");this.onDidChangeHttpSettings=this.onDidChangeCopilotSettings}static{a(this,"DefaultsOnlyConfigProvider")}getConfig(r){return Jpi(r)}getOptionalConfig(r){return Xpi(r)}dumpForTelemetry(){return{}}getHttpSettings(){return{proxy:""}}},jB=class extends ru{constructor(r,n){super();this.baseConfigProvider=r;this.overrides=n;this.copilotEmitter=new oi;this.onDidChangeCopilotSettings=this.copilotEmitter.event;this.didChangeHttpSettingsEmitter=new oi;this.onDidChangeHttpSettings=this.didChangeHttpSettingsEmitter.event;this.httpSettings=this.baseConfigProvider.getHttpSettings()}static{a(this,"InMemoryConfigProvider")}getOptionalOverride(r){return this.overrides.get(r)}getConfig(r){return this.getOptionalOverride(r)??this.baseConfigProvider.getConfig(r)}getOptionalConfig(r){return this.getOptionalOverride(r)??this.baseConfigProvider.getOptionalConfig(r)}setConfig(r,n){this.setCopilotSettings({[r]:n})}setCopilotSettings(r){for(let[n,o]of Object.entries(r))o!==void 0?this.overrides.set(n,o):this.overrides.delete(n);this.copilotEmitter.fire(this)}getHttpSettings(){return this.httpSettings}setHttpSettings(r){let n=rde(r);this.httpSettings=n,this.didChangeHttpSettingsEmitter.fire(this.getHttpSettings())}dumpForTelemetry(){let r=this.baseConfigProvider.dumpForTelemetry();for(let n of[Lt.ShowEditorCompletions,Lt.EnableAutoCompletions,Lt.DelayCompletions,Lt.FilterCompletions]){let o=this.overrides.get(n);o!==void 0&&(r[n]=JSON.stringify(o))}return r}};function myr(t,e){let r=t,n=[];for(let o of e.split(".")){let s=[...n,o].join(".");r&&typeof r=="object"&&s in r?(r=r[s],n.length=0):n.push(o)}if(!(r===void 0||n.length>0))return r}a(myr,"getConfigKeyRecursively");function Jpi(t){if(uPe.has(t))return uPe.get(t);throw new Error(`Missing config default value: ${rtt}.${t}`)}a(Jpi,"getConfigDefaultForKey");function Xpi(t){return uPe.get(t)}a(Xpi,"getOptionalConfigDefaultForKey");var Zpi={[Lt.DebugOverrideCppHeadersEnableSwitch]:!1,[Lt.RelatedFilesVSCodeCSharp]:!1,[Lt.RelatedFilesVSCodeTypeScript]:!1,[Lt.RelatedFilesVSCode]:!1,[Lt.IncludeNeighboringFiles]:!1,[Lt.ExcludeRelatedFiles]:!1,[Lt.ContextProviders]:[],[Lt.DebugUseEditorFetcher]:null,[Lt.DebugUseElectronFetcher]:null,[Lt.DebugOverrideLogLevels]:{},[Lt.DebugSnippyOverrideUrl]:"",[Lt.FetchStrategy]:"auto",[Lt.ToolConfirmAutoApprove]:!1,[Lt.TrustToolAnnotations]:!1,[Lt.MaxToolCallingLoop]:25,[Lt.EnableSkills]:!1,[Lt.UseSubsetMatching]:null,[Lt.ContextProviderTimeBudget]:void 0,[Lt.DebugOverrideCapiUrl]:"",[Lt.DebugTestOverrideCapiUrl]:"",[Lt.DebugOverrideProxyUrl]:"",[Lt.DebugTestOverrideProxyUrl]:"",[Lt.DebugOverrideEngine]:"",[Lt.AlwaysRequestMultiline]:void 0,[Lt.ModelAlwaysTerminatesSingleline]:void 0,[Lt.TrimCompletionsAggressively]:void 0,[Lt.CompletionsDebounce]:void 0,[Lt.NESXTab]:void 0,[Lt.UseWorkspaceContextCoordinator]:void 0,[Lt.ShowWorkspaceContextDebugger]:!1,[Lt.CompletionsDelay]:void 0,[Lt.UseSplitContextPrompt]:void 0,[Lt.UseCompletionsComparisonPanel]:void 0,[Lt.ComparisonPanelModelIds]:void 0,[Lt.ComparisonPanelRandomizedMode]:void 0,[Lt.UseFetchFetcher]:void 0,[Lt.UseChatLibCompletions]:void 0,[Lt.ShowEditorCompletions]:void 0,[Lt.EnableAutoCompletions]:void 0,[Lt.DelayCompletions]:void 0,[Lt.FilterCompletions]:void 0,[Lt.Enable]:{"*":!0,plaintext:!1,markdown:!1,scminput:!1},[Lt.UserSelectedCompletionModel]:"",[Lt.DebugFilterLogCategories]:[],[Lt.DebugOverrideEngineLegacy]:"",[Lt.DebugTestOverrideProxyUrlLegacy]:"",[Lt.DebugOverrideProxyUrlLegacy]:"",[Lt.DebugTestOverrideCapiUrlLegacy]:"",[Lt.DebugOverrideCapiUrlLegacy]:""},uPe=new Map(Object.entries(Zpi));for(let t of Object.values(Lt))if(!uPe.has(t))throw new Error(`Missing config default value ${rtt}.${t}`);function Xi(t,e){return t.get(ru).getConfig(e)}a(Xi,"getConfig");function ear(t){return t.get(ru).dumpForTelemetry()}a(ear,"dumpForTelemetry");var po=class{constructor(){this.packageJson=Tft}static{a(this,"BuildInfo")}isPreRelease(){return this.getBuildType()==="nightly"}isProduction(){return this.getBuildType()!=="dev"}getBuildType(){return this.packageJson.buildType}getVersion(){return this.packageJson.version}getDisplayVersion(){return this.getBuildType()==="dev"?`${this.getVersion()}-dev`:this.getVersion()}getBuild(){return this.packageJson.build}getName(){return this.packageJson.name}};function utt(t){return t.get(po).isProduction()}a(utt,"isProduction");function DIe(t){return t.get(po).getBuildType()==="dev"}a(DIe,"isDevBuild");function aI(t){return t.get(po).getBuildType()}a(aI,"getBuildType");function tar(t){return t.get(po).getBuild()}a(tar,"getBuild");function sI(t){return t.get(po).getVersion()}a(sI,"getVersion");var ls=class{constructor(e,r,n,o="none",s="desktop"){this.sessionId=e;this.machineId=r;this.devDeviceId=n;this.remoteName=o;this.uiKind=s}static{a(this,"EditorSession")}};function y_({name:t,version:e}){return`${t}/${e}`}a(y_,"formatNameAndVersion");var Lr=class{static{a(this,"EditorAndPluginInfo")}getCopilotIntegrationId(){}getEditorPluginSpecificFilters(){return[]}},gyr="2025-05-01";function xb(t){let e=t.get(Lr);return{"Editor-Version":y_(e.getEditorInfo()),"Editor-Plugin-Version":y_(e.getEditorPluginInfo()),"Copilot-Language-Server-Version":sI(t)}}a(xb,"editorVersionHeaders");var Gb="Iv1.b507a08c87ecfe98",ehi="350ee525b5da0e4a54c6e8e043edc1b99cc02f19",xft="Ov23liV9UpD7Rnfnskm3",thi="5509a52e4c525cd594a6fba9147ff6cc2388dd9f",rhi={[Gb]:ehi,[xft]:thi},cl=class{static{a(this,"GitHubAppInfo")}findAppIdToAuthenticate(){return this.githubAppId??Gb}findAppSecretToAuthenticate(){let e=this.findAppIdToAuthenticate(),r=rhi[e];if(!r)throw new Error(`GitHubAppInfo: No app secret found for app ID: ${e}`);return r}};var dr=class{static{a(this,"Fetcher")}getImplementation(){return this}};function G5(t,e,r,n,o,s,c,l,u,d){let p={...l,Authorization:`Bearer ${r}`,...xb(t)};d===void 0&&(p["Openai-Organization"]="github-copilot",p["X-Request-Id"]=o,p["VScode-SessionId"]=t.get(ls).sessionId,p["VScode-MachineId"]=t.get(ls).machineId,p["X-GitHub-Api-Version"]=gyr),n&&(p["OpenAI-Intent"]=n);let h={method:"POST",headers:p,json:s,timeout:u},m=t.get(dr);if(c){let A=new AbortController;c.onCancellationRequested(()=>{gt(t,"networking.cancelRequest",Ht.createAndMarkAsIssued({headerRequestId:o})),A.abort()}),h.signal=A.signal}return m.fetch(e,h).catch(A=>{if(nhi(A))return gt(t,"networking.disconnectAll"),m.disconnectAll().then(()=>m.fetch(e,h));throw A})}a(G5,"postRequest");function nhi(t){return t instanceof Error?t.message=="ERR_HTTP2_GOAWAY_SESSION"?!0:"code"in t?t.code=="ECONNRESET"||t.code=="ETIMEDOUT"||t.code=="ERR_HTTP2_INVALID_SESSION":!1:!1}a(nhi,"isInterruptedNetworkError");var ihi=new Set(["ERR_WORKER_OUT_OF_MEMORY","ENOMEM"]);function ohi(t){return ihi.has(t.code??"")||t.name==="RangeError"&&t.message==="WebAssembly.Memory(): could not allocate memory"}a(ohi,"isOomError");function $D(t,e,r,n=Nr){if(!u0(e)){if(e instanceof Error){let o=e;ohi(o)?t.get(ds).setWarning("Out of memory"):o.code==="EMFILE"||o.code==="ENFILE"?t.get(ds).setWarning("Too many open files"):o.code==="CopilotPromptLoadFailure"?t.get(ds).setWarning("Corrupted Copilot installation"):`${o.code}`.startsWith("CopilotPromptWorkerExit")?t.get(ds).setWarning("Worker unexpectedly exited"):o.syscall==="uv_cwd"&&o.code==="ENOENT"&&t.get(ds).setWarning("Current working directory does not exist")}n.exception(t,e,r)}}a($D,"handleException");function Ayr(t){process.addListener("uncaughtException",r=>{$D(t,r,"uncaughtException")});let e=!1;process.addListener("unhandledRejection",r=>{if(!e)try{e=!0,$D(t,r,"unhandledRejection")}finally{e=!1}})}a(Ayr,"registerDefaultHandlers");async function _yr(t){try{await $ue}catch(e){$D(t,e,"initializeTokenizers")}}a(_yr,"waitForTokenizers");f();var GD=require("fs"),yyr=require("os"),Eyr=be(require("path")),sK=require("process");var Zn=class{static{a(this,"PersistenceManager")}},Ift=class extends Zn{constructor(r){super();this.directory=r}static{a(this,"FilePersistenceManager")}async read(r,n){try{return(await this.readJsonObject(r))[n]}catch{return}}async update(r,n,o){await GD.promises.mkdir(this.directory,{recursive:!0,mode:448});let s=`${this.directory}/${r}.json`,c;try{c=await nde.acquire(s);let l=await this.readJsonObject(r);l[n]=o,await GD.promises.writeFile(s,JSON.stringify(l)+`
1496
+ ] @statement`}};var iw=class{constructor(e,r,n){this.languageId=e;this.prefix=r;this.completion=n}static{a(this,"BlockTrimmer")}static isSupported(e){return S0.isSupported(e)}static isTrimmedByDefault(e){return S0.isTrimmedByDefault(e)}async withParsedStatementTree(e){var n=[];try{let r=Net(n,S0.create(this.languageId,this.prefix+this.completion,this.prefix.length,this.prefix.length+this.completion.length));await r.build();return await e(r)}catch(o){var s=o,c=!0}finally{Oet(n,s,c)}}trimmedCompletion(e){return e===void 0?this.completion:this.completion.substring(0,e)}getStatementAtCursor(e){return e.statementAt(Math.max(this.prefix.length-1,0))??e.statements[0]}getContainingBlockOffset(e){let r;if(e&&this.isCompoundStatement(e))r=e;else if(e){let n=e.parent;for(;n&&!this.isCompoundStatement(n);)n=n.parent;r=n}if(r){let n=this.asCompletionOffset(r.node.endIndex);if(n&&this.completion.substring(n).trim()!=="")return n}}hasNonStatementContentAfter(e){if(!e||!e.nextSibling)return!1;let r=this.asCompletionOffset(e.node.endIndex),n=this.asCompletionOffset(e.nextSibling.node.startIndex);return this.completion.substring(Math.max(0,r??0),Math.max(0,n??0)).trim()!==""}asCompletionOffset(e){return e===void 0?void 0:e-this.prefix.length}isCompoundStatement(e){return e.isCompoundStatementType||e.children.length>0}};var lPe=class extends iw{constructor(r,n,o,s=3,c=7){super(r,n,o);this.lineLimit=s;this.lookAhead=c;let l=[...this.completion.matchAll(/\n/g)],u=this.lineLimit+this.lookAhead;l.length>=this.lineLimit&&this.lineLimit>0&&(this.limitOffset=l[this.lineLimit-1].index),l.length>=u&&u>0&&(this.lookAheadOffset=l[u-1].index)}static{a(this,"TerseBlockTrimmer")}async getCompletionTrimOffset(){return await this.withParsedStatementTree(r=>{let n=r.statementAt(this.stmtStartPos()),o=this.getContainingBlockOffset(n);return o=this.trimAtFirstBlankLine(o),n&&(o=this.trimAtStatementChange(n,o)),this.limitOffset&&this.lookAheadOffset&&(o===void 0||o>this.lookAheadOffset)?this.limitOffset:o})}stmtStartPos(){let r=this.completion.match(/\S/);return r&&r.index!==void 0?this.prefix.length+r.index:Math.max(this.prefix.length-1,0)}trimAtFirstBlankLine(r){let n=[...this.trimmedCompletion(r).matchAll(/\r?\n\s*\r?\n/g)];for(;n.length>0&&(r===void 0||r>n[0].index);){let o=n.shift();if(this.completion.substring(0,o.index).trim()!=="")return o.index}return r}trimAtStatementChange(r,n){let o=this.prefix.length,s=this.prefix.length+(n??this.completion.length);if(r.node.endIndex>o&&this.isCompoundStatement(r))return r.nextSibling&&r.node.endIndex<s?this.asCompletionOffset(r.node.endIndex):n;let c=r,l=r.nextSibling;for(;l&&l.node.endIndex<=s&&!this.hasNonStatementContentAfter(c)&&!this.isCompoundStatement(l);)c=l,l=l.nextSibling;return l&&c.node.endIndex>o&&c.node.endIndex<s?this.asCompletionOffset(c.node.endIndex):n}};async function dyr(t,e){var l=[];try{let r=t.getText();let n=t.offsetAt(e);let o=Net(l,S0.create(t.detectedLanguageId,r,0,r.length));await o.build();let s=o.statementAt(n);if(!s)return"non-block";if(!s.isCompoundStatementType&&s.children.length===0)return s.parent&&!s.nextSibling&&s.node.endPosition.row<=e.line?"block-end":s.parent?"mid-block":"non-block";if(s.children.length===0)return"empty-block";let c=s.children[s.children.length-1];if(n<c.node.startIndex)return"mid-block";return"block-end"}catch(u){var d=u,p=!0}finally{Oet(l,d,p)}}a(dyr,"getBlockPositionType");f();function Mpi(t){return t.HTTPS_PROXY||t.https_proxy||t.HTTP_PROXY||t.http_proxy}a(Mpi,"getProxyFromEnvironment");function Lpi(t){return t.NODE_TLS_REJECT_UNAUTHORIZED!=="0"}a(Lpi,"getRejectUnauthorizedFromEnvironment");var fyr=T.Object({proxy:T.Optional(T.String()),proxyStrictSSL:T.Optional(T.Boolean()),proxyAuthorization:T.Optional(T.String()),proxyKerberosServicePrincipal:T.Optional(T.String()),noProxy:T.Optional(T.Array(T.String()))});function pyr(t){let e=Mpi(t),r=rde({proxy:e,proxyStrictSSL:Lpi(t)}),n=t.GH_COPILOT_KERBEROS_SERVICE_PRINCIPAL??t.GITHUB_COPILOT_KERBEROS_SERVICE_PRINCIPAL??t.AGENT_KERBEROS_SERVICE_PRINCIPAL;return n&&(r.proxyKerberosServicePrincipal=n),r}a(pyr,"getHttpSettingsFromEnvironment");function rde(t){if(!t.proxy)return{...t,proxy:""};try{let{protocol:e,host:r,username:n,password:o,pathname:s,search:c,hash:l}=new URL(t.proxy);return{...t,proxy:`${e}//${r}${s}${c}${l}`,proxyAuthorization:t.proxyAuthorization||Fpi(n,o),noProxy:t.noProxy||[]}}catch{return{...t,proxy:""}}}a(rde,"normalizeHttpSettings");function Fpi(t,e){return!t||!e?"":`${decodeURIComponent(t)}:${decodeURIComponent(e)}`}a(Fpi,"getAuth");var Tft={};ni(Tft,{build:()=>Qpi,buildType:()=>$pi,default:()=>Ypi,dependencies:()=>Wpi,description:()=>qpi,devDependencies:()=>Hpi,displayName:()=>Upi,engines:()=>Gpi,name:()=>Bpi,overrides:()=>zpi,scripts:()=>Vpi,version:()=>jpi});var Bpi="copilot",Upi="GitHub Copilot",qpi="Your AI pair programmer",jpi="1.420.0",Qpi="29",$pi="prod",Gpi={node:">=22.0.0",npm:">=10.0.0"},Vpi={build:"tsx esbuild.ts",clean:"./script/build/clean.sh",compress:"tsx ./script/compressTokenizer.ts",generate_languages:"tsx script/generateLanguages.ts && prettier --write lib/src/language/generatedLanguages.ts",get_token:"tsx script/deviceFlow.ts --save-as-test-token",lint:'run-p --aggregate-output "lint:*"',"lint:deps":"depcruise -c .dependency-cruiser.js .","lint:eslint":"eslint -f visualstudio --quiet --cache .","lint:prettier":"prettier --check . 2>&1","lint:types":"tsc --noEmit",prebuild:"npm install",pretest:"npm run build","pretest:headless":"npm run build","pretest:lsp-client":"npm run build","pretest:lib-e2e":"npm run build",prewatch:"npm run build","prewatch:esbuild":"npm run build",start:"npm run watch",test:'npm-run-all "test:headless --ignore-scripts" lint',"test:headless":'npm-run-all test:lib test:agent "test:lib-e2e --ignore-scripts" test:prompt "test:lsp-client --ignore-scripts" lint',"test:agent":'mocha "agent/src/**/*.test.{ts,tsx}"',"test:lib":'mocha "lib/src/**/*.test.{ts,tsx}"',"test:lib-e2e":'mocha "lib/e2e/src/**/*.test.{ts,tsx}" --exclude "lib/e2e/src/prompt/**/*.test.ts"',"test:lib-e2e-no-ci":'mocha "lib/e2e/no-ci/**/*.test.{ts,tsx}"',"test:lib-prompt-e2e":'mocha "lib/e2e/src/prompt/prompt.test.ts"',"test:lib-prompt-e2e-perf":"INCLUDE_PERFORMANCE=true npm run test:lib-prompt-e2e","test:lsp-client":'mocha "lsp-client/test/*.test.{ts,tsx}"',"test:prompt":'mocha "prompt/test/**/*.test.{ts,tsx}"',"test:prepare-msbench":"tsx script/setupMsbench.ts","test:run-msbench":"tsx lsp-client/test/msbench/agent/index.ts",watch:'run-p "watch:esbuild --ignore-scripts" "watch:types -- --preserveWatchOutput"',"watch:esbuild":"tsx esbuild.ts --watch","watch:types":"tsc --noEmit --watch"},Hpi={"@azure/identity":"^4.11.0","@azure/keyvault-secrets":"^4.10.0","@datadog/datadog-ci":"^3.17.0","@github/prettier-config":"0.0.6","@limegrass/eslint-plugin-import-alias":"^1.5.1","@parcel/watcher":"^2.5.1","@types/benchmark":"^2.1.5","@types/crypto-js":"^4.2.2","@types/diff":"^8.0.0","@types/git-url-parse":"^16.0.0","@types/js-yaml":"^4.0.6","@types/kerberos":"^1.1.2","@types/markdown-it":"^14.1.2","@types/mocha":"^10.0.10","@types/node":"~22.7.0","@types/semver":"^7.7.0","@types/sinon":"^17.0.4","@types/uuid":"^10.0.0","@types/vscode":"1.103.0","@types/yargs":"^17.0.24","@vscode/test-electron":"^2.5.2","@vscode/tree-sitter-wasm":"0.0.5-php.2","@vscode/vsce":"^3.6.0","@yao-pkg/pkg":"^6.11.0",benchmark:"^2.1.4",boxen:"^8.0.1",chalk:"^5.6.2","dependency-cruiser":"^17.0.1",electron:"^37.5.1",esbuild:"^0.25.8","esbuild-plugin-copy":"^2.1.1",eslint:"^9.32.0","eslint-formatter-visualstudio":"^8.40.0","eslint-plugin-mocha":"^10.5.0",glob:"^11.1.0",globals:"^16.3.0","js-yaml":"^4.1.0",mocha:"^11.2.2","mocha-junit-reporter":"^2.2.1","mocha-multi-reporters":"^1.5.1","npm-run-all":"^4.1.5",openai:"^5.11.0",prettier:"^3.5.3","prettier-plugin-organize-imports":"^4.2.0",proxy:"^2.1.1","simple-git":"^3.28.0",sinon:"^20.0.0","ts-dedent":"^2.2.0",tsx:"^4.19.4",typescript:"^5.9.2","typescript-eslint":"^8.39.1","vscode-dts":"^0.3.3","tree-sitter-powershell":"0.25.9","tree-sitter-bash":"^0.23.0"},Wpi={"@adobe/helix-fetch":"github:devm33/helix-fetch#2a08fa939591a0e14f34f611adcc3ed767579e9a","@agentclientprotocol/sdk":"^0.8.0","@anthropic-ai/sdk":"^0.56.0","@github/memoize":"1.1.5","@microsoft/1ds-core-js":"^4.3.10","@microsoft/1ds-post-js":"^4.3.10","@microsoft/applicationinsights-web-basic":"^3.3.6","@microsoft/tiktokenizer":"^1.0.10","@modelcontextprotocol/sdk":"^1.17.0","@octokit/graphql":"^8.0.1","@octokit/rest":"^22.0.0","@sinclair/typebox":"^0.34.33","@types/vscode-webview":"^1.57.4","@vscode/chat-lib":"^0.2.0","@vscode/codicons":"^0.0.39","@vscode/copilot-api":"^0.2.2","@vscode/policy-watcher":"^1.3.2","@vscode/prompt-tsx":"^0.4.0-alpha.5","@vscode/webview-ui-toolkit":"^1.3.1","await-lock":"^2.2.2","crypto-js":"^4.2.0",diff:"^8.0.2",dldr:"^0.0.10",events:"^3.3.0","get-stream":"^6.0.1","git-url-parse":"^16.0.3",kerberos:"^2.2.0","mac-ca":"^3.1.3","markdown-it":"^14.1.0",microjob:"^0.7.0",minimatch:"^9.0.3",open:"^10.2.0","os-browserify":"^0.3.0","path-browserify":"^1.0.1",semver:"^7.7.1",shiki:"~1.15.0","source-map-support":"^0.5.21",sqlite3:"^5.1.7",undici:"^7.16.0",uuid:"^11.1.0","vscode-languageclient":"^9.0.0","vscode-languageserver":"^9.0.0","vscode-languageserver-protocol":"^3.17","vscode-languageserver-textdocument":"~1.0.11","vscode-uri":"^3.1.0","web-tree-sitter":"^0.23.0","windows-ca-certs":"^0.2.2",ws:"^8.18.3",yargs:"^17.7.2"},zpi={fsevents:"<0",bindings:"npm:bundled-bindings@^1.5.0"},Ypi={name:Bpi,displayName:Upi,description:qpi,version:jpi,build:Qpi,buildType:$pi,engines:Gpi,scripts:Vpi,devDependencies:Hpi,dependencies:Wpi,overrides:zpi};var Lt={Enable:"enable",UserSelectedCompletionModel:"selectedCompletionModel",ShowEditorCompletions:"editor.showEditorCompletions",EnableAutoCompletions:"editor.enableAutoCompletions",DelayCompletions:"editor.delayCompletions",FilterCompletions:"editor.filterCompletions",FetchStrategy:"fetchStrategy",ToolConfirmAutoApprove:"agent.toolConfirmAutoApprove",TrustToolAnnotations:"agent.trustToolAnnotations",MaxToolCallingLoop:"agent.maxToolCallingLoop",EnableSkills:"agent.enableSkills",CompletionsDelay:"completionsDelay",CompletionsDebounce:"completionsDebounce",RelatedFilesVSCodeCSharp:"advanced.relatedFilesVSCodeCSharp",RelatedFilesVSCodeTypeScript:"advanced.relatedFilesVSCodeTypeScript",RelatedFilesVSCode:"advanced.relatedFilesVSCode",ContextProviders:"advanced.contextProviders",DebugOverrideLogLevels:"advanced.debug.overrideLogLevels",DebugFilterLogCategories:"advanced.debug.filterLogCategories",DebugSnippyOverrideUrl:"advanced.debug.codeRefOverrideUrl",DebugUseElectronFetcher:"advanced.debug.useElectronFetcher",DebugUseEditorFetcher:"advanced.debug.useEditorFetcher",UseSubsetMatching:"advanced.useSubsetMatching",ContextProviderTimeBudget:"advanced.contextProviderTimeBudget",DebugOverrideCapiUrl:"internal.capiUrl",DebugOverrideCapiUrlLegacy:"advanced.debug.overrideCapiUrl",DebugTestOverrideCapiUrl:"internal.capiTestUrl",DebugTestOverrideCapiUrlLegacy:"advanced.debug.testOverrideCapiUrl",DebugOverrideProxyUrl:"internal.completionsUrl",DebugOverrideProxyUrlLegacy:"advanced.debug.overrideProxyUrl",DebugTestOverrideProxyUrl:"internal.completionsTestUrl",DebugTestOverrideProxyUrlLegacy:"advanced.debug.testOverrideProxyUrl",DebugOverrideEngine:"internal.completionModel",DebugOverrideEngineLegacy:"advanced.debug.overrideEngine",AlwaysRequestMultiline:"internal.alwaysRequestMultiline",ModelAlwaysTerminatesSingleline:"internal.modelAlwaysTerminatesSingleline",TrimCompletionsAggressively:"internal.trimCompletionsAggressively",UseWorkspaceContextCoordinator:"internal.useWorkspaceContextCoordinator",ShowWorkspaceContextDebugger:"internal.showWorkspaceContextDebugger",IncludeNeighboringFiles:"internal.includeNeighboringFiles",ExcludeRelatedFiles:"internal.excludeRelatedFiles",DebugOverrideCppHeadersEnableSwitch:"internal.cppHeadersEnableSwitch",NESXTab:"internal.useXTab",UseSplitContextPrompt:"internal.useSplitContextPrompt",UseCompletionsComparisonPanel:"internal.useCompletionsComparisonPanel",ComparisonPanelModelIds:"internal.comparisonPanelModelIds",ComparisonPanelRandomizedMode:"internal.comparisonPanelRandomizedMode",UseFetchFetcher:"internal.useFetchFetcher",UseChatLibCompletions:"internal.useChatLibCompletions"};function hyr(t){return["server","parsingandserver"].includes(t)}a(hyr,"shouldDoServerTrimming");var ET=class{static{a(this,"BlockModeConfig")}},iK=class extends ET{static{a(this,"ConfigBlockModeConfig")}forLanguage(e,r,n){let o=e.get(Gt).overrideBlockMode(n);if(o)return Sft(o,r);let s=e.get(Gt).enableProgressiveReveal(n);return(Xi(e,Lt.AlwaysRequestMultiline)??s)||iw.isTrimmedByDefault(r)?Sft("moremultiline",r):r=="ruby"?"parsing":hy(r)?"parsingandserver":"server"}};function Kpi(t){return["parsing","parsingandserver","moremultiline"].includes(t)}a(Kpi,"blockModeRequiresTreeSitter");function Sft(t,e){return t==="moremultiline"&&S0.isSupported(e)?t:Kpi(t)&&!hy(e)?"server":t}a(Sft,"toApplicableBlockMode");var ru=class{static{a(this,"ConfigProvider")}requireReady(){return Promise.resolve()}},oK=class extends ru{constructor(){super(...arguments);this.onDidChangeCopilotSettings=a(()=>({dispose:a(()=>{},"dispose")}),"onDidChangeCopilotSettings");this.onDidChangeHttpSettings=this.onDidChangeCopilotSettings}static{a(this,"DefaultsOnlyConfigProvider")}getConfig(r){return Jpi(r)}getOptionalConfig(r){return Xpi(r)}dumpForTelemetry(){return{}}getHttpSettings(){return{proxy:""}}},jB=class extends ru{constructor(r,n){super();this.baseConfigProvider=r;this.overrides=n;this.copilotEmitter=new oi;this.onDidChangeCopilotSettings=this.copilotEmitter.event;this.didChangeHttpSettingsEmitter=new oi;this.onDidChangeHttpSettings=this.didChangeHttpSettingsEmitter.event;this.httpSettings=this.baseConfigProvider.getHttpSettings()}static{a(this,"InMemoryConfigProvider")}getOptionalOverride(r){return this.overrides.get(r)}getConfig(r){return this.getOptionalOverride(r)??this.baseConfigProvider.getConfig(r)}getOptionalConfig(r){return this.getOptionalOverride(r)??this.baseConfigProvider.getOptionalConfig(r)}setConfig(r,n){this.setCopilotSettings({[r]:n})}setCopilotSettings(r){for(let[n,o]of Object.entries(r))o!==void 0?this.overrides.set(n,o):this.overrides.delete(n);this.copilotEmitter.fire(this)}getHttpSettings(){return this.httpSettings}setHttpSettings(r){let n=rde(r);this.httpSettings=n,this.didChangeHttpSettingsEmitter.fire(this.getHttpSettings())}dumpForTelemetry(){let r=this.baseConfigProvider.dumpForTelemetry();for(let n of[Lt.ShowEditorCompletions,Lt.EnableAutoCompletions,Lt.DelayCompletions,Lt.FilterCompletions]){let o=this.overrides.get(n);o!==void 0&&(r[n]=JSON.stringify(o))}return r}};function myr(t,e){let r=t,n=[];for(let o of e.split(".")){let s=[...n,o].join(".");r&&typeof r=="object"&&s in r?(r=r[s],n.length=0):n.push(o)}if(!(r===void 0||n.length>0))return r}a(myr,"getConfigKeyRecursively");function Jpi(t){if(uPe.has(t))return uPe.get(t);throw new Error(`Missing config default value: ${rtt}.${t}`)}a(Jpi,"getConfigDefaultForKey");function Xpi(t){return uPe.get(t)}a(Xpi,"getOptionalConfigDefaultForKey");var Zpi={[Lt.DebugOverrideCppHeadersEnableSwitch]:!1,[Lt.RelatedFilesVSCodeCSharp]:!1,[Lt.RelatedFilesVSCodeTypeScript]:!1,[Lt.RelatedFilesVSCode]:!1,[Lt.IncludeNeighboringFiles]:!1,[Lt.ExcludeRelatedFiles]:!1,[Lt.ContextProviders]:[],[Lt.DebugUseEditorFetcher]:null,[Lt.DebugUseElectronFetcher]:null,[Lt.DebugOverrideLogLevels]:{},[Lt.DebugSnippyOverrideUrl]:"",[Lt.FetchStrategy]:"auto",[Lt.ToolConfirmAutoApprove]:!1,[Lt.TrustToolAnnotations]:!1,[Lt.MaxToolCallingLoop]:25,[Lt.EnableSkills]:!1,[Lt.UseSubsetMatching]:null,[Lt.ContextProviderTimeBudget]:void 0,[Lt.DebugOverrideCapiUrl]:"",[Lt.DebugTestOverrideCapiUrl]:"",[Lt.DebugOverrideProxyUrl]:"",[Lt.DebugTestOverrideProxyUrl]:"",[Lt.DebugOverrideEngine]:"",[Lt.AlwaysRequestMultiline]:void 0,[Lt.ModelAlwaysTerminatesSingleline]:void 0,[Lt.TrimCompletionsAggressively]:void 0,[Lt.CompletionsDebounce]:void 0,[Lt.NESXTab]:void 0,[Lt.UseWorkspaceContextCoordinator]:void 0,[Lt.ShowWorkspaceContextDebugger]:!1,[Lt.CompletionsDelay]:void 0,[Lt.UseSplitContextPrompt]:void 0,[Lt.UseCompletionsComparisonPanel]:void 0,[Lt.ComparisonPanelModelIds]:void 0,[Lt.ComparisonPanelRandomizedMode]:void 0,[Lt.UseFetchFetcher]:void 0,[Lt.UseChatLibCompletions]:void 0,[Lt.ShowEditorCompletions]:void 0,[Lt.EnableAutoCompletions]:void 0,[Lt.DelayCompletions]:void 0,[Lt.FilterCompletions]:void 0,[Lt.Enable]:{"*":!0,plaintext:!1,markdown:!1,scminput:!1},[Lt.UserSelectedCompletionModel]:"",[Lt.DebugFilterLogCategories]:[],[Lt.DebugOverrideEngineLegacy]:"",[Lt.DebugTestOverrideProxyUrlLegacy]:"",[Lt.DebugOverrideProxyUrlLegacy]:"",[Lt.DebugTestOverrideCapiUrlLegacy]:"",[Lt.DebugOverrideCapiUrlLegacy]:""},uPe=new Map(Object.entries(Zpi));for(let t of Object.values(Lt))if(!uPe.has(t))throw new Error(`Missing config default value ${rtt}.${t}`);function Xi(t,e){return t.get(ru).getConfig(e)}a(Xi,"getConfig");function ear(t){return t.get(ru).dumpForTelemetry()}a(ear,"dumpForTelemetry");var po=class{constructor(){this.packageJson=Tft}static{a(this,"BuildInfo")}isPreRelease(){return this.getBuildType()==="nightly"}isProduction(){return this.getBuildType()!=="dev"}getBuildType(){return this.packageJson.buildType}getVersion(){return this.packageJson.version}getDisplayVersion(){return this.getBuildType()==="dev"?`${this.getVersion()}-dev`:this.getVersion()}getBuild(){return this.packageJson.build}getName(){return this.packageJson.name}};function utt(t){return t.get(po).isProduction()}a(utt,"isProduction");function DIe(t){return t.get(po).getBuildType()==="dev"}a(DIe,"isDevBuild");function aI(t){return t.get(po).getBuildType()}a(aI,"getBuildType");function tar(t){return t.get(po).getBuild()}a(tar,"getBuild");function sI(t){return t.get(po).getVersion()}a(sI,"getVersion");var ls=class{constructor(e,r,n,o="none",s="desktop"){this.sessionId=e;this.machineId=r;this.devDeviceId=n;this.remoteName=o;this.uiKind=s}static{a(this,"EditorSession")}};function y_({name:t,version:e}){return`${t}/${e}`}a(y_,"formatNameAndVersion");var Lr=class{static{a(this,"EditorAndPluginInfo")}getCopilotIntegrationId(){}getEditorPluginSpecificFilters(){return[]}},gyr="2025-05-01";function xb(t){let e=t.get(Lr);return{"Editor-Version":y_(e.getEditorInfo()),"Editor-Plugin-Version":y_(e.getEditorPluginInfo()),"Copilot-Language-Server-Version":sI(t)}}a(xb,"editorVersionHeaders");var Gb="Iv1.b507a08c87ecfe98",ehi="350ee525b5da0e4a54c6e8e043edc1b99cc02f19",xft="Ov23liV9UpD7Rnfnskm3",thi="5509a52e4c525cd594a6fba9147ff6cc2388dd9f",rhi={[Gb]:ehi,[xft]:thi},cl=class{static{a(this,"GitHubAppInfo")}findAppIdToAuthenticate(){return this.githubAppId??Gb}findAppSecretToAuthenticate(){let e=this.findAppIdToAuthenticate(),r=rhi[e];if(!r)throw new Error(`GitHubAppInfo: No app secret found for app ID: ${e}`);return r}};var dr=class{static{a(this,"Fetcher")}getImplementation(){return this}};function G5(t,e,r,n,o,s,c,l,u,d){let p={...l,Authorization:`Bearer ${r}`,...xb(t)};d===void 0&&(p["Openai-Organization"]="github-copilot",p["X-Request-Id"]=o,p["VScode-SessionId"]=t.get(ls).sessionId,p["VScode-MachineId"]=t.get(ls).machineId,p["X-GitHub-Api-Version"]=gyr),n&&(p["OpenAI-Intent"]=n);let h={method:"POST",headers:p,json:s,timeout:u},m=t.get(dr);if(c){let A=new AbortController;c.onCancellationRequested(()=>{gt(t,"networking.cancelRequest",Ht.createAndMarkAsIssued({headerRequestId:o})),A.abort()}),h.signal=A.signal}return m.fetch(e,h).catch(A=>{if(nhi(A))return gt(t,"networking.disconnectAll"),m.disconnectAll().then(()=>m.fetch(e,h));throw A})}a(G5,"postRequest");function nhi(t){return t instanceof Error?t.message=="ERR_HTTP2_GOAWAY_SESSION"?!0:"code"in t?t.code=="ECONNRESET"||t.code=="ETIMEDOUT"||t.code=="ERR_HTTP2_INVALID_SESSION":!1:!1}a(nhi,"isInterruptedNetworkError");var ihi=new Set(["ERR_WORKER_OUT_OF_MEMORY","ENOMEM"]);function ohi(t){return ihi.has(t.code??"")||t.name==="RangeError"&&t.message==="WebAssembly.Memory(): could not allocate memory"}a(ohi,"isOomError");function $D(t,e,r,n=Nr){if(!u0(e)){if(e instanceof Error){let o=e;ohi(o)?t.get(ds).setWarning("Out of memory"):o.code==="EMFILE"||o.code==="ENFILE"?t.get(ds).setWarning("Too many open files"):o.code==="CopilotPromptLoadFailure"?t.get(ds).setWarning("Corrupted Copilot installation"):`${o.code}`.startsWith("CopilotPromptWorkerExit")?t.get(ds).setWarning("Worker unexpectedly exited"):o.syscall==="uv_cwd"&&o.code==="ENOENT"&&t.get(ds).setWarning("Current working directory does not exist")}n.exception(t,e,r)}}a($D,"handleException");function Ayr(t){process.addListener("uncaughtException",r=>{$D(t,r,"uncaughtException")});let e=!1;process.addListener("unhandledRejection",r=>{if(!e)try{e=!0,$D(t,r,"unhandledRejection")}finally{e=!1}})}a(Ayr,"registerDefaultHandlers");async function _yr(t){try{await $ue}catch(e){$D(t,e,"initializeTokenizers")}}a(_yr,"waitForTokenizers");f();var GD=require("fs"),yyr=require("os"),Eyr=be(require("path")),sK=require("process");var Zn=class{static{a(this,"PersistenceManager")}},Ift=class extends Zn{constructor(r){super();this.directory=r}static{a(this,"FilePersistenceManager")}async read(r,n){try{return(await this.readJsonObject(r))[n]}catch{return}}async update(r,n,o){await GD.promises.mkdir(this.directory,{recursive:!0,mode:448});let s=`${this.directory}/${r}.json`,c;try{c=await nde.acquire(s);let l=await this.readJsonObject(r);l[n]=o,await GD.promises.writeFile(s,JSON.stringify(l)+`
1497
1497
  `,{encoding:"utf8",mode:384})}finally{c&&await c()}}async delete(r,n){let o=`${this.directory}/${r}.json`,s;try{s=await nde.acquire(o);let c=await this.readJsonObject(r);delete c[n];let l=JSON.stringify(c)+`
1498
1498
  `;l===`{}
1499
1499
  `?await GD.promises.rm(o):await GD.promises.writeFile(o,l,{encoding:"utf8",mode:384})}catch{}finally{s&&await s()}}async deleteSetting(r){let n=`${this.directory}/${r}.json`,o;try{o=await nde.acquire(n),await GD.promises.rm(n)}catch{}finally{o&&await o()}}async listSettings(){try{return(await GD.promises.readdir(this.directory)).filter(n=>n.endsWith(".json")).map(n=>n.slice(0,-5))}catch{return[]}}async listKeys(r){return Object.keys(await this.readJsonObject(r))}async readJsonObject(r){let n=`${this.directory}/${r}.json`;try{let o=await GD.promises.readFile(n,{encoding:"utf8"});return JSON.parse(o)}catch{return{}}}},nde=class{static{a(this,"LockManager")}static{this.locks=new Map}static{this.DEFAULT_TIMEOUT_MS=1e4}static async acquire(e){await this.getLock(e);let r,n=new Promise(o=>{r=o});return this.locks.set(e,n),()=>Promise.resolve().then(()=>{r&&(r(),r=void 0,this.locks.get(e)===n&&this.locks.delete(e))})}static async getLock(e){let r=Date.now();for(;Date.now()-r<this.DEFAULT_TIMEOUT_MS;){let n=this.locks.get(e);if(!n)return;let o=this.DEFAULT_TIMEOUT_MS-(Date.now()-r);if(o<=0)return;let s=new Promise((c,l)=>{setTimeout(()=>{l(new Error("timeout"))},o)});try{await Promise.race([n,s])}catch{return}}}};function wft(){return sK.env.XDG_CONFIG_HOME&&Eyr.isAbsolute(sK.env.XDG_CONFIG_HOME)?sK.env.XDG_CONFIG_HOME+"/github-copilot":(0,yyr.platform)()==="win32"?sK.env.USERPROFILE+"\\AppData\\Local\\github-copilot":sK.env.HOME+"/.config/github-copilot"}a(wft,"getXdgConfigPath");function vyr(){return new Ift(wft())}a(vyr,"makeXdgPersistenceManager");f();f();f();var V5={abap:{extensions:[".abap"]},aspdotnet:{extensions:[".asax",".ascx",".ashx",".asmx",".aspx",".axd"]},bat:{extensions:[".bat",".cmd"]},bibtex:{extensions:[".bib",".bibtex"]},blade:{extensions:[".blade",".blade.php"]},BluespecSystemVerilog:{extensions:[".bsv"]},c:{extensions:[".c",".cats",".h",".h.in",".idc"]},csharp:{extensions:[".cake",".cs",".cs.pp",".csx",".linq"]},cpp:{extensions:[".c++",".cc",".cp",".cpp",".cppm",".cxx",".h",".h++",".hh",".hpp",".hxx",".idl",".inc",".inl",".ino",".ipp",".ixx",".rc",".re",".tcc",".tpp",".txx",".i"]},cobol:{extensions:[".cbl",".ccp",".cob",".cobol",".cpy"]},css:{extensions:[".css",".wxss"]},clojure:{extensions:[".bb",".boot",".cl2",".clj",".cljc",".cljs",".cljs.hl",".cljscm",".cljx",".edn",".hic"],filenames:["riemann.config"]},ql:{extensions:[".ql",".qll"]},coffeescript:{extensions:["._coffee",".cake",".cjsx",".coffee",".iced"],filenames:["Cakefile"]},cuda:{extensions:[".cu",".cuh"]},dart:{extensions:[".dart"]},dockerfile:{extensions:[".containerfile",".dockerfile"],filenames:["Containerfile","Dockerfile"]},dotenv:{extensions:[".env"],filenames:[".env",".env.ci",".env.dev",".env.development",".env.development.local",".env.example",".env.local",".env.prod",".env.production",".env.sample",".env.staging",".env.test",".env.testing"]},html:{extensions:[".ect",".ejs",".ejs.t",".jst",".hta",".htm",".html",".html.hl",".html5",".inc",".jsp",".njk",".tpl",".twig",".wxml",".xht",".xhtml",".phtml",".liquid"]},elixir:{extensions:[".ex",".exs"],filenames:["mix.lock"]},erlang:{extensions:[".app",".app.src",".erl",".es",".escript",".hrl",".xrl",".yrl"],filenames:["Emakefile","rebar.config","rebar.config.lock","rebar.lock"]},fsharp:{extensions:[".fs",".fsi",".fsx"]},go:{extensions:[".go"]},groovy:{extensions:[".gradle",".groovy",".grt",".gtpl",".gvy",".jenkinsfile"],filenames:["Jenkinsfile","Jenkinsfile"]},graphql:{extensions:[".gql",".graphql",".graphqls"]},terraform:{extensions:[".hcl",".nomad",".tf",".tfvars",".workflow"]},hlsl:{extensions:[".cginc",".fx",".fxh",".hlsl",".hlsli"]},erb:{extensions:[".erb",".erb.deface",".rhtml"]},razor:{extensions:[".cshtml",".razor"]},haml:{extensions:[".haml",".haml.deface"]},handlebars:{extensions:[".handlebars",".hbs"]},haskell:{extensions:[".hs",".hs-boot",".hsc"]},ini:{extensions:[".cfg",".cnf",".dof",".ini",".lektorproject",".prefs",".pro",".properties",".url"],filenames:[".buckconfig",".coveragerc",".flake8",".pylintrc","HOSTS","buildozer.spec","hosts","pylintrc","vlcrc"]},json:{extensions:[".4DForm",".4DProject",".JSON-tmLanguage",".avsc",".geojson",".gltf",".har",".ice",".json",".json.example",".jsonl",".mcmeta",".sarif",".tact",".tfstate",".tfstate.backup",".topojson",".webapp",".webmanifest",".yy",".yyp"],filenames:[".all-contributorsrc",".arcconfig",".auto-changelog",".c8rc",".htmlhintrc",".imgbotconfig",".nycrc",".tern-config",".tern-project",".watchmanconfig","MODULE.bazel.lock","Package.resolved","Pipfile.lock","bun.lock","composer.lock","deno.lock","flake.lock","mcmod.info"]},jsonc:{extensions:[".code-snippets",".code-workspace",".jsonc",".sublime-build",".sublime-color-scheme",".sublime-commands",".sublime-completions",".sublime-keymap",".sublime-macro",".sublime-menu",".sublime-mousemap",".sublime-project",".sublime-settings",".sublime-theme",".sublime-workspace",".sublime_metrics",".sublime_session"],filenames:[".babelrc",".devcontainer.json",".eslintrc.json",".jscsrc",".jshintrc",".jslintrc",".swcrc","api-extractor.json","argv.json","devcontainer.json","extensions.json","jsconfig.json","keybindings.json","language-configuration.json","launch.json","profiles.json","settings.json","tasks.json","tsconfig.json","tslint.json"]},java:{extensions:[".jav",".java",".jsh"]},javascript:{extensions:["._js",".bones",".cjs",".es",".es6",".frag",".gs",".jake",".javascript",".js",".jsb",".jscad",".jsfl",".jslib",".jsm",".jspre",".jss",".mjs",".njs",".pac",".sjs",".ssjs",".xsjs",".xsjslib"],filenames:["Jakefile"]},julia:{extensions:[".jl"]},kotlin:{extensions:[".kt",".ktm",".kts"]},less:{extensions:[".less"]},lua:{extensions:[".fcgi",".lua",".luau",".nse",".p8",".pd_lua",".rbxs",".rockspec",".wlua"],filenames:[".luacheckrc"]},makefile:{extensions:[".d",".mak",".make",".makefile",".mk",".mkfile"],filenames:["BSDmakefile","GNUmakefile","Kbuild","Makefile","Makefile.am","Makefile.boot","Makefile.frag","Makefile.in","Makefile.inc","Makefile.wat","makefile","makefile.sco","mkfile"]},markdown:{extensions:[".livemd",".markdown",".md",".mdown",".mdwn",".mdx",".mkd",".mkdn",".mkdown",".ronn",".scd",".workbook"],filenames:["contents.lr"]},"objective-c":{extensions:[".h",".m"]},"objective-cpp":{extensions:[".mm"]},php:{extensions:[".aw",".ctp",".fcgi",".inc",".install",".module",".php",".php3",".php4",".php5",".phps",".phpt",".theme"],filenames:[".php",".php_cs",".php_cs.dist","Phakefile"]},perl:{extensions:[".al",".cgi",".fcgi",".perl",".ph",".pl",".plx",".pm",".psgi",".t"],filenames:[".latexmkrc","Makefile.PL","Rexfile","ack","cpanfile","latexmkrc"]},powershell:{extensions:[".ps1",".psd1",".psm1"]},pug:{extensions:[".jade",".pug"]},python:{extensions:[".cgi",".codon",".fcgi",".gyp",".gypi",".lmi",".py",".py3",".pyde",".pyi",".pyp",".pyt",".pyw",".rpy",".sage",".spec",".tac",".wsgi",".xpy"],filenames:[".gclient","DEPS","SConscript","SConstruct","wscript"]},r:{extensions:[".r",".rd",".rsx"],filenames:[".Rprofile","expr-dist"]},ruby:{extensions:[".builder",".eye",".fcgi",".gemspec",".god",".jbuilder",".mspec",".pluginspec",".podspec",".prawn",".rabl",".rake",".rb",".rbi",".rbuild",".rbw",".rbx",".ru",".ruby",".spec",".thor",".watchr"],filenames:[".irbrc",".pryrc",".simplecov","Appraisals","Berksfile","Brewfile","Buildfile","Capfile","Dangerfile","Deliverfile","Fastfile","Gemfile","Guardfile","Jarfile","Mavenfile","Podfile","Puppetfile","Rakefile","Snapfile","Steepfile","Thorfile","Vagrantfile","buildfile"]},rust:{extensions:[".rs",".rs.in"]},scss:{extensions:[".scss"]},sql:{extensions:[".cql",".ddl",".inc",".mysql",".prc",".sql",".tab",".udf",".viw"]},sass:{extensions:[".sass"]},scala:{extensions:[".kojo",".sbt",".sc",".scala"]},shellscript:{extensions:[".bash",".bats",".cgi",".command",".fcgi",".fish",".ksh",".sh",".sh.in",".tmux",".tool",".trigger",".zsh",".zsh-theme"],filenames:[".bash_aliases",".bash_functions",".bash_history",".bash_logout",".bash_profile",".bashrc",".cshrc",".envrc",".flaskenv",".kshrc",".login",".profile",".tmux.conf",".zlogin",".zlogout",".zprofile",".zshenv",".zshrc","9fs","PKGBUILD","bash_aliases","bash_logout","bash_profile","bashrc","cshrc","gradlew","kshrc","login","man","profile","tmux.conf","zlogin","zlogout","zprofile","zshenv","zshrc"]},slang:{extensions:[".fxc",".hlsl",".s",".slang",".slangh",".usf",".ush",".vfx"]},slim:{extensions:[".slim"]},solidity:{extensions:[".sol"]},stylus:{extensions:[".styl"]},svelte:{extensions:[".svelte"]},swift:{extensions:[".swift"]},systemverilog:{extensions:[".sv",".svh",".vh"]},typescriptreact:{extensions:[".tsx"]},latex:{extensions:[".aux",".bbx",".cbx",".cls",".dtx",".ins",".lbx",".ltx",".mkii",".mkiv",".mkvi",".sty",".tex",".toc"]},typescript:{extensions:[".cts",".mts",".ts"]},verilog:{extensions:[".v",".veo"]},vim:{extensions:[".vba",".vim",".vimrc",".vmb"],filenames:[".exrc",".gvimrc",".nvimrc",".vimrc","_vimrc","gvimrc","nvimrc","vimrc"]},vb:{extensions:[".vb",".vbhtml",".Dsr",".bas",".cls",".ctl",".frm",".vbs"]},vue:{extensions:[".nvue",".vue"]},xml:{extensions:[".adml",".admx",".ant",".axaml",".axml",".builds",".ccproj",".ccxml",".clixml",".cproject",".cscfg",".csdef",".csl",".csproj",".ct",".depproj",".dita",".ditamap",".ditaval",".dll.config",".dotsettings",".filters",".fsproj",".fxml",".glade",".gml",".gmx",".gpx",".grxml",".gst",".hzp",".iml",".ivy",".jelly",".jsproj",".kml",".launch",".mdpolicy",".mjml",".mod",".mojo",".mxml",".natvis",".ncl",".ndproj",".nproj",".nuspec",".odd",".osm",".pkgproj",".plist",".pluginspec",".proj",".props",".ps1xml",".psc1",".pt",".pubxml",".qhelp",".rdf",".res",".resx",".rss",".sch",".scxml",".sfproj",".shproj",".srdf",".storyboard",".sublime-snippet",".svg",".sw",".targets",".tml",".typ",".ui",".urdf",".ux",".vbproj",".vcxproj",".vsixmanifest",".vssettings",".vstemplate",".vxml",".wixproj",".workflow",".wsdl",".wsf",".wxi",".wxl",".wxs",".x3d",".xacro",".xaml",".xib",".xlf",".xliff",".xmi",".xml",".xml.dist",".xmp",".xproj",".xsd",".xspec",".xul",".zcml"],filenames:[".classpath",".cproject",".project","App.config","NuGet.config","Settings.StyleCop","Web.Debug.config","Web.Release.config","Web.config","packages.config"]},xsl:{extensions:[".xsl",".xslt"]},yaml:{extensions:[".mir",".reek",".rviz",".sublime-syntax",".syntax",".yaml",".yaml-tmlanguage",".yaml.sed",".yml",".yml.mysql"],filenames:[".clang-format",".clang-tidy",".clangd",".gemrc","CITATION.cff","glide.lock","pixi.lock","yarn.lock"]},javascriptreact:{extensions:[".jsx"]},legend:{extensions:[".pure"]}};f();f();var Cyr=[".ejs",".erb",".haml",".hbs",".j2",".jinja",".jinja2",".liquid",".mustache",".njk",".php",".pug",".slim",".webc"],byr={".php":[".blade"]},QB=Object.keys(V5).flatMap(t=>V5[t].extensions);var Rft=be(require("node:path"));var cK=class{constructor(e,r,n){this.languageId=e;this.isGuess=r;this.fileExtension=n}static{a(this,"Language")}},ide=class{static{a(this,"LanguageDetection")}},Pft=new Map,aK=new Map;for(let[t,{extensions:e,filenames:r}]of Object.entries(V5)){for(let n of e)Pft.set(n,[...Pft.get(n)??[],t]);for(let n of r??[])aK.set(n,[...aK.get(n)??[],t])}var kft=class extends ide{static{a(this,"FilenameAndExensionLanguageDetection")}detectLanguage(e){let r=Kn(e.uri),n=Rft.extname(r).toLowerCase(),o=this.extensionWithoutTemplateLanguage(r,n),s=this.detectLanguageId(r,o),c=this.computeFullyQualifiedExtension(n,o);return s?new cK(s.languageId,s.isGuess,c):new cK(e.languageId,!0,c)}extensionWithoutTemplateLanguage(e,r){if(Cyr.includes(r)){let n=e.substring(0,e.lastIndexOf(".")),o=Rft.extname(n).toLowerCase();if(o.length>0&&QB.includes(o)&&this.isExtensionValidForTemplateLanguage(r,o))return o}return r}isExtensionValidForTemplateLanguage(e,r){let n=byr[e];return!n||n.includes(r)}detectLanguageId(e,r){if(aK.has(e))return{languageId:aK.get(e)[0],isGuess:!1};let n=Pft.get(r)??[];if(n.length>0)return{languageId:n[0],isGuess:n.length>1};for(;e.includes(".");)if(e=e.replace(/\.[^.]*$/,""),aK.has(e))return{languageId:aK.get(e)[0],isGuess:!1}}computeFullyQualifiedExtension(e,r){return e!==r?r+e:e}},Nft=class extends ide{constructor(r){super();this.delegate=r}static{a(this,"GroupingLanguageDetection")}detectLanguage(r){let n=this.delegate.detectLanguage(r),o=n.languageId;return o==="c"||o==="cpp"?new cK("cpp",n.isGuess,n.fileExtension):n}},Oft=class extends ide{constructor(r){super();this.delegate=r}static{a(this,"ClientProvidedLanguageDetection")}detectLanguage(r){return r.uri.startsWith("untitled:")||r.uri.startsWith("vscode-notebook-cell:")?new cK(r.languageId,!0,""):this.delegate.detectLanguage(r)}},shi=new Nft(new Oft(new kft));function _v({uri:t,languageId:e}){let r=shi.detectLanguage({uri:t,languageId:"UNKNOWN"});return r.languageId==="UNKNOWN"?e:r.languageId}a(_v,"detectLanguage");f();f();f();f();function qd(t){if(t.isCancellationRequested)throw new dPe}a(qd,"throwIfCancellationRequested");function vT(t){return t instanceof dPe?!0:t instanceof Error&&t.name===Dft&&t.message===Dft}a(vT,"isCancellationError");var dPe=class extends Error{static{a(this,"CancellationError")}constructor(){super(Dft),this.name=this.message}},Dft="Canceled",fPe=class{constructor(){this.items=[]}static{a(this,"Stack")}push(e){this.items.push(e)}pop(){return this.items.pop()}peek(){return this.items[this.items.length-1]}tryPeek(){return this.items.length>0}toArray(){return this.items}};function $B(t){switch(t){case 0:case 2:case 7:case 8:case 11:case 12:case 13:case 14:return!0;default:return!1}}a($B,"isTypeDefinition");var lc=class t{static{a(this,"TextRange")}static{this.empty=new t(0,0)}constructor(e,r){this.start=e,this.length=r}static fromBounds(e,r){return new t(e,r-e)}get end(){return this.start+this.length}contains(e){return this.start<=e&&this.end>=e}containsRange(e){return this.start<=e.start&&this.end>=e.end}equals(e){return this.start===e.start&&this.length===e.length}getText(e){return e.slice(this.start,this.end)}getTextWithIndentation(e,r){let n=[],o=this.start;for(o=Syr(e,e.length,o),Tyr(n,r);o<this.end;)e[o]!=="\r"&&e[o]!==`
@@ -2844,7 +2844,7 @@ new Anthropic({ apiKey, dangerouslyAllowBrowser: true });
2844
2844
 
2845
2845
  Human:`;Yl.AI_PROMPT=`
2846
2846
 
2847
- Assistant:`;Yl.DEFAULT_TIMEOUT=6e5;Yl.AnthropicError=On;Yl.APIError=rp;Yl.APIConnectionError=t9;Yl.APIConnectionTimeoutError=jne;Yl.APIUserAbortError=hh;Yl.NotFoundError=Vne;Yl.ConflictError=Hne;Yl.RateLimitError=zne;Yl.BadRequestError=Qne;Yl.AuthenticationError=$ne;Yl.InternalServerError=Yne;Yl.PermissionDeniedError=Gne;Yl.UnprocessableEntityError=Wne;Yl.toFile=aze;var bx=class extends Yl{static{a(this,"Anthropic")}constructor(){super(...arguments),this.completions=new lV(this),this.messages=new o9(this),this.models=new uV(this),this.beta=new UR(this)}};bx.Completions=lV;bx.Messages=o9;bx.Models=uV;bx.Beta=UR;var{HUMAN_PROMPT:Ups,AI_PROMPT:qps}=bx;var xze=class extends Fv{static{a(this,"AnthropicProvider")}constructor(e){super(gs.Anthropic,e)}async getAllModels(){await this.ensureKnownModelsCache();let e=await new da(this.ctx.get(Zn)).getAPIKey(this.providerName);if(!e)throw new Error(`API key not found for provider: ${this.providerName}`);let r=new bx({apiKey:e,fetch:jps(this.ctx.get(dr))});try{let n=await r.models.list(),o=[];for(let s of n.data){let c=this._knownModels?.[s.id];c&&o.push({providerName:this.providerName,modelId:s.id,isRegistered:!1,isCustomModel:!1,modelCapabilities:c})}return o}catch(n){throw rfe.error(this.ctx,`Error fetching models from ${this.providerName} provider:`,n),n}}};function jps(t){return async(e,r)=>{let n=Qps(e,r),o=Gps(r),s=await t.fetch(n,o);return Hps(s)}}a(jps,"createAnthropicFetchAdapter");function Qps(t,e){return t instanceof Request?($ps(t,e),t.url):t instanceof URL?t.toString():t}a(Qps,"convertInputToString");function $ps(t,e){e&&(e.headers??=t.headers,e.method??=t.method,!e.body&&!t.bodyUsed&&(e.body=t.body))}a($ps,"mergeRequestInit");function Gps(t){let e;return t?.headers&&(e=Vps(t.headers)),{method:t?.method||"GET",headers:e,body:t?.body,signal:t?.signal||void 0}}a(Gps,"convertToFetchOptions");function Vps(t){let e={};if(t instanceof Headers)for(let[r,n]of t.entries())e[r]=n;else if(Array.isArray(t))for(let[r,n]of t)e[r]=n;else return t;return e}a(Vps,"convertHeaders");async function Hps(t){let e=t.body(),r=null;if(e)r=Wps(e);else{let n=await t.text();r=Yps(n)}return new globalThis.Response(r,{status:t.status,statusText:t.statusText,headers:new Headers(t.headers)})}a(Hps,"convertToWebResponse");function Wps(t){return new ReadableStream({start(e){let r=zps(t,e);return()=>r()},cancel(){"destroy"in t&&typeof t.destroy=="function"&&t.destroy()}})}a(Wps,"createReadableStreamFromNodeStream");function zps(t,e){let r=a(c=>{e.enqueue(new Uint8Array(c))},"onData"),n=a(()=>{e.close(),s()},"onEnd"),o=a(c=>{e.error(c),s()},"onError"),s=a(()=>{t.off("data",r),t.off("end",n),t.off("error",o)},"cleanup");return t.on("data",r),t.on("end",n),t.on("error",o),s}a(zps,"setupStreamHandlers");function Yps(t){return new ReadableStream({start(e){e.enqueue(new TextEncoder().encode(t)),e.close()}})}a(Yps,"createReadableStreamFromText");f();var Ize=class extends Fv{static{a(this,"GeminiProvider")}constructor(e){super(gs.Gemini,e)}};f();var wze=class extends Fv{static{a(this,"GroqProvider")}constructor(e){super(gs.Groq,e)}};f();var Rze=class extends Fv{static{a(this,"OpenAIProvider")}constructor(e){super(gs.OpenAI,e)}};f();var txn=16e3,Pze=class extends Fv{static{a(this,"OpenRouterProvider")}constructor(e){super(gs.OpenRouter,e)}async getAllModels(){try{let e=this.getFetchModelUrl(),r={"Content-Type":"application/json"},n=await new da(this.ctx.get(Zn)).getAPIKey(this.providerName);n&&(r.Authorization=`Bearer ${n}`);let o=await this.ctx.get(dr).fetch(e,{method:"GET",headers:r});if(!o.ok)throw new Error(`Failed to fetch models: ${o.status} ${o.statusText}`);let s=await o.json();if(s.error)throw new Error(`API Error: ${JSON.stringify(s.error)}`);let c=[];for(let l of s.data)c.push({providerName:this.providerName,modelId:l.id,isRegistered:!1,isCustomModel:!1,modelCapabilities:{name:l.name,maxInputTokens:Math.max(0,l.top_provider.context_length-txn),maxOutputTokens:txn,toolCalling:l.supported_parameters?.includes("tools")??!1,vision:l.architecture?.input_modalities?.includes("image")??!1}});return c}catch(e){throw rfe.error(this.ctx,`Error fetching models from ${this.providerName} provider:`,e),e}}getFetchModelUrl(){return`${this.getBaseUrl()}/models?supported_parameters=tools`}};var dV=class{static{a(this,"BYOKProviderFactory")}constructor(e){this.providers=new Map([[gs.OpenAI,new Rze(e)],[gs.Gemini,new Ize(e)],[gs.Groq,new wze(e)],[gs.OpenRouter,new Pze(e)],[gs.Anthropic,new xze(e)]])}getBYOKProvider(e){return this.providers.get(e)}};var Kps=T.Object({providerName:T.Optional(T.String()),enableFetchUrl:T.Optional(T.Boolean())});async function Jps(t,e,r){try{let{providerName:n,enableFetchUrl:o}=r,s=new da(t.get(Zn)),c=[];if(n)if(o){if(!ike(n))return[null,{code:Et.InvalidRequest,message:`enableFetchUrl is not supported for the ${n} provider`}];if(!await s.getAPIKey(n))return[null,{code:Et.InvalidRequest,message:`API key is required to fetch models from ${n}`}];let u=t.get(dV).getBYOKProvider(n);if(u){let d=await u.getAllModels(),p=new Map;d.forEach(g=>{let A=`${g.providerName}_${g.modelId}`;p.set(A,g)});let h=await s.getStoredModelConfigs(n),m=[];Object.entries(h).forEach(([g,A])=>{m.push({providerName:n,modelId:g,deploymentUrl:A.deploymentUrl,isRegistered:A.isRegistered,isCustomModel:A.isCustomModel,modelCapabilities:A.modelCapabilities})}),m.forEach(g=>{let A=`${g.providerName}_${g.modelId}`;p.set(A,g)}),c.push(...p.values())}}else{let l=await s.getStoredModelConfigs(n);Object.entries(l).forEach(([u,d])=>{c.push({providerName:n,modelId:u,deploymentUrl:d.deploymentUrl,isRegistered:d.isRegistered,isCustomModel:d.isCustomModel,modelCapabilities:d.modelCapabilities})})}else{let l=Object.values(gs);for(let u of l){let d=await s.getStoredModelConfigs(u);Object.entries(d).forEach(([p,h])=>{c.push({providerName:u,modelId:p,deploymentUrl:h.deploymentUrl,isRegistered:h.isRegistered,isCustomModel:h.isCustomModel,modelCapabilities:h.modelCapabilities})})}}return[{models:c},null]}catch(n){return[null,{code:Et.InternalError,message:`Failed to get models: ${n instanceof Error?n.message:String(n)}`}]}}a(Jps,"handleBYOKListModelsChecked");var rxn=Ke(Kps,Jps);f();var Xps=T.Object({providerName:T.String(),apiKey:T.String(),modelId:T.Optional(T.String())});async function Zps(t,e,r){try{let n=new da(t.get(Zn)),{providerName:o,apiKey:s,modelId:c}=r,l=CM(o);if(l===1&&!c)return[null,{code:Et.InvalidRequest,message:"modelId is required for PerModelDeployment auth type"}];await n.storeAPIKey(o,s,l,c);let u=`API key saved successfully for provider ${o}`;return[{success:!0,message:c?`${u} and model ${c}`:u},null]}catch(n){return[null,{code:Et.InternalError,message:`Failed to save API key: ${n instanceof Error?n.message:String(n)}`}]}}a(Zps,"handleBYOKSaveApiKeyChecked");var nxn=Ke(Xps,Zps);f();var ehs=T.Object({providerName:T.String(),modelId:T.String(),isRegistered:T.Boolean(),isCustomModel:T.Boolean(),deploymentUrl:T.Optional(T.String()),apiKey:T.Optional(T.String()),modelCapabilities:T.Optional(T.Object({name:T.String(),maxInputTokens:T.Optional(T.Number()),maxOutputTokens:T.Optional(T.Number()),toolCalling:T.Boolean(),vision:T.Boolean()}))});async function ths(t,e,r){try{let{providerName:n,modelId:o,isRegistered:s,isCustomModel:c,deploymentUrl:l,apiKey:u,modelCapabilities:d}=r,p=new da(t.get(Zn)),h=CM(n);if(h===1&&!l)return[null,{code:Et.InvalidRequest,message:`deploymentUrl is required for the ${n} provider`}];if(l||d){let m={deploymentUrl:l,isRegistered:s,isCustomModel:c,modelCapabilities:d};await p.saveModelConfig(n,o,m,u,h)}else u!==void 0&&await p.storeAPIKey(n,u,h,o);return[{success:!0,message:`Model ${o} saved successfully for provider ${n}`},null]}catch(n){return[null,{code:Et.InternalError,message:`Failed to save model: ${n instanceof Error?n.message:String(n)}`}]}}a(ths,"handleBYOKSaveModelChecked");var ixn=Ke(ehs,ths);f();var rhs=T.Object({uri:T.String({minLength:1})});async function nhs(t,e,r){let n=await t.get(An).getOrReadTextDocument(r);return[{status:Vc(n),...n.status==="invalid"&&{reason:n.reason},...n.status==="notfound"&&{reason:n.message}},null]}a(nhs,"handleCheckFileStatusChecked");var oxn=Ke(rhs,nhs);f();var ihs=T.Object({});function sxn(t,e){return typeof t!="number"||typeof e!="number"||e===0?0:Math.max(0,Math.min(100,t/e*100))}a(sxn,"calculatePercentRemaining");async function ohs(t,e,r){let n=await t.get(mn).getSession();if(n){let o=await Qnt(t,n);if(o.ok){let s=await o.json();return s.access_type_sku==="free_limited_copilot"?[{chat:{percentRemaining:sxn(s.limited_user_quotas?.chat,s.monthly_quotas?.chat),unlimited:!1,overagePermitted:!1},completions:{percentRemaining:sxn(s.limited_user_quotas?.completions,s.monthly_quotas?.completions),unlimited:!1,overagePermitted:!1},premiumInteractions:{percentRemaining:0,unlimited:!1,overagePermitted:!1},resetDate:s.limited_user_reset_date??"",copilotPlan:"free"},null]:[{chat:{percentRemaining:s.quota_snapshots?.chat?.percent_remaining??100,unlimited:s.quota_snapshots?.chat?.unlimited??!1,overagePermitted:s.quota_snapshots?.chat?.overage_permitted??!1},completions:{percentRemaining:s.quota_snapshots?.completions?.percent_remaining??100,unlimited:s.quota_snapshots?.completions?.unlimited??!1,overagePermitted:s.quota_snapshots?.completions?.overage_permitted??!1},premiumInteractions:{percentRemaining:s.quota_snapshots?.premium_interactions?.percent_remaining??100,unlimited:s.quota_snapshots?.premium_interactions?.unlimited??!1,overagePermitted:s.quota_snapshots?.premium_interactions?.overage_permitted??!1},resetDate:s.quota_reset_date??"",copilotPlan:s.copilot_plan},null]}return[null,{code:Et.InternalError,message:"Failed to fetch quota info"}]}else return[null,{code:Et.InternalError,message:"Not signed in"}]}a(ohs,"handleCheckQuotaChecked");var axn=Ke(ihs,ohs);f();var shs=T.Object({options:T.Optional(T.Object({localChecksOnly:T.Optional(T.Boolean()),forceRefresh:T.Optional(T.Boolean())}))});async function ahs(t,e,r){return[await t.get(mn).checkAndUpdateStatus(r.options),null]}a(ahs,"handleCheckStatusChecked");var cxn=Ke(shs,ahs);f();var chs=T.Object({pullRequestId:T.Number(),repoOwner:T.String({minLength:1}),repoName:T.String({minLength:1})});async function lhs(t,e,r){try{let o=await new dJ(t).getAllSessions(r.pullRequestId,e);if(!o||o.length===0)return[null,{code:Et.InvalidRequest,message:"No session found for this pull request"}];let s=o[0];return s.state==="completed"?(gt(t,"githubApi.cancelCodingAgent",Ht.createAndMarkAsIssued()),[{success:!0},null]):s.workflow_run_id?(await new qA(t).cancelWorkflow(r.repoOwner,r.repoName,s.workflow_run_id),gt(t,"githubApi.cancelCodingAgent",Ht.createAndMarkAsIssued()),[{success:!0},null]):[null,{code:Et.InternalError,message:"No workflow run ID found in session"}]}catch(n){if(ji(t,n,"githubApi.cancelCodingAgent"),n instanceof sJ)return[null,{code:Et.NoCopilotToken,message:n.message}];if(n instanceof lg)return[null,{code:Et.InvalidRequest,message:n.message}];if(n instanceof Qv)return[null,{code:Et.InvalidRequest,message:n.message}];if(n instanceof $v)return[null,{code:Et.NoGitHubToken,message:n.message}];if(n instanceof Vf&&n.isClientError())return[null,{code:Et.InvalidRequest,message:n.message}];if(n instanceof Error)return[null,{code:Et.InternalError,message:`Unexpected error happened: ${n.message}`}];let o=JSON.stringify(n)??String(n);return[null,{code:Et.InternalError,message:`Unexpected error happened: ${o}`}]}}a(lhs,"handleCancelCodingAgentChecked");var lxn=Ke(chs,lhs);f();var uhs=T.Object({});async function dhs(t,e,r){return[(await vw(t)).map(s=>({slug:s.slug,name:s.name,description:s.description,avatarUrl:s.avatarUrl})),null]}a(dhs,"handleConversationAgentsChecked");var uxn=Ke(uhs,dhs);f();f();var Pye=be(uu());function fhs(t,e,r){let n=Ht.createAndMarkAsIssued({languageId:String(e.detectedLanguageId),requestedDocumentVersion:String(r),actualDocumentVersion:String(e.version)});return gt(t,"getCompletions.docVersionMismatch",n)}a(fhs,"telemetryVersionMismatch");async function eN(t,e,r){let o=t.get(qr).getTextDocumentUnsafe(e);if(!o)throw new Pye.ResponseError(Et.InvalidParams,`Document for URI could not be found: ${e.uri}`);let s=await AM(t,e,o.getText());if(s.status==="invalid")throw t.get(ds).setInactive(s.reason),new Pye.ResponseError(Et.CopilotNotAvailable,s.reason);if(e.version!==void 0&&o.version!==e.version)throw r?.isCancellationRequested||(fhs(t,o,e.version),ec.debug(t,`Requested document version was ${e.version} but actual document version was ${o.version}.`)),new Pye.ResponseError(Et.ContentModified,"Document Version Mismatch");return o}a(eN,"getTextDocument");async function qR(t,e,r){let n=e.textDocument??e.doc;if(n)try{return await eN(t,n,r)}catch(o){if(o instanceof Pye.ResponseError){if(o.code===Et.CopilotNotAvailable)return;if(o.code===Et.InvalidParams){ec.warn(t,`Document not found for conversation: ${n.uri}. Continuing without this file.`);return}}throw o}}a(qR,"getTextDocumentIfAvailable");var phs=T.Union([T.Literal("keyboard"),T.Literal("toolbar")]),hhs=T.Object({turnId:WU,codeBlockIndex:T.Number(),source:phs,copiedCharacters:T.Number(),totalCharacters:T.Number(),copiedText:T.String(),doc:T.Optional(eNe),textDocument:T.Optional(BA),position:T.Optional(N0),conversationSource:T.Optional(Hv)});async function mhs(t,e,r){let n=await qR(t,r,e),o={totalCharacters:r.totalCharacters,copiedCharacters:r.copiedCharacters},s=r.position??r.doc?.position;n&&s&&(o={...o,currentLine:s.line});let c=SM(r.conversationSource),l=t.get(Zi).findByTurnId(r.turnId),u=await pa(t,l,{languageId:n?.detectedLanguageId??""});return cg(t,n,{codeBlockIndex:r.codeBlockIndex.toString(),source:r.source,uiKind:c,mode:l?.turn.getChatModeWithDefault()?.toLowerCase()??"unknown",modelId:l?.turn.getResolvedModelId()??"unknown"},o,`${w0(c)}.acceptedCopy`,u),["OK",null]}a(mhs,"handleConversationCodeCopyChecked");var dxn=Ke(hhs,mhs);f();var ghs=T.Union([T.Literal("keyboard"),T.Literal("toolbar"),T.Literal("diff")]),Ahs=T.Object({turnId:WU,source:ghs,codeBlockIndex:T.Number(),acceptedLength:T.Optional(T.Number()),totalCharacters:T.Number(),newFile:T.Optional(T.Boolean()),doc:T.Optional(eNe),textDocument:T.Optional(BA),position:T.Optional(N0),conversationSource:T.Optional(Hv)});async function _hs(t,e,r){let n=await qR(t,r,e),o={totalCharacters:r.totalCharacters,acceptedLength:r.acceptedLength??r.totalCharacters},s=r.position??r.doc?.position;n&&s&&(o={...o,insertionOffset:n.offsetAt(s),currentLine:s.line});let c=SM(r.conversationSource),l=t.get(Zi).findByTurnId(r.turnId),u=await pa(t,l,{languageId:n?.detectedLanguageId??""});return cg(t,n,{codeBlockIndex:r.codeBlockIndex.toString(),source:r.source,uiKind:c,compType:r.acceptedLength&&r.acceptedLength<r.totalCharacters?"partial":"full",mode:l?.turn.getChatModeWithDefault()?.toLowerCase()??"unknown",modelId:l?.turn.getResolvedModelId()??"unknown"},o,`${w0(c)}.acceptedInsert`,u),["OK",null]}a(_hs,"handleConversationCodeInsertChecked");var fxn=Ke(Ahs,_hs);f();f();function s9(t){if(t?.originalBillingMultiplier===void 0)return;let e=t.autoModeDiscountedCost??0;return Math.round((t.originalBillingMultiplier??0)*(1-e)*100)/100}a(s9,"calculateBillingMultiplier");f();var kze=T.Array(Xu);function Nze(t){if(t.textDocument?.uri)return{uri:t.textDocument.uri,selection:t.selection,visibleRange:t.visibleRanges?.[0]}}a(Nze,"resolveAsActiveEditor");f();var pxn=be(uu());var Oze=new pxn.ProgressType,kGt=class{constructor(e){this.progressToken=e}static{a(this,"WorkDoneProgressHandler")}async begin(e,r,n,o){await e.get(Er).connection.sendProgress(Oze,this.progressToken,{kind:"begin",title:`Conversation ${r.id} Turn ${n.id}`,conversationId:r.id,turnId:n.id,agentSlug:n.agent?.agentSlug,...o})}async report(e,r,n,o){await e.get(Er).connection.sendProgress(Oze,this.progressToken,{kind:"report",conversationId:r.id,turnId:n.id,...o})}async end(e,r,n,o){await e.get(Er).connection.sendProgress(Oze,this.progressToken,{kind:"end",conversationId:r.id,turnId:n.id,...o})}async cancel(e,r,n,o){await e.get(Er).connection.sendProgress(Oze,this.progressToken,{kind:"end",conversationId:r.id,turnId:n.id,cancellationReason:"CancelledByUser",error:o})}};function iie(t){return new kGt(t.workDoneToken)}a(iie,"createProgressHandler");f();f();var Dze=new Fe("agenticTurnProcessor"),Mze=class{constructor(e,r,n){this.turnContext=e;this.strategy=r;this.chatFetcher=n;this.conversationProgress=e.ctx.get(Qs),this.chatFetcher=this.chatFetcher??new ea(e.ctx),this.turnSuggestions=new BM(e.ctx,this.chatFetcher),this.conversation=e.conversation,this.turn=e.turn}static{a(this,"AgenticTurnProcessor")}async process(e,r,n,o,s,c){try{await this.processWithModelAndToolCall(e,r,this.turnContext,n,o,s,c)}catch(l){Br.error(this.turnContext.ctx,`Error processing turn ${this.turn.id}`,l);let u=l instanceof Error?l.message:String(l);this.turn.status="error",this.updateTurnResponseWithError(u),await this.endProgress({error:{message:u,code:$K.Unknown,responseIsIncomplete:!0}})}}async processWithModelAndToolCall(e,r,n,o,s,c,l){if(r.isCancellationRequested)return;await this.conversationProgress.begin(this.conversation,this.turn,e);let u=await pa(this.turnContext.ctx,this.turnContext,{languageId:s?.detectedLanguageId??""});this.turn.chatMode!==void 0&&!Bht(this.turn.chatMode)&&gt(this.turnContext.ctx,"customAgent.turn",u.extendedBy({mode:this.turn.chatMode.isBuiltIn?this.turn.chatMode.name:"[redacted]"})),r.onCancellationRequested(async()=>{Dze.info(this.turnContext.ctx,`Cancellation requested for turn ${this.turn.id}`),this.turn.status="cancelled",await this.cancelProgress()});let d=lq().find(p=>p.id===this.turn.template?.templateId);if(d?.response){await this.handleTemplateResponse(d,this.turn.template.userQuestion,r);return}try{let p=l&&c?await Lv(this.turnContext.ctx,l,c):await Vi.getModelConfiguration(this.turnContext.ctx,"edits",c,void 0,this.conversation.id.toString(),hw(this.conversation.turns));this.turnContext.setResolvedModelConfiguration(p),await new aX(this.turnContext,this.chatFetcher,p,u).run(r);let m={suggestedTitle:void 0};if(this.strategy.computeSuggestions){let g=await this.fetchSuggestedTitle(r,u.extendedBy({messageSource:"chat.user"},{}));typeof g=="string"&&g!==""&&(m.suggestedTitle=g)}await this.endProgress(m)}catch(p){if(p instanceof l8)Dze.info(this.turnContext.ctx,`Tool call canceled for turn ${this.turn.id}`,p),this.turn.status="cancelled",await this.cancelProgress();else if(p instanceof xa)Dze.info(this.turnContext.ctx,`Turn ${this.turn.id} was cancelled`,p),this.turn.status="cancelled",this.updateTurnResponseWithError("Cancelled by user"),await this.cancelProgress();else if(p instanceof N4)this.turn.status="error",this.updateTurnResponseWithError(p.message),await this.endProgress({error:{message:p.message,code:$K.ToolRoundExceedError,responseIsIncomplete:!0}});else if(p instanceof jp)this.turn.status="error",this.updateTurnResponseWithError(p.message),await this.endProgress({error:p.conversationError});else throw Dze.error(this.turnContext.ctx,`Error in processing turn ${this.turn.id}`,p),p}}async fetchSuggestedTitle(e,r){let n=await this.turnSuggestions.fetchRawSuggestions(this.turnContext,e,this.strategy.uiKind,r);if(n)return Br.debug(this.turnContext.ctx,"Computed suggested title",n.suggestedTitle),n.suggestedTitle}updateTurnResponseWithError(e){this.turn.response?.message?this.turn.response.message=RU(this.turn.response?.message,{role:"assistant",content:e}):this.turn.response={message:e,type:"meta"}}async endProgress(e){await this.turnContext.steps.finishAll(),await this.conversationProgress.end(this.conversation,this.turn,e)}async cancelProgress(){await this.turnContext.agentToolCalls.finishAll("cancelled"),await this.turnContext.steps.finishAll("cancelled"),await this.conversationProgress.cancel(this.conversation,this.turn)}async handleTemplateResponse(e,r,n){if(!e.response)return;let o=await e.response(this.turnContext,r,n);this.turn.response={type:"meta",message:o.message},this.turn.status=o.error?.responseIsFiltered?"filtered":o.error?.responseIsIncomplete?"error":"success",o.error?.responseIsFiltered||o.error?.responseIsIncomplete?(await this.conversationProgress.report(this.conversation,this.turn,{reply:"Sure, I can definitely do that!",annotations:o.annotations,notifications:o.notifications,references:o.references}),await this.turnContext.steps.finishAll(),await this.endProgress({error:{message:o.message,code:o.error?.code||0,responseIsIncomplete:o.error?.responseIsIncomplete,responseIsFiltered:o.error?.responseIsFiltered}})):(await this.conversationProgress.report(this.conversation,this.turn,{reply:o.message,annotations:o.annotations,notifications:o.notifications,references:o.references,confirmationRequest:o.confirmationRequest}),await this.endProgress())}};f();var NGt="collect-context",OGt="generate-response",Lze=class{constructor(e,r,n){this.turnContext=e;this.strategy=r;this.chatFetcher=n;this.conversationProgress=e.ctx.get(Qs),this.chatFetcher=this.chatFetcher??new ea(e.ctx),this.postProcessor=new yJ(e,this.chatFetcher,r.computeSuggestions),this.conversation=e.conversation,this.turn=e.turn}static{a(this,"ModelTurnProcessor")}async process(e,r,n,o,s,c){try{await this.processWithModel(e,r,this.turnContext,n,o,s,c)}catch(l){Br.error(this.turnContext.ctx,`Error processing turn ${this.turn.id}`,l);let u=l instanceof Error?l.message:String(l);this.turn.status="error",this.turn.response={message:u,type:"meta"},await this.endProgress({error:{message:u,responseIsIncomplete:!0}})}}async processWithModel(e,r,n,o,s,c,l){await this.conversationProgress.begin(this.conversation,this.turn,e);let u=await pa(this.turnContext.ctx,this.turnContext,{languageId:s?.detectedLanguageId??""});if(u=u.extendedBy({mode:this.turn.getChatModeWithDefault().toLowerCase(),...this.turn.userRequestedModel&&{modelId:this.turn.userRequestedModel}}),r.isCancellationRequested){this.turn.status="cancelled",await this.cancelProgress();return}let d=lq().find(g=>g.id===this.turn.template?.templateId);if(d?.response){await this.handleTemplateResponse(d,this.turn.template.userQuestion,r);return}let p=(await vw(this.turnContext.ctx)).find(g=>g.slug===this.turn.agent?.agentSlug);if(p){let g=await this.checkAgentPreconditions(p);if(g){await this.endProgress(g);return}}await n.steps.start(NGt,"Collecting context"),await this.collectContext(n,r,u,this.strategy.uiKind,d,p);let h;l?h="customized":c?h=(await Vi.getModelConfiguration(this.turnContext.ctx,"user",c,void 0,this.conversation.id.toString(),hw(this.conversation.turns))).uiName:h=void 0;let m=await this.strategy.buildConversationPrompt(n,s?.detectedLanguageId??"",void 0,h);if(!m)await n.steps.error(NGt,"Failed to collect context"),await this.endTurnWithResponse(this.strategy.earlyReturnResponse,"error");else{await n.steps.finish(NGt),await n.steps.start(OGt,"Generating response");let g=this.augmentTelemetry(m,u,d,o,s);if(r.isCancellationRequested){this.turn.status="cancelled",await this.cancelProgress();return}let A=await this.fetchConversationResponse(m.messages,r,u.extendedBy({messageSource:"chat.user"},{promptTokenLen:m.tokens}),g,s,c,l),_=await this.strategy.processResponse(this.turn);this.turn.status==="cancelled"&&this.turn.response?.type==="user"?await this.cancelProgress():(await this.finishGenerateResponseStep(A,n),await this.endProgress({error:A.error,followUp:A.followup,suggestedTitle:A.suggestedTitle,skillResolutions:m.skillResolutions,updatedDocuments:_}))}}async checkAgentPreconditions(e){try{let r=e.checkPreconditions?await e.checkPreconditions(this.turnContext.ctx,this.turn):void 0;if(r&&r.type==="authorizationRequired")return{unauthorized:{...r,agentName:e.name,agentSlug:e.slug}}}catch(r){Br.error(this.turnContext.ctx,`Error checking preconditions for agent ${e.slug}`,r);let n=r instanceof Error?r.message:String(r);return this.turn.status="error",this.turn.response={message:n,type:"meta"},{error:{message:n,responseIsIncomplete:!0}}}}async endTurnWithResponse(e,r){this.turn.response={type:"meta",message:e},this.turn.status=r,await this.conversationProgress.report(this.conversation,this.turn,{reply:e}),await this.endProgress()}async handleTemplateResponse(e,r,n){if(!e.response)return;let o=await e.response(this.turnContext,r,n);this.turn.response={type:"meta",message:o.message},this.turn.status=o.error?.responseIsFiltered?"filtered":o.error?.responseIsIncomplete?"error":"success",o.error?.responseIsFiltered||o.error?.responseIsIncomplete?(await this.conversationProgress.report(this.conversation,this.turn,{reply:"Sure, I can definitely do that!",annotations:o.annotations,notifications:o.notifications,references:o.references}),await this.turnContext.steps.finishAll(),await this.endProgress({error:{message:o.message,code:o.error?.code||0,responseIsIncomplete:o.error?.responseIsIncomplete,responseIsFiltered:o.error?.responseIsFiltered}})):(await this.conversationProgress.report(this.conversation,this.turn,{reply:o.message,annotations:o.annotations,notifications:o.notifications,references:o.references,confirmationRequest:o.confirmationRequest}),await this.endProgress())}async collectContext(e,r,n,o,s,c){let u=await new A3e(this.turnContext.ctx,this.chatFetcher).collectContext(e,r,n,o,s,c);return this.turn.skills=u.skillIds.map(d=>({skillId:d})),u}async fetchConversationResponse(e,r,n,o,s,c,l){r.onCancellationRequested(async()=>{await this.cancelProgress()});let u="",d=0,p=new jM((_,y,E,v)=>{let b=_.trim(),x=b.match(Pfe)!==null&&b.endsWith("-->");if(this.conversationProgress.report(this.conversation,this.turn,{reply:_,annotations:y,references:E,hideText:x,notifications:v.map(I=>({severity:"warning",message:I.message}))}),this.turn.response?this.turn.response.message=rNe(this.turn.response.message,_):this.turn.response={message:_,type:"model"},this.turn.annotations.push(...y??[]),u+=_,this.strategy.currentDocument){let I=this.strategy.extractEditsFromResponse(u,this.strategy.currentDocument);I&&I.length>0&&(u="",this.conversationProgress.report(this.conversation,this.turn,{codeEdits:I}),d+=I.length)}}),h=l&&c?await Lv(this.turnContext.ctx,l,c):await Vi.getModelConfiguration(this.turnContext.ctx,"user",c,void 0,this.conversation.id.toString(),pke(e));e=Vi.transformMessages(e,h.modelFamily),this.turnContext.setResolvedModelConfiguration(h);let m=this.turn.getResolvedModelId();m&&(o=o.extendedBy({modelId:m}));let g={modelConfiguration:h,messages:e,uiKind:this.strategy.uiKind,intentParams:{intent:!0,intent_threshold:.7,intent_content:ln(this.turn.request.message)},llmInteraction:this.turnContext.toLlmInteraction()},A=await this.chatFetcher.fetchResponse(g,r,n,(_,y)=>p.isFinishedAfter(_,y));return o=o.extendedBy(void 0,{numCodeEdits:d}),await this.postProcessor.postProcess(A,r,p.appliedText,n,o,ln(this.turn.request.message),this.strategy.uiKind,s)}augmentTelemetry(e,r,n,o,s){let c;return o?(this.turn.request.type="follow-up",_xr(this.turnContext.ctx,this.conversation,this.strategy.uiKind,ln(this.turn.request.message),e.tokens,o.type,o.id,s,r),c=sfe(this.conversation,this.strategy.uiKind,ln(this.turn.request.message).length,e.tokens,o.type,o.id,r,e.skillResolutions)):c=sfe(this.conversation,this.strategy.uiKind,ln(this.turn.request.message).length,e.tokens,n?.id,void 0,r,e.skillResolutions),c}async finishGenerateResponseStep(e,r){e.error?await r.steps.error(OGt,e.error.message):await r.steps.finish(OGt)}async endProgress(e){await this.turnContext.steps.finishAll(),await this.conversationProgress.end(this.conversation,this.turn,e)}async cancelProgress(){await this.turnContext.steps.finishAll("cancelled"),await this.conversationProgress.cancel(this.conversation,this.turn)}};f();f();var hxn=be(uu()),mxn=be(xT());var Qg=class{constructor(e,r,n){this.ctx=e;this.skillId=r;this.requestType=new hxn.ProtocolRequestType("conversation/context");this.typeCheck=Pc.Compile(n)}static{a(this,"AgentSkillResolver")}async resolveSkill(e){let r=this.ctx.get(Er).connection,n={conversationId:e.conversation.id,turnId:e.turn.id,skillId:this.skillId},o;try{let s=await r.sendRequest(this.requestType,n),[c,l]=s;if(l){let u=new mxn.ResponseError(l.code,l.message,l.data);Br.error(this.ctx,`ResponseError while resolving skill ${this.skillId}`,u);return}o=c}catch(s){Br.error(this.ctx,`Error while resolving skill ${this.skillId}`,s);return}if(o!=null){if(!this.typeCheck.Check(o))throw new Yp(this.typeCheck.Errors(o));return o}}};var DGt=class{constructor(e,r,n="",o="",s=[],c=[]){this.progressToken=e;this.chunks=r;this.followUp=n;this.suggestedTitle=o;this.skills=s;this.references=c}static{a(this,"SyntheticTurn")}},tN=class{constructor(){this.turns=[]}static{a(this,"SyntheticTurns")}add(e,r,n="",o="",s=[],c=[]){let l=new DGt(e,r,n,o,s,c);return this.turns.push(l),l}get(e){return this.turns.find(r=>r.progressToken===e)}},Fze=class{constructor(e,r){this.turnContext=e;this.syntheticTurn=r;this.conversationProgress=e.ctx.get(Qs)}static{a(this,"SyntheticTurnProcessor")}async process(e,r){try{await this.processWithSyntheticTurns(this.syntheticTurn,e,r)}catch(n){Br.error(this.turnContext.ctx,`Error processing turn ${this.turnContext.turn.id}`,n);let o=n.message;this.turnContext.turn.status="error",this.turnContext.turn.response={message:o,type:"meta"},await this.conversationProgress.end(this.turnContext.conversation,this.turnContext.turn,{error:{message:o,responseIsIncomplete:!0}})}}async processWithSyntheticTurns(e,r,n){await this.conversationProgress.begin(this.turnContext.conversation,this.turnContext.turn,r),await this.resolveSyntheticSkill(e,n),await this.processSyntheticChunks(e,n),await this.endSyntheticProgress(e,n),this.turnContext.turn.response={type:"model",message:e.chunks.join("")},this.turnContext.turn.status=n.isCancellationRequested?"cancelled":"success"}async resolveSyntheticSkill(e,r){let n=this.turnContext.ctx.get(Zi).getCapabilities(this.turnContext.conversation.id),o=e.skills.filter(s=>n.skills.includes(s));for(let s of o){let l=await new Qg(this.turnContext.ctx,s,T.Object({value:T.String()})).resolveSkill(this.turnContext);l&&!r.isCancellationRequested&&await this.conversationProgress.report(this.turnContext.conversation,this.turnContext.turn,{reply:l.value})}}async processSyntheticChunks(e,r){for(let n of e.chunks)r.isCancellationRequested||(await this.conversationProgress.report(this.turnContext.conversation,this.turnContext.turn,{reply:n}),await W5(1))}async endSyntheticProgress(e,r){r.isCancellationRequested?await this.conversationProgress.cancel(this.turnContext.conversation,this.turnContext.turn):await this.conversationProgress.end(this.turnContext.conversation,this.turnContext.turn,{followUp:{message:e.followUp,type:"followup",id:Fr()},suggestedTitle:e.suggestedTitle,updatedDocuments:this.turnContext.conversation.source==="inline"?[{uri:"fakeUpdatedDoc.ts",text:"fake"}]:void 0})}};var Tx=class{static{a(this,"TurnProcessorFactory")}async createProcessor(e,r,n){let o=e.ctx.get(tN).get(r);if(o)return new Fze(e,o);let c=(await vw(e.ctx)).find(u=>u.slug===e.turn.agent?.agentSlug);if(c?.turnProcessor)return c.turnProcessor(e);let l;return e.conversation.source==="inline"?l=new Q3e(e.ctx):l=new AJ(e.ctx),n!==void 0&&(l.computeSuggestions=n),e.turn.chatMode?.kind==="Agent"?new Mze(e,l):new Lze(e,l)}};f();var gxn=be(uu());var oie=class{static{a(this,"WorkspaceFoldersValidator")}static validate(e){if(!e)return;let r=new Set;for(let n of e){if(r.has(n.uri))throw new gxn.ResponseError(Et.InvalidParams,`Duplicate workspace folder uri ${n.uri}`);r.add(n.uri)}}};f();function Bze(t){if(t&&t.uri.length>0)return[{uri:t.uri,name:Kn(t.uri)}]}a(Bze,"resolveAsWorkspaceFolders");f();f();var yhs=Object.freeze(function(t,e){let r=setTimeout(t.bind(e),0);return{dispose(){clearTimeout(r)}}}),Rm=class{constructor(e){this.tokens=[];this.handlers=[];this._isCancelled=!1;this.onCancellationRequested=a((e,r)=>this._isCancelled?yhs(e,r):(this.handlers.push(e.bind(r)),{dispose:a(()=>{},"dispose")}),"onCancellationRequested");this.tokens=e,this._isCancelled=e.some(r=>r.isCancellationRequested),e.forEach(r=>{r.onCancellationRequested(n=>this.cancel(n))})}static{a(this,"MergedToken")}cancel(e){this._isCancelled||(this._isCancelled=!0,this.handlers.forEach(r=>r(e)))}get isCancellationRequested(){return this.tokens.some(e=>e.isCancellationRequested)}};var $g=class{constructor(){this.tokens=new Mr(250)}static{a(this,"ProgressTokens")}add(e,r){let n=new un.CancellationTokenSource,o=new Rm([r,n.token]);return this.tokens.set(e.toString(),n),o}cancel(e){let r=this.tokens.get(e.toString());r&&(r.cancel(),this.tokens.delete(e.toString()))}};var Ehs=T.Object({conversationId:T.Optional(Z3e),workDoneToken:T.Union([T.String(),T.Number()]),turns:T.Array(X2r,{minItems:1}),capabilities:T.Optional(T.Object({allSkills:T.Optional(T.Boolean()),skills:T.Optional(T.Array(T.String()))})),doc:T.Optional(BA),textDocument:T.Optional(BA),selection:T.Optional(Xu),visibleRanges:T.Optional(kze),computeSuggestions:T.Optional(T.Boolean()),references:T.Optional(T.Array(EJ)),source:T.Optional(Hv),workspaceFolder:T.Optional(T.String()),workspaceFolders:T.Optional(T.Array(O0)),ignoredSkills:T.Optional(T.Array(T.String())),userLanguage:T.Optional(T.String()),model:T.Optional(T.String()),modelProviderName:T.Optional(T.String()),chatMode:T.Optional(nNe),customChatModeId:T.Optional(T.String()),needToolCallConfirmation:T.Optional(T.Boolean()),todoList:T.Optional(T.Array(iNe))});async function vhs(t,e,r){oie.validate(r.workspaceFolders);let n=await qR(t,r,e),o=t.get(Zi).create(r);r.todoList!==void 0&&t.get(Jv).setTodos(o,r.todoList),await Chs(t,o,r,n);let s=o.turns[o.turns.length-1],c=iie(r),l=t.get($g).add(c.progressToken,e),u=new Yv(t,o,s,l);await(await t.get(Tx).createProcessor(u,c.progressToken,r.computeSuggestions)).process(c,l,void 0,n,r.model,r.modelProviderName);let p=s.resolvedModelConfiguration,h=s9(p);return[{conversationId:o.id,turnId:s.id,agentSlug:s.agent?.agentSlug,modelName:p?.uiName??r.model,modelProviderName:r.modelProviderName,billingMultiplier:h},null]}a(vhs,"handleConversationCreateChecked");async function Chs(t,e,r,n){for(let o of r.turns){let s=tNe(o.request),c=new kv({message:s,type:"user"},o.turnId);o.response&&(c.response={message:o.response,type:"model"}),o.agentSlug&&(c.agent={agentSlug:o.agentSlug});let l=r.workspaceFolder?{uri:r.workspaceFolder}:void 0,u=r.workspaceFolders&&r.workspaceFolders.length>0?r.workspaceFolders:Bze(l),d=t.get(ag),p=lM(r.chatMode);c.chatMode=await d.getChatMode(p,r.customChatModeId,u),c.userRequestedModel=o.model??r.model,c.needToolCallConfirmation=r.needToolCallConfirmation;let h=Nze({textDocument:n,selection:r.selection,visibleRanges:r.visibleRanges});await t.get(Zi).addTurn(e.id,c,r.references,h,l,u,r.ignoredSkills,void 0)}}a(Chs,"addTurns");var Axn=Ke(Ehs,vhs);f();var bhs=T.Object({conversationId:T.String()});function Ths(t,e,r){return t.get(Zi).destroy(r.conversationId),["OK",null]}a(Ths,"handleConversationDestroyChecked");var _xn=Ke(bhs,Ths);f();var Shs=T.Object({workspaceFolders:T.Optional(T.Array(O0))});async function xhs(t,e,r){return[(await t.get(ag).listChatModes(r.workspaceFolders)).map(c=>({id:c.id,name:c.name,kind:c.kind,isBuiltIn:c.isBuiltIn,uri:c.uri,description:c.description,customTools:c.customTools,model:c.model,handOffs:c.handOffs})),null]}a(xhs,"handleConversationModesChecked");var yxn=Ke(Shs,xhs);f();var Ihs=T.Object({turnId:T.String(),acceptedFileCount:T.Number({minimum:0}),totalFileCount:T.Number({minimum:1})}),whs=new Fe("conversationNotifyCodeAcceptance");async function Rhs(t,e,r){let n=t.get(Zi).findByTurnId(r.turnId);if(!n)return whs.warn(t,`Turn with id ${r.turnId} not found`),["OK",null];let o=await pa(t,n,{languageId:""});return cg(t,void 0,{mode:n?.turn.getChatModeWithDefault()?.toLowerCase()??"unknown",modelId:n?.turn.getResolvedModelId()??"unknown"},{acceptedFileCount:r.acceptedFileCount,totalFileCount:r.totalFileCount},`${w0("agentPanel")}.codeAcceptance`,o),["OK",null]}a(Rhs,"handleConversationNotifyCodeAcceptanceChecked");var Exn=Ke(Ihs,Rhs);f();var Phs=T.Object({});function khs(t,e,r){return[{path:t.get(Zn).directory},null]}a(khs,"handleConversationPersistenceChecked");var vxn=Ke(Phs,khs);f();f();var MGt=class{static{a(this,"TokenPreconditionCheck")}async check(e,r){let n=await e.get(mn).getSession(),o=e.get(cl);return n&&n.githubAppId&&(r||n.githubAppId!==Gb)?{type:"token",status:"ok"}:{type:"token",status:"failed",githubAppId:o.githubAppId}}},LGt=class{static{a(this,"ChatEnabledPreconditionCheck")}async check(e,r){return{type:"chat_enabled",status:(await e.get(Bt).getToken()).envelope.chat_enabled?"ok":"failed"}}},Nhs=[new MGt,new LGt],tb=class{constructor(e,r=Nhs){this.ctx=e;this.checks=r;this.emitter=new oi;this.onChange=this.emitter.event;yo(e,async()=>{await this.check()})}static{a(this,"PreconditionsCheck")}check(e,r){return e&&(this.result=void 0),this.result===void 0&&(this.result=this.requestChecks(r)),this.result}async requestChecks(e){let r=[];this.checks.length>0&&(r=await Promise.all(this.checks.map(s=>s.check(this.ctx,e))));let n=r.every(s=>s.status==="ok")?"ok":"failed",o={results:r,status:n};return this.emitter.fire(o),o}};var Ohs=T.Object({forceCheck:T.Optional(T.Boolean()),skipAppIdCheck:T.Optional(T.Boolean())});async function Dhs(t,e,r){let n=r.forceCheck??!1,o=r.skipAppIdCheck??!1;return[await t.get(tb).check(n,o),null]}a(Dhs,"handleConversationPreconditionsChecked");var Cxn=Ke(Ohs,Dhs);f();var Mhs=T.Object({turnId:T.String(),rating:T.Number(),doc:T.Optional(BA),textDocument:T.Optional(BA),source:T.Optional(Hv)});async function Lhs(t,e,r){let n=await qR(t,r,e),o=SM(r.source),s="unrated";r.rating>0?s="positive":r.rating<0&&(s="negative");let c=await pa(t,t.get(Zi).findByTurnId(r.turnId),{languageId:n?.detectedLanguageId??""});return cg(t,n,{rating:s,uiKind:o},{},`${w0(o)}.messageRating`,c),["OK",null]}a(Lhs,"handleConversationRatingChecked");var bxn=Ke(Mhs,Lhs);f();var Fhs=T.Object({tools:T.Array(Z2r)});function Bhs(t,e,r){let n=t.get(Ds);return r.tools.forEach(s=>{n.registerTool(new g8({name:s.name,description:s.description,inputSchema:s.inputSchema,confirmationMessages:s.confirmationMessages}))}),[n.getToolsForModel().filter(s=>s.type!=="mcp"),null]}a(Bhs,"conversationRegisterToolsChecked");var Txn=Ke(Fhs,Bhs);f();var Uhs=T.Object({workspaceFolders:T.Optional(T.Array(O0))});async function qhs(t,e,r){let n=Oyt(t).map(l=>({id:l.id,description:l.description,shortDescription:l.shortDescription,scopes:l.scopes})),o=t.get(Ul),c=o.collectGlobalPromptFiles().filter(l=>!n.some(u=>u.id===l.name)).map(l=>({id:l.name,description:l.description||"",shortDescription:"",scopes:["chat-panel","agent-panel"]}));if(n.push(...c),r.workspaceFolders&&r.workspaceFolders.length>0){let u=(await o.collectPromptFiles(t,r.workspaceFolders)).filter(m=>!n.some(g=>g.id===m.name)).map(m=>({id:m.name,description:m.description||"",shortDescription:"",scopes:["chat-panel","agent-panel"]}));n.push(...u);let h=(await t.get(k4).listSkills(r.workspaceFolders)).map(m=>({id:`skill:${Kn(Il(m.uri))}`,description:m.description||"",shortDescription:m.name,scopes:["chat-panel","agent-panel"]})).filter(m=>!n.some(g=>g.id===m.id));n.push(...h)}return[n,null]}a(qhs,"handleConversationTemplatesChecked");var Sxn=Ke(Uhs,qhs);f();var jhs=T.Object({workDoneToken:T.Union([T.String(),T.Number()]),conversationId:Z3e,turnId:T.Optional(WU),message:Kgt,followUp:T.Optional(T.Object({id:T.String(),type:T.String()})),doc:T.Optional(BA),textDocument:T.Optional(BA),selection:T.Optional(Xu),visibleRanges:T.Optional(kze),computeSuggestions:T.Optional(T.Boolean()),references:T.Optional(T.Array(EJ)),workspaceFolder:T.Optional(T.String()),workspaceFolders:T.Optional(T.Array(O0)),ignoredSkills:T.Optional(T.Array(T.String())),confirmationResponse:Sxr,model:T.Optional(T.String()),modelProviderName:T.Optional(T.String()),chatMode:T.Optional(nNe),customChatModeId:T.Optional(T.String()),needToolCallConfirmation:T.Optional(T.Boolean()),agentSlug:T.Optional(T.String()),todoList:T.Optional(T.Array(iNe))});async function Qhs(t,e,r){oie.validate(r.workspaceFolders);let n=await qR(t,r,e),o=t.get(Zi),s=o.get(r.conversationId);r.todoList!==void 0&&t.get(Jv).setTodos(s,r.todoList);let c=tNe(r.message),l=new kv({message:c,type:"user"},r.turnId),u=r.workspaceFolder?{uri:r.workspaceFolder}:void 0,d=r.workspaceFolders&&r.workspaceFolders.length>0?r.workspaceFolders:Bze(u),p=t.get(ag),h=lM(r.chatMode);l.chatMode=await p.getChatMode(h,r.customChatModeId,d),l.userRequestedModel=r.model,l.needToolCallConfirmation=r.needToolCallConfirmation,r.agentSlug&&(l.agent={agentSlug:r.agentSlug});let m=Nze({textDocument:n,selection:r.selection,visibleRanges:r.visibleRanges});l=await o.addTurn(s.id,l,r.references,m,u,d,r.ignoredSkills,r.confirmationResponse);let g=iie(r),A=t.get($g).add(g.progressToken,e),_=new Yv(t,s,l,A);await(await t.get(Tx).createProcessor(_,g.progressToken,r.computeSuggestions)).process(g,A,r.followUp,n,r.model,r.modelProviderName);let E=l.resolvedModelConfiguration,v=s9(E);return[{conversationId:s.id,turnId:l.id,agentSlug:l.agent?.agentSlug,modelName:E?.uiName??r.model,modelProviderName:r.modelProviderName,billingMultiplier:v},null]}a(Qhs,"handleConversationTurnChecked");var xxn=Ke(jhs,Qhs);f();var $hs=T.Object({conversationId:T.String(),turnId:T.String(),source:T.Optional(Hv)});async function Ghs(t,e,r){t.get(Zi).deleteTurn(r.conversationId,r.turnId);let o=SM(r.source),s=await pa(t,t.get(Zi).findByTurnId(r.turnId),{languageId:""});return cg(t,void 0,{messageId:r.turnId,uiKind:o,conversationId:r.conversationId},{},`${w0(o)}.messageDelete`,s),["OK",null]}a(Ghs,"handleConversationTurnDeleteChecked");var Ixn=Ke($hs,Ghs);f();var Vhs=T.Object({toolIds:T.Array(T.String())});function Hhs(t,e,r){let n=t.get(Ds);return r.toolIds.forEach(s=>{n.unregisterTool(s)}),[n.getToolsForModel().filter(s=>s.type!=="mcp"),null]}a(Hhs,"conversationUnregisterToolsChecked");var wxn=Ke(Vhs,Hhs);f();var Whs=T.Object({chatModeKind:T.Optional(T.Literal("Agent")),customChatModeId:T.Optional(T.String()),workspaceFolders:T.Optional(T.Array(O0)),tools:T.Array(T.Object({name:T.String(),status:T.Enum(X5)}))});async function zhs(t,e,r){let{chatModeKind:n,customChatModeId:o,workspaceFolders:s}=r,c=await t.get(ag).getChatMode(n?lM(n):"Agent",o,s),l=t.get(Ds),u=r.tools.map(({name:p,status:h})=>({toolName:p,status:h}));return await l.updateToolsStatusByName(c,u),[l.getToolsForModel(c).filter(p=>p.type!=="mcp"),null]}a(zhs,"conversationUpdateToolsStatusChecked");var Rxn=Ke(Whs,zhs);f();f();f();var Uze=/```suggestion(\u0020*(\r\n|\n))((?<suggestion>[\s\S]*?)(\r\n|\n))?```/g;var sie=class t{static{a(this,"CodeReviewResponseParser")}static findFirstNonWhitespaceCharacterIndex(e){let r=e.match(/\S/);return r?r.index:e.length}static removeSuggestion(e){return e.replaceAll(Uze,"")}static extractSuggestionAndText(e){Uze.lastIndex=0;let n=Uze.exec(e)?.groups?.suggestion||null,o=t.removeSuggestion(e);return{suggestion:n,textWithoutSuggestion:o}}static ghCommentToReviewComment(e,r){let n=r.headContent.split(`
2847
+ Assistant:`;Yl.DEFAULT_TIMEOUT=6e5;Yl.AnthropicError=On;Yl.APIError=rp;Yl.APIConnectionError=t9;Yl.APIConnectionTimeoutError=jne;Yl.APIUserAbortError=hh;Yl.NotFoundError=Vne;Yl.ConflictError=Hne;Yl.RateLimitError=zne;Yl.BadRequestError=Qne;Yl.AuthenticationError=$ne;Yl.InternalServerError=Yne;Yl.PermissionDeniedError=Gne;Yl.UnprocessableEntityError=Wne;Yl.toFile=aze;var bx=class extends Yl{static{a(this,"Anthropic")}constructor(){super(...arguments),this.completions=new lV(this),this.messages=new o9(this),this.models=new uV(this),this.beta=new UR(this)}};bx.Completions=lV;bx.Messages=o9;bx.Models=uV;bx.Beta=UR;var{HUMAN_PROMPT:Ups,AI_PROMPT:qps}=bx;var xze=class extends Fv{static{a(this,"AnthropicProvider")}constructor(e){super(gs.Anthropic,e)}async getAllModels(){await this.ensureKnownModelsCache();let e=await new da(this.ctx.get(Zn)).getAPIKey(this.providerName);if(!e)throw new Error(`API key not found for provider: ${this.providerName}`);let r=new bx({apiKey:e,fetch:jps(this.ctx.get(dr))});try{let n=await r.models.list(),o=[];for(let s of n.data){let c=this._knownModels?.[s.id];c&&o.push({providerName:this.providerName,modelId:s.id,isRegistered:!1,isCustomModel:!1,modelCapabilities:c})}return o}catch(n){throw rfe.error(this.ctx,`Error fetching models from ${this.providerName} provider:`,n),n}}};function jps(t){return async(e,r)=>{let n=Qps(e,r),o=Gps(r),s=await t.fetch(n,o);return Hps(s)}}a(jps,"createAnthropicFetchAdapter");function Qps(t,e){return t instanceof Request?($ps(t,e),t.url):t instanceof URL?t.toString():t}a(Qps,"convertInputToString");function $ps(t,e){e&&(e.headers??=t.headers,e.method??=t.method,!e.body&&!t.bodyUsed&&(e.body=t.body))}a($ps,"mergeRequestInit");function Gps(t){let e;return t?.headers&&(e=Vps(t.headers)),{method:t?.method||"GET",headers:e,body:t?.body,signal:t?.signal||void 0}}a(Gps,"convertToFetchOptions");function Vps(t){let e={};if(t instanceof Headers)for(let[r,n]of t.entries())e[r]=n;else if(Array.isArray(t))for(let[r,n]of t)e[r]=n;else return t;return e}a(Vps,"convertHeaders");async function Hps(t){let e=t.body(),r=null;if(e)r=Wps(e);else{let n=await t.text();r=Yps(n)}return new globalThis.Response(r,{status:t.status,statusText:t.statusText,headers:new Headers(t.headers)})}a(Hps,"convertToWebResponse");function Wps(t){return new ReadableStream({start(e){let r=zps(t,e);return()=>r()},cancel(){"destroy"in t&&typeof t.destroy=="function"&&t.destroy()}})}a(Wps,"createReadableStreamFromNodeStream");function zps(t,e){let r=a(c=>{e.enqueue(new Uint8Array(c))},"onData"),n=a(()=>{e.close(),s()},"onEnd"),o=a(c=>{e.error(c),s()},"onError"),s=a(()=>{t.off("data",r),t.off("end",n),t.off("error",o)},"cleanup");return t.on("data",r),t.on("end",n),t.on("error",o),s}a(zps,"setupStreamHandlers");function Yps(t){return new ReadableStream({start(e){e.enqueue(new TextEncoder().encode(t)),e.close()}})}a(Yps,"createReadableStreamFromText");f();var Ize=class extends Fv{static{a(this,"GeminiProvider")}constructor(e){super(gs.Gemini,e)}};f();var wze=class extends Fv{static{a(this,"GroqProvider")}constructor(e){super(gs.Groq,e)}};f();var Rze=class extends Fv{static{a(this,"OpenAIProvider")}constructor(e){super(gs.OpenAI,e)}};f();var txn=16e3,Pze=class extends Fv{static{a(this,"OpenRouterProvider")}constructor(e){super(gs.OpenRouter,e)}async getAllModels(){try{let e=this.getFetchModelUrl(),r={"Content-Type":"application/json"},n=await new da(this.ctx.get(Zn)).getAPIKey(this.providerName);n&&(r.Authorization=`Bearer ${n}`);let o=await this.ctx.get(dr).fetch(e,{method:"GET",headers:r});if(!o.ok)throw new Error(`Failed to fetch models: ${o.status} ${o.statusText}`);let s=await o.json();if(s.error)throw new Error(`API Error: ${JSON.stringify(s.error)}`);let c=[];for(let l of s.data)c.push({providerName:this.providerName,modelId:l.id,isRegistered:!1,isCustomModel:!1,modelCapabilities:{name:l.name,maxInputTokens:Math.max(0,l.top_provider.context_length-txn),maxOutputTokens:txn,toolCalling:l.supported_parameters?.includes("tools")??!1,vision:l.architecture?.input_modalities?.includes("image")??!1}});return c}catch(e){throw rfe.error(this.ctx,`Error fetching models from ${this.providerName} provider:`,e),e}}getFetchModelUrl(){return`${this.getBaseUrl()}/models?supported_parameters=tools`}};var dV=class{static{a(this,"BYOKProviderFactory")}constructor(e){this.providers=new Map([[gs.OpenAI,new Rze(e)],[gs.Gemini,new Ize(e)],[gs.Groq,new wze(e)],[gs.OpenRouter,new Pze(e)],[gs.Anthropic,new xze(e)]])}getBYOKProvider(e){return this.providers.get(e)}};var Kps=T.Object({providerName:T.Optional(T.String()),enableFetchUrl:T.Optional(T.Boolean())});async function Jps(t,e,r){try{let{providerName:n,enableFetchUrl:o}=r,s=new da(t.get(Zn)),c=[];if(n)if(o){if(!ike(n))return[null,{code:Et.InvalidRequest,message:`enableFetchUrl is not supported for the ${n} provider`}];if(!await s.getAPIKey(n))return[null,{code:Et.InvalidRequest,message:`API key is required to fetch models from ${n}`}];let u=t.get(dV).getBYOKProvider(n);if(u){let d=await u.getAllModels(),p=new Map;d.forEach(g=>{let A=`${g.providerName}_${g.modelId}`;p.set(A,g)});let h=await s.getStoredModelConfigs(n),m=[];Object.entries(h).forEach(([g,A])=>{m.push({providerName:n,modelId:g,deploymentUrl:A.deploymentUrl,isRegistered:A.isRegistered,isCustomModel:A.isCustomModel,modelCapabilities:A.modelCapabilities})}),m.forEach(g=>{let A=`${g.providerName}_${g.modelId}`;p.set(A,g)}),c.push(...p.values())}}else{let l=await s.getStoredModelConfigs(n);Object.entries(l).forEach(([u,d])=>{c.push({providerName:n,modelId:u,deploymentUrl:d.deploymentUrl,isRegistered:d.isRegistered,isCustomModel:d.isCustomModel,modelCapabilities:d.modelCapabilities})})}else{let l=Object.values(gs);for(let u of l){let d=await s.getStoredModelConfigs(u);Object.entries(d).forEach(([p,h])=>{c.push({providerName:u,modelId:p,deploymentUrl:h.deploymentUrl,isRegistered:h.isRegistered,isCustomModel:h.isCustomModel,modelCapabilities:h.modelCapabilities})})}}return[{models:c},null]}catch(n){return[null,{code:Et.InternalError,message:`Failed to get models: ${n instanceof Error?n.message:String(n)}`}]}}a(Jps,"handleBYOKListModelsChecked");var rxn=Ke(Kps,Jps);f();var Xps=T.Object({providerName:T.String(),apiKey:T.String(),modelId:T.Optional(T.String())});async function Zps(t,e,r){try{let n=new da(t.get(Zn)),{providerName:o,apiKey:s,modelId:c}=r,l=CM(o);if(l===1&&!c)return[null,{code:Et.InvalidRequest,message:"modelId is required for PerModelDeployment auth type"}];await n.storeAPIKey(o,s,l,c);let u=`API key saved successfully for provider ${o}`;return[{success:!0,message:c?`${u} and model ${c}`:u},null]}catch(n){return[null,{code:Et.InternalError,message:`Failed to save API key: ${n instanceof Error?n.message:String(n)}`}]}}a(Zps,"handleBYOKSaveApiKeyChecked");var nxn=Ke(Xps,Zps);f();var ehs=T.Object({providerName:T.String(),modelId:T.String(),isRegistered:T.Boolean(),isCustomModel:T.Boolean(),deploymentUrl:T.Optional(T.String()),apiKey:T.Optional(T.String()),modelCapabilities:T.Optional(T.Object({name:T.String(),maxInputTokens:T.Optional(T.Number()),maxOutputTokens:T.Optional(T.Number()),toolCalling:T.Boolean(),vision:T.Boolean()}))});async function ths(t,e,r){try{let{providerName:n,modelId:o,isRegistered:s,isCustomModel:c,deploymentUrl:l,apiKey:u,modelCapabilities:d}=r,p=new da(t.get(Zn)),h=CM(n);if(h===1&&!l)return[null,{code:Et.InvalidRequest,message:`deploymentUrl is required for the ${n} provider`}];if(l||d){let m={deploymentUrl:l,isRegistered:s,isCustomModel:c,modelCapabilities:d};await p.saveModelConfig(n,o,m,u,h)}else u!==void 0&&await p.storeAPIKey(n,u,h,o);return[{success:!0,message:`Model ${o} saved successfully for provider ${n}`},null]}catch(n){return[null,{code:Et.InternalError,message:`Failed to save model: ${n instanceof Error?n.message:String(n)}`}]}}a(ths,"handleBYOKSaveModelChecked");var ixn=Ke(ehs,ths);f();var rhs=T.Object({uri:T.String({minLength:1})});async function nhs(t,e,r){let n=await t.get(An).getOrReadTextDocument(r);return[{status:Vc(n),...n.status==="invalid"&&{reason:n.reason},...n.status==="notfound"&&{reason:n.message}},null]}a(nhs,"handleCheckFileStatusChecked");var oxn=Ke(rhs,nhs);f();var ihs=T.Object({});function sxn(t,e){return typeof t!="number"||typeof e!="number"||e===0?0:Math.max(0,Math.min(100,t/e*100))}a(sxn,"calculatePercentRemaining");async function ohs(t,e,r){let n=await t.get(mn).getSession();if(n){let o=await Qnt(t,n);if(o.ok){let s=await o.json();return s.access_type_sku==="free_limited_copilot"?[{chat:{percentRemaining:sxn(s.limited_user_quotas?.chat,s.monthly_quotas?.chat),unlimited:!1,overagePermitted:!1},completions:{percentRemaining:sxn(s.limited_user_quotas?.completions,s.monthly_quotas?.completions),unlimited:!1,overagePermitted:!1},premiumInteractions:{percentRemaining:0,unlimited:!1,overagePermitted:!1},resetDate:s.limited_user_reset_date??"",copilotPlan:"free"},null]:[{chat:{percentRemaining:s.quota_snapshots?.chat?.percent_remaining??100,unlimited:s.quota_snapshots?.chat?.unlimited??!1,overagePermitted:s.quota_snapshots?.chat?.overage_permitted??!1},completions:{percentRemaining:s.quota_snapshots?.completions?.percent_remaining??100,unlimited:s.quota_snapshots?.completions?.unlimited??!1,overagePermitted:s.quota_snapshots?.completions?.overage_permitted??!1},premiumInteractions:{percentRemaining:s.quota_snapshots?.premium_interactions?.percent_remaining??100,unlimited:s.quota_snapshots?.premium_interactions?.unlimited??!1,overagePermitted:s.quota_snapshots?.premium_interactions?.overage_permitted??!1},resetDate:s.quota_reset_date??"",copilotPlan:s.copilot_plan},null]}return[null,{code:Et.InternalError,message:"Failed to fetch quota info"}]}else return[null,{code:Et.InternalError,message:"Not signed in"}]}a(ohs,"handleCheckQuotaChecked");var axn=Ke(ihs,ohs);f();var shs=T.Object({options:T.Optional(T.Object({localChecksOnly:T.Optional(T.Boolean()),forceRefresh:T.Optional(T.Boolean())}))});async function ahs(t,e,r){return[await t.get(mn).checkAndUpdateStatus(r.options),null]}a(ahs,"handleCheckStatusChecked");var cxn=Ke(shs,ahs);f();var chs=T.Object({pullRequestId:T.Number(),repoOwner:T.String({minLength:1}),repoName:T.String({minLength:1})});async function lhs(t,e,r){try{let o=await new dJ(t).getAllSessions(r.pullRequestId,e);if(!o||o.length===0)return[null,{code:Et.InvalidRequest,message:"No session found for this pull request"}];let s=o[0];return s.state==="completed"?(gt(t,"githubApi.cancelCodingAgent",Ht.createAndMarkAsIssued()),[{success:!0},null]):s.workflow_run_id?(await new qA(t).cancelWorkflow(r.repoOwner,r.repoName,s.workflow_run_id),gt(t,"githubApi.cancelCodingAgent",Ht.createAndMarkAsIssued()),[{success:!0},null]):[null,{code:Et.InternalError,message:"No workflow run ID found in session"}]}catch(n){if(ji(t,n,"githubApi.cancelCodingAgent"),n instanceof sJ)return[null,{code:Et.NoCopilotToken,message:n.message}];if(n instanceof lg)return[null,{code:Et.InvalidRequest,message:n.message}];if(n instanceof Qv)return[null,{code:Et.InvalidRequest,message:n.message}];if(n instanceof $v)return[null,{code:Et.NoGitHubToken,message:n.message}];if(n instanceof Vf&&n.isClientError())return[null,{code:Et.InvalidRequest,message:n.message}];if(n instanceof Error)return[null,{code:Et.InternalError,message:`Unexpected error happened: ${n.message}`}];let o=JSON.stringify(n)??String(n);return[null,{code:Et.InternalError,message:`Unexpected error happened: ${o}`}]}}a(lhs,"handleCancelCodingAgentChecked");var lxn=Ke(chs,lhs);f();var uhs=T.Object({});async function dhs(t,e,r){return[(await vw(t)).map(s=>({slug:s.slug,name:s.name,description:s.description,avatarUrl:s.avatarUrl})),null]}a(dhs,"handleConversationAgentsChecked");var uxn=Ke(uhs,dhs);f();f();var Pye=be(uu());function fhs(t,e,r){let n=Ht.createAndMarkAsIssued({languageId:String(e.detectedLanguageId),requestedDocumentVersion:String(r),actualDocumentVersion:String(e.version)});return gt(t,"getCompletions.docVersionMismatch",n)}a(fhs,"telemetryVersionMismatch");async function eN(t,e,r){let o=t.get(qr).getTextDocumentUnsafe(e);if(!o)throw new Pye.ResponseError(Et.InvalidParams,`Document for URI could not be found: ${e.uri}`);let s=await AM(t,e,o.getText());if(s.status==="invalid")throw t.get(ds).setInactive(s.reason),new Pye.ResponseError(Et.CopilotNotAvailable,s.reason);if(e.version!==void 0&&o.version!==e.version)throw r?.isCancellationRequested||(fhs(t,o,e.version),ec.debug(t,`Requested document version was ${e.version} but actual document version was ${o.version}.`)),new Pye.ResponseError(Et.ContentModified,"Document Version Mismatch");return o}a(eN,"getTextDocument");async function qR(t,e,r){let n=e.textDocument??e.doc;if(n)try{return await eN(t,n,r)}catch(o){if(o instanceof Pye.ResponseError){if(o.code===Et.CopilotNotAvailable)return;if(o.code===Et.InvalidParams){ec.warn(t,`Document not found for conversation: ${n.uri}. Continuing without this file.`);return}}throw o}}a(qR,"getTextDocumentIfAvailable");var phs=T.Union([T.Literal("keyboard"),T.Literal("toolbar")]),hhs=T.Object({turnId:WU,codeBlockIndex:T.Number(),source:phs,copiedCharacters:T.Number(),totalCharacters:T.Number(),copiedText:T.String(),doc:T.Optional(eNe),textDocument:T.Optional(BA),position:T.Optional(N0),conversationSource:T.Optional(Hv)});async function mhs(t,e,r){let n=await qR(t,r,e),o={totalCharacters:r.totalCharacters,copiedCharacters:r.copiedCharacters},s=r.position??r.doc?.position;n&&s&&(o={...o,currentLine:s.line});let c=SM(r.conversationSource),l=t.get(Zi).findByTurnId(r.turnId),u=await pa(t,l,{languageId:n?.detectedLanguageId??""});return cg(t,n,{codeBlockIndex:r.codeBlockIndex.toString(),source:r.source,uiKind:c,mode:l?.turn.getChatModeWithDefault()?.toLowerCase()??"unknown",modelId:l?.turn.getResolvedModelId()??"unknown"},o,`${w0(c)}.acceptedCopy`,u),["OK",null]}a(mhs,"handleConversationCodeCopyChecked");var dxn=Ke(hhs,mhs);f();var ghs=T.Union([T.Literal("keyboard"),T.Literal("toolbar"),T.Literal("diff")]),Ahs=T.Object({turnId:WU,source:ghs,codeBlockIndex:T.Number(),acceptedLength:T.Optional(T.Number()),totalCharacters:T.Number(),newFile:T.Optional(T.Boolean()),doc:T.Optional(eNe),textDocument:T.Optional(BA),position:T.Optional(N0),conversationSource:T.Optional(Hv)});async function _hs(t,e,r){let n=await qR(t,r,e),o={totalCharacters:r.totalCharacters,acceptedLength:r.acceptedLength??r.totalCharacters},s=r.position??r.doc?.position;n&&s&&(o={...o,insertionOffset:n.offsetAt(s),currentLine:s.line});let c=SM(r.conversationSource),l=t.get(Zi).findByTurnId(r.turnId),u=await pa(t,l,{languageId:n?.detectedLanguageId??""});return cg(t,n,{codeBlockIndex:r.codeBlockIndex.toString(),source:r.source,uiKind:c,compType:r.acceptedLength&&r.acceptedLength<r.totalCharacters?"partial":"full",mode:l?.turn.getChatModeWithDefault()?.toLowerCase()??"unknown",modelId:l?.turn.getResolvedModelId()??"unknown"},o,`${w0(c)}.acceptedInsert`,u),["OK",null]}a(_hs,"handleConversationCodeInsertChecked");var fxn=Ke(Ahs,_hs);f();f();function s9(t){if(t?.originalBillingMultiplier===void 0)return;let e=t.autoModeDiscountedCost??0;return Math.round((t.originalBillingMultiplier??0)*(1-e)*100)/100}a(s9,"calculateBillingMultiplier");f();var kze=T.Array(Xu);function Nze(t){if(t.textDocument?.uri)return{uri:t.textDocument.uri,selection:t.selection,visibleRange:t.visibleRanges?.[0]}}a(Nze,"resolveAsActiveEditor");f();var pxn=be(uu());var Oze=new pxn.ProgressType,kGt=class{constructor(e){this.progressToken=e}static{a(this,"WorkDoneProgressHandler")}async begin(e,r,n,o){await e.get(Er).connection.sendProgress(Oze,this.progressToken,{kind:"begin",title:`Conversation ${r.id} Turn ${n.id}`,conversationId:r.id,turnId:n.id,agentSlug:n.agent?.agentSlug,...o})}async report(e,r,n,o){await e.get(Er).connection.sendProgress(Oze,this.progressToken,{kind:"report",conversationId:r.id,turnId:n.id,...o})}async end(e,r,n,o){await e.get(Er).connection.sendProgress(Oze,this.progressToken,{kind:"end",conversationId:r.id,turnId:n.id,...o})}async cancel(e,r,n,o){await e.get(Er).connection.sendProgress(Oze,this.progressToken,{kind:"end",conversationId:r.id,turnId:n.id,cancellationReason:"CancelledByUser",error:o})}};function iie(t){return new kGt(t.workDoneToken)}a(iie,"createProgressHandler");f();f();var Dze=new Fe("agenticTurnProcessor"),Mze=class{constructor(e,r,n){this.turnContext=e;this.strategy=r;this.chatFetcher=n;this.conversationProgress=e.ctx.get(Qs),this.chatFetcher=this.chatFetcher??new ea(e.ctx),this.turnSuggestions=new BM(e.ctx,this.chatFetcher),this.conversation=e.conversation,this.turn=e.turn}static{a(this,"AgenticTurnProcessor")}async process(e,r,n,o,s,c){try{await this.processWithModelAndToolCall(e,r,this.turnContext,n,o,s,c)}catch(l){Br.error(this.turnContext.ctx,`Error processing turn ${this.turn.id}`,l);let u=l instanceof Error?l.message:String(l);this.turn.status="error",this.updateTurnResponseWithError(u),await this.endProgress({error:{message:u,code:$K.Unknown,responseIsIncomplete:!0}})}}async processWithModelAndToolCall(e,r,n,o,s,c,l){if(r.isCancellationRequested)return;await this.conversationProgress.begin(this.conversation,this.turn,e);let u=await pa(this.turnContext.ctx,this.turnContext,{languageId:s?.detectedLanguageId??""});this.turn.chatMode!==void 0&&!Bht(this.turn.chatMode)&&gt(this.turnContext.ctx,"customAgent.turn",u.extendedBy({mode:this.turn.chatMode.isBuiltIn?this.turn.chatMode.name:"[redacted]"})),r.onCancellationRequested(async()=>{Dze.info(this.turnContext.ctx,`Cancellation requested for turn ${this.turn.id}`),this.turn.status="cancelled",await this.cancelProgress()});let d=lq().find(p=>p.id===this.turn.template?.templateId);if(d?.response){await this.handleTemplateResponse(d,this.turn.template.userQuestion,r);return}try{let p=l&&c?await Lv(this.turnContext.ctx,l,c):await Vi.getModelConfiguration(this.turnContext.ctx,"edits",c,void 0,this.conversation.id.toString(),hw(this.conversation.turns));this.turnContext.setResolvedModelConfiguration(p),await new aX(this.turnContext,this.chatFetcher,p,u).run(r);let m={suggestedTitle:void 0};if(this.strategy.computeSuggestions){let g=await this.fetchSuggestedTitle(r,u.extendedBy({messageSource:"chat.user"},{}));typeof g=="string"&&g!==""&&(m.suggestedTitle=g)}await this.endProgress(m)}catch(p){if(p instanceof l8)Dze.info(this.turnContext.ctx,`Tool call canceled for turn ${this.turn.id}`,p),this.turn.status="cancelled",await this.cancelProgress();else if(p instanceof xa)Dze.info(this.turnContext.ctx,`Turn ${this.turn.id} was cancelled`,p),this.turn.status="cancelled",this.updateTurnResponseWithError("Cancelled by user"),await this.cancelProgress();else if(p instanceof N4)this.turn.status="error",this.updateTurnResponseWithError(p.message),await this.endProgress({error:{message:p.message,code:$K.ToolRoundExceedError,responseIsIncomplete:!0}});else if(p instanceof jp)this.turn.status="error",this.updateTurnResponseWithError(p.message),await this.endProgress({error:p.conversationError});else throw Dze.error(this.turnContext.ctx,`Error in processing turn ${this.turn.id}`,p),p}}async fetchSuggestedTitle(e,r){let n=await this.turnSuggestions.fetchRawSuggestions(this.turnContext,e,this.strategy.uiKind,r);if(n)return Br.debug(this.turnContext.ctx,"Computed suggested title",n.suggestedTitle),n.suggestedTitle}updateTurnResponseWithError(e){this.turn.response?.message?this.turn.response.message=RU(this.turn.response?.message,{role:"assistant",content:e}):this.turn.response={message:e,type:"meta"}}async endProgress(e){await this.turnContext.steps.finishAll(),await this.conversationProgress.end(this.conversation,this.turn,e)}async cancelProgress(){await this.turnContext.agentToolCalls.finishAll("cancelled"),await this.turnContext.steps.finishAll("cancelled"),await this.conversationProgress.cancel(this.conversation,this.turn)}async handleTemplateResponse(e,r,n){if(!e.response)return;let o=await e.response(this.turnContext,r,n);this.turn.response={type:"meta",message:o.message},this.turn.status=o.error?.responseIsFiltered?"filtered":o.error?.responseIsIncomplete?"error":"success",o.error?.responseIsFiltered||o.error?.responseIsIncomplete?(await this.conversationProgress.report(this.conversation,this.turn,{reply:"Sure, I can definitely do that!",annotations:o.annotations,notifications:o.notifications,references:o.references}),await this.turnContext.steps.finishAll(),await this.endProgress({error:{message:o.message,code:o.error?.code||0,responseIsIncomplete:o.error?.responseIsIncomplete,responseIsFiltered:o.error?.responseIsFiltered}})):(await this.conversationProgress.report(this.conversation,this.turn,{reply:o.message,annotations:o.annotations,notifications:o.notifications,references:o.references,confirmationRequest:o.confirmationRequest}),await this.endProgress())}};f();var NGt="collect-context",OGt="generate-response",Lze=class{constructor(e,r,n){this.turnContext=e;this.strategy=r;this.chatFetcher=n;this.conversationProgress=e.ctx.get(Qs),this.chatFetcher=this.chatFetcher??new ea(e.ctx),this.postProcessor=new yJ(e,this.chatFetcher,r.computeSuggestions),this.conversation=e.conversation,this.turn=e.turn}static{a(this,"ModelTurnProcessor")}async process(e,r,n,o,s,c){try{await this.processWithModel(e,r,this.turnContext,n,o,s,c)}catch(l){Br.error(this.turnContext.ctx,`Error processing turn ${this.turn.id}`,l);let u=l instanceof Error?l.message:String(l);this.turn.status="error",this.turn.response={message:u,type:"meta"},await this.endProgress({error:{message:u,responseIsIncomplete:!0}})}}async processWithModel(e,r,n,o,s,c,l){await this.conversationProgress.begin(this.conversation,this.turn,e);let u=await pa(this.turnContext.ctx,this.turnContext,{languageId:s?.detectedLanguageId??""});if(u=u.extendedBy({mode:this.turn.getChatModeWithDefault().toLowerCase(),...this.turn.userRequestedModel&&{modelId:this.turn.userRequestedModel}}),r.isCancellationRequested){this.turn.status="cancelled",await this.cancelProgress();return}let d=lq().find(g=>g.id===this.turn.template?.templateId);if(d?.response){await this.handleTemplateResponse(d,this.turn.template.userQuestion,r);return}let p=(await vw(this.turnContext.ctx)).find(g=>g.slug===this.turn.agent?.agentSlug);if(p){let g=await this.checkAgentPreconditions(p);if(g){await this.endProgress(g);return}}await n.steps.start(NGt,"Collecting context"),await this.collectContext(n,r,u,this.strategy.uiKind,d,p);let h;l?h="customized":c?h=(await Vi.getModelConfiguration(this.turnContext.ctx,"user",c,void 0,this.conversation.id.toString(),hw(this.conversation.turns))).uiName:h=void 0;let m=await this.strategy.buildConversationPrompt(n,s?.detectedLanguageId??"",void 0,h);if(!m)await n.steps.error(NGt,"Failed to collect context"),await this.endTurnWithResponse(this.strategy.earlyReturnResponse,"error");else{await n.steps.finish(NGt),await n.steps.start(OGt,"Generating response");let g=this.augmentTelemetry(m,u,d,o,s);if(r.isCancellationRequested){this.turn.status="cancelled",await this.cancelProgress();return}let A=await this.fetchConversationResponse(m.messages,r,u.extendedBy({messageSource:"chat.user"},{promptTokenLen:m.tokens}),g,s,c,l),_=await this.strategy.processResponse(this.turn);this.turn.status==="cancelled"&&this.turn.response?.type==="user"?await this.cancelProgress():(await this.finishGenerateResponseStep(A,n),await this.endProgress({error:A.error,followUp:A.followup,suggestedTitle:A.suggestedTitle,skillResolutions:m.skillResolutions,updatedDocuments:_}))}}async checkAgentPreconditions(e){try{let r=e.checkPreconditions?await e.checkPreconditions(this.turnContext.ctx,this.turn):void 0;if(r&&r.type==="authorizationRequired")return{unauthorized:{...r,agentName:e.name,agentSlug:e.slug}}}catch(r){Br.error(this.turnContext.ctx,`Error checking preconditions for agent ${e.slug}`,r);let n=r instanceof Error?r.message:String(r);return this.turn.status="error",this.turn.response={message:n,type:"meta"},{error:{message:n,responseIsIncomplete:!0}}}}async endTurnWithResponse(e,r){this.turn.response={type:"meta",message:e},this.turn.status=r,await this.conversationProgress.report(this.conversation,this.turn,{reply:e}),await this.endProgress()}async handleTemplateResponse(e,r,n){if(!e.response)return;let o=await e.response(this.turnContext,r,n);this.turn.response={type:"meta",message:o.message},this.turn.status=o.error?.responseIsFiltered?"filtered":o.error?.responseIsIncomplete?"error":"success",o.error?.responseIsFiltered||o.error?.responseIsIncomplete?(await this.conversationProgress.report(this.conversation,this.turn,{reply:"Sure, I can definitely do that!",annotations:o.annotations,notifications:o.notifications,references:o.references}),await this.turnContext.steps.finishAll(),await this.endProgress({error:{message:o.message,code:o.error?.code||0,responseIsIncomplete:o.error?.responseIsIncomplete,responseIsFiltered:o.error?.responseIsFiltered}})):(await this.conversationProgress.report(this.conversation,this.turn,{reply:o.message,annotations:o.annotations,notifications:o.notifications,references:o.references,confirmationRequest:o.confirmationRequest}),await this.endProgress())}async collectContext(e,r,n,o,s,c){let u=await new A3e(this.turnContext.ctx,this.chatFetcher).collectContext(e,r,n,o,s,c);return this.turn.skills=u.skillIds.map(d=>({skillId:d})),u}async fetchConversationResponse(e,r,n,o,s,c,l){r.onCancellationRequested(async()=>{await this.cancelProgress()});let u="",d=0,p=new jM((_,y,E,v)=>{let b=_.trim(),x=b.match(Pfe)!==null&&b.endsWith("-->");if(this.conversationProgress.report(this.conversation,this.turn,{reply:_,annotations:y,references:E,hideText:x,notifications:v.map(I=>({severity:"warning",message:I.message}))}),this.turn.response?this.turn.response.message=rNe(this.turn.response.message,_):this.turn.response={message:_,type:"model"},this.turn.annotations.push(...y??[]),u+=_,this.strategy.currentDocument){let I=this.strategy.extractEditsFromResponse(u,this.strategy.currentDocument);I&&I.length>0&&(u="",this.conversationProgress.report(this.conversation,this.turn,{codeEdits:I}),d+=I.length)}}),h=l&&c?await Lv(this.turnContext.ctx,l,c):await Vi.getModelConfiguration(this.turnContext.ctx,"user",c,void 0,this.conversation.id.toString(),pke(e));e=Vi.transformMessages(e,h.modelFamily),this.turnContext.setResolvedModelConfiguration(h);let m=this.turn.getResolvedModelId();m&&(o=o.extendedBy({modelId:m}));let g={modelConfiguration:h,messages:e,uiKind:this.strategy.uiKind,intentParams:{intent:!0,intent_threshold:.7,intent_content:ln(this.turn.request.message)},llmInteraction:this.turnContext.toLlmInteraction()},A=await this.chatFetcher.fetchResponse(g,r,n,(_,y)=>p.isFinishedAfter(_,y));return o=o.extendedBy(void 0,{numCodeEdits:d}),await this.postProcessor.postProcess(A,r,p.appliedText,n,o,ln(this.turn.request.message),this.strategy.uiKind,s)}augmentTelemetry(e,r,n,o,s){let c;return o?(this.turn.request.type="follow-up",_xr(this.turnContext.ctx,this.conversation,this.strategy.uiKind,ln(this.turn.request.message),e.tokens,o.type,o.id,s,r),c=sfe(this.conversation,this.strategy.uiKind,ln(this.turn.request.message).length,e.tokens,o.type,o.id,r,e.skillResolutions)):c=sfe(this.conversation,this.strategy.uiKind,ln(this.turn.request.message).length,e.tokens,n?.id,void 0,r,e.skillResolutions),c}async finishGenerateResponseStep(e,r){e.error?await r.steps.error(OGt,e.error.message):await r.steps.finish(OGt)}async endProgress(e){await this.turnContext.steps.finishAll(),await this.conversationProgress.end(this.conversation,this.turn,e)}async cancelProgress(){await this.turnContext.steps.finishAll("cancelled"),await this.conversationProgress.cancel(this.conversation,this.turn)}};f();f();var hxn=be(uu()),mxn=be(xT());var Qg=class{constructor(e,r,n){this.ctx=e;this.skillId=r;this.requestType=new hxn.ProtocolRequestType("conversation/context");this.typeCheck=Pc.Compile(n)}static{a(this,"AgentSkillResolver")}async resolveSkill(e){let r=this.ctx.get(Er).connection,n={conversationId:e.conversation.id,turnId:e.turn.id,skillId:this.skillId},o;try{let s=await r.sendRequest(this.requestType,n),[c,l]=s;if(l){let u=new mxn.ResponseError(l.code,l.message,l.data);Br.error(this.ctx,`ResponseError while resolving skill ${this.skillId}`,u);return}o=c}catch(s){Br.error(this.ctx,`Error while resolving skill ${this.skillId}`,s);return}if(o!=null){if(!this.typeCheck.Check(o))throw new Yp(this.typeCheck.Errors(o));return o}}};var DGt=class{constructor(e,r,n="",o="",s=[],c=[]){this.progressToken=e;this.chunks=r;this.followUp=n;this.suggestedTitle=o;this.skills=s;this.references=c}static{a(this,"SyntheticTurn")}},tN=class{constructor(){this.turns=[]}static{a(this,"SyntheticTurns")}add(e,r,n="",o="",s=[],c=[]){let l=new DGt(e,r,n,o,s,c);return this.turns.push(l),l}get(e){return this.turns.find(r=>r.progressToken===e)}},Fze=class{constructor(e,r){this.turnContext=e;this.syntheticTurn=r;this.conversationProgress=e.ctx.get(Qs)}static{a(this,"SyntheticTurnProcessor")}async process(e,r){try{await this.processWithSyntheticTurns(this.syntheticTurn,e,r)}catch(n){Br.error(this.turnContext.ctx,`Error processing turn ${this.turnContext.turn.id}`,n);let o=n.message;this.turnContext.turn.status="error",this.turnContext.turn.response={message:o,type:"meta"},await this.conversationProgress.end(this.turnContext.conversation,this.turnContext.turn,{error:{message:o,responseIsIncomplete:!0}})}}async processWithSyntheticTurns(e,r,n){await this.conversationProgress.begin(this.turnContext.conversation,this.turnContext.turn,r),await this.resolveSyntheticSkill(e,n),await this.processSyntheticChunks(e,n),await this.endSyntheticProgress(e,n),this.turnContext.turn.response={type:"model",message:e.chunks.join("")},this.turnContext.turn.status=n.isCancellationRequested?"cancelled":"success"}async resolveSyntheticSkill(e,r){let n=this.turnContext.ctx.get(Zi).getCapabilities(this.turnContext.conversation.id),o=e.skills.filter(s=>n.skills.includes(s));for(let s of o){let l=await new Qg(this.turnContext.ctx,s,T.Object({value:T.String()})).resolveSkill(this.turnContext);l&&!r.isCancellationRequested&&await this.conversationProgress.report(this.turnContext.conversation,this.turnContext.turn,{reply:l.value})}}async processSyntheticChunks(e,r){for(let n of e.chunks)r.isCancellationRequested||(await this.conversationProgress.report(this.turnContext.conversation,this.turnContext.turn,{reply:n}),await W5(1))}async endSyntheticProgress(e,r){r.isCancellationRequested?await this.conversationProgress.cancel(this.turnContext.conversation,this.turnContext.turn):await this.conversationProgress.end(this.turnContext.conversation,this.turnContext.turn,{followUp:{message:e.followUp,type:"followup",id:Fr()},suggestedTitle:e.suggestedTitle,updatedDocuments:this.turnContext.conversation.source==="inline"?[{uri:"fakeUpdatedDoc.ts",text:"fake"}]:void 0})}};var Tx=class{static{a(this,"TurnProcessorFactory")}async createProcessor(e,r,n){let o=e.ctx.get(tN).get(r);if(o)return new Fze(e,o);let c=(await vw(e.ctx)).find(u=>u.slug===e.turn.agent?.agentSlug);if(c?.turnProcessor)return c.turnProcessor(e);let l;return e.conversation.source==="inline"?l=new Q3e(e.ctx):l=new AJ(e.ctx),n!==void 0&&(l.computeSuggestions=n),e.turn.chatMode?.kind==="Agent"?new Mze(e,l):new Lze(e,l)}};f();var gxn=be(uu());var oie=class{static{a(this,"WorkspaceFoldersValidator")}static validate(e){if(!e)return;let r=new Set;for(let n of e){if(r.has(n.uri))throw new gxn.ResponseError(Et.InvalidParams,`Duplicate workspace folder uri ${n.uri}`);r.add(n.uri)}}};f();function Bze(t){if(t&&t.uri.length>0)return[{uri:t.uri,name:Kn(t.uri)}]}a(Bze,"resolveAsWorkspaceFolders");f();f();var yhs=Object.freeze(function(t,e){let r=setTimeout(t.bind(e),0);return{dispose(){clearTimeout(r)}}}),Rm=class{constructor(e){this.tokens=[];this.handlers=[];this._isCancelled=!1;this.onCancellationRequested=a((e,r)=>this._isCancelled?yhs(e,r):(this.handlers.push(e.bind(r)),{dispose:a(()=>{},"dispose")}),"onCancellationRequested");this.tokens=e,this._isCancelled=e.some(r=>r.isCancellationRequested),e.forEach(r=>{r.onCancellationRequested(n=>this.cancel(n))})}static{a(this,"MergedToken")}cancel(e){this._isCancelled||(this._isCancelled=!0,this.handlers.forEach(r=>r(e)))}get isCancellationRequested(){return this.tokens.some(e=>e.isCancellationRequested)}};var $g=class{constructor(){this.tokens=new Mr(250)}static{a(this,"ProgressTokens")}add(e,r){let n=new un.CancellationTokenSource,o=new Rm([r,n.token]);return this.tokens.set(e.toString(),n),o}cancel(e){let r=this.tokens.get(e.toString());r&&(r.cancel(),this.tokens.delete(e.toString()))}};var Ehs=T.Object({conversationId:T.Optional(Z3e),workDoneToken:T.Union([T.String(),T.Number()]),turns:T.Array(X2r,{minItems:1}),capabilities:T.Optional(T.Object({allSkills:T.Optional(T.Boolean()),skills:T.Optional(T.Array(T.String()))})),doc:T.Optional(BA),textDocument:T.Optional(BA),selection:T.Optional(Xu),visibleRanges:T.Optional(kze),computeSuggestions:T.Optional(T.Boolean()),references:T.Optional(T.Array(EJ)),source:T.Optional(Hv),workspaceFolder:T.Optional(T.String()),workspaceFolders:T.Optional(T.Array(O0)),ignoredSkills:T.Optional(T.Array(T.String())),userLanguage:T.Optional(T.String()),model:T.Optional(T.String()),modelProviderName:T.Optional(T.String()),chatMode:T.Optional(nNe),customChatModeId:T.Optional(T.String()),needToolCallConfirmation:T.Optional(T.Boolean()),todoList:T.Optional(T.Array(iNe))});async function vhs(t,e,r){oie.validate(r.workspaceFolders);let n=await qR(t,r,e),o=t.get(Zi).create(r);r.todoList!==void 0&&t.get(Jv).setTodos(o,r.todoList),await Chs(t,o,r,n);let s=o.turns[o.turns.length-1],c=iie(r),l=t.get($g).add(c.progressToken,e),u=new Yv(t,o,s,l);await(await t.get(Tx).createProcessor(u,c.progressToken,r.computeSuggestions)).process(c,l,void 0,n,r.model,r.modelProviderName);let p=s.resolvedModelConfiguration,h=s9(p);return[{conversationId:o.id,turnId:s.id,agentSlug:s.agent?.agentSlug,modelName:p?.uiName??r.model,modelProviderName:r.modelProviderName,billingMultiplier:h},null]}a(vhs,"handleConversationCreateChecked");async function Chs(t,e,r,n){for(let o of r.turns){let s=tNe(o.request),c=new kv({message:s,type:"user"},o.turnId);o.response&&(c.response={message:o.response,type:"model"}),o.agentSlug&&(c.agent={agentSlug:o.agentSlug});let l=r.workspaceFolder?{uri:r.workspaceFolder}:void 0,u=r.workspaceFolders&&r.workspaceFolders.length>0?r.workspaceFolders:Bze(l),d=t.get(ag),p=lM(r.chatMode);c.chatMode=await d.getChatMode(p,r.customChatModeId,u),c.userRequestedModel=o.model??r.model,c.needToolCallConfirmation=r.needToolCallConfirmation;let h=Nze({textDocument:n,selection:r.selection,visibleRanges:r.visibleRanges});await t.get(Zi).addTurn(e.id,c,r.references,h,l,u,r.ignoredSkills,void 0)}}a(Chs,"addTurns");var Axn=Ke(Ehs,vhs);f();var bhs=T.Object({conversationId:T.String()});function Ths(t,e,r){return t.get(Zi).destroy(r.conversationId),["OK",null]}a(Ths,"handleConversationDestroyChecked");var _xn=Ke(bhs,Ths);f();var Shs=T.Object({workspaceFolders:T.Optional(T.Array(O0))});async function xhs(t,e,r){return[(await t.get(ag).listChatModes(r.workspaceFolders)).map(c=>({id:c.id,name:c.name,kind:c.kind,isBuiltIn:c.isBuiltIn,uri:c.uri,description:c.description,customTools:c.customTools,model:c.model,handOffs:c.handOffs})),null]}a(xhs,"handleConversationModesChecked");var yxn=Ke(Shs,xhs);f();var Ihs=T.Object({turnId:T.String(),acceptedFileCount:T.Number({minimum:0}),totalFileCount:T.Number({minimum:1})}),whs=new Fe("conversationNotifyCodeAcceptance");async function Rhs(t,e,r){let n=t.get(Zi).findByTurnId(r.turnId);if(!n)return whs.warn(t,`Turn with id ${r.turnId} not found`),["OK",null];let o=await pa(t,n,{languageId:""});return cg(t,void 0,{mode:n?.turn.getChatModeWithDefault()?.toLowerCase()??"unknown",modelId:n?.turn.getResolvedModelId()??"unknown"},{acceptedFileCount:r.acceptedFileCount,totalFileCount:r.totalFileCount},`${w0("agentPanel")}.codeAcceptance`,o),["OK",null]}a(Rhs,"handleConversationNotifyCodeAcceptanceChecked");var Exn=Ke(Ihs,Rhs);f();var Phs=T.Object({});function khs(t,e,r){return[{path:t.get(Zn).directory},null]}a(khs,"handleConversationPersistenceChecked");var vxn=Ke(Phs,khs);f();f();var MGt=class{static{a(this,"TokenPreconditionCheck")}async check(e,r){let n=await e.get(mn).getSession(),o=e.get(cl);return n&&n.githubAppId&&(r||n.githubAppId!==Gb)?{type:"token",status:"ok"}:{type:"token",status:"failed",githubAppId:o.githubAppId}}},LGt=class{static{a(this,"ChatEnabledPreconditionCheck")}async check(e,r){return{type:"chat_enabled",status:(await e.get(Bt).getToken()).envelope.chat_enabled?"ok":"failed"}}},Nhs=[new MGt,new LGt],tb=class{constructor(e,r=Nhs){this.ctx=e;this.checks=r;this.emitter=new oi;this.onChange=this.emitter.event;yo(e,async()=>{await this.check()})}static{a(this,"PreconditionsCheck")}check(e,r){return e&&(this.result=void 0),this.result===void 0&&(this.result=this.requestChecks(r)),this.result}async requestChecks(e){let r=[];this.checks.length>0&&(r=await Promise.all(this.checks.map(s=>s.check(this.ctx,e))));let n=r.every(s=>s.status==="ok")?"ok":"failed",o={results:r,status:n};return this.emitter.fire(o),o}};var Ohs=T.Object({forceCheck:T.Optional(T.Boolean()),skipAppIdCheck:T.Optional(T.Boolean())});async function Dhs(t,e,r){let n=r.forceCheck??!1,o=r.skipAppIdCheck??!1;return[await t.get(tb).check(n,o),null]}a(Dhs,"handleConversationPreconditionsChecked");var Cxn=Ke(Ohs,Dhs);f();var Mhs=T.Object({turnId:T.String(),rating:T.Number(),doc:T.Optional(BA),textDocument:T.Optional(BA),source:T.Optional(Hv)});async function Lhs(t,e,r){let n=await qR(t,r,e),o=SM(r.source),s="unrated";r.rating>0?s="positive":r.rating<0&&(s="negative");let c=await pa(t,t.get(Zi).findByTurnId(r.turnId),{languageId:n?.detectedLanguageId??""});return cg(t,n,{rating:s,uiKind:o},{},`${w0(o)}.messageRating`,c),["OK",null]}a(Lhs,"handleConversationRatingChecked");var bxn=Ke(Mhs,Lhs);f();var Fhs=T.Object({tools:T.Array(Z2r)});function Bhs(t,e,r){let n=t.get(Ds);return r.tools.forEach(s=>{n.registerTool(new g8({name:s.name,description:s.description,inputSchema:s.inputSchema,confirmationMessages:s.confirmationMessages}))}),[n.getToolsForModel().filter(s=>s.type!=="mcp"),null]}a(Bhs,"conversationRegisterToolsChecked");var Txn=Ke(Fhs,Bhs);f();var Uhs=T.Object({workspaceFolders:T.Optional(T.Array(O0))});async function qhs(t,e,r){let n=Oyt(t).map(l=>({id:l.id,description:l.description,shortDescription:l.shortDescription,scopes:l.scopes})),o=t.get(Ul),c=o.collectGlobalPromptFiles().filter(l=>!n.some(u=>u.id===l.name)).map(l=>({id:l.name,description:l.description||"",shortDescription:"",scopes:["chat-panel","agent-panel"]}));if(n.push(...c),r.workspaceFolders&&r.workspaceFolders.length>0){let u=(await o.collectPromptFiles(t,r.workspaceFolders)).filter(m=>!n.some(g=>g.id===m.name)).map(m=>({id:m.name,description:m.description||"",shortDescription:"",scopes:["chat-panel","agent-panel"]}));n.push(...u);let h=(await t.get(k4).listSkills(r.workspaceFolders)).map(m=>({id:`skill:${Kn(Il(m.uri))}`,description:m.description||"",shortDescription:m.name,scopes:["agent-panel"]})).filter(m=>!n.some(g=>g.id===m.id));n.push(...h)}return[n,null]}a(qhs,"handleConversationTemplatesChecked");var Sxn=Ke(Uhs,qhs);f();var jhs=T.Object({workDoneToken:T.Union([T.String(),T.Number()]),conversationId:Z3e,turnId:T.Optional(WU),message:Kgt,followUp:T.Optional(T.Object({id:T.String(),type:T.String()})),doc:T.Optional(BA),textDocument:T.Optional(BA),selection:T.Optional(Xu),visibleRanges:T.Optional(kze),computeSuggestions:T.Optional(T.Boolean()),references:T.Optional(T.Array(EJ)),workspaceFolder:T.Optional(T.String()),workspaceFolders:T.Optional(T.Array(O0)),ignoredSkills:T.Optional(T.Array(T.String())),confirmationResponse:Sxr,model:T.Optional(T.String()),modelProviderName:T.Optional(T.String()),chatMode:T.Optional(nNe),customChatModeId:T.Optional(T.String()),needToolCallConfirmation:T.Optional(T.Boolean()),agentSlug:T.Optional(T.String()),todoList:T.Optional(T.Array(iNe))});async function Qhs(t,e,r){oie.validate(r.workspaceFolders);let n=await qR(t,r,e),o=t.get(Zi),s=o.get(r.conversationId);r.todoList!==void 0&&t.get(Jv).setTodos(s,r.todoList);let c=tNe(r.message),l=new kv({message:c,type:"user"},r.turnId),u=r.workspaceFolder?{uri:r.workspaceFolder}:void 0,d=r.workspaceFolders&&r.workspaceFolders.length>0?r.workspaceFolders:Bze(u),p=t.get(ag),h=lM(r.chatMode);l.chatMode=await p.getChatMode(h,r.customChatModeId,d),l.userRequestedModel=r.model,l.needToolCallConfirmation=r.needToolCallConfirmation,r.agentSlug&&(l.agent={agentSlug:r.agentSlug});let m=Nze({textDocument:n,selection:r.selection,visibleRanges:r.visibleRanges});l=await o.addTurn(s.id,l,r.references,m,u,d,r.ignoredSkills,r.confirmationResponse);let g=iie(r),A=t.get($g).add(g.progressToken,e),_=new Yv(t,s,l,A);await(await t.get(Tx).createProcessor(_,g.progressToken,r.computeSuggestions)).process(g,A,r.followUp,n,r.model,r.modelProviderName);let E=l.resolvedModelConfiguration,v=s9(E);return[{conversationId:s.id,turnId:l.id,agentSlug:l.agent?.agentSlug,modelName:E?.uiName??r.model,modelProviderName:r.modelProviderName,billingMultiplier:v},null]}a(Qhs,"handleConversationTurnChecked");var xxn=Ke(jhs,Qhs);f();var $hs=T.Object({conversationId:T.String(),turnId:T.String(),source:T.Optional(Hv)});async function Ghs(t,e,r){t.get(Zi).deleteTurn(r.conversationId,r.turnId);let o=SM(r.source),s=await pa(t,t.get(Zi).findByTurnId(r.turnId),{languageId:""});return cg(t,void 0,{messageId:r.turnId,uiKind:o,conversationId:r.conversationId},{},`${w0(o)}.messageDelete`,s),["OK",null]}a(Ghs,"handleConversationTurnDeleteChecked");var Ixn=Ke($hs,Ghs);f();var Vhs=T.Object({toolIds:T.Array(T.String())});function Hhs(t,e,r){let n=t.get(Ds);return r.toolIds.forEach(s=>{n.unregisterTool(s)}),[n.getToolsForModel().filter(s=>s.type!=="mcp"),null]}a(Hhs,"conversationUnregisterToolsChecked");var wxn=Ke(Vhs,Hhs);f();var Whs=T.Object({chatModeKind:T.Optional(T.Literal("Agent")),customChatModeId:T.Optional(T.String()),workspaceFolders:T.Optional(T.Array(O0)),tools:T.Array(T.Object({name:T.String(),status:T.Enum(X5)}))});async function zhs(t,e,r){let{chatModeKind:n,customChatModeId:o,workspaceFolders:s}=r,c=await t.get(ag).getChatMode(n?lM(n):"Agent",o,s),l=t.get(Ds),u=r.tools.map(({name:p,status:h})=>({toolName:p,status:h}));return await l.updateToolsStatusByName(c,u),[l.getToolsForModel(c).filter(p=>p.type!=="mcp"),null]}a(zhs,"conversationUpdateToolsStatusChecked");var Rxn=Ke(Whs,zhs);f();f();f();var Uze=/```suggestion(\u0020*(\r\n|\n))((?<suggestion>[\s\S]*?)(\r\n|\n))?```/g;var sie=class t{static{a(this,"CodeReviewResponseParser")}static findFirstNonWhitespaceCharacterIndex(e){let r=e.match(/\S/);return r?r.index:e.length}static removeSuggestion(e){return e.replaceAll(Uze,"")}static extractSuggestionAndText(e){Uze.lastIndex=0;let n=Uze.exec(e)?.groups?.suggestion||null,o=t.removeSuggestion(e);return{suggestion:n,textWithoutSuggestion:o}}static ghCommentToReviewComment(e,r){let n=r.headContent.split(`
2848
2848
  `)[e.data.line-1],o=n.trimEnd().length,s={start:{line:e.data.start_line?e.data.start_line+r.startLineOffset-1:e.data.line+r.startLineOffset-1,character:t.findFirstNonWhitespaceCharacterIndex(n)},end:{line:e.data.line+r.startLineOffset-1,character:o}},c=e.data.body,{suggestion:l,textWithoutSuggestion:u}=t.extractSuggestionAndText(c);return{uri:r.uri,range:s,message:u,kind:e.data.problem_type,severity:"medium",suggestion:l}}static parseLine(e){if(e==="data: [DONE]")return[];if(e==="")return[];let r=JSON.parse(e.replace("data: ",""));return Array.isArray(r.copilot_references)&&r.copilot_references.length>0?r.copilot_references.filter(n=>n.type):[]}static parseReviewResponse(e,r){let n=e.split(`
2849
2849
  `),o=[];for(let s of n){let c=t.parseLine(s);for(let l of c.filter(u=>u.type==="github.generated-pull-request-comment")){if(l.data.side!=="RIGHT")continue;let u=r.find(p=>p.path===l.data.path);if(!u)continue;let d=t.ghCommentToReviewComment(l,u);o.push(d)}}return o}};f();f();var qze=require("path");var aie=class t{constructor(e,r){this.ctx=e;this.workspaceFolders=r}static{a(this,"BaseReviewProvider")}static{this.DEFAULT_TIMEOUT=120*1e3}static{this.CODING_GUIDELINES_START_INDEX=2}static{this.CODE_REVIEW_ENDPOINT_SERVICE="api"}static{this.CODE_REVIEW_ENDPOINT_PATH="agents/github-code-review"}static{this.CODE_REVIEW_MODE_HEADER="X-Copilot-Code-Review-Mode"}static{this.CODE_REVIEW_MODE_VALUE="ide"}static{this.COPILOT_INTEGRATION_ID_HEADER="Copilot-Integration-Id"}static{this.GITHUB_CODING_GUIDELINE="github.coding_guideline"}static{this.CODING_GUIDELINE="coding-guideline"}static{this.UI_KIND="codeReview"}async fetchCodeReview(e,r){let n=await this.ctx.get(Bt).getToken(),o=Kx(this.ctx,n,t.CODE_REVIEW_ENDPOINT_SERVICE,t.CODE_REVIEW_ENDPOINT_PATH),c=dy(this.ctx)[t.COPILOT_INTEGRATION_ID_HEADER];this.telemetryTracker.telemetrySent();let l=ca();return await G5(this.ctx,o,n.token,void 0,this.telemetryTracker.headerRequestId,e,r,{[t.CODE_REVIEW_MODE_HEADER]:t.CODE_REVIEW_MODE_VALUE,[t.COPILOT_INTEGRATION_ID_HEADER]:c},t.DEFAULT_TIMEOUT).then(d=>{let p=t4(d);this.telemetryTracker.telemetryData.extendWithRequestId(p);let h=ca()-l;return this.telemetryTracker.telemetryData.measurements.totalTimeMs=h,this.telemetryTracker.telemetryResponse(),d}).catch(d=>{if(u0(d))throw d;let p=ca()-l;throw this.telemetryTracker.telemetryData.measurements.totalTimeMs=p,this.telemetryTracker.telemetryError(d),d})}getCodingGuidelineName(e){return(0,qze.basename)(e,(0,qze.extname)(e))}copilotInstructionsToCodingGuideline(e,r){return e.map((n,o)=>({type:t.GITHUB_CODING_GUIDELINE,id:(o+r).toString(),data:{id:o+r,type:t.CODING_GUIDELINE,name:this.getCodingGuidelineName(n.reference),description:n.content.map(s=>s.instruction).join(`
2850
2850
  `),filePatterns:[]}}))}customInstructionsToCodingGuideline(e,r){return e.map((n,o)=>({type:t.GITHUB_CODING_GUIDELINE,id:(o+r).toString(),data:{id:o+r,type:t.CODING_GUIDELINE,name:n.description??this.getCodingGuidelineName(n.uri),description:n.content,filePatterns:[n.applyTo]}}))}async buildCodingGuideline(e){if(!this.workspaceFolders||this.workspaceFolders.length===0)return[];let r=[],n=t.CODING_GUIDELINES_START_INDEX,s=await this.ctx.get(og).readFromWorkspaces(this.ctx,this.workspaceFolders.map(u=>({uri:u.uri})),{includeCodeGenerationInstructions:!0});s.length>0&&(r=[...r,...this.copilotInstructionsToCodingGuideline(s,n)],n+=s.length);let l=await this.ctx.get(Ul).collectInstructionFiles(this.ctx,this.workspaceFolders,e);return l.length>0&&(r=[...r,...this.customInstructionsToCodingGuideline(l,n)],n+=l.length),r}};f();var cie=class t{constructor(e,r={}){this.ctx=e;this.id=Fr(),this.telemetryData=t.createTelemetryData(this.id).extendedBy(r)}static{a(this,"CopilotCodeReviewTelemetry")}static createTelemetryData(e){let r={headerRequestId:e};return Ht.createAndMarkAsIssued(r)}telemetrySent(){gt(this.ctx,"request.sent",this.telemetryData)}telemetryResponse(){gt(this.ctx,"request.response",this.telemetryData)}telemetryError(e){this.telemetryData.properties.message=String(Hd(e,"name")??""),this.telemetryData.properties.code=String(Hd(e,"code")??""),this.telemetryData.properties.errno=String(Hd(e,"errno")??""),this.telemetryData.properties.type=String(Hd(e,"type")??""),gt(this.ctx,"request.error",this.telemetryData)}get headerRequestId(){return this.id}};var jze=class t extends aie{constructor(r,n,o){super(r,o);this.changes=n;this.name="ReviewChangesProvider";this.telemetryTracker=new cie(r,{mode:"reviewChanges",uiKind:t.UI_KIND})}static{a(this,"ReviewChangesProvider")}async fetchCodeReview(r,n){return super.fetchCodeReview(r,n)}async changesToReference(){let r=this.ctx.get(Sa),n=[],o=await Promise.allSettled(this.changes.map(s=>r.evaluate(s.uri,s.headContent)));for(let s=0;s<this.changes.length;s++){let c=this.changes[s],l=o[s];l&&l.status==="fulfilled"&&!l.value.isBlocked&&n.push(c)}return{type:"github.pull_request",id:"1",data:{type:"pull-request",headFileContents:n.map(s=>({path:s.path,content:s.headContent})),baseFileContents:n.map(s=>({path:s.path,content:s.baseContent}))}}}async buildCodingGuideline(){return super.buildCodingGuideline(this.changes.map(r=>r.uri))}async createReviewRequest(){return{messages:[{role:"user",copilot_references:[await this.changesToReference(),...await this.buildCodingGuideline()]}]}}};var Yhs=T.Object({uri:T.String(),path:T.String(),baseContent:T.String(),headContent:T.String()}),Khs=T.Object({changes:T.Array(Yhs),workspaceFolders:T.Optional(T.Array(O0))}),kye;async function Jhs(t,e,r){kye&&(kye.cancel(),kye.dispose()),kye=new un.CancellationTokenSource;let n=new Rm([e,kye.token]),o=new jze(t,r.changes,r.workspaceFolders);if(!(await t.get(Bt).getToken()).isCopilotCodeReviewEnabled)return[null,{code:Et.InternalError,message:"GitHub Copilot Code Review is not enabled."}];let c=await o.createReviewRequest(),l=await o.fetchCodeReview(c,n),u=await l.text();if(!l.ok)return l.status===402?[null,{code:l.status,message:"You have reached your GitHub Copilot Code Review quota limit."}]:(Nr.error(t,`Code review request failed: ${l.status}. Response: ${u}`),[null,{code:Et.InternalError,message:"Failed to generate code review."}]);let d=r.changes.map(h=>({uri:h.uri,path:h.path,headContent:h.headContent,startLineOffset:0}));return[{comments:sie.parseReviewResponse(u,d)},null]}a(Jhs,"handleCopilotCodeReviewReviewChangesChecked");var Pxn=Ke(Khs,Jhs);f();f();var Qze=class t extends aie{constructor(r,n){super(r,n);this.name="ReviewSnippetsProvider";this.telemetryTracker=new cie(r,{mode:"reviewSnippets",uiKind:t.UI_KIND})}static{a(this,"ReviewSnippetsProvider")}static{this.SNIPPET_REVIEW_TYPE="snippet"}async fetchCodeReview(r,n){return super.fetchCodeReview(r,n)}async buildCodingGuideline(r){return super.buildCodingGuideline(r)}snippetsToReference(r){return{type:"github.pull_request",id:"1",data:{type:"pull-request",headFileContents:r.map(n=>({path:n.path,content:n.content})),baseFileContents:[]}}}static snippetsToSnippetFile(r){let n=r[0];return n?.startLine!==void 0&&n?.endLine!==void 0?{path:n.path,start_line:n.startLine,end_line:n.endLine}:void 0}async createReviewRequest(r){let n=this.ctx.get(Sa),o=await Promise.allSettled(r.map(u=>n.evaluate(u.uri,u.content))),s=[];for(let u=0;u<r.length;u++){let d=o[u];d.status==="fulfilled"&&!d.value.isBlocked&&s.push(r[u])}let c=s.map(u=>u.uri),l=await this.buildCodingGuideline(c);return{messages:[{role:"user",review_type:t.SNIPPET_REVIEW_TYPE,copilot_references:[this.snippetsToReference(s),...l],snippet_file:t.snippetsToSnippetFile(s)}]}}};var Xhs=T.Object({uri:T.String(),path:T.String(),content:T.String(),startLine:T.Number(),endLine:T.Number()}),Zhs=T.Object({snippets:T.Array(Xhs),workspaceFolders:T.Optional(T.Array(O0))}),Nye;async function ems(t,e,r){Nye&&(Nye.cancel(),Nye.dispose()),Nye=new un.CancellationTokenSource;let n=new Rm([e,Nye.token]),o=new Qze(t,r.workspaceFolders);if(!(await t.get(Bt).getToken()).isCopilotCodeReviewEnabled)return[null,{code:Et.InternalError,message:"GitHub Copilot Code Review is not enabled."}];let c=await o.createReviewRequest(r.snippets),l=await o.fetchCodeReview(c,n);if(!l.ok)return l.status===402?[null,{code:l.status,message:"You have reached your GitHub Copilot Code Review quota limit."}]:[null,{code:Et.InternalError,message:"Failed to generate code review."}];let u=await l.text(),d=r.snippets.map(h=>({uri:h.uri,path:h.path,headContent:h.content,startLineOffset:h.startLine-1}));return[{comments:sie.parseReviewResponse(u,d)},null]}a(ems,"handleCopilotCodeReviewReviewSnippetsChecked");var kxn=Ke(Zhs,ems);f();f();f();var $ze=class extends Error{static{a(this,"EditTurnNotFoundException")}constructor(e){super(e),this.name="EditTurnNotFoundException"}};var a9=class{constructor(e,r){this.request=e;this.id=Fr();this.timestamp=Date.now();this.status="in-progress";this.workingSet=[];r&&r.length>0&&(this.workingSet=r)}static{a(this,"EditTurn")}},FGt=class{constructor(e=[]){this.turns=[];this.turns=e}static{a(this,"EditTurnManager")}addTurn(e){this.turns.push(e)}deleteTurn(e){this.turns=this.turns.filter(r=>r.id!==e)}getLastTurn(){if(this.turns.length!==0)return this.turns[this.turns.length-1]}hasTurn(e){return this.turns.some(r=>r.id===e)}getTurns(){return[...this.turns]}},Gze=class{constructor(e=[],r="panel",n="en"){this._id=Fr();this._timestamp=Date.now();this.source="panel";this.userLanguage="en";this.source=r,this.userLanguage=n,this.turnsManager=new FGt(e)}static{a(this,"EditConversation")}get id(){return this._id}get timestamp(){return this._timestamp}getUserLanguage(){return this.userLanguage}getTurns(){return this.turnsManager.getTurns()}getSource(){return this.source}addTurn(e){this.turnsManager.addTurn(e)}deleteTurn(e){this.turnsManager.deleteTurn(e)}getLastTurn(){let e=this.turnsManager.getLastTurn();if(e===void 0)throw new $ze(`No turns in the conversation ${this._id}`);return e}hasTurn(e){return this.turnsManager.hasTurn(e)}};f();f();var rN=class{static{a(this,"CopilotEditsPromptUriUtils")}static pathToUri(e,r){let n=e.mapToUriInWorkingSet(r);return n||Qa(r)}static uriToPath(e){let r=xi(e);if(r)return r;throw new Error(`Unsupported URI scheme: ${e.split(":")[0]}`)}static posixFilePathToUri(e){return process.platform==="win32"?`file:///c:${e}`:`file://${e}`}};var c9=class{constructor(e,r,n,o,s,c){this.ctx=e;this.editConversation=r;this.currentTurn=n;this.partialResultToken=o;this.userSelectedModel=s;this.userSelectedModelProviderName=c;this.workingSetUriToPathMap=new Map;for(let l of n.workingSet)this.workingSetUriToPathMap.set(l.uri,rN.uriToPath(l.uri))}static{a(this,"EditTurnContext")}get editTurnId(){return this.currentTurn.id}get editConversationId(){return this.editConversation.id}mapToUriInWorkingSet(e){for(let[r,n]of this.workingSetUriToPathMap)if(n===e)return r}toLlmInteraction(){return hg.user("conversation-edits",this.editTurnId)}};f();f();var Pm=class extends Error{constructor(r){super(r.message);this.editConversationError=r;this.name="EditConversationException"}static{a(this,"EditConversationException")}};f();var rms=new Fe("EditCodeResultProcessor");function Sx(t,e){let r=t.currentTurn.resolvedModelConfiguration;return{...e,modelName:r?.uiName,modelProviderName:r?.providerName,billingMultiplier:s9(r)}}a(Sx,"createErrorWithModelInfo");var Vze=class{static{a(this,"EditCodeResultProcessor")}static processResult(e,r){switch(r.type){case"success":return r.value;case"offTopic":{e.currentTurn.status="off-topic";let n="Sorry, but I can only assist with programming related questions.";throw e.currentTurn.response={message:n,type:"offtopic-detection"},new Pm(Sx(e,{message:n,responseIsFiltered:!0}))}case"canceled":throw e.currentTurn.status="cancelled",e.currentTurn.response={message:FM,type:"user"},new Pm(Sx(e,{message:FM}));case"failed":throw e.currentTurn.status="error",e.currentTurn.response={message:r.reason,type:"server"},rms.error(e.ctx,"Fetch failed:",r),new Pm(Sx(e,{message:QM.translateErrorMessage(r.code,r.reason,r.requestId),code:r.code}));case"filtered":throw e.currentTurn.status="filtered",new Pm(Sx(e,{message:"Oops, your response got filtered.",responseIsFiltered:!0}));case"length":throw e.currentTurn.status="error",new Pm(Sx(e,{message:"Oops, the response got too long. Try to reformulate your question.",responseIsIncomplete:!0}));case"agentAuthRequired":throw e.currentTurn.status="error",e.currentTurn.response={message:"Authorization required",type:"server"},new Pm(Sx(e,{message:"Authorization required",responseIsFiltered:!1}));case"no_choices":throw e.currentTurn.status="error",e.currentTurn.response={message:"No choices returned",type:"server"},new Pm(Sx(e,{message:"Oops, no choices received from the server. Please try again.",responseIsFiltered:!1,responseIsIncomplete:!0}));case"no_finish_reason":throw e.currentTurn.status="error",e.currentTurn.response={message:"No finish reason",type:"server"},new Pm(Sx(e,{message:"Oops, unexpected end of stream. Please try again.",responseIsFiltered:!1,responseIsIncomplete:!0}));case"model_not_supported":throw e.currentTurn.status="error",e.currentTurn.response={message:"Model not supported",type:"server"},new Pm(Sx(e,{message:"Oops, the model is not supported. Please try again.",code:400,reason:"model_not_supported",responseIsFiltered:!1}));case"model_max_prompt_tokens_exceeded":throw e.currentTurn.status="error",e.currentTurn.response={message:"Model max prompt tokens exceeded",type:"server"},new Pm(Sx(e,{message:"Oops, the token limit exceeded. Try to shorten your prompt or start a new conversation.",code:400,reason:"model_max_prompt_tokens_exceeded",responseIsFiltered:!1}));case"successMultiple":case"tool_calls":case"unknown":throw e.currentTurn.status="error",new Pm(Sx(e,{message:"Unknown server side error occurred. Please try again.",responseIsFiltered:!1}))}}};f();var mh=class{constructor(e){this.ctx=e}static{a(this,"EditProgressReporter")}},Hze=class extends mh{constructor(){super(...arguments);this.items=[]}static{a(this,"LibTestEditProgressReporter")}reset(){this.items=[]}reportTurn(r,n){return this.items.push({editConversationId:r.editConversationId,editTurnId:r.editTurnId,...n}),Promise.resolve()}};f();async function*Nxn(t){yield Promise.resolve(t)}a(Nxn,"stringToAsyncIterable");f();var Wze=class{constructor(e){this.props=e;this.exampleFilePath=this.getExampleFilePath("/path/to/file"),this.tsExampleFilePath=this.getExampleFilePath("/Users/someone/proj01/example.ts")}static{a(this,"EditCodePrompt")}async render(){let e=await this.getValidFilesInWorkingSet(),r=[{role:"system",content:this.buildSystemMessage(e)}];if(this.props.history&&this.props.history.length>0)for(let o of this.props.history)r.push({role:"user",content:o.request.message}),o.response&&o.response.type==="model"&&r.push({role:"assistant",content:o.response.message});let n=await FT.appendToUserMessage(this.props.ctx,this.props.workspaceFolder?[{uri:this.props.workspaceFolder}]:[],this.buildUserMessage(e),{includeCodeGenerationInstructions:!0,includeCommitMessageGenerationInstructions:!1},[]);return r.push({role:"user",content:n}),r}getExampleFilePath(e){return this.getFilePath(rN.posixFilePathToUri(e))}getFilePath(e){return rN.uriToPath(e)}async getValidFilesInWorkingSet(){let e=new Map;if(this.props.workingSet===void 0||this.props.workingSet===null||this.props.workingSet.length===0)return e;for(let r of this.props.workingSet){let n=await this.props.textDocumentProvider.getByUri(r.uri);n.status==="valid"&&e.set(r.uri,n.document)}return e}buildSystemMessage(e){let r=[];return r.push("You are an AI programming assistant.",'When asked for your name, you must respond with "GitHub Copilot".',"Follow the user's requirements carefully & to the letter.","Follow Microsoft content policies.","Avoid content that violates copyrights.",`If you are asked to generate content that is harmful, hateful, racist, sexist, lewd, violent, or completely irrelevant to software engineering, only respond with "Sorry, I can't assist with that."`,"Keep your answers short and impersonal.",e.size>0?"The user has a request for modifying one or more files.":["If the user asks a question, then answer it.",`If you need to change existing files and it's not clear which files should be changed, then refuse and answer with "Please add the files to be modified to the working set"`].join(`