@github/copilot-language-server 1.465.4 → 1.465.5
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 +3 -3
- package/dist/main.js.map +1 -1
- package/package.json +8 -8
package/dist/main.js
CHANGED
|
@@ -1602,7 +1602,7 @@ ${r}+- `:"";return e+this.description+o}}},wp=class{constructor(e,r,n,o){this.la
|
|
|
1602
1602
|
(using_declaration)
|
|
1603
1603
|
(alias_declaration)
|
|
1604
1604
|
(static_assert_declaration)
|
|
1605
|
-
] @statement`}};var b2=class{constructor(e,r,n){this.languageId=e;this.prefix=r;this.completion=n}static{a(this,"BlockTrimmer")}static isSupported(e){return wp.isSupported(e)}static isTrimmedByDefault(e){return wp.isTrimmedByDefault(e)}async withParsedStatementTree(e){var n=[];try{let r=llt(n,wp.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{ult(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 PMe=class extends b2{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 gkr(t,e){var l=[];try{let r=t.getText();let n=t.offsetAt(e);let o=llt(l,wp.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{ult(l,d,p)}}a(gkr,"getBlockPositionType");f();function d2i(t){return t.HTTPS_PROXY||t.https_proxy||t.HTTP_PROXY||t.http_proxy}a(d2i,"getProxyFromEnvironment");function f2i(t){return t.NODE_TLS_REJECT_UNAUTHORIZED!=="0"}a(f2i,"getRejectUnauthorizedFromEnvironment");var _kr=S.Object({proxy:S.Optional(S.String()),proxyStrictSSL:S.Optional(S.Boolean()),proxyAuthorization:S.Optional(S.String()),proxyKerberosServicePrincipal:S.Optional(S.String()),noProxy:S.Optional(S.Array(S.String()))});function ykr(t){let e=d2i(t),r=Nhe({proxy:e,proxyStrictSSL:f2i(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(ykr,"getHttpSettingsFromEnvironment");function Nhe(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||p2i(n,o),noProxy:t.noProxy||[]}}catch{return{...t,proxy:""}}}a(Nhe,"normalizeHttpSettings");function p2i(t,e){return!t||!e?"":`${decodeURIComponent(t)}:${decodeURIComponent(e)}`}a(p2i,"getAuth");var XAt={};yi(XAt,{build:()=>y2i,buildType:()=>A2i,default:()=>S2i,dependencies:()=>b2i,description:()=>g2i,devDependencies:()=>C2i,displayName:()=>m2i,engines:()=>E2i,name:()=>h2i,overrides:()=>T2i,scripts:()=>v2i,version:()=>_2i});var h2i="copilot",m2i="GitHub Copilot",g2i="Your AI pair programmer",_2i="1.465.4",y2i="133",A2i="prod",E2i={node:">=22.13.0",npm:">=11.6.0 <12.0.0"},v2i={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"},C2i={"@azure/identity":"^4.13.0","@azure/keyvault-secrets":"^4.10.0","@github/prettier-config":"0.0.6","@limegrass/eslint-plugin-import-alias":"^1.5.1","@parcel/watcher":"^2.5.6","@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":"^21.0.0","@types/uuid":"^10.0.0","@types/vscode":"1.110.0","@types/yargs":"^17.0.24","@vscode/test-electron":"^2.5.2","@vscode/tree-sitter-wasm":"0.0.5-php.2","@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.27.3","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:"^17.4.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","simple-git":"^3.33.0",sinon:"^21.0.3","tree-sitter-bash":"^0.23.0","tree-sitter-powershell":"0.25.9","ts-dedent":"^2.2.0",tsx:"^4.21.0",typescript:"^5.9.3","typescript-eslint":"^8.39.1","vscode-dts":"^0.3.3"},b2i={"@adobe/helix-fetch":"github:devm33/helix-fetch#2a08fa939591a0e14f34f611adcc3ed767579e9a","@agentclientprotocol/sdk":"^0.16.1","@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.26.0","@octokit/graphql":"^8.0.1","@octokit/rest":"^22.0.1","@sinclair/typebox":"^0.34.33","@types/vscode-webview":"^1.57.4","@vscode/chat-lib":"^0.42.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",undici:"^7.24.6",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.19.0",yargs:"^17.7.2"},T2i={fsevents:"<0",bindings:"npm:bundled-bindings@^1.5.0",jws:"^3.2.3",tar:"7.5.8"},S2i={name:h2i,displayName:m2i,description:g2i,version:_2i,build:y2i,buildType:A2i,engines:E2i,scripts:v2i,devDependencies:C2i,dependencies:b2i,overrides:T2i};var Ye={Enable:"enable",UserSelectedCompletionModel:"selectedCompletionModel",ShowEditorCompletions:"editor.showEditorCompletions",EnableAutoCompletions:"editor.enableAutoCompletions",DelayCompletions:"editor.delayCompletions",FilterCompletions:"editor.filterCompletions",FetchStrategy:"fetchStrategy",ToolConfirmAutoApprove:"agent.toolConfirmAutoApprove",AutoApproveUnmatchedTerminal:"agent.autoApproveUnmatchedTerminal",AutoApproveUnmatchedFileOp:"agent.autoApproveUnmatchedFileOp",TrustToolAnnotations:"agent.trustToolAnnotations",AutoApproveYoloMode:"agent.autoApproveYoloMode",MaxToolCallingLoop:"agent.maxToolCallingLoop",AutoCompress:"agent.autoCompress",AnthropicThinkingBudgetToken:"agent.anthropicThinkingBudgetToken",EnableSkills:"agent.enableSkills",UseAgentsMd:"agent.useAgentsMdFile",UseNestedAgentsMd:"agent.useNestedAgentsMdFiles",UseClaudeMd:"agent.useClaudeMdFile",UseNestedClaudeMd:"agent.useNestedClaudeMdFiles",CompletionsDelay:"completionsDelay",CompletionsDebounce:"completionsDebounce",EnableThinking:"agent.enableThinking",TranscriptDirectory:"agent.transcriptDirectory",NESExtendedRange:"nextEditSuggestions.extendedRange",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",NESUseExplicitRejection:"internal.nesUseExplicitRejection",UseSplitContextPrompt:"internal.useSplitContextPrompt",UseCompletionsComparisonPanel:"internal.useCompletionsComparisonPanel",ComparisonPanelModelIds:"internal.comparisonPanelModelIds",ComparisonPanelRandomizedMode:"internal.comparisonPanelRandomizedMode",UseFetchFetcher:"internal.useFetchFetcher",UseChatLibCompletions:"internal.useChatLibCompletions",HookErrorOccurredStackTrace:"internal.hookErrorOccurredStackTrace",AppendPromptTokenCache:"internal.appendPromptTokenCache",PromptPersistBasePath:"internal.promptPersistBasePath",AnthropicMessagesEndpoint:"internal.anthropic.messagesEndpoint",AnthropicThinkingEffort:"internal.anthropic.thinkingEffort",EnableMapCodeFallback:"internal.enableMapCodeFallback"};function Akr(t){return["server","parsingandserver"].includes(t)}a(Akr,"shouldDoServerTrimming");var px=class{static{a(this,"BlockModeConfig")}},DZ=class extends px{static{a(this,"ConfigBlockModeConfig")}forLanguage(e,r,n){let o=e.get(Lt).overrideBlockMode(n);if(o)return ZAt(o,r);let s=e.get(Lt).enableProgressiveReveal(n);return(dr(e,Ye.AlwaysRequestMultiline)??s)||b2.isTrimmedByDefault(r)?ZAt("moremultiline",r):r=="ruby"?"parsing":QE(r)?"parsingandserver":"server"}};function x2i(t){return["parsing","parsingandserver","moremultiline"].includes(t)}a(x2i,"blockModeRequiresTreeSitter");function ZAt(t,e){return t==="moremultiline"&&wp.isSupported(e)?t:x2i(t)&&!QE(e)?"server":t}a(ZAt,"toApplicableBlockMode");var Tu=class{static{a(this,"ConfigProvider")}requireReady(){return Promise.resolve()}},LZ=class extends Tu{constructor(){super(...arguments);this.onDidChangeCopilotSettings=a(()=>({dispose:a(()=>{},"dispose")}),"onDidChangeCopilotSettings");this.onDidChangeHttpSettings=this.onDidChangeCopilotSettings}static{a(this,"DefaultsOnlyConfigProvider")}getConfig(r){return I2i(r)}getOptionalConfig(r){return w2i(r)}dumpForTelemetry(){return{}}getExplicitlySetConfigs(){return new Map}getHttpSettings(){return{proxy:""}}},Gj=class extends Tu{constructor(r,n){super();this.baseConfigProvider=r;this.overrides=n;this.copilotEmitter=new Ei;this.onDidChangeCopilotSettings=this.copilotEmitter.event;this.didChangeHttpSettingsEmitter=new Ei;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)}getExplicitlySetConfigs(){let r=new Map(this.baseConfigProvider.getExplicitlySetConfigs());for(let[n,o]of this.overrides)r.set(n,o);return r}getHttpSettings(){return this.httpSettings}setHttpSettings(r){let n=Nhe(r);this.httpSettings=n,this.didChangeHttpSettingsEmitter.fire(this.getHttpSettings())}dumpForTelemetry(){let r=this.baseConfigProvider.dumpForTelemetry();for(let n of[Ye.ShowEditorCompletions,Ye.EnableAutoCompletions,Ye.DelayCompletions,Ye.FilterCompletions]){let o=this.overrides.get(n);o!==void 0&&(r[n]=JSON.stringify(o))}return r}};function Ekr(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(Ekr,"getConfigKeyRecursively");function I2i(t){if(kMe.has(t))return kMe.get(t);throw new Error(`Missing config default value: ${Olt}.${t}`)}a(I2i,"getConfigDefaultForKey");function w2i(t){return kMe.get(t)}a(w2i,"getOptionalConfigDefaultForKey");function NMe(t){return t.get(Tu).getExplicitlySetConfigs()}a(NMe,"getExplicitlySetConfigs");var R2i={[Ye.DebugOverrideCppHeadersEnableSwitch]:!1,[Ye.RelatedFilesVSCodeCSharp]:!1,[Ye.RelatedFilesVSCodeTypeScript]:!1,[Ye.RelatedFilesVSCode]:!1,[Ye.IncludeNeighboringFiles]:!1,[Ye.ExcludeRelatedFiles]:!1,[Ye.ContextProviders]:[],[Ye.DebugUseEditorFetcher]:null,[Ye.DebugUseElectronFetcher]:null,[Ye.DebugOverrideLogLevels]:{},[Ye.DebugSnippyOverrideUrl]:"",[Ye.FetchStrategy]:"auto",[Ye.ToolConfirmAutoApprove]:!1,[Ye.AutoApproveUnmatchedTerminal]:void 0,[Ye.AutoApproveUnmatchedFileOp]:void 0,[Ye.TrustToolAnnotations]:!1,[Ye.AutoApproveYoloMode]:!1,[Ye.MaxToolCallingLoop]:25,[Ye.AutoCompress]:!1,[Ye.AnthropicThinkingBudgetToken]:1024,[Ye.EnableSkills]:!1,[Ye.UseAgentsMd]:!1,[Ye.UseNestedAgentsMd]:!1,[Ye.UseClaudeMd]:!1,[Ye.UseNestedClaudeMd]:!1,[Ye.UseSubsetMatching]:null,[Ye.ContextProviderTimeBudget]:void 0,[Ye.DebugOverrideCapiUrl]:"",[Ye.DebugTestOverrideCapiUrl]:"",[Ye.DebugOverrideProxyUrl]:"",[Ye.DebugTestOverrideProxyUrl]:"",[Ye.DebugOverrideEngine]:"",[Ye.AlwaysRequestMultiline]:void 0,[Ye.ModelAlwaysTerminatesSingleline]:void 0,[Ye.TrimCompletionsAggressively]:void 0,[Ye.CompletionsDebounce]:void 0,[Ye.NESXTab]:void 0,[Ye.UseWorkspaceContextCoordinator]:void 0,[Ye.ShowWorkspaceContextDebugger]:!1,[Ye.CompletionsDelay]:void 0,[Ye.UseSplitContextPrompt]:void 0,[Ye.UseCompletionsComparisonPanel]:void 0,[Ye.ComparisonPanelModelIds]:void 0,[Ye.ComparisonPanelRandomizedMode]:void 0,[Ye.UseFetchFetcher]:void 0,[Ye.UseChatLibCompletions]:void 0,[Ye.TranscriptDirectory]:void 0,[Ye.EnableThinking]:!0,[Ye.ShowEditorCompletions]:void 0,[Ye.EnableAutoCompletions]:void 0,[Ye.DelayCompletions]:void 0,[Ye.FilterCompletions]:void 0,[Ye.Enable]:{"*":!0,plaintext:!1,markdown:!1,scminput:!1},[Ye.UserSelectedCompletionModel]:"",[Ye.DebugFilterLogCategories]:[],[Ye.DebugOverrideEngineLegacy]:"",[Ye.DebugTestOverrideProxyUrlLegacy]:"",[Ye.DebugOverrideProxyUrlLegacy]:"",[Ye.DebugTestOverrideCapiUrlLegacy]:"",[Ye.DebugOverrideCapiUrlLegacy]:"",[Ye.HookErrorOccurredStackTrace]:!1,[Ye.NESUseExplicitRejection]:!1,[Ye.AppendPromptTokenCache]:"",[Ye.PromptPersistBasePath]:void 0,[Ye.AnthropicMessagesEndpoint]:"",[Ye.AnthropicThinkingEffort]:"unset",[Ye.EnableMapCodeFallback]:"enabled",[Ye.NESExtendedRange]:!1},kMe=new Map(Object.entries(R2i));for(let t of Object.values(Ye))if(!kMe.has(t))throw new Error(`Missing config default value ${Olt}.${t}`);function dr(t,e){return t.get(Tu).getConfig(e)}a(dr,"getConfig");function nAr(t){return t.get(Tu).dumpForTelemetry()}a(nAr,"dumpForTelemetry");var Bo=class{constructor(){this.packageJson=XAt}static{a(this,"BuildInfo")}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 jlt(t){return t.get(Bo).isProduction()}a(jlt,"isProduction");function X5e(t){return t.get(Bo).getBuildType()==="dev"}a(X5e,"isDevBuild");function MD(t){return t.get(Bo).getBuildType()}a(MD,"getBuildType");function iAr(t){return t.get(Bo).getBuild()}a(iAr,"getBuild");function sE(t){return t.get(Bo).getVersion()}a(sE,"getVersion");var Bs=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 Y1({name:t,version:e}){return`${t}/${e}`}a(Y1,"formatNameAndVersion");var Br=class{static{a(this,"EditorAndPluginInfo")}getCopilotIntegrationId(){}getEditorPluginSpecificFilters(){return[]}},vkr="2025-05-01";function ky(t){let e=t.get(Br);return{"Editor-Version":Y1(e.getEditorInfo()),"Editor-Plugin-Version":Y1(e.getEditorPluginInfo()),"Copilot-Language-Server-Version":sE(t)}}a(ky,"editorVersionHeaders");var FS="Iv1.b507a08c87ecfe98",P2i="350ee525b5da0e4a54c6e8e043edc1b99cc02f19",e1t="Ov23liV9UpD7Rnfnskm3",k2i="5509a52e4c525cd594a6fba9147ff6cc2388dd9f",N2i={[FS]:P2i,[e1t]:k2i},yc=class{static{a(this,"GitHubAppInfo")}findAppIdToAuthenticate(){return this.githubAppId??FS}findAppSecretToAuthenticate(){let e=this.findAppIdToAuthenticate(),r=N2i[e];if(!r)throw new Error(`GitHubAppInfo: No app secret found for app ID: ${e}`);return r}};var ur=class{static{a(this,"Fetcher")}getImplementation(){return this}};function dN(t,e,r,n,o,s,c,l,u,d,p,h){let m={...l,Authorization:`Bearer ${r}`,...ky(t)};d===void 0&&(m["Openai-Organization"]="github-copilot",m["X-Request-Id"]=o,m["VScode-SessionId"]=t.get(Bs).sessionId,m["VScode-MachineId"]=t.get(Bs).machineId,m["X-GitHub-Api-Version"]=vkr),n&&(m["OpenAI-Intent"]=n);let g={method:"POST",headers:m,json:s,timeout:u};p&&h&&p.logRequest({timestamp:new Date().toISOString(),requestId:o,method:"POST",url:e,headers:m,messages:h,body:s});let _=t.get(ur);if(c){let A=new AbortController;c.onCancellationRequested(()=>{it(t,"networking.cancelRequest",ht.createAndMarkAsIssued({headerRequestId:o})),A.abort()}),g.signal=A.signal}return _.fetch(e,g).catch(A=>{if(O2i(A))return it(t,"networking.disconnectAll"),_.disconnectAll().then(()=>_.fetch(e,g));throw A})}a(dN,"postRequest");function O2i(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(O2i,"isInterruptedNetworkError");var M2i=new Set(["ERR_WORKER_OUT_OF_MEMORY","ENOMEM"]);function D2i(t){return M2i.has(t.code??"")||t.name==="RangeError"&&t.message==="WebAssembly.Memory(): could not allocate memory"}a(D2i,"isOomError");function E8(t,e,r,n=Er){if(!T0(e)){if(e instanceof Error){let o=e;D2i(o)?t.get(ws).setWarning("Out of memory"):o.code==="EMFILE"||o.code==="ENFILE"?t.get(ws).setWarning("Too many open files"):o.code==="CopilotPromptLoadFailure"?t.get(ws).setWarning("Corrupted Copilot installation"):`${o.code}`.startsWith("CopilotPromptWorkerExit")?t.get(ws).setWarning("Worker unexpectedly exited"):o.syscall==="uv_cwd"&&o.code==="ENOENT"&&t.get(ws).setWarning("Current working directory does not exist")}n.exception(t,e,r)}}a(E8,"handleException");function Ckr(t){process.addListener("uncaughtException",r=>{E8(t,r,"uncaughtException")});let e=!1;process.addListener("unhandledRejection",r=>{if(!e)try{e=!0,E8(t,r,"unhandledRejection")}finally{e=!1}})}a(Ckr,"registerDefaultHandlers");async function bkr(t){try{await Ahe}catch(e){E8(t,e,"initializeTokenizers")}}a(bkr,"waitForTokenizers");f();var fN=require("fs"),Tkr=require("os"),OMe=pe(require("path")),FZ=require("process");var mi=class{static{a(this,"PersistenceManager")}},t1t=class extends mi{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 fN.promises.mkdir(this.directory,{recursive:!0,mode:448});let s=`${this.directory}/${r}.json`,c=OMe.dirname(s);c!==this.directory&&await fN.promises.mkdir(c,{recursive:!0,mode:448});let l;try{l=await Ohe.acquire(s);let u=await this.readJsonObject(r);u[n]=o,await fN.promises.writeFile(s,JSON.stringify(u)+`
|
|
1605
|
+
] @statement`}};var b2=class{constructor(e,r,n){this.languageId=e;this.prefix=r;this.completion=n}static{a(this,"BlockTrimmer")}static isSupported(e){return wp.isSupported(e)}static isTrimmedByDefault(e){return wp.isTrimmedByDefault(e)}async withParsedStatementTree(e){var n=[];try{let r=llt(n,wp.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{ult(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 PMe=class extends b2{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 gkr(t,e){var l=[];try{let r=t.getText();let n=t.offsetAt(e);let o=llt(l,wp.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{ult(l,d,p)}}a(gkr,"getBlockPositionType");f();function d2i(t){return t.HTTPS_PROXY||t.https_proxy||t.HTTP_PROXY||t.http_proxy}a(d2i,"getProxyFromEnvironment");function f2i(t){return t.NODE_TLS_REJECT_UNAUTHORIZED!=="0"}a(f2i,"getRejectUnauthorizedFromEnvironment");var _kr=S.Object({proxy:S.Optional(S.String()),proxyStrictSSL:S.Optional(S.Boolean()),proxyAuthorization:S.Optional(S.String()),proxyKerberosServicePrincipal:S.Optional(S.String()),noProxy:S.Optional(S.Array(S.String()))});function ykr(t){let e=d2i(t),r=Nhe({proxy:e,proxyStrictSSL:f2i(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(ykr,"getHttpSettingsFromEnvironment");function Nhe(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||p2i(n,o),noProxy:t.noProxy||[]}}catch{return{...t,proxy:""}}}a(Nhe,"normalizeHttpSettings");function p2i(t,e){return!t||!e?"":`${decodeURIComponent(t)}:${decodeURIComponent(e)}`}a(p2i,"getAuth");var XAt={};yi(XAt,{build:()=>y2i,buildType:()=>A2i,default:()=>S2i,dependencies:()=>b2i,description:()=>g2i,devDependencies:()=>C2i,displayName:()=>m2i,engines:()=>E2i,name:()=>h2i,overrides:()=>T2i,scripts:()=>v2i,version:()=>_2i});var h2i="copilot",m2i="GitHub Copilot",g2i="Your AI pair programmer",_2i="1.465.5",y2i="139",A2i="prod",E2i={node:">=22.13.0",npm:">=11.6.0 <12.0.0"},v2i={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"},C2i={"@azure/identity":"^4.13.0","@azure/keyvault-secrets":"^4.10.0","@github/prettier-config":"0.0.6","@limegrass/eslint-plugin-import-alias":"^1.5.1","@parcel/watcher":"^2.5.6","@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":"^21.0.0","@types/uuid":"^10.0.0","@types/vscode":"1.110.0","@types/yargs":"^17.0.24","@vscode/test-electron":"^2.5.2","@vscode/tree-sitter-wasm":"0.0.5-php.2","@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.27.3","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:"^17.4.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","simple-git":"^3.33.0",sinon:"^21.0.3","tree-sitter-bash":"^0.23.0","tree-sitter-powershell":"0.25.9","ts-dedent":"^2.2.0",tsx:"^4.21.0",typescript:"^5.9.3","typescript-eslint":"^8.39.1","vscode-dts":"^0.3.3"},b2i={"@adobe/helix-fetch":"github:devm33/helix-fetch#2a08fa939591a0e14f34f611adcc3ed767579e9a","@agentclientprotocol/sdk":"^0.16.1","@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.26.0","@octokit/graphql":"^8.0.1","@octokit/rest":"^22.0.1","@sinclair/typebox":"^0.34.33","@types/vscode-webview":"^1.57.4","@vscode/chat-lib":"^0.42.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",undici:"^7.24.6",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.19.0",yargs:"^17.7.2"},T2i={fsevents:"<0",bindings:"npm:bundled-bindings@^1.5.0",jws:"^3.2.3",tar:"7.5.8"},S2i={name:h2i,displayName:m2i,description:g2i,version:_2i,build:y2i,buildType:A2i,engines:E2i,scripts:v2i,devDependencies:C2i,dependencies:b2i,overrides:T2i};var Ye={Enable:"enable",UserSelectedCompletionModel:"selectedCompletionModel",ShowEditorCompletions:"editor.showEditorCompletions",EnableAutoCompletions:"editor.enableAutoCompletions",DelayCompletions:"editor.delayCompletions",FilterCompletions:"editor.filterCompletions",FetchStrategy:"fetchStrategy",ToolConfirmAutoApprove:"agent.toolConfirmAutoApprove",AutoApproveUnmatchedTerminal:"agent.autoApproveUnmatchedTerminal",AutoApproveUnmatchedFileOp:"agent.autoApproveUnmatchedFileOp",TrustToolAnnotations:"agent.trustToolAnnotations",AutoApproveYoloMode:"agent.autoApproveYoloMode",MaxToolCallingLoop:"agent.maxToolCallingLoop",AutoCompress:"agent.autoCompress",AnthropicThinkingBudgetToken:"agent.anthropicThinkingBudgetToken",EnableSkills:"agent.enableSkills",UseAgentsMd:"agent.useAgentsMdFile",UseNestedAgentsMd:"agent.useNestedAgentsMdFiles",UseClaudeMd:"agent.useClaudeMdFile",UseNestedClaudeMd:"agent.useNestedClaudeMdFiles",CompletionsDelay:"completionsDelay",CompletionsDebounce:"completionsDebounce",EnableThinking:"agent.enableThinking",TranscriptDirectory:"agent.transcriptDirectory",NESExtendedRange:"nextEditSuggestions.extendedRange",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",NESUseExplicitRejection:"internal.nesUseExplicitRejection",UseSplitContextPrompt:"internal.useSplitContextPrompt",UseCompletionsComparisonPanel:"internal.useCompletionsComparisonPanel",ComparisonPanelModelIds:"internal.comparisonPanelModelIds",ComparisonPanelRandomizedMode:"internal.comparisonPanelRandomizedMode",UseFetchFetcher:"internal.useFetchFetcher",UseChatLibCompletions:"internal.useChatLibCompletions",HookErrorOccurredStackTrace:"internal.hookErrorOccurredStackTrace",AppendPromptTokenCache:"internal.appendPromptTokenCache",PromptPersistBasePath:"internal.promptPersistBasePath",AnthropicMessagesEndpoint:"internal.anthropic.messagesEndpoint",AnthropicThinkingEffort:"internal.anthropic.thinkingEffort",EnableMapCodeFallback:"internal.enableMapCodeFallback"};function Akr(t){return["server","parsingandserver"].includes(t)}a(Akr,"shouldDoServerTrimming");var px=class{static{a(this,"BlockModeConfig")}},DZ=class extends px{static{a(this,"ConfigBlockModeConfig")}forLanguage(e,r,n){let o=e.get(Lt).overrideBlockMode(n);if(o)return ZAt(o,r);let s=e.get(Lt).enableProgressiveReveal(n);return(dr(e,Ye.AlwaysRequestMultiline)??s)||b2.isTrimmedByDefault(r)?ZAt("moremultiline",r):r=="ruby"?"parsing":QE(r)?"parsingandserver":"server"}};function x2i(t){return["parsing","parsingandserver","moremultiline"].includes(t)}a(x2i,"blockModeRequiresTreeSitter");function ZAt(t,e){return t==="moremultiline"&&wp.isSupported(e)?t:x2i(t)&&!QE(e)?"server":t}a(ZAt,"toApplicableBlockMode");var Tu=class{static{a(this,"ConfigProvider")}requireReady(){return Promise.resolve()}},LZ=class extends Tu{constructor(){super(...arguments);this.onDidChangeCopilotSettings=a(()=>({dispose:a(()=>{},"dispose")}),"onDidChangeCopilotSettings");this.onDidChangeHttpSettings=this.onDidChangeCopilotSettings}static{a(this,"DefaultsOnlyConfigProvider")}getConfig(r){return I2i(r)}getOptionalConfig(r){return w2i(r)}dumpForTelemetry(){return{}}getExplicitlySetConfigs(){return new Map}getHttpSettings(){return{proxy:""}}},Gj=class extends Tu{constructor(r,n){super();this.baseConfigProvider=r;this.overrides=n;this.copilotEmitter=new Ei;this.onDidChangeCopilotSettings=this.copilotEmitter.event;this.didChangeHttpSettingsEmitter=new Ei;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)}getExplicitlySetConfigs(){let r=new Map(this.baseConfigProvider.getExplicitlySetConfigs());for(let[n,o]of this.overrides)r.set(n,o);return r}getHttpSettings(){return this.httpSettings}setHttpSettings(r){let n=Nhe(r);this.httpSettings=n,this.didChangeHttpSettingsEmitter.fire(this.getHttpSettings())}dumpForTelemetry(){let r=this.baseConfigProvider.dumpForTelemetry();for(let n of[Ye.ShowEditorCompletions,Ye.EnableAutoCompletions,Ye.DelayCompletions,Ye.FilterCompletions]){let o=this.overrides.get(n);o!==void 0&&(r[n]=JSON.stringify(o))}return r}};function Ekr(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(Ekr,"getConfigKeyRecursively");function I2i(t){if(kMe.has(t))return kMe.get(t);throw new Error(`Missing config default value: ${Olt}.${t}`)}a(I2i,"getConfigDefaultForKey");function w2i(t){return kMe.get(t)}a(w2i,"getOptionalConfigDefaultForKey");function NMe(t){return t.get(Tu).getExplicitlySetConfigs()}a(NMe,"getExplicitlySetConfigs");var R2i={[Ye.DebugOverrideCppHeadersEnableSwitch]:!1,[Ye.RelatedFilesVSCodeCSharp]:!1,[Ye.RelatedFilesVSCodeTypeScript]:!1,[Ye.RelatedFilesVSCode]:!1,[Ye.IncludeNeighboringFiles]:!1,[Ye.ExcludeRelatedFiles]:!1,[Ye.ContextProviders]:[],[Ye.DebugUseEditorFetcher]:null,[Ye.DebugUseElectronFetcher]:null,[Ye.DebugOverrideLogLevels]:{},[Ye.DebugSnippyOverrideUrl]:"",[Ye.FetchStrategy]:"auto",[Ye.ToolConfirmAutoApprove]:!1,[Ye.AutoApproveUnmatchedTerminal]:void 0,[Ye.AutoApproveUnmatchedFileOp]:void 0,[Ye.TrustToolAnnotations]:!1,[Ye.AutoApproveYoloMode]:!1,[Ye.MaxToolCallingLoop]:25,[Ye.AutoCompress]:!1,[Ye.AnthropicThinkingBudgetToken]:1024,[Ye.EnableSkills]:!1,[Ye.UseAgentsMd]:!1,[Ye.UseNestedAgentsMd]:!1,[Ye.UseClaudeMd]:!1,[Ye.UseNestedClaudeMd]:!1,[Ye.UseSubsetMatching]:null,[Ye.ContextProviderTimeBudget]:void 0,[Ye.DebugOverrideCapiUrl]:"",[Ye.DebugTestOverrideCapiUrl]:"",[Ye.DebugOverrideProxyUrl]:"",[Ye.DebugTestOverrideProxyUrl]:"",[Ye.DebugOverrideEngine]:"",[Ye.AlwaysRequestMultiline]:void 0,[Ye.ModelAlwaysTerminatesSingleline]:void 0,[Ye.TrimCompletionsAggressively]:void 0,[Ye.CompletionsDebounce]:void 0,[Ye.NESXTab]:void 0,[Ye.UseWorkspaceContextCoordinator]:void 0,[Ye.ShowWorkspaceContextDebugger]:!1,[Ye.CompletionsDelay]:void 0,[Ye.UseSplitContextPrompt]:void 0,[Ye.UseCompletionsComparisonPanel]:void 0,[Ye.ComparisonPanelModelIds]:void 0,[Ye.ComparisonPanelRandomizedMode]:void 0,[Ye.UseFetchFetcher]:void 0,[Ye.UseChatLibCompletions]:void 0,[Ye.TranscriptDirectory]:void 0,[Ye.EnableThinking]:!0,[Ye.ShowEditorCompletions]:void 0,[Ye.EnableAutoCompletions]:void 0,[Ye.DelayCompletions]:void 0,[Ye.FilterCompletions]:void 0,[Ye.Enable]:{"*":!0,plaintext:!1,markdown:!1,scminput:!1},[Ye.UserSelectedCompletionModel]:"",[Ye.DebugFilterLogCategories]:[],[Ye.DebugOverrideEngineLegacy]:"",[Ye.DebugTestOverrideProxyUrlLegacy]:"",[Ye.DebugOverrideProxyUrlLegacy]:"",[Ye.DebugTestOverrideCapiUrlLegacy]:"",[Ye.DebugOverrideCapiUrlLegacy]:"",[Ye.HookErrorOccurredStackTrace]:!1,[Ye.NESUseExplicitRejection]:!1,[Ye.AppendPromptTokenCache]:"",[Ye.PromptPersistBasePath]:void 0,[Ye.AnthropicMessagesEndpoint]:"",[Ye.AnthropicThinkingEffort]:"unset",[Ye.EnableMapCodeFallback]:"enabled",[Ye.NESExtendedRange]:!1},kMe=new Map(Object.entries(R2i));for(let t of Object.values(Ye))if(!kMe.has(t))throw new Error(`Missing config default value ${Olt}.${t}`);function dr(t,e){return t.get(Tu).getConfig(e)}a(dr,"getConfig");function nAr(t){return t.get(Tu).dumpForTelemetry()}a(nAr,"dumpForTelemetry");var Bo=class{constructor(){this.packageJson=XAt}static{a(this,"BuildInfo")}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 jlt(t){return t.get(Bo).isProduction()}a(jlt,"isProduction");function X5e(t){return t.get(Bo).getBuildType()==="dev"}a(X5e,"isDevBuild");function MD(t){return t.get(Bo).getBuildType()}a(MD,"getBuildType");function iAr(t){return t.get(Bo).getBuild()}a(iAr,"getBuild");function sE(t){return t.get(Bo).getVersion()}a(sE,"getVersion");var Bs=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 Y1({name:t,version:e}){return`${t}/${e}`}a(Y1,"formatNameAndVersion");var Br=class{static{a(this,"EditorAndPluginInfo")}getCopilotIntegrationId(){}getEditorPluginSpecificFilters(){return[]}},vkr="2025-05-01";function ky(t){let e=t.get(Br);return{"Editor-Version":Y1(e.getEditorInfo()),"Editor-Plugin-Version":Y1(e.getEditorPluginInfo()),"Copilot-Language-Server-Version":sE(t)}}a(ky,"editorVersionHeaders");var FS="Iv1.b507a08c87ecfe98",P2i="350ee525b5da0e4a54c6e8e043edc1b99cc02f19",e1t="Ov23liV9UpD7Rnfnskm3",k2i="5509a52e4c525cd594a6fba9147ff6cc2388dd9f",N2i={[FS]:P2i,[e1t]:k2i},yc=class{static{a(this,"GitHubAppInfo")}findAppIdToAuthenticate(){return this.githubAppId??FS}findAppSecretToAuthenticate(){let e=this.findAppIdToAuthenticate(),r=N2i[e];if(!r)throw new Error(`GitHubAppInfo: No app secret found for app ID: ${e}`);return r}};var ur=class{static{a(this,"Fetcher")}getImplementation(){return this}};function dN(t,e,r,n,o,s,c,l,u,d,p,h){let m={...l,Authorization:`Bearer ${r}`,...ky(t)};d===void 0&&(m["Openai-Organization"]="github-copilot",m["X-Request-Id"]=o,m["VScode-SessionId"]=t.get(Bs).sessionId,m["VScode-MachineId"]=t.get(Bs).machineId,m["X-GitHub-Api-Version"]=vkr),n&&(m["OpenAI-Intent"]=n);let g={method:"POST",headers:m,json:s,timeout:u};p&&h&&p.logRequest({timestamp:new Date().toISOString(),requestId:o,method:"POST",url:e,headers:m,messages:h,body:s});let _=t.get(ur);if(c){let A=new AbortController;c.onCancellationRequested(()=>{it(t,"networking.cancelRequest",ht.createAndMarkAsIssued({headerRequestId:o})),A.abort()}),g.signal=A.signal}return _.fetch(e,g).catch(A=>{if(O2i(A))return it(t,"networking.disconnectAll"),_.disconnectAll().then(()=>_.fetch(e,g));throw A})}a(dN,"postRequest");function O2i(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(O2i,"isInterruptedNetworkError");var M2i=new Set(["ERR_WORKER_OUT_OF_MEMORY","ENOMEM"]);function D2i(t){return M2i.has(t.code??"")||t.name==="RangeError"&&t.message==="WebAssembly.Memory(): could not allocate memory"}a(D2i,"isOomError");function E8(t,e,r,n=Er){if(!T0(e)){if(e instanceof Error){let o=e;D2i(o)?t.get(ws).setWarning("Out of memory"):o.code==="EMFILE"||o.code==="ENFILE"?t.get(ws).setWarning("Too many open files"):o.code==="CopilotPromptLoadFailure"?t.get(ws).setWarning("Corrupted Copilot installation"):`${o.code}`.startsWith("CopilotPromptWorkerExit")?t.get(ws).setWarning("Worker unexpectedly exited"):o.syscall==="uv_cwd"&&o.code==="ENOENT"&&t.get(ws).setWarning("Current working directory does not exist")}n.exception(t,e,r)}}a(E8,"handleException");function Ckr(t){process.addListener("uncaughtException",r=>{E8(t,r,"uncaughtException")});let e=!1;process.addListener("unhandledRejection",r=>{if(!e)try{e=!0,E8(t,r,"unhandledRejection")}finally{e=!1}})}a(Ckr,"registerDefaultHandlers");async function bkr(t){try{await Ahe}catch(e){E8(t,e,"initializeTokenizers")}}a(bkr,"waitForTokenizers");f();var fN=require("fs"),Tkr=require("os"),OMe=pe(require("path")),FZ=require("process");var mi=class{static{a(this,"PersistenceManager")}},t1t=class extends mi{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 fN.promises.mkdir(this.directory,{recursive:!0,mode:448});let s=`${this.directory}/${r}.json`,c=OMe.dirname(s);c!==this.directory&&await fN.promises.mkdir(c,{recursive:!0,mode:448});let l;try{l=await Ohe.acquire(s);let u=await this.readJsonObject(r);u[n]=o,await fN.promises.writeFile(s,JSON.stringify(u)+`
|
|
1606
1606
|
`,{encoding:"utf8",mode:384})}finally{l&&await l()}}async delete(r,n){let o=`${this.directory}/${r}.json`,s;try{s=await Ohe.acquire(o);let c=await this.readJsonObject(r);delete c[n];let l=JSON.stringify(c)+`
|
|
1607
1607
|
`;l===`{}
|
|
1608
1608
|
`?await fN.promises.rm(o):await fN.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 Ohe.acquire(n),await fN.promises.rm(n)}catch{}finally{o&&await o()}}async listSettings(){try{return(await fN.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 fN.promises.readFile(n,{encoding:"utf8"});return JSON.parse(o)}catch{return{}}}},Ohe=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 r1t(){return FZ.env.XDG_CONFIG_HOME&&OMe.isAbsolute(FZ.env.XDG_CONFIG_HOME)?FZ.env.XDG_CONFIG_HOME+"/github-copilot":(0,Tkr.platform)()==="win32"?FZ.env.USERPROFILE+"\\AppData\\Local\\github-copilot":FZ.env.HOME+"/.config/github-copilot"}a(r1t,"getXdgConfigPath");function Skr(){return new t1t(r1t())}a(Skr,"makeXdgPersistenceManager");f();f();f();var pN={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 xkr=[".ejs",".erb",".haml",".hbs",".j2",".jinja",".jinja2",".liquid",".mustache",".njk",".php",".pug",".slim",".webc"],Ikr={".php":[".blade"]},Hj=Object.keys(pN).flatMap(t=>pN[t].extensions);var n1t=pe(require("node:path"));var UZ=class{constructor(e,r,n){this.languageId=e;this.isGuess=r;this.fileExtension=n}static{a(this,"Language")}},Mhe=class{static{a(this,"LanguageDetection")}},i1t=new Map,BZ=new Map;for(let[t,{extensions:e,filenames:r}]of Object.entries(pN)){for(let n of e)i1t.set(n,[...i1t.get(n)??[],t]);for(let n of r??[])BZ.set(n,[...BZ.get(n)??[],t])}var o1t=class extends Mhe{static{a(this,"FilenameAndExensionLanguageDetection")}detectLanguage(e){let r=pi(e.uri),n=n1t.extname(r).toLowerCase(),o=this.extensionWithoutTemplateLanguage(r,n),s=this.detectLanguageId(r,o),c=this.computeFullyQualifiedExtension(n,o);return s?new UZ(s.languageId,s.isGuess,c):new UZ(e.languageId,!0,c)}extensionWithoutTemplateLanguage(e,r){if(xkr.includes(r)){let n=e.substring(0,e.lastIndexOf(".")),o=n1t.extname(n).toLowerCase();if(o.length>0&&Hj.includes(o)&&this.isExtensionValidForTemplateLanguage(r,o))return o}return r}isExtensionValidForTemplateLanguage(e,r){let n=Ikr[e];return!n||n.includes(r)}detectLanguageId(e,r){if(BZ.has(e))return{languageId:BZ.get(e)[0],isGuess:!1};let n=i1t.get(r)??[];if(n.length>0)return{languageId:n[0],isGuess:n.length>1};for(;e.includes(".");)if(e=e.replace(/\.[^.]*$/,""),BZ.has(e))return{languageId:BZ.get(e)[0],isGuess:!1}}computeFullyQualifiedExtension(e,r){return e!==r?r+e:e}},s1t=class extends Mhe{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 UZ("cpp",n.isGuess,n.fileExtension):n}},a1t=class extends Mhe{constructor(r){super();this.delegate=r}static{a(this,"ClientProvidedLanguageDetection")}detectLanguage(r){return r.uri.startsWith("untitled:")||r.uri.startsWith("vscode-notebook-cell:")?new UZ(r.languageId,!0,""):this.delegate.detectLanguage(r)}},L2i=new s1t(new a1t(new o1t));function lb({uri:t,languageId:e}){let r=L2i.detectLanguage({uri:t,languageId:"UNKNOWN"});return r.languageId==="UNKNOWN"?e:r.languageId}a(lb,"detectLanguage");f();f();f();f();function kf(t){if(t.isCancellationRequested)throw new MMe}a(kf,"throwIfCancellationRequested");function hx(t){return t instanceof MMe?!0:t instanceof Error&&t.name===c1t&&t.message===c1t}a(hx,"isCancellationError");var MMe=class extends Error{static{a(this,"CancellationError")}constructor(){super(c1t),this.name=this.message}},c1t="Canceled",DMe=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 Vj(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(Vj,"isTypeDefinition");var Uc=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=Rkr(e,e.length,o),wkr(n,r);o<this.end;)e[o]!=="\r"&&e[o]!==`
|
|
@@ -2012,7 +2012,7 @@ ${[...v2.Errors(t,e)].map(n=>`${n.path} ${n.message}`).join(`
|
|
|
2012
2012
|
`)+`
|
|
2013
2013
|
`}let d=c.body?.content,p=u?`---
|
|
2014
2014
|
${u}---
|
|
2015
|
-
${d}`:d||"",h=Qi(c.uri);if(!h)throw new Error(`Invalid file URI: ${c.uri}`);await tLr.promises.writeFile(h,p,{encoding:"utf8"})}}updateCustomAgentTools(e,r){if(r)return n=>{let o=n.header?.tools;if(o!==void 0)return r.forEach(s=>{let c=o.findIndex(l=>l===s.toolConfigurationKey);s.status==="enabled"?c===-1&&o.push(s.toolConfigurationKey):c!==-1&&o.splice(c,1)}),{tools:o}}}extractHeader(e){let r=a(o=>{if(o.type==="array")return[...o.items.map(s=>r(s))];if(o.type==="object"){let s={};return o.properties.forEach(c=>{s[c.key.value]=r(c.value)}),s}return o.value},"extractValue"),n={};return e?.attributes.forEach(o=>{let{key:s,value:c}=o;n[s]=r(c)}),n}};var Gme=class{constructor(e){this.customAgent=e;this._isBuiltIn=!1;this.kind="Agent";e.promptFileEntry?.promptPath?.storage==="clsAssets"&&(this._isBuiltIn=!0)}static{a(this,"CustomChatMode")}get isBuiltIn(){return this._isBuiltIn}get id(){return this.customAgent.id}get name(){return this.customAgent.name}get uri(){return this.customAgent?.promptFileEntry?.parsedPromptFile?.uri}get description(){return this.customAgent.description}get customTools(){return this.customAgent.tools}get model(){return this.customAgent.model}get handOffs(){return this.customAgent.handOffs}get instruction(){return this.customAgent.instruction}get source(){return this.customAgent}},See=class{constructor(e,r,n,o){this.id=e;this.name=r;this.kind=n;this.description=o;this.isBuiltIn=!0}static{a(this,"BuiltInChatMode")}},fa={Ask:new See("Ask","Ask","Ask","General purpose chat mode for questions and assistance"),Edit:new See("Edit","Edit","Edit","Code editing mode for making changes to your files"),Agent:new See("Agent","Agent","Agent","Advanced agent mode with access to tools and capabilities"),InlineAgent:new See("InlineAgent","Agent","InlineAgent","Agent mode with a restricted tool set for inline editing")};function nLr(t){return t===fa.Agent||t.id===fa.Agent.id}a(nLr,"isBuiltInAgentMode");function gLi(t){return t===fa.InlineAgent||t.id===fa.InlineAgent.id}a(gLi,"isBuiltInInlineAgentMode");function iLr(t){return t===fa.Ask||t.id===fa.Ask.id||t===fa.Edit||t.id===fa.Edit.id||nLr(t)||gLi(t)}a(iLr,"isBuiltInChatMode");function Hme(t){return nLr(t)||!t.isBuiltIn&&t.customTools===void 0}a(Hme,"shouldApplyGlobalToolsSetting");var R_=class{constructor(e){this.ctx=e}static{a(this,"ChatModeService")}async listChatModes(e){let r=[fa.Ask,fa.Edit,fa.Agent,fa.InlineAgent],o=await this.ctx.get(Px).listCustomAgents(e||[]);return r.push(...o.filter(s=>s.invokePolicy.includes("user")).map(s=>new Gme(s))),r}async getChatMode(e,r,n){switch(e){case"Ask":return fa.Ask;case"Edit":return fa.Edit;case"Agent":return r?await this.getCustomChatModeById(r,n)??fa.Agent:fa.Agent;case"InlineAgent":return fa.InlineAgent}}async getCustomChatModeById(e,r){return(await this.listChatModes(r)).find(o=>o.id===e)}};f();var ic=class extends Error{static{a(this,"CanceledError")}constructor(){super("Canceled"),this.name="Canceled"}};f();var HLe=class{constructor(){this._tools=new Map}static{a(this,"ToolRegistry")}registerTool(e){this._tools.set(e.id,e)}unregisterTool(e){return this._tools.delete(e)}getTool(e){return this._tools.get(e)}listTools(){return Array.from(this._tools.values())}};f();f();f();f();var $e=new Pe("chat");var xee={Unknown:-1,Default:0,ToolRoundExceedError:1e4};var Aa=class{constructor(e){this.ctx=e;this.progressEntries=new $r(250)}static{a(this,"ConversationProgress")}async begin(e,r,n){let o={status:"open",handler:n};this.progressEntries.set(e.id,o),await o.handler.begin(this.ctx,e,r)}async report(e,r,n){let o=this.getProgressEntry(e);o.status==="open"&&await o.handler.report(this.ctx,e,r,n)}async end(e,r,n){let o=this.getProgressEntry(e);o.status==="open"&&(this.progressEntries.set(e.id,{...o,status:"done",updatedAt:Date.now()}),await o.handler.end(this.ctx,e,r,n))}async cancel(e,r,n){let o=this.getProgressEntry(e);o.status==="open"&&(this.progressEntries.set(e.id,{...o,status:"cancelled",updatedAt:Date.now()}),await o.handler.cancel(this.ctx,e,r,n))}getCurrentHandler(e){return this.progressEntries.get(e.id)?.handler}getProgressEntry(e){let r=this.progressEntries.get(e.id);if(r===void 0)throw new Error(`No work done token for conversation ${e.id}`);return r.status!=="open"&&$e.error(this.ctx,`Work done token for conversation ${e.id} is already ${r.status}, last updated at ${r.updatedAt}`),r}};f();f();f();var ds={Azure:"Azure",OpenAI:"OpenAI",Gemini:"Gemini",Groq:"Groq",OpenRouter:"OpenRouter",Anthropic:"Anthropic"};function i6(t){return t===ds.Azure?1:0}a(i6,"getAuthTypeForProvider");function VLe(t){return t===ds.OpenAI||t===ds.Gemini||t===ds.Groq||t===ds.OpenRouter||t===ds.Anthropic}a(VLe,"isOpenAICompatible");async function xb(t,e,r){let o=await new Ba(t.get(mi)).getStoredModelConfigs(e),s=o&&o[r]&&o[r].isRegistered!==!1?o[r]:void 0,c=s?.modelCapabilities,l=c?.name||r,u=c?.maxInputTokens||1e5,d=c?.maxOutputTokens||8192;return{modelId:r,uiName:l,modelFamily:dn.BYOK,providerName:e,deploymentUrl:s?.deploymentUrl,maxRequestTokens:u,maxResponseTokens:d,baseTokensPerCompletion:3,baseTokensPerMessage:3,baseTokensPerName:1,tokenizer:"o200k_base",isExperimental:!1,stream:!0,toolCalls:!!c?.toolCalling,supportsThinking:!!c?.thinking,originalBillingMultiplier:0}}a(xb,"resolveModelConfiguration");async function oLr(t,e,r){return await new Ba(t.get(mi)).getAPIKey(e,r)}a(oLr,"resolveModelKey");function sLr(t,e){let{protocol:r,hostname:n,pathname:o}=new URL(e);if(o.endsWith("/chat/completions"))return e;if(n.endsWith(".models.ai.azure.com")||n.endsWith(".inference.ml.azure.com"))return`${r}//${n}/v1/chat/completions`;if(n.endsWith(".openai.azure.com"))return`${r}//${n}/openai/deployments/${t}/chat/completions?api-version=2025-01-01-preview`;throw new Error(`Unrecognized Azure deployment URL: ${e}`)}a(sLr,"resolveAzureUrl");function Iee(t){let e=t.getTokenValue("editor_preview_features")=="0";return t.userInfo?.isIndividualUser&&!e}a(Iee,"isBYOKEnabled");var D2="byok",Ba=class{constructor(e){this.persistenceManager=e}static{a(this,"BYOKPersistence")}async getAPIKey(e,r){if(r){let o=await this.persistenceManager.read(D2,`${e}-${r}-api-key`);if(o)return o}return await this.persistenceManager.read(D2,`${e}-api-key`)}async storeAPIKey(e,r,n,o){n!==2&&(n===0?await this.persistenceManager.update(D2,`${e}-api-key`,r):n===1&&o&&await this.persistenceManager.update(D2,`${e}-${o}-api-key`,r))}async deleteAPIKey(e,r,n){r!==2&&(r===0?await this.persistenceManager.delete(D2,`${e}-api-key`):r===1&&n&&await this.persistenceManager.delete(D2,`${e}-${n}-api-key`))}async getStoredModelConfigs(e){return await this.persistenceManager.read(D2,`${e}-models-config`)||{}}async getAllModels(e){let r=[];if(!Iee(await e.get(Ot).getToken()))return r;for(let n of Object.values(ds)){let o=await this.getStoredModelConfigs(n);r.push(...Object.keys(o).map(s=>({name:s,provider:n,capabilities:o[s].modelCapabilities})))}return r}async saveModelConfig(e,r,n,o,s){let c=await this.getStoredModelConfigs(e);c[r]=n,await this.persistenceManager.update(D2,`${e}-models-config`,c),o&&s&&await this.storeAPIKey(e,o,s,r)}async removeModelConfig(e,r){let n=await this.getStoredModelConfigs(e),o=n[r];o&&(delete n[r],await this.persistenceManager.update(D2,`${e}-models-config`,n),o.deploymentUrl&&await this.deleteAPIKey(e,1,r))}async removeAllModelConfigs(e){await this.persistenceManager.delete(D2,`${e}-models-config`)}};f();f();var Vme=new Pe("openAICompatibleLMProvider"),MCt={[ds.OpenAI]:"https://api.openai.com/v1",[ds.Gemini]:"https://generativelanguage.googleapis.com/v1beta/openai",[ds.Groq]:"https://api.groq.com/openai/v1",[ds.OpenRouter]:"https://openrouter.ai/api/v1",[ds.Anthropic]:"https://api.anthropic.com/v1"},Ib=class{constructor(e,r){this._lastFetchTime=0;this.providerName=e,this.ctx=r}static{a(this,"BaseOpenAICompatibleLMProvider")}async getAllModels(){await this.ensureKnownModelsCache();try{let e=this.getFetchModelUrl(),r={"Content-Type":"application/json"},n=await new Ba(this.ctx.get(mi)).getAPIKey(this.providerName);n&&(r.Authorization=`Bearer ${n}`);let o=await 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){let u=this._knownModels?.[l.id];u&&c.push({providerName:this.providerName,modelId:l.id,isRegistered:!1,isCustomModel:!1,modelCapabilities:u})}return c}catch(e){throw Vme.error(this.ctx,`Error fetching models from ${this.providerName} provider:`,e),e}}getBaseUrl(){let e=MCt[this.providerName];if(!e)throw new Error(`Unsupported provider: ${this.providerName}`);return e}getFetchModelUrl(){return`${this.getBaseUrl()}/models`}async ensureKnownModelsCache(){let e=Date.now();!this._knownModels&&(this._knownModels=await this.fetchKnownModelList(),this._lastFetchTime=e)}async fetchKnownModelList(){let e=await(await this.ctx.get(ur).fetch("https://main.vscode-cdn.net/extensions/copilotChat.json",{method:"GET"})).json(),r;return e.version!==1?r={}:r=e.modelInfo[this.providerName]||{},r}};f();async function*o6(t,e){for await(let r of t)yield e(r)}a(o6,"asyncIterableMap");async function*aLr(t,e){for await(let r of t)await e(r)&&(yield r)}a(aLr,"asyncIterableFilter");async function*Wme(t,e){for await(let r of t){let n=await e(r);n!==void 0&&(yield n)}}a(Wme,"asyncIterableMapFilter");async function*cLr(...t){for(let e of t)yield*e}a(cLr,"asyncIterableConcat");f();f();var kx=class{static{a(this,"EndpointStrategyFactory")}static{this.strategies=new Map}static register(e){this.strategies.set(e.name,e)}static getStrategy(e){let r=this.strategies.get(e);if(!r){let n=this.strategies.get("completions");if(!n)throw new Error(`No strategy registered for endpoint '${e}' and no fallback strategy available. Available: ${Array.from(this.strategies.keys()).join(", ")}`);return n}return r}static hasStrategy(e){return this.strategies.has(e)}};f();var Ea=class{static{a(this,"ModelConfigurationProvider")}},zLe=class extends Ea{constructor(r){super();this.ctx=r}static{a(this,"DefaultModelConfigurationProvider")}async getBestChatModelConfig(r,n){let o=[];for(let s of r){let c=await this.getFirstMatchingChatModelConfiguration(s,n);c&&o.push(c)}if(o.length>0){let s=o.find(c=>c.isExperimental);return s||o[0]}throw $e.error(this.ctx,`No model configuration found for families: ${r.join(", ")}. Available models: ${JSON.stringify(await this.ctx.get(Bc).getMetadata())}`),new Error("No model configuration found")}async getFirstMatchingModelMetadata(r){let n=await this.ctx.get(Bc).getMetadata(),o=yLi(n,r);if(o.length>0)return o[0]}async getFirstMatchingChatModelConfiguration(r,n){let o=await this.getFirstMatchingModelMetadata({family:r,type:"chat",supports:n});if(o===void 0)return;let s=o.supported_endpoints&&o.supported_endpoints.length>0?o.supported_endpoints:["/chat/completions"],c=o.capabilities.supports?.adaptive_thinking??!1;return r===dn.Gpt35turbo||r===dn.Gpt4oMini?{modelId:o.id,uiName:o.name,modelFamily:r,maxRequestTokens:LCt(6144,o),maxResponseTokens:DCt(2048,o),baseTokensPerMessage:3,baseTokensPerName:1,baseTokensPerCompletion:3,tokenizer:o.capabilities.tokenizer,isExperimental:o.isExperimental??!1,stream:o.capabilities.supports?.streaming??!1,toolCalls:o.capabilities.supports?.tool_calls??!1,supportedEndpoints:s,supportsAdaptiveThinking:c,originalBillingMultiplier:o.billing?.multiplier??0}:r===dn.Gpt4||r===dn.Gpt4turbo?{modelId:o.id,uiName:o.name,modelFamily:r,maxRequestTokens:LCt(10240,o),maxResponseTokens:DCt(4096,o),baseTokensPerMessage:3,baseTokensPerName:1,baseTokensPerCompletion:3,tokenizer:o.capabilities.tokenizer,isExperimental:o.isExperimental??!1,stream:o.capabilities.supports?.streaming??!1,toolCalls:o.capabilities.supports?.tool_calls??!1,supportedEndpoints:s,supportsAdaptiveThinking:c,originalBillingMultiplier:o.billing?.multiplier??0}:r===dn.Gpt4o?{modelId:o.id,uiName:o.name,modelFamily:r,maxRequestTokens:await _Li(this.ctx,o),maxResponseTokens:DCt(4096,o),baseTokensPerMessage:3,baseTokensPerName:1,baseTokensPerCompletion:3,tokenizer:o.capabilities.tokenizer,isExperimental:o.isExperimental??!1,stream:o.capabilities.supports?.streaming??!1,toolCalls:o.capabilities.supports?.tool_calls??!1,supportedEndpoints:s,supportsAdaptiveThinking:c,originalBillingMultiplier:o.billing?.multiplier??0}:{modelId:o.id,uiName:o.name,modelFamily:r,maxRequestTokens:o.capabilities.limits?.max_prompt_tokens??8192,maxResponseTokens:o.capabilities.limits?.max_output_tokens??4096,baseTokensPerMessage:3,baseTokensPerName:1,baseTokensPerCompletion:3,tokenizer:o.capabilities.tokenizer,isExperimental:o.isExperimental??!1,stream:o.capabilities.supports?.streaming??!1,toolCalls:o.capabilities.supports?.tool_calls??!1,supportedEndpoints:s,supportsAdaptiveThinking:c,originalBillingMultiplier:o.billing?.multiplier??0}}async getFirstMatchingEmbeddingModelConfiguration(r){let n=await this.getFirstMatchingModelMetadata({family:r,type:"embeddings"});if(n!==void 0&&r===ZOe.textEmbedding3Small)return{modelId:n.id,modelFamily:r,maxBatchSize:n.capabilities.limits?.max_inputs??16,maxTokens:8191,tokenizer:"cl100k_base"}}};async function _Li(t,e){let r=t.get(Lt),n=await r.fetchTokenAndUpdateExPValuesAndAssignments(),o=r.ideChatMaxRequestTokens(n);return o===-1&&(o=16384),LCt(o,e)}a(_Li,"getExpRequestTokens");function LCt(t,e){return e.capabilities.limits?.max_prompt_tokens?Math.min(t,e.capabilities.limits.max_prompt_tokens):t}a(LCt,"getRequestTokens");function DCt(t,e){return e.capabilities.limits?.max_output_tokens?Math.min(t,e.capabilities.limits.max_output_tokens):t}a(DCt,"getResponseTokens");function yLi(t,e){return t.filter(r=>r.capabilities.type!==e.type||r.capabilities.family!==e.family&&!(r.is_chat_fallback===!0&&r.id===e.family)||r.capabilities.family===e.family&&r.id!==e.family&&r.is_chat_fallback===!0?!1:r.capabilities.supports===void 0||e.supports===void 0?!0:Object.keys(e.supports).every(n=>e.supports?.[n]===r.capabilities.supports?.[n]))}a(yLi,"filterModelsByCapabilities");function ALi(t){let e=t.supportedEndpoints;return!e||e.length===0?!1:e.includes("/responses")}a(ALi,"shouldUseResponsesApi");function ELi(t){let e=t.supportedEndpoints;return!e||e.length===0?!1:e.includes("/v1/messages")&&!e.includes("/responses")}a(ELi,"shouldUseMessagesApi");var lLr=["completions","responses","v1/messages"];function YLe(t,e){return e?"v1/messages":t&&ALi(t)?"responses":"completions"}a(YLe,"resolveEndpointRoute");async function KLe(t,e){if(!ELi(e))return!1;let r=dr(t,Ye.AnthropicMessagesEndpoint);if(r==="true")return!0;if(r==="false")return!1;let n=t.get(Lt),o=await n.fetchTokenAndUpdateExPValuesAndAssignments();return n.anthropicUseMessagesEndpoint(o)}a(KLe,"willUseMessagesEndpoint");f();function JLe(t){let e=t.toLowerCase();return e.startsWith("gpt")&&e.includes("-codex")}a(JLe,"isCodexStyleGptModel");function uLr(t){return t?t.toLowerCase().startsWith("gpt-5"):!1}a(uLr,"isGpt5PlusFamily");function dLr(t){return t?t.toLowerCase().startsWith("claude"):!1}a(dLr,"isAnthropicModel");f();f();function fLr(t,e){!e||!e.providerName||(e.providerName===ds.Anthropic?(delete t.temperature,delete t.top_p):e.supportsThinking&&(delete t.temperature,"max_tokens"in t&&(t.max_completion_tokens=t.max_tokens,delete t.max_tokens)),e.providerName&&delete t.max_tokens)}a(fLr,"adaptRequestForBYOKProvider");f();var wb=class extends x_{static{a(this,"ChatQuotaService")}constructor(e){super(),this._register(zo(e,r=>{this.processUserInfoQuotaSnapshot(r.userInfo?.raw)}))}get quotaExhausted(){return this._quotaInfo?this._quotaInfo.used>=this._quotaInfo.quota&&!this._quotaInfo.overageEnabled:!1}get overagesEnabled(){return this._quotaInfo?this._quotaInfo.overageEnabled:!1}clearQuota(){this._quotaInfo=void 0}processQuotaHeaders(e){let r=e.get("x-quota-snapshot-premium_models")||e.get("x-quota-snapshot-premium_interactions");if(r)try{let n=new URLSearchParams(r),o=parseInt(n.get("ent")||"0",10),s=parseFloat(n.get("ov")||"0.0"),c=n.get("ovPerm")==="true",l=parseFloat(n.get("rem")||"0.0"),u=n.get("rst"),d;u?d=new Date(u):(d=new Date,d.setMonth(d.getMonth()+1));let p=Math.max(0,o*(1-l/100));this._quotaInfo={quota:o,used:p,overageUsed:s,overageEnabled:c,resetDate:d}}catch(n){console.error("Failed to parse quota header",n)}}processUserInfoQuotaSnapshot(e){!e||!e.quota_snapshots||!e.quota_reset_date||(this._quotaInfo={overageEnabled:e.quota_snapshots.premium_interactions.overage_permitted,overageUsed:e.quota_snapshots.premium_interactions.overage_count,quota:e.quota_snapshots.premium_interactions.entitlement,resetDate:new Date(e.quota_reset_date),used:Math.max(0,e.quota_snapshots.premium_interactions.entitlement*(1-e.quota_snapshots.premium_interactions.percent_remaining/100))})}};f();f();var Nx=class{static{a(this,"RateLimitNotifier")}},XLe=class extends Nx{static{a(this,"NullRateLimitNotifier")}async notifyRateLimitWarning(e){}};var FCt=[50,75,90,95],L2=class extends x_{constructor(r){super();this.ctx=r;this._shownSessionThresholds=new Set;this._shownWeeklyThresholds=new Set;this._register(zo(r,()=>{this._shownSessionThresholds.clear(),this._shownWeeklyThresholds.clear(),this.clearRateLimits()}))}static{a(this,"ChatUsageRateLimitService")}get weeklyRateLimit(){return this._weeklyRateLimit}get sessionRateLimit(){return this._sessionRateLimit}clearRateLimits(){this._weeklyRateLimit=void 0,this._sessionRateLimit=void 0}processRateLimitHeaders(r){let n=r.get("x-usage-ratelimit-weekly");n&&(this._weeklyRateLimit=this.parseRateLimitHeader(n));let o=r.get("x-usage-ratelimit-session");o&&(this._sessionRateLimit=this.parseRateLimitHeader(o)),this.clearStaleThresholds(this._sessionRateLimit,this._shownSessionThresholds),this.clearStaleThresholds(this._weeklyRateLimit,this._shownWeeklyThresholds);let s=this.checkThreshold(this._sessionRateLimit,this._shownSessionThresholds,"session")??this.checkThreshold(this._weeklyRateLimit,this._shownWeeklyThresholds,"weekly");s&&this.ctx.get(Nx).notifyRateLimitWarning(s)}clearStaleThresholds(r,n){if(!r){n.clear();return}let o=100-r.percentRemaining;for(let s of n)o<s&&n.delete(s)}checkThreshold(r,n,o){if(!r)return;let s=100-r.percentRemaining;for(let c=FCt.length-1;c>=0;c--){let l=FCt[c];if(s>=l&&!n.has(l)){for(let d=0;d<=c;d++)n.add(FCt[d]);let u=this.getRateLimitMessage(o,r);return{type:o,rateLimit:r,message:u}}}}getRateLimitMessage(r,n){let o=Math.round(100-n.percentRemaining),s=this.formatResetDate(n.resetDate);return r==="session"?`You've used ${o}% of your session rate limit. Your session rate limit will reset on ${s}.`:`You've used ${o}% of your weekly rate limit. Your weekly rate limit will reset on ${s}.`}formatResetDate(r){let n=new Date(r);if(Number.isNaN(n.getTime()))return r;let o=new Date,s=n.getFullYear()!==o.getFullYear();return new Intl.DateTimeFormat(void 0,s?{month:"long",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit"}:{month:"long",day:"numeric",hour:"numeric",minute:"2-digit"}).format(n)}parseRateLimitHeader(r){try{let n=new URLSearchParams(r),o=Number.parseInt(n.get("ent")||"0",10),s=Number.parseFloat(n.get("rem")||"0.0"),c=n.get("rst")||"";return{entitlement:o,percentRemaining:s,resetDate:c}}catch(n){console.error("Failed to parse rate limit header",n);return}}};f();f();f();var s6="copilot-edits-session";f();f();f();f();function ZLe(t,e,r,n,o,s,c){return tAr(t,e,r,o,n),{completionText:e,meanLogProb:vLi(t,r),meanAlternativeLogProb:CLi(t,r),choiceIndex:n,requestId:o,blockFinished:s,tokens:r.tokens,numTokens:r.tokens.length,telemetryData:c,copilotAnnotations:r.copilot_annotations,clientCompletionId:lr(),finishReason:r.finish_reason}}a(ZLe,"convertToAPIChoice");function vLi(t,e){if(e?.logprobs?.token_logprobs)try{let r=0,n=0,o=50;for(let s=0;s<e.logprobs.token_logprobs.length-1&&o>0;s++,o--)r+=e.logprobs.token_logprobs[s],n+=1;return n>0?r/n:void 0}catch(r){Er.exception(t,r,"Error calculating mean prob")}}a(vLi,"calculateMeanLogProb");function CLi(t,e){if(e?.logprobs?.top_logprobs)try{let r=0,n=0,o=50;for(let s=0;s<e.logprobs.token_logprobs.length-1&&o>0;s++,o--){let c={...e.logprobs.top_logprobs[s]};delete c[e.logprobs.tokens[s]],r+=Math.max(...Object.values(c)),n+=1}return n>0?r/n:void 0}catch(r){Er.exception(t,r,"Error calculating mean prob")}}a(CLi,"calculateMeanAlternativeLogProb");function wee(t,e){return z1(t)||e<=1?0:e<10?.2:e<20?.4:.8}a(wee,"getTemperatureForSamples");var bLi={markdown:[`
|
|
2015
|
+
${d}`:d||"",h=Qi(c.uri);if(!h)throw new Error(`Invalid file URI: ${c.uri}`);await tLr.promises.writeFile(h,p,{encoding:"utf8"})}}updateCustomAgentTools(e,r){if(r)return n=>{let o=n.header?.tools;if(o!==void 0)return r.forEach(s=>{let c=o.findIndex(l=>l===s.toolConfigurationKey);s.status==="enabled"?c===-1&&o.push(s.toolConfigurationKey):c!==-1&&o.splice(c,1)}),{tools:o}}}extractHeader(e){let r=a(o=>{if(o.type==="array")return[...o.items.map(s=>r(s))];if(o.type==="object"){let s={};return o.properties.forEach(c=>{s[c.key.value]=r(c.value)}),s}return o.value},"extractValue"),n={};return e?.attributes.forEach(o=>{let{key:s,value:c}=o;n[s]=r(c)}),n}};var Gme=class{constructor(e){this.customAgent=e;this._isBuiltIn=!1;this.kind="Agent";e.promptFileEntry?.promptPath?.storage==="clsAssets"&&(this._isBuiltIn=!0)}static{a(this,"CustomChatMode")}get isBuiltIn(){return this._isBuiltIn}get id(){return this.customAgent.id}get name(){return this.customAgent.name}get uri(){return this.customAgent?.promptFileEntry?.parsedPromptFile?.uri}get description(){return this.customAgent.description}get customTools(){return this.customAgent.tools}get model(){return this.customAgent.model}get handOffs(){return this.customAgent.handOffs}get instruction(){return this.customAgent.instruction}get source(){return this.customAgent}},See=class{constructor(e,r,n,o){this.id=e;this.name=r;this.kind=n;this.description=o;this.isBuiltIn=!0}static{a(this,"BuiltInChatMode")}},fa={Ask:new See("Ask","Ask","Ask","General purpose chat mode for questions and assistance"),Edit:new See("Edit","Edit","Edit","Code editing mode for making changes to your files"),Agent:new See("Agent","Agent","Agent","Advanced agent mode with access to tools and capabilities"),InlineAgent:new See("InlineAgent","Agent","InlineAgent","Agent mode with a restricted tool set for inline editing")};function nLr(t){return t===fa.Agent||t.id===fa.Agent.id}a(nLr,"isBuiltInAgentMode");function gLi(t){return t===fa.InlineAgent||t.id===fa.InlineAgent.id}a(gLi,"isBuiltInInlineAgentMode");function iLr(t){return t===fa.Ask||t.id===fa.Ask.id||t===fa.Edit||t.id===fa.Edit.id||nLr(t)||gLi(t)}a(iLr,"isBuiltInChatMode");function Hme(t){return nLr(t)||!t.isBuiltIn&&t.customTools===void 0}a(Hme,"shouldApplyGlobalToolsSetting");var R_=class{constructor(e){this.ctx=e}static{a(this,"ChatModeService")}async listChatModes(e){let r=[fa.Ask,fa.Edit,fa.Agent,fa.InlineAgent],o=await this.ctx.get(Px).listCustomAgents(e||[]);return r.push(...o.filter(s=>s.invokePolicy.includes("user")).map(s=>new Gme(s))),r}async getChatMode(e,r,n){switch(e){case"Ask":return fa.Ask;case"Edit":return fa.Edit;case"Agent":return r?await this.getCustomChatModeById(r,n)??fa.Agent:fa.Agent;case"InlineAgent":return fa.InlineAgent}}async getCustomChatModeById(e,r){return(await this.listChatModes(r)).find(o=>o.id===e)}};f();var ic=class extends Error{static{a(this,"CanceledError")}constructor(){super("Canceled"),this.name="Canceled"}};f();var HLe=class{constructor(){this._tools=new Map}static{a(this,"ToolRegistry")}registerTool(e){this._tools.set(e.id,e)}unregisterTool(e){return this._tools.delete(e)}getTool(e){return this._tools.get(e)}listTools(){return Array.from(this._tools.values())}};f();f();f();f();var $e=new Pe("chat");var xee={Unknown:-1,Default:0,ToolRoundExceedError:1e4};var Aa=class{constructor(e){this.ctx=e;this.progressEntries=new $r(250)}static{a(this,"ConversationProgress")}async begin(e,r,n){let o={status:"open",handler:n};this.progressEntries.set(e.id,o),await o.handler.begin(this.ctx,e,r)}async report(e,r,n){let o=this.getProgressEntry(e);o.status==="open"&&await o.handler.report(this.ctx,e,r,n)}async end(e,r,n){let o=this.getProgressEntry(e);o.status==="open"&&(this.progressEntries.set(e.id,{...o,status:"done",updatedAt:Date.now()}),await o.handler.end(this.ctx,e,r,n))}async cancel(e,r,n){let o=this.getProgressEntry(e);o.status==="open"&&(this.progressEntries.set(e.id,{...o,status:"cancelled",updatedAt:Date.now()}),await o.handler.cancel(this.ctx,e,r,n))}getCurrentHandler(e){return this.progressEntries.get(e.id)?.handler}getProgressEntry(e){let r=this.progressEntries.get(e.id);if(r===void 0)throw new Error(`No work done token for conversation ${e.id}`);return r.status!=="open"&&$e.error(this.ctx,`Work done token for conversation ${e.id} is already ${r.status}, last updated at ${r.updatedAt}`),r}};f();f();f();var ds={Azure:"Azure",OpenAI:"OpenAI",Gemini:"Gemini",Groq:"Groq",OpenRouter:"OpenRouter",Anthropic:"Anthropic"};function i6(t){return t===ds.Azure?1:0}a(i6,"getAuthTypeForProvider");function VLe(t){return t===ds.OpenAI||t===ds.Gemini||t===ds.Groq||t===ds.OpenRouter||t===ds.Anthropic}a(VLe,"isOpenAICompatible");async function xb(t,e,r){let o=await new Ba(t.get(mi)).getStoredModelConfigs(e),s=o&&o[r]&&o[r].isRegistered!==!1?o[r]:void 0,c=s?.modelCapabilities,l=c?.name||r,u=c?.maxInputTokens||1e5,d=c?.maxOutputTokens||8192;return{modelId:r,uiName:l,modelFamily:dn.BYOK,providerName:e,deploymentUrl:s?.deploymentUrl,maxRequestTokens:u,maxResponseTokens:d,baseTokensPerCompletion:3,baseTokensPerMessage:3,baseTokensPerName:1,tokenizer:"o200k_base",isExperimental:!1,stream:!0,toolCalls:!!c?.toolCalling,supportsThinking:!!c?.thinking,originalBillingMultiplier:0}}a(xb,"resolveModelConfiguration");async function oLr(t,e,r){return await new Ba(t.get(mi)).getAPIKey(e,r)}a(oLr,"resolveModelKey");function sLr(t,e){let{protocol:r,hostname:n,pathname:o}=new URL(e);if(o.endsWith("/chat/completions"))return e;if(n.endsWith(".models.ai.azure.com")||n.endsWith(".inference.ml.azure.com"))return`${r}//${n}/v1/chat/completions`;if(n.endsWith(".openai.azure.com"))return`${r}//${n}/openai/deployments/${t}/chat/completions?api-version=2025-01-01-preview`;throw new Error(`Unrecognized Azure deployment URL: ${e}`)}a(sLr,"resolveAzureUrl");function Iee(t){let e=t.getTokenValue("editor_preview_features")=="0";return t.userInfo?.isIndividualUser&&!e}a(Iee,"isBYOKEnabled");var D2="byok",Ba=class{constructor(e){this.persistenceManager=e}static{a(this,"BYOKPersistence")}async getAPIKey(e,r){if(r){let o=await this.persistenceManager.read(D2,`${e}-${r}-api-key`);if(o)return o}return await this.persistenceManager.read(D2,`${e}-api-key`)}async storeAPIKey(e,r,n,o){n!==2&&(n===0?await this.persistenceManager.update(D2,`${e}-api-key`,r):n===1&&o&&await this.persistenceManager.update(D2,`${e}-${o}-api-key`,r))}async deleteAPIKey(e,r,n){r!==2&&(r===0?await this.persistenceManager.delete(D2,`${e}-api-key`):r===1&&n&&await this.persistenceManager.delete(D2,`${e}-${n}-api-key`))}async getStoredModelConfigs(e){return await this.persistenceManager.read(D2,`${e}-models-config`)||{}}async getAllModels(e){let r=[];if(!Iee(await e.get(Ot).getToken()))return r;for(let n of Object.values(ds)){let o=await this.getStoredModelConfigs(n);r.push(...Object.keys(o).map(s=>({name:s,provider:n,capabilities:o[s].modelCapabilities})))}return r}async saveModelConfig(e,r,n,o,s){let c=await this.getStoredModelConfigs(e);c[r]=n,await this.persistenceManager.update(D2,`${e}-models-config`,c),o&&s&&await this.storeAPIKey(e,o,s,r)}async removeModelConfig(e,r){let n=await this.getStoredModelConfigs(e),o=n[r];o&&(delete n[r],await this.persistenceManager.update(D2,`${e}-models-config`,n),o.deploymentUrl&&await this.deleteAPIKey(e,1,r))}async removeAllModelConfigs(e){await this.persistenceManager.delete(D2,`${e}-models-config`)}};f();f();var Vme=new Pe("openAICompatibleLMProvider"),MCt={[ds.OpenAI]:"https://api.openai.com/v1",[ds.Gemini]:"https://generativelanguage.googleapis.com/v1beta/openai",[ds.Groq]:"https://api.groq.com/openai/v1",[ds.OpenRouter]:"https://openrouter.ai/api/v1",[ds.Anthropic]:"https://api.anthropic.com/v1"},Ib=class{constructor(e,r){this._lastFetchTime=0;this.providerName=e,this.ctx=r}static{a(this,"BaseOpenAICompatibleLMProvider")}async getAllModels(){await this.ensureKnownModelsCache();try{let e=this.getFetchModelUrl(),r={"Content-Type":"application/json"},n=await new Ba(this.ctx.get(mi)).getAPIKey(this.providerName);n&&(r.Authorization=`Bearer ${n}`);let o=await 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){let u=this._knownModels?.[l.id];u&&c.push({providerName:this.providerName,modelId:l.id,isRegistered:!1,isCustomModel:!1,modelCapabilities:u})}return c}catch(e){throw Vme.error(this.ctx,`Error fetching models from ${this.providerName} provider:`,e),e}}getBaseUrl(){let e=MCt[this.providerName];if(!e)throw new Error(`Unsupported provider: ${this.providerName}`);return e}getFetchModelUrl(){return`${this.getBaseUrl()}/models`}async ensureKnownModelsCache(){let e=Date.now();!this._knownModels&&(this._knownModels=await this.fetchKnownModelList(),this._lastFetchTime=e)}async fetchKnownModelList(){let e=await(await this.ctx.get(ur).fetch("https://main.vscode-cdn.net/extensions/copilotChat.json",{method:"GET"})).json(),r;return e.version!==1?r={}:r=e.modelInfo[this.providerName]||{},r}};f();async function*o6(t,e){for await(let r of t)yield e(r)}a(o6,"asyncIterableMap");async function*aLr(t,e){for await(let r of t)await e(r)&&(yield r)}a(aLr,"asyncIterableFilter");async function*Wme(t,e){for await(let r of t){let n=await e(r);n!==void 0&&(yield n)}}a(Wme,"asyncIterableMapFilter");async function*cLr(...t){for(let e of t)yield*e}a(cLr,"asyncIterableConcat");f();f();var kx=class{static{a(this,"EndpointStrategyFactory")}static{this.strategies=new Map}static register(e){this.strategies.set(e.name,e)}static getStrategy(e){let r=this.strategies.get(e);if(!r){let n=this.strategies.get("completions");if(!n)throw new Error(`No strategy registered for endpoint '${e}' and no fallback strategy available. Available: ${Array.from(this.strategies.keys()).join(", ")}`);return n}return r}static hasStrategy(e){return this.strategies.has(e)}};f();var Ea=class{static{a(this,"ModelConfigurationProvider")}},zLe=class extends Ea{constructor(r){super();this.ctx=r}static{a(this,"DefaultModelConfigurationProvider")}async getBestChatModelConfig(r,n){let o=[];for(let s of r){let c=await this.getFirstMatchingChatModelConfiguration(s,n);c&&o.push(c)}if(o.length>0){let s=o.find(c=>c.isExperimental);return s||o[0]}throw $e.error(this.ctx,`No model configuration found for families: ${r.join(", ")}. Available models: ${JSON.stringify(await this.ctx.get(Bc).getMetadata())}`),new Error("No model configuration found")}async getFirstMatchingModelMetadata(r){let n=await this.ctx.get(Bc).getMetadata(),o=yLi(n,r);if(o.length>0)return o[0]}async getFirstMatchingChatModelConfiguration(r,n){let o=await this.getFirstMatchingModelMetadata({family:r,type:"chat",supports:n});if(o===void 0)return;let s=o.supported_endpoints&&o.supported_endpoints.length>0?o.supported_endpoints:["/chat/completions"],c=o.capabilities.supports?.adaptive_thinking??!1;return r===dn.Gpt35turbo||r===dn.Gpt4oMini?{modelId:o.id,uiName:o.name,modelFamily:r,maxRequestTokens:LCt(6144,o),maxResponseTokens:DCt(2048,o),baseTokensPerMessage:3,baseTokensPerName:1,baseTokensPerCompletion:3,tokenizer:o.capabilities.tokenizer,isExperimental:o.isExperimental??!1,stream:o.capabilities.supports?.streaming??!1,toolCalls:o.capabilities.supports?.tool_calls??!1,supportedEndpoints:s,supportsAdaptiveThinking:c,originalBillingMultiplier:o.billing?.multiplier??0}:r===dn.Gpt4||r===dn.Gpt4turbo?{modelId:o.id,uiName:o.name,modelFamily:r,maxRequestTokens:LCt(10240,o),maxResponseTokens:DCt(4096,o),baseTokensPerMessage:3,baseTokensPerName:1,baseTokensPerCompletion:3,tokenizer:o.capabilities.tokenizer,isExperimental:o.isExperimental??!1,stream:o.capabilities.supports?.streaming??!1,toolCalls:o.capabilities.supports?.tool_calls??!1,supportedEndpoints:s,supportsAdaptiveThinking:c,originalBillingMultiplier:o.billing?.multiplier??0}:r===dn.Gpt4o?{modelId:o.id,uiName:o.name,modelFamily:r,maxRequestTokens:await _Li(this.ctx,o),maxResponseTokens:DCt(4096,o),baseTokensPerMessage:3,baseTokensPerName:1,baseTokensPerCompletion:3,tokenizer:o.capabilities.tokenizer,isExperimental:o.isExperimental??!1,stream:o.capabilities.supports?.streaming??!1,toolCalls:o.capabilities.supports?.tool_calls??!1,supportedEndpoints:s,supportsAdaptiveThinking:c,originalBillingMultiplier:o.billing?.multiplier??0}:{modelId:o.id,uiName:o.name,modelFamily:r,maxRequestTokens:o.capabilities.limits?.max_prompt_tokens??8192,maxResponseTokens:o.capabilities.limits?.max_output_tokens??4096,baseTokensPerMessage:3,baseTokensPerName:1,baseTokensPerCompletion:3,tokenizer:o.capabilities.tokenizer,isExperimental:o.isExperimental??!1,stream:o.capabilities.supports?.streaming??!1,toolCalls:o.capabilities.supports?.tool_calls??!1,supportedEndpoints:s,supportsAdaptiveThinking:c,originalBillingMultiplier:o.billing?.multiplier??0}}async getFirstMatchingEmbeddingModelConfiguration(r){let n=await this.getFirstMatchingModelMetadata({family:r,type:"embeddings"});if(n!==void 0&&r===ZOe.textEmbedding3Small)return{modelId:n.id,modelFamily:r,maxBatchSize:n.capabilities.limits?.max_inputs??16,maxTokens:8191,tokenizer:"cl100k_base"}}};async function _Li(t,e){let r=t.get(Lt),n=await r.fetchTokenAndUpdateExPValuesAndAssignments(),o=r.ideChatMaxRequestTokens(n);return o===-1&&(o=16384),LCt(o,e)}a(_Li,"getExpRequestTokens");function LCt(t,e){return e.capabilities.limits?.max_prompt_tokens?Math.min(t,e.capabilities.limits.max_prompt_tokens):t}a(LCt,"getRequestTokens");function DCt(t,e){return e.capabilities.limits?.max_output_tokens?Math.min(t,e.capabilities.limits.max_output_tokens):t}a(DCt,"getResponseTokens");function yLi(t,e){return t.filter(r=>r.capabilities.type!==e.type||r.capabilities.family!==e.family&&!(r.is_chat_fallback===!0&&r.id===e.family)||r.capabilities.family===e.family&&r.id!==e.family&&r.is_chat_fallback===!0?!1:r.capabilities.supports===void 0||e.supports===void 0?!0:Object.keys(e.supports).every(n=>e.supports?.[n]===r.capabilities.supports?.[n]))}a(yLi,"filterModelsByCapabilities");function ALi(t){let e=t.supportedEndpoints;return!e||e.length===0?!1:e.includes("/responses")}a(ALi,"shouldUseResponsesApi");function ELi(t){let e=t.supportedEndpoints;return!e||e.length===0?!1:e.includes("/v1/messages")&&!e.includes("/responses")}a(ELi,"shouldUseMessagesApi");var lLr=["completions","responses","v1/messages"];function YLe(t,e){return e?"v1/messages":t&&ALi(t)?"responses":"completions"}a(YLe,"resolveEndpointRoute");async function KLe(t,e){if(!ELi(e))return!1;let r=dr(t,Ye.AnthropicMessagesEndpoint);if(r==="true")return!0;if(r==="false")return!1;let n=t.get(Lt),o=await n.fetchTokenAndUpdateExPValuesAndAssignments();return n.anthropicUseMessagesEndpoint(o)}a(KLe,"willUseMessagesEndpoint");f();function JLe(t){let e=t.toLowerCase();return e.startsWith("gpt")&&e.includes("-codex")}a(JLe,"isCodexStyleGptModel");function uLr(t){return t?t.toLowerCase().startsWith("gpt-5"):!1}a(uLr,"isGpt5PlusFamily");function dLr(t){return t?t.toLowerCase().startsWith("claude"):!1}a(dLr,"isAnthropicModel");f();f();function fLr(t,e){!e||!e.providerName||(e.providerName===ds.Anthropic?(delete t.temperature,delete t.top_p):e.supportsThinking&&(delete t.temperature,"max_tokens"in t&&(t.max_completion_tokens=t.max_tokens,delete t.max_tokens)),e.providerName&&delete t.max_tokens)}a(fLr,"adaptRequestForBYOKProvider");f();var wb=class extends x_{static{a(this,"ChatQuotaService")}constructor(e){super(),this._register(zo(e,r=>{this.processUserInfoQuotaSnapshot(r.userInfo?.raw)}))}get quotaExhausted(){return this._quotaInfo?this._quotaInfo.used>=this._quotaInfo.quota&&!this._quotaInfo.overageEnabled:!1}get overagesEnabled(){return this._quotaInfo?this._quotaInfo.overageEnabled:!1}clearQuota(){this._quotaInfo=void 0}processQuotaHeaders(e){let r=e.get("x-quota-snapshot-premium_models")||e.get("x-quota-snapshot-premium_interactions");if(r)try{let n=new URLSearchParams(r),o=parseInt(n.get("ent")||"0",10),s=parseFloat(n.get("ov")||"0.0"),c=n.get("ovPerm")==="true",l=parseFloat(n.get("rem")||"0.0"),u=n.get("rst"),d;u?d=new Date(u):(d=new Date,d.setMonth(d.getMonth()+1));let p=Math.max(0,o*(1-l/100));this._quotaInfo={quota:o,used:p,overageUsed:s,overageEnabled:c,resetDate:d}}catch(n){console.error("Failed to parse quota header",n)}}processUserInfoQuotaSnapshot(e){!e||!e.quota_snapshots||!e.quota_reset_date||(this._quotaInfo={overageEnabled:e.quota_snapshots.premium_interactions.overage_permitted,overageUsed:e.quota_snapshots.premium_interactions.overage_count,quota:e.quota_snapshots.premium_interactions.entitlement,resetDate:new Date(e.quota_reset_date),used:Math.max(0,e.quota_snapshots.premium_interactions.entitlement*(1-e.quota_snapshots.premium_interactions.percent_remaining/100))})}};f();f();var Nx=class{static{a(this,"RateLimitNotifier")}},XLe=class extends Nx{static{a(this,"NullRateLimitNotifier")}async notifyRateLimitWarning(e){}};var FCt=[50,75,90,95],L2=class extends x_{constructor(r){super();this.ctx=r;this._shownSessionThresholds=new Set;this._shownWeeklyThresholds=new Set;this._register(zo(r,()=>{this._shownSessionThresholds.clear(),this._shownWeeklyThresholds.clear(),this.clearRateLimits()}))}static{a(this,"ChatUsageRateLimitService")}get weeklyRateLimit(){return this._weeklyRateLimit}get sessionRateLimit(){return this._sessionRateLimit}clearRateLimits(){this._weeklyRateLimit=void 0,this._sessionRateLimit=void 0}processRateLimitHeaders(r){let n=r.get("x-usage-ratelimit-weekly"),o=r.get("x-usage-ratelimit-session");if(!n&&!o)return;n&&(this._weeklyRateLimit=this.parseRateLimitHeader(n)),o&&(this._sessionRateLimit=this.parseRateLimitHeader(o)),this.clearStaleThresholds(this._sessionRateLimit,this._shownSessionThresholds),this.clearStaleThresholds(this._weeklyRateLimit,this._shownWeeklyThresholds);let s=this.checkThreshold(this._sessionRateLimit,this._shownSessionThresholds,"session")??this.checkThreshold(this._weeklyRateLimit,this._shownWeeklyThresholds,"weekly");s&&this.ctx.get(Nx).notifyRateLimitWarning(s)}clearStaleThresholds(r,n){if(!r){n.clear();return}let o=100-r.percentRemaining;for(let s of n)o<s&&n.delete(s)}checkThreshold(r,n,o){if(!r)return;let s=100-r.percentRemaining;for(let c=FCt.length-1;c>=0;c--){let l=FCt[c];if(s>=l&&!n.has(l)){for(let d=0;d<=c;d++)n.add(FCt[d]);let u=this.getRateLimitMessage(o,r);return{type:o,rateLimit:r,message:u}}}}getRateLimitMessage(r,n){let o=Math.round(100-n.percentRemaining),s=this.formatResetDate(n.resetDate);return r==="session"?`You've used ${o}% of your session rate limit. Your session rate limit will reset on ${s}.`:`You've used ${o}% of your weekly rate limit. Your weekly rate limit will reset on ${s}.`}formatResetDate(r){let n=new Date(r);if(Number.isNaN(n.getTime()))return r;let o=new Date,s=n.getFullYear()!==o.getFullYear();return new Intl.DateTimeFormat("en-US",s?{month:"long",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit"}:{month:"long",day:"numeric",hour:"numeric",minute:"2-digit"}).format(n)}parseRateLimitHeader(r){try{let n=new URLSearchParams(r),o=Number.parseInt(n.get("ent")||"0",10),s=Number.parseFloat(n.get("rem")||"0.0"),c=n.get("rst")||"";return{entitlement:o,percentRemaining:s,resetDate:c}}catch(n){console.error("Failed to parse rate limit header",n);return}}};f();f();f();var s6="copilot-edits-session";f();f();f();f();function ZLe(t,e,r,n,o,s,c){return tAr(t,e,r,o,n),{completionText:e,meanLogProb:vLi(t,r),meanAlternativeLogProb:CLi(t,r),choiceIndex:n,requestId:o,blockFinished:s,tokens:r.tokens,numTokens:r.tokens.length,telemetryData:c,copilotAnnotations:r.copilot_annotations,clientCompletionId:lr(),finishReason:r.finish_reason}}a(ZLe,"convertToAPIChoice");function vLi(t,e){if(e?.logprobs?.token_logprobs)try{let r=0,n=0,o=50;for(let s=0;s<e.logprobs.token_logprobs.length-1&&o>0;s++,o--)r+=e.logprobs.token_logprobs[s],n+=1;return n>0?r/n:void 0}catch(r){Er.exception(t,r,"Error calculating mean prob")}}a(vLi,"calculateMeanLogProb");function CLi(t,e){if(e?.logprobs?.top_logprobs)try{let r=0,n=0,o=50;for(let s=0;s<e.logprobs.token_logprobs.length-1&&o>0;s++,o--){let c={...e.logprobs.top_logprobs[s]};delete c[e.logprobs.tokens[s]],r+=Math.max(...Object.values(c)),n+=1}return n>0?r/n:void 0}catch(r){Er.exception(t,r,"Error calculating mean prob")}}a(CLi,"calculateMeanAlternativeLogProb");function wee(t,e){return z1(t)||e<=1?0:e<10?.2:e<20?.4:.8}a(wee,"getTemperatureForSamples");var bLi={markdown:[`
|
|
2016
2016
|
|
|
2017
2017
|
|
|
2018
2018
|
`],python:[`
|
|
@@ -2394,7 +2394,7 @@ ${t.map(r=>`- ${r}`).join(`
|
|
|
2394
2394
|
`),start:l,end:u},g=HTt([m],e);if(!g)continue;let _={text:g,uri:e.uri};o.push({...m,updatedDocument:_})}return o}a(GTt,"extractEditsFromTaggedCodeblocks");function HTt(t,e){if(t.length===0)return;t.sort((n,o)=>n.start!==o.start?o.start-n.start:o.end-n.end);let r=e.getText().split(`
|
|
2395
2395
|
`);for(let n of t){let o=n.start,s=n.end,c=n.mode,l=n.codeblock.split(`
|
|
2396
2396
|
`);if(!(o<0||s<0||s<o)&&!(o>=r.length||s>=r.length)){if(c==="delete")r.splice(o,s-o+1);else if(c==="replace"){let u=r[o].match(/^\s*/)?.[0]??"";l.forEach((d,p)=>{l[p]=u+d}),r.splice(o,s-o+1,...l)}}}return r.join(`
|
|
2397
|
-
`)}a(HTt,"applyEditsToDocument");var tte=class{constructor(e){this.ctx=e;this.earlyReturnResponse="Oops, an error has occurred. Please try again";this.uiKind="conversationPanel";this.computeSuggestions=!0}static{a(this,"PanelTurnProcessorStrategy")}processResponse(){return[]}async buildConversationPrompt(e,r,n,o){let s="user",c=await zi.getModelConfiguration(e.ctx,s),l={promptType:s,modelConfiguration:c,languageId:r,userSelectedModelName:o};return await this.ctx.get(Wh).toPrompt(e,l)}extractEditsFromResponse(e,r){return[]}},W6e=class{constructor(e){this.ctx=e;this.earlyReturnResponse="Please open a file and select code for the inline chat to be available";this.uiKind="conversationInline";this.computeSuggestions=!1}static{a(this,"InlineTurnProcessorStrategy")}async buildConversationPrompt(e,r,n){let o=await this.getCurrentEditorSkill(e);if(!o)return;let s=await this.getDocumentIfValid(o.uri);if(!s)return;let c=n?.producesCodeEdits===!1?"user":"inline",l=await e.ctx.get(Ea).getBestChatModelConfig(lA(c)),u={promptType:c,modelConfiguration:l,languageId:r};return u.promptType==="inline"&&(this.currentDocument=s),await this.ctx.get(Wh).toPrompt(e,u)}async processResponse(e){let r=[],n=sn(e.response?.message??"");if(n&&e.status==="success"&&this.currentDocument){let o=await this.processInlineResponse(n,this.currentDocument);o&&r.push(o)}return r}async getCurrentEditorSkill(e){let r=await e.skillResolver.resolve(pg);if(r)return r}async getDocumentIfValid(e){let r=await this.ctx.get(bn).getOrReadTextDocument({uri:e});if(r.status==="valid")return r.document}async processInlineResponse(e,r){let o=GTt(e,r).filter(c=>QTt.includes(c.mode)),s=HTt(o,r);if(s)return await this.ctx.get(Uf).documentDiff({original:r.getText(),updated:s}),{uri:r.uri,text:s}}extractEditsFromResponse(e,r){return GTt(e,r)}};var z6e=class{constructor(){this.slug="github-copilot-coding-agent";this.name="GitHub Copilot Coding Agent";this.description="Create coding tasks that are executed by GitHub Copilot Coding Agent";this.avatarUrl=void 0}static{a(this,"BackendCodingAgent")}additionalSkills(e){return[]}turnProcessor(e){let r=new tte(e.ctx);return new V6e(e,r)}};f();f();f();f();function X9r(t){return t?t.filter(e=>e.type==="github.web-search").map(e=>e):[]}a(X9r,"filterUnsupportedReferences");function Z9r(t){return t?t.filter(e=>e.type==="github.web-search"):[]}a(Z9r,"convertToCopilotReferences");var e7r=S.Object({type:S.Literal("github.web-search"),id:S.String(),data:S.Object({query:S.String(),type:S.String(),results:S.Optional(S.Array(S.Object({title:S.String(),excerpt:S.String(),url:S.String()})))}),metadata:S.Optional(S.Object({display_name:S.Optional(S.String()),display_icon:S.Optional(S.String())}))});var I6=class{constructor(e){this.deltaApplier=e;this.appliedLength=0;this.appliedText="";this.appliedAnnotations=[]}static{a(this,"ConversationFinishCallback")}isFinishedAfter(e,r){let n=e.substring(this.appliedLength,e.length),s=this.mapAnnotations(r.annotations).filter(c=>!this.appliedAnnotations.includes(c.id));this.append(n,s,X9r(r.copilotReferences),r.copilotErrors??[],r.copilotConfirmation,r.thinking)}append(e,r,n,o,s,c){this.deltaApplier(e,r,n,o,s,c),this.appliedLength+=e.length,this.appliedText+=e,this.appliedAnnotations.push(...r.map(l=>l.id))}mapAnnotations(e){if(!e)return[];let r=[],n=e.for("CodeVulnerability").map(s=>({...s,type:"code_vulnerability"})),o=e.for("IPCodeCitations").map(s=>({...s,type:"ip_code_citations"}));return r.push(...n),r.push(...o),r}};f();f();var Y2=class{constructor(e){this.ctx=e;this.githubRepositoryInfoCache=new Map}static{a(this,"GitHubRepositoryApi")}async getRepositoryInfo(e){let r=`${e.hostname}/${e.owner}/${e.repo}`,n=this.githubRepositoryInfoCache.get(r);if(n)return n;let o=await this._doGetRepositoryInfo(e);if(o?.ok){let s=await o.json();return this.githubRepositoryInfoCache.set(r,s),s}}async _doGetRepositoryInfo({owner:e,repo:r,hostname:n}){let o=await this.ctx.get(en).getSession(),s;if(o&&new URL(o.serverUrl).hostname===n)s=o;else{let u=await this.ctx.get(a4).getAuthRecord({authAuthority:n});u&&(s={accessToken:u.oauth_token,apiUrl:`https://api.${n}/`})}if(!s&&!(n==="github.com"||n.endsWith(".ghe.com")))return;let c={Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"};s&&(c.Authorization=`Bearer ${s.accessToken}`);let l=new URL(`repos/${e}/${r}`,s?.apiUrl||`https://api.${n}`).href;return this.ctx.get(ur).fetch(l,{method:"GET",headers:c})}};f();f();var t7r=S.Object({name:S.String(),url:S.String()}),r7r=S.Object({path:S.String(),head:S.Optional(S.Object({name:S.String(),upstream:S.Optional(t7r)})),remotes:S.Optional(S.Array(t7r))}),VTt=class{constructor(e){this.turnContext=e}static{a(this,"GitMetadataSkillProcessor")}value(){return .8}processSkill(e){this.turnContext.collectLabel(K2,"git repository information");let r=[];return r.push([new tr(["Metadata about the current git repository:"]),1]),e.head&&e.head.name?(r.push([new tr([`- Current branch name: ${e.head.name}`]),1]),e.head.upstream&&r.push([new tr([`- Upstream name and url: ${e.head.upstream.name} - ${e.head.upstream.url}`]),1])):r.push([new tr(["- Detached HEAD: yes"]),1]),e.remotes&&e.remotes.length>0&&r.push([new tr([`- Remotes: ${e.remotes.map(n=>n.name).join(", ")}`]),1]),new tr(r)}},K2="git-metadata",Y6e=class extends Bp{static{a(this,"GitMetadataSkill")}constructor(e){super(K2,"Metadata about the current git repository, useful for questions about branch management and git related commands","Reading git information",()=>e,r=>new VTt(r))}};async function n7r(t){let e=await t.skillResolver.resolve(pg);if(e){let c=e.uri,l=y8(t.ctx,c);if(lkr(l))return{repoInfo:l,skillUsed:pg}}let r=await t.skillResolver.resolve(K2);if(!r||!r.remotes||r.remotes.length===0){$e.debug(t.ctx,"Git metadata skill is not available or no remotes available.");return}let o=r.remotes.find(c=>c.name==="origin")??r.remotes[0],s=FAt(o.url);if(s)return{repoInfo:{baseFolder:{uri:r.path},url:o.url,...s},skillUsed:K2}}a(n7r,"extractRepoInfo");async function i7r(t){let e=[];return await r7i(t,e),await n7i(t,e),await i7i(t,e),e}a(i7r,"skillsToReference");async function r7i(t,e){let r=await o7i(t);r&&e.push(r)}a(r7i,"addRepositoryReference");async function n7i(t,e){let r=await s7i(t);r&&e.push(r)}a(n7i,"addSelectionReference");async function i7i(t,e){let r=[],n=await c7i(t);n&&r.push(n),r.push(...await l7i(t)),r.length>0&&e.push(...r)}a(i7i,"addFileReferences");async function o7i(t){let e=await n7r(t);if(e){let r=t.ctx.get(Y2),n=e.repoInfo.owner,o=e.repoInfo.repo,s=await r.getRepositoryInfo(e.repoInfo);if(s)return{type:"github.repository",id:`${n}/${o}`,data:{type:"repository",name:o,ownerLogin:n,id:s.id}}}}a(o7i,"gitMetadataToReference");async function s7i(t){let e=await t.skillResolver.resolve(pg);if(e&&e.selection){let n=await t.ctx.get(bn).getOrReadTextDocument(e),o=Il(n);if(await t.collectFile(t.turn.agent.agentSlug,e.uri,o,e.selection),n.status==="valid")return a7i(e,n.document)}}a(s7i,"currentEditorToSelectionReference");function a7i(t,e){if(t.selection&&!Qee(t.selection)){let r=e.getText(t.selection);return{type:"client.selection",id:t.uri,data:{start:{line:t.selection.start.line,col:t.selection.start.character},end:{line:t.selection.end.line,col:t.selection.end.character},content:r}}}}a(a7i,"extractSelection");async function c7i(t){let e=await t.skillResolver.resolve(pg);if(e){let n=await t.ctx.get(bn).getOrReadTextDocument(e),o=Il(n);if(await t.collectFile(t.turn.agent.agentSlug,e.uri,o),n.status==="valid")return{type:"client.file",id:n.document.uri,data:{content:n.document.getText(),language:n.document.detectedLanguageId}}}}a(c7i,"currentEditorToFileReference");async function l7i(t){let e=[],r=t.turn.request.references;if(r&&r.length>0){let n=t.ctx.get(bn);for(let o of r)if(o.type==="file"){let s=await n.getOrReadTextDocument(o),c=Il(s);if(await t.collectFile(t.turn.agent.agentSlug,o.uri,c,o.selection),s.status==="valid"){let l=s.document.getText();e.push({type:"client.file",id:o.uri,data:{content:l,language:s.document.detectedLanguageId}})}}}return e}a(l7i,"fileReferenceToPlatformFileReference");f();f();var jp="https://aka.ms/github-copilot-rate-limit-error";function u7i(t){if(t<90)return`${t} ${t===1?"second":"seconds"}`;let e=Math.floor(t/60);if(t<=5400)return`${e} ${e===1?"minute":"minutes"}`;let r=Math.floor(e/60),n=e%60,o=`${r} ${r===1?"hour":"hours"}`;return n>0&&(o+=` ${n} ${n===1?"minute":"minutes"}`),o}a(u7i,"secondsToHumanReadableTime");var w6=class t{static{a(this,"CapiErrorTranslator")}static formatRequestId(e,r){let n=[];return e&&n.push(`Request ID: ${e}`),r&&n.push(`GitHub Request ID: ${r}`),n.length>0?` ${n.join(" | ")}`:""}static appendRequestId(e,r,n){return`${e}${t.formatRequestId(r,n)}`}static translateErrorMessage(e,r,n,o,s,c){let l;switch(e){case 466:l="Oops, your plugin is out of date. Please update it.";break;case 401:l="Oops, you are not authorized. Please sign in. If you are using a custom model, please check if the API key is still valid.";break;case 402:l=r||"Oops, you need to upgrade your plan.";break;case 413:l="Oops, your request is too large. Please try again with a smaller input.";break;case 429:l=t.getRateLimitMessage(o,c);break;case 503:l=r||"Oops, the service is currently unavailable. Please try again later.";break;default:if(r&&r.trim().length>0){let u=360,d=t.formatRequestId(n,s),p="Sorry, an error occurred while generating a response. Details: ",h=u-p.length-d.length;if(r.length<=h)return`${p}${r}${d}`;{let m=r.substring(0,h);return`${p}${m}... Read more from logs.${d}`}}l="Sorry, an error occurred while generating a response.";break}return t.appendRequestId(l,n,s)}static getRateLimitMessage(e,r){let n=e===void 0?"a moment":u7i(e),o=r?.capiErrorCode,s=r?.isAuto;if(o?.startsWith("agent_mode_limit_exceeded"))return`Sorry, you have exceeded the agent mode rate limit. Please switch to ask mode and try again in ${n}. [Learn More](${jp})`;if(o?.startsWith("model_overloaded")||o?.startsWith("upstream_provider_rate_limit"))return s?`Sorry, the upstream model provider is currently experiencing high demand. Please try again in ${n}. [Learn More](${jp})`:`Sorry, the upstream model provider is currently experiencing high demand. Please try again in ${n} or consider switching to Auto. [Learn More](${jp})`;if(o?.startsWith("user_global_rate_limited"))return r?.copilotPlan==="free"||r?.copilotPlan==="individual"||r?.copilotPlan==="individual_pro"?`You've hit your session rate limit. Please upgrade your plan or wait ${n} for your limit to reset. [Learn More](${jp})`:`You've hit your session rate limit. Please wait ${n} for your limit to reset. [Learn More](${jp})`;if(o?.startsWith("user_weekly_rate_limited")){if(e!==void 0){let l=new Date(Date.now()+e*1e3).toLocaleString(void 0,{year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"2-digit"});return r?.copilotPlan==="free"||r?.copilotPlan==="individual"||r?.copilotPlan==="individual_pro"?s?`You've reached your weekly rate limit. Please upgrade your plan or wait for your limit to reset on ${l}. [Learn More](${jp})`:`You've reached your weekly rate limit. Please upgrade your plan or wait for your limit to reset on ${l} or consider switching to Auto. [Learn More](${jp})`:s?`You've reached your weekly rate limit. Please wait for your limit to reset on ${l}. [Learn More](${jp})`:`You've reached your weekly rate limit. Please wait for your limit to reset on ${l} or consider switching to Auto. [Learn More](${jp})`}return s?`You've reached your weekly rate limit. Please wait ${n} for your limit to reset. [Learn More](${jp})`:`You've reached your weekly rate limit. Please wait ${n} for your limit to reset or consider switching to Auto. [Learn More](${jp})`}return o?.startsWith("user_model_rate_limited")?s?`You've hit the rate limit for this model. Please try again in ${n}. [Learn More](${jp})`:`You've hit the rate limit for this model. Please try switching to Auto or try again in ${n}. [Learn More](${jp})`:o?.startsWith("integration_rate_limited")?`Sorry, GitHub Copilot Chat is currently experiencing high demand. Please try again in ${n}. [Learn More](${jp})`:o?s?`Sorry, you have been rate-limited. Please wait ${n} before trying again. [Learn More](${jp})`:`Sorry, you have been rate-limited. Please wait ${n} before trying again or consider switching to Auto. [Learn More](${jp})`:s?`Sorry, your request was rate-limited. Please wait ${n} before trying again. [Learn More](${jp})`:`Sorry, your request was rate-limited. Please wait ${n} before trying again or consider switching to Auto. [Learn More](${jp})`}};f();f();f();var f7r=pe(X6e()),KTt=pe(require("path"));var p7r=500,E7i=Math.floor(.25*p7r),Z6e=class{static{a(this,"FixedSizeChunking")}async chunk(e,r){let n=[],o=KTt.default.extname(__filename)===".ts"?KTt.default.resolve(__dirname,"../../../../../../dist/main.js"):__filename;return n=await f7r.job(async({text:s,uri:c,tokenizerName:l,directory:u,chunkSize:d,overlap:p})=>{let m=await require(u).getTokenizerAsync(l),g=m.tokenize(s),_=g.length,y=[],A=0;for(;A<_;){let E=A+d>=_,v=E?_:A+d,b=g.slice(A,v),x=m.detokenize(b),I=s.indexOf(x);y.push({id:`${c.toString()}#${A}`,chunk:x,tokenCount:b.length,range:{start:I,end:I+x.length}}),A=E?v:v-p}return y},{data:{text:e.getText(),uri:e.uri.toString(),tokenizerName:r.tokenizer,directory:o,chunkSize:p7r,overlap:E7i}}),n}};var v7i="fixedSize",C7i=new Map([["fixedSize",Z6e]]);function h7r(t){let e=t==="default"?v7i:t,r=C7i.get(e);if(!r)throw new Error(`Chunking constructor for type ${t} not found`);return r}a(h7r,"getChunkingAlgorithm");f();f();var e9e=pe(Q5()),J2=pe(require("fs")),m7r=require("os"),Ob=pe(require("path")),rte=require("process");var JTt=5e4,b7i=new Pe("workspaceChunks"),t9e=class t{constructor(e,r){this.ctx=e;this.pathHashLength=8;this.chunksCountCache=new Map;let n=pi(r.uri),o=(0,e9e.SHA256)(r.uri).toString().substring(0,this.pathHashLength);this.cacheRootPath=Ob.join(XTt(),"project-context",`${n}.${o}`)}static{a(this,"WorkspaceChunks")}static{this.CACHE_VERSION="1.0.0"}getChunksCacheFile(e){let r=(0,e9e.SHA256)(e).toString().substring(0,this.pathHashLength),n=Ob.basename(e);return Ob.join(this.cacheRootPath,`${n}.${r}.json`)}async getChunksCacheFromCacheFile(e){let r=await J2.promises.readFile(e,{encoding:"utf8"}).catch(()=>{});if(r)try{return JSON.parse(r)}catch{}}async getChunksCache(e){let r=this.getChunksCacheFile(e);return await this.getChunksCacheFromCacheFile(r)}async setChunksCache(e,r){let n=this.getChunksCacheFile(e);try{await J2.promises.mkdir(Ob.dirname(n),{recursive:!0}),await J2.promises.writeFile(n,JSON.stringify(r),{encoding:"utf8"})}catch(o){b7i.debug(this.ctx,"Failed to set chunks cache:",o)}}async removeChunksCache(e){let r=this.getChunksCacheFile(e);await J2.promises.rm(r).catch(()=>{})}async enumerateChunksCacheFileNames(){return await J2.promises.readdir(this.cacheRootPath).catch(()=>[])}async getFilesCount(){return(await this.enumerateChunksCacheFileNames()).length}async getChunksCount(){let e=0;for(let r of await this.enumerateChunksCacheFileNames()){let n=Ob.join(this.cacheRootPath,r);if(!this.chunksCountCache.has(n)){let o=await this.getChunksCacheFromCacheFile(n);this.chunksCountCache.set(n,o?.documentChunks?.length??0)}e+=this.chunksCountCache.get(n)||0}return e}async*getChunksForFile({uri:e}){let r=await this.getChunksCache(e);r!==void 0&&(yield*r.documentChunks)}async*getChunksFromCacheFile(e){let r=await this.getChunksCacheFromCacheFile(e);yield*r?r.documentChunks:[]}async*getChunks(e){if(e!==void 0)yield*this.getChunksForFile(e);else{let r=await this.enumerateChunksCacheFileNames();for(let n of r)yield*this.getChunksFromCacheFile(Ob.join(this.cacheRootPath,n))}}async getFileHash(e){let r=Qi(e),n="";return r&&(n=await J2.promises.readFile(r,{encoding:"utf8"}).catch(()=>"")),(0,e9e.SHA256)(n).toString()}async addChunks({uri:e},r){let n=Array.isArray(r)?()=>Promise.resolve(r):r,o=Qi(e);if(!o)return;async function s(h){try{return(await J2.promises.stat(h)).mtimeMs}catch{return}}a(s,"getLastModified");let c=await s(o),l=await this.getChunksCache(e);if(l!==void 0&&l.version===t.CACHE_VERSION&&c!==void 0&&l.lastModified===c){this.chunksCountCache.set(o,l.documentChunks.length);return}let u=await this.getFileHash(e),d=await n();this.chunksCountCache.set(o,d.length);let p={version:t.CACHE_VERSION,filePath:e,hash:u,lastModified:c,documentChunks:d};await this.setChunksCache(e,p)}async deleteChunksForSource(e){let r=Oa(e),n=await this.getChunksCache(r);return n===void 0?[]:(await this.removeChunksCache(r),n.documentChunks)}async deleteChunks({uri:e}){let r=Qi(e);if(!r)return[];let n;try{n=await J2.promises.readdir(r)}catch{return await this.deleteChunksForSource(r)}let o=[];for(let s of n){let c=Oa(Ob.join(r,s));o.push(...await this.deleteChunks({uri:c}))}return o}async clear(){await J2.promises.rm(this.cacheRootPath,{recursive:!0}).catch(()=>{})}};function XTt(){return rte.env.XDG_CACHE_HOME&&Ob.isAbsolute(rte.env.XDG_CACHE_HOME)?rte.env.XDG_CACHE_HOME+"/github-copilot":(0,m7r.platform)()==="win32"?rte.env.USERPROFILE+"\\AppData\\Local\\Temp\\github-copilot":rte.env.HOME+"/.cache/github-copilot"}a(XTt,"getXdgCachePath");f();f();var r9e=class{constructor(e,r){this.ctx=e;this.workspaceFolder=r;this.emitter=new Ei;this.onFileChange=this.emitter.event;this.status="created",this.startWatching()}static{a(this,"WorkspaceWatcher")}emitFilesCreated(e){this.emitter.fire({type:"create",documents:e,workspaceFolder:this.workspaceFolder})}emitFilesUpdated(e){this.emitter.fire({type:"update",documents:e,workspaceFolder:this.workspaceFolder})}emitFilesDeleted(e){this.emitter.fire({type:"delete",documents:e,workspaceFolder:this.workspaceFolder})}};var hg=class{constructor(e){this.ctx=e;this.watchers=new $r(25)}static{a(this,"WorkspaceWatcherProvider")}getWatcher(e){let r=this.watchers.get(e.uri);if(r)return r;let n=this.getParentFolder(e.uri);return n?this.watchers.get(n):void 0}getParentFolder(e){return[...this.watchers.keys()].find(n=>{let o=n.replace(/[#?].*/,"").replace(/\/?$/,"/");return e!==n&&e.startsWith(o)})}hasWatcher(e){return this.getParentFolder(e.uri)||this.getWatcher(e)!==void 0}startWatching(e){if($e.debug(this.ctx,`WorkspaceWatcherProvider - Start watching workspace ${e.uri}`),this.hasWatcher(e)){this.getWatcher(e)?.startWatching();return}let r=this.createWatcher(e);this.watchers.set(e.uri,r)}stopWatching(e){this.getWatcher(e)?.stopWatching()}terminateSubfolderWatchers(e){let r=[];for(let s of this.watchers.values())r.push(s.workspaceFolder);let n=e.uri.replace(/[#?].*/,"").replace(/\/?$/,"/"),o=r.filter(s=>s.uri!==e.uri&&s.uri.startsWith(n));for(let s of o)this.terminateWatching(s);return o}terminateWatching(e){if(this.getWatcher(e)?.status!=="stopped")return this.stopWatching(e),this.watchers.delete(e.uri);this.watchers.delete(e.uri)}onFileChange(e,r,n,o){return this.getWatcher(e)?.onFileChange(hp(this.ctx,r,"WorkspaceWatcherProvider.onFileChange"),n,o)}async getWatchedFiles(e){return await this.getWatcher(e)?.getWatchedFiles()??[]}getStatus(e){return this.getWatcher(e)?.status}};var ZTt=1e4;var n9e=class{constructor(e,r,n){this.workspaceFolder=r;this.implementation=n;this._chunkLimiter=new tSt;this.status="notStarted",this.workspaceChunks=new t9e(e,r),this.cancellationToken=new eSt,this._chunkingTimeMs=0,this._fileCountExceeded=!1,this._chunkCountExceeded=!1,this._totalFileCount=0,this._filesUpdated=new Set}static{a(this,"ChunkingHandler")}async chunk(e,r){return r?await this.chunkFiles(e,r):await this.chunkWorkspace(e)}async chunkWorkspace(e){let r=performance.now();if(this.status="started",this.cancellationToken.isCancelled())return this.status="cancelled",this.updateChunkingTime(r,performance.now()),this.workspaceChunks.getChunks();await this.updateModelConfig(e);let n=await e.get(hg).getWatchedFiles(this.workspaceFolder);this._totalFileCount=n.length,n.length>ZTt&&(this._fileCountExceeded=!0,n=n.slice(0,ZTt));let o=n.map(async s=>{this.cancellationToken.isCancelled()||await this._chunkLimiter.queue(()=>this._chunk(e,s))});try{await Promise.all(o)}catch(s){Po(e,s,"ChunkingProvider.chunk"),this.terminateChunking()}return this.status=this.cancellationToken.isCancelled()?"cancelled":"completed",this.updateChunkingTime(r,performance.now()),await this.workspaceChunks.getChunksCount()>JTt&&(this._chunkCountExceeded=!0),this.workspaceChunks.getChunks()}async chunkFiles(e,r){await this.updateModelConfig(e);let n=r.map(async o=>{this.cancellationToken.isCancelled()||(this._filesUpdated.add(o.uri),await this._chunkLimiter.queue(()=>this._chunk(e,o)))});try{await Promise.all(n)}catch(o){Po(e,o,"ChunkingProvider.chunkFiles"),this.terminateChunking()}return await this.workspaceChunks.getChunksCount()>JTt&&(this._chunkCountExceeded=!0),await this.workspaceChunks.getFilesCount()>ZTt&&(this._fileCountExceeded=!0),cLr(...r.map(o=>this.workspaceChunks.getChunks(o)))}async _chunk(e,r){this.cancellationToken.isCancelled()||await this.workspaceChunks.addChunks(r,()=>this.implementation.chunk(r,this.modelConfig))}async updateModelConfig(e){this.modelConfig||(this.modelConfig=await zi.getModelConfiguration(e,"user"))}terminateChunking(){this.cancellationToken.cancel()}async clearChunks(){await this.workspaceChunks.clear()}updateChunkingTime(e,r){this._chunkingTimeMs=r-e}get chunkingTimeMs(){return Math.floor(this._chunkingTimeMs)}get fileCountExceeded(){return this._fileCountExceeded}get totalFileCount(){return this._totalFileCount}get chunkCountExceeded(){return this._chunkCountExceeded}get filesUpdatedCount(){return this._filesUpdated.size}async getFilesCount(){return this.workspaceChunks.getFilesCount()}getChunks(){return this.workspaceChunks.getChunks()}async getChunksCount(){return this.workspaceChunks.getChunksCount()}deleteSubfolderChunks(e){return this.workspaceChunks.deleteChunks({uri:e})}deleteFileChunks(e){return this._filesUpdated.add(e),this.workspaceChunks.deleteChunks({uri:e})}},eSt=class{constructor(){this.cancelled=!1}static{a(this,"ChunkingCancellationToken")}cancel(){this.cancelled=!0}isCancelled(){return this.cancelled}},tSt=class{constructor(e=20){this.maxCount=e;this.tasks=[];this.runningTasks=0}static{a(this,"Limiter")}async queue(e){return new Promise((r,n)=>{this.tasks.push({factory:e,resolve:r,reject:n}),this.consume()})}consume(){for(;this.tasks.length>0&&this.runningTasks<=this.maxCount;){let{factory:e,resolve:r,reject:n}=this.tasks.shift();this.runningTasks++;let o=e();o.then(r,n),o.then(()=>this.consumed(),()=>this.consumed())}}consumed(){this.runningTasks--,this.consume()}};var ud=class{constructor(e){this.ctx=e;this.workspaceChunkingProviders=new Map}static{a(this,"ChunkingProvider")}get workspaceCount(){return this.workspaceChunkingProviders.size}createImplementation(e,r){let n=h7r(r),o=new n;return new n9e(this.ctx,e,o)}getImplementation(e,r="default"){let n=this.getParentFolder(e);if(n)return this.workspaceChunkingProviders.get(n.uri);let o=this.workspaceChunkingProviders.get(e.uri);return o||(o=this.createImplementation(e,r),this.workspaceChunkingProviders.set(e.uri,o)),o}getParentFolder(e){let r=[];for(let n of this.workspaceChunkingProviders.values())r.push(n.workspaceFolder);return r.find(n=>{let o=n.uri.replace(/[#?].*/,"").replace(/\/?$/,"/");return e.uri!==n.uri&&e.uri.startsWith(o)})}status(e){return this.getImplementation(e).status}checkLimits(e){let r=this.getImplementation(e);return{fileCountExceeded:r.fileCountExceeded,chunkCountExceeded:r.chunkCountExceeded}}fileCount(e){return this.getImplementation(e).getFilesCount()}chunkCount(e){return this.getImplementation(e).getChunksCount()}chunkingTimeMs(e){return this.getImplementation(e).chunkingTimeMs}getChunks(e){return this.getImplementation(e).getChunks()}terminateChunking(e,r){let n=this.getImplementation(r);n.terminateChunking();let s=ht.createAndMarkAsIssued().extendedBy(void 0,{fileCount:n.filesUpdatedCount});it(e,"index.terminate",s),this.workspaceChunkingProviders.delete(r.uri)}async clearChunks(e,r){this.terminateChunking(e,r),await this.getImplementation(r).clearChunks()}async deleteSubfolderChunks(e,r){return await this.getImplementation(e).deleteSubfolderChunks(r.uri)}async deleteFileChunks(e,r){let n=this.getImplementation(e),o=[];Array.isArray(r)||(r=[r]);for(let s of r)o.push(...await n.deleteFileChunks(s));return o}async chunk(e,r,n,o){let s;return n&&(Array.isArray(n)?s=n:o=n),o||(o="default"),s?await this.chunkFiles(e,r,s,o):await this.chunkFolder(e,r,o)}async chunkFolder(e,r,n="default"){let o=this.getImplementation(r,n),s=await o.chunk(e),l=ht.createAndMarkAsIssued().extendedBy(void 0,{fileCount:o.totalFileCount,chunkCount:await o.getChunksCount(),timeTakenMs:o.chunkingTimeMs,workspaceCount:this.workspaceCount});return it(e,"index.chunk",l),s}async chunkFiles(e,r,n,o="default"){return await this.getImplementation(r,o).chunk(e,n)}};var T7i=new Pe("ChatFetchResultPostProcessor"),nte=class{constructor(e,r,n){this.turnContext=e;this.chatFetcher=r;this.computeSuggestions=n}static{a(this,"ChatFetchResultPostProcessor")}async postProcess(e,r,n,o,s,c,l,u){switch(yLr(this.turnContext.ctx,l,c,e.type=="offTopic",e.requestId,u,s.extendedBy({},{fileCount:this.turnContext.ctx.get(ud).workspaceCount})),await this.turnContext.ctx.get(Uf).inspectFetchResult(e),e.type){case"success":return await this.processSuccessfulFetchResult(n,e.numTokens,e.requestId,r,l,o,s,u);case"offTopic":return this.processOffTopicFetchResult(s,l,u);case"canceled":return this.turnContext.turn.status="cancelled",this.turnContext.turn.response={message:"Cancelled",type:"user"},{error:{message:sn(this.turnContext.turn.response?.message??""),type:this.turnContext.turn.response?.type}};case"failed":return this.turnContext.turn.status="error",this.turnContext.turn.response={message:e.reason,type:"server"},T7i.error(this.turnContext.ctx,"Fetch failed:",e),{error:{message:w6.translateErrorMessage(e.code,e.reason,e.requestId,e.retryAfter,e.ghRequestId,{capiErrorCode:e.capiErrorCode,isAuto:this.turnContext.turn.userRequestedModel?.toLowerCase()===sv,copilotPlan:CC(this.turnContext.ctx)?.userInfo?.copilotPlan}),code:e.code}};case"filtered":return this.turnContext.turn.status="filtered",{error:{message:"Oops, your response got filtered. Vote down if you think this shouldn't have happened.",responseIsFiltered:!0}};case"length":return this.turnContext.turn.status="error",{error:{message:"Oops, the response got too long. Try to reformulate your question.",responseIsIncomplete:!0}};case"agentAuthRequired":return this.turnContext.turn.status="error",this.turnContext.turn.response={message:"Authorization required",type:"server"},{error:{message:"Authorization required",responseIsFiltered:!1}};case"no_choices":return this.turnContext.turn.status="error",this.turnContext.turn.response={message:"No choices returned",type:"server"},{error:{message:"Oops, no choices received from the server. Please try again.",responseIsFiltered:!1,responseIsIncomplete:!0}};case"no_finish_reason":return this.turnContext.turn.status="error",n&&n.length>0?this.turnContext.turn.response={message:n,type:"model",references:this.turnContext.turn.response?.references}:this.turnContext.turn.response={message:"No finish reason",type:"server"},{error:{message:"Oops, unexpected end of stream. Please try again.",responseIsFiltered:!1,responseIsIncomplete:!0}};case"model_not_supported":{this.turnContext.turn.status="error",this.turnContext.turn.response={message:"Model not supported",type:"server"};let{modelName:d,modelProviderName:p}=zi.parseModelNotSupportedReason(e.reason);return{error:{message:"Oops, the model is not supported. Please try again.",code:400,reason:"model_not_supported",responseIsFiltered:!1,modelName:d,modelProviderName:p}}}case"model_max_prompt_tokens_exceeded":return this.turnContext.turn.status="error",this.turnContext.turn.response={message:"Model max prompt tokens exceeded",type:"server"},{error:{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":return this.turnContext.turn.status="error",{error:{message:"Unknown server side error occurred. Please try again.",responseIsFiltered:!1}}}}async processSuccessfulFetchResult(e,r,n,o,s,c,l,u){if(e&&e.length>0){c.markAsDisplayed(),l.markAsDisplayed(),this.turnContext.turn.status="success",this.turnContext.turn.response={message:e,type:"model",references:this.turnContext.turn.response?.references},ALr(this.turnContext,s,e,r,n,u,l);let d=this.computeSuggestions?await this.fetchSuggestions(o,s,c,u):void 0;if(d){let{followUp:p,suggestedTitle:h}=d;return{followup:p.message!==""?p:void 0,suggestedTitle:h!==""?h:void 0}}return{}}return this.turnContext.turn.status="error",this.turnContext.turn.response={message:"The model returned successful but did not contain any response text.",type:"meta"},{error:{message:sn(this.turnContext.turn.response?.message??""),type:this.turnContext.turn.response?.type}}}async fetchSuggestions(e,r,n,o){let c=await new b6(this.turnContext.ctx,this.chatFetcher).fetchRawSuggestions(this.turnContext,e,r,n);if(c===void 0)return;let l=this.enrichFollowup(c,r,n,o);return $e.debug(this.turnContext.ctx,"Computed followup",l),$e.debug(this.turnContext.ctx,"Computed suggested title",c.suggestedTitle),{followUp:l,suggestedTitle:c.suggestedTitle}}enrichFollowup(e,r,n,o){let s=n.extendedBy({messageSource:"chat.suggestions",suggestionId:lr(),suggestion:"Follow-up from model"},{promptTokenLen:e.promptTokenLen,numTokens:e.numTokens});return bLr(this.turnContext.ctx,r,s,o),{message:e.followUp,id:s.properties.suggestionId,type:s.properties.suggestion}}processOffTopicFetchResult(e,r,n){let o="Sorry, but I can only assist with programming related questions.";return this.turnContext.turn.response={message:o,type:"offtopic-detection"},this.turnContext.turn.status="off-topic",ELr(this.turnContext.ctx,this.turnContext.conversation,r,o,e.properties.messageId,n,e),{error:{message:o,responseIsFiltered:!0}}}};f();var i9e=S.Union([S.String(),S.Number()]),tQ=S.Union([S.String(),S.Number()]),S7i=S.Union([S.Literal("included"),S.Literal("blocked"),S.Literal("notfound"),S.Literal("empty")]),o9e=S.Object({uri:S.String(),position:S.Optional(qp)}),Cge=S.Object({type:S.Literal("file"),uri:S.String(),visibleRange:S.Optional(Gd),selection:S.Optional(Gd),status:S.Optional(S7i),range:S.Optional(Gd)}),x7i=S.Object({type:S.Literal("directory"),uri:S.String()}),I7i=S.Object({type:S.Literal("tool"),uri:S.String(),name:S.Optional(S.String()),server:S.Optional(S.String()),description:S.Optional(S.String())}),ite=S.Union([Cge,x7i,e7r,I7i]),Mb=S.Union([S.Literal("panel"),S.Literal("inline")]),w7i=S.Union([S.Object({type:S.Literal("text"),text:S.String()}),S.Object({type:S.Literal("image_url"),imageUrl:S.Object({url:S.String(),detail:S.Optional(S.Union([S.Literal("low"),S.Literal("high")]))})})]),rSt=S.Union([S.String(),S.Array(w7i)]),_7r=S.Object({request:rSt,response:S.Optional(S.String()),agentSlug:S.Optional(S.String()),turnId:S.Optional(tQ),model:S.Optional(S.String())});function s9e(t){return typeof t=="string"?t:t.map(e=>e.type==="image_url"?{type:"image_url",image_url:{url:e.imageUrl.url,detail:e.imageUrl.detail}}:{type:"text",text:e.text})}a(s9e,"convertToMessageContent");function a9e(t,e){if(t=tv(t),typeof t=="string")return t+e;let r=t.map(n=>n.type==="text").lastIndexOf(!0);if(r>=0){let n=[...t],o=n[r];return n[r]={type:"text",text:o.text+e},n}return[...t,{type:"text",text:e}]}a(a9e,"appendToMessage");var c9e=S.Union([S.Literal("Ask"),S.Literal("Agent"),S.Literal("InlineAgent")]),R7i=S.Object({type:S.String(),description:S.String()}),y7r=S.Object({name:S.String(),description:S.String(),inputSchema:S.Optional(S.Object({type:S.String(),properties:S.Record(S.String(),R7i),required:S.Array(S.String())})),confirmationMessages:S.Optional(S.Object({title:S.String(),message:S.String()}))}),$p=S.Object({uri:S.String(),name:S.String()}),P7i=S.Union([S.Literal("not-started"),S.Literal("in-progress"),S.Literal("completed")]),l9e=S.Object({id:S.Number(),title:S.String(),description:S.Optional(S.String()),status:P7i});var nSt="generate-response",u9e=class extends Error{constructor(r,n,o,s){super(r);this.authorizationUri=n;this.agentSlug=o;this.agentName=s}static{a(this,"RemoteAgentAuthorizationError")}},bge=class{constructor(e,r,n){this.agent=e;this.turnContext=r;this.chatFetcher=n;this.conversationProgress=r.ctx.get(Aa),this.chatFetcher=this.chatFetcher??new Rs(r.ctx),this.postProcessor=new nte(r,this.chatFetcher,!1),this.conversation=r.conversation,this.turn=r.turn}static{a(this,"RemoteAgentTurnProcessor")}async process(e,r,n,o){try{await this.processWithAgent(e,r,this.turnContext,o)}catch(s){$e.error(this.turnContext.ctx,`Error processing turn ${this.turn.id}`,s);let c=s instanceof Error?s.message:String(s);this.turn.status="error",this.turn.response={message:c,type:"meta"},s instanceof u9e?await this.endProgress({unauthorized:{authorizationUri:s.authorizationUri,agentSlug:s.agentSlug,agentName:s.agentName}}):await this.endProgress({error:{message:c,responseIsIncomplete:!0}})}}async processWithAgent(e,r,n,o){await this.conversationProgress.begin(this.conversation,this.turn,e);let s=await Ua(this.turnContext.ctx,this.turnContext,{languageId:o?.detectedLanguageId??""});if(r.isCancellationRequested){this.turn.status="cancelled",await this.cancelProgress();return}let c=await this.buildAgentPrompt(n);if(!c)await this.endTurnWithResponse(`No prompt created for agent ${this.agent.id}`,"error");else{let l={type:"user",prompt:JSON.stringify(c.messages,null,2),tokens:c.tokens};await n.ctx.get(Uf).inspectPrompt(l),await n.steps.start(nSt,"Generating response");let u=this.augmentTelemetry(c,s,this.turn.template,o);if(r.isCancellationRequested){this.turn.status="cancelled",await this.cancelProgress();return}let d=await this.fetchConversationResponse(n,c.messages,r,s.extendedBy({messageSource:"chat.user"},{promptTokenLen:c.tokens}),u,o);this.turn.status==="cancelled"&&this.turn.response?.type==="user"?await this.cancelProgress():(await this.finishGenerateResponseStep(d,n),await this.endProgress({error:d.error,followUp:d.followup,suggestedTitle:d.suggestedTitle,skillResolutions:c.skillResolutions}))}}async buildAgentPrompt(e){let r=this.createMessagesFromHistory(e),n=await this.computeCopilotReferences(e),o=this.getOrCreateAgentSessionId(e);return this.turn.agent&&(this.turn.agent.sessionId=o),this.turn.confirmationResponse?this.addConfirmationResponse(this.turn.confirmationResponse,r):r.push({role:"user",content:tv(e.turn.request.message),copilot_references:n.length>0?n:void 0}),{messages:r,tokens:-1,skillResolutions:[]}}getOrCreateAgentSessionId(e){let r=this.turn.agent?.agentSlug;if(r){for(let n of e.conversation.turns)if(n.agent?.agentSlug===r&&n.agent.sessionId)return n.agent.sessionId}return lr()}addConfirmationResponse(e,r){r.push({role:"user",content:"",copilot_confirmations:[e]})}createMessagesFromHistory(e){return iTt(e.conversation.turns.slice(0,-1),this.agent.slug).flatMap(r=>{let n=[];if(r.request&&n.push({role:"user",content:tv(r.request.message)}),r.response&&r.response.type==="model"){let o=Z9r(r.response.references);n.push({role:"assistant",content:tv(r.response.message),copilot_references:o.length>0?o:void 0})}return n})}async computeCopilotReferences(e){return await i7r(e)}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 fetchConversationResponse(e,r,n,o,s,c){n.onCancellationRequested(async()=>{await this.cancelProgress()});let l=new I6((h,m,g,_,y,A)=>{let E=y?{...y,agentSlug:this.agent.slug}:void 0;this.conversationProgress.report(this.conversation,this.turn,{reply:h,annotations:m,references:g,notifications:_.map(v=>({message:v.message,severity:"warning"})),confirmationRequest:E,thinking:A}),this.turn.response?(this.turn.response.message=a9e(this.turn.response.message,h),this.turn.response.references.push(...g)):this.turn.response={message:h,type:"model",references:g},this.turn.annotations.push(...m??[]),E&&(this.turn.confirmationRequest=E)}),u=await this.turnContext.ctx.get(Ot).getGitHubSession(),d={engineName:"agents",endpoint:this.agent.endpoint??this.agent.slug,messages:r,uiKind:"conversationPanel",intentParams:{intent:!0,intent_threshold:.7,intent_content:sn(this.turn.request.message)},authToken:u?.accessToken,copilot_thread_id:this.turn.agent?.sessionId,llmInteraction:e.toLlmInteraction()},p=await this.chatFetcher.fetchResponse(d,n,o,(h,m)=>l.isFinishedAfter(h,m));return this.ensureAgentIsAuthorized(p),await this.postProcessor.postProcess(p,n,l.appliedText,o,s.extendedBy(this.addExtensibilityInfoTelemetry()),sn(this.turn.request.message),"conversationPanel",c)}ensureAgentIsAuthorized(e){if(e.type==="agentAuthRequired")throw this.turnContext.turn.status="error",this.turnContext.turn.response={message:"Authorization required",type:"server"},new u9e("Authorization required",e.authUrl,this.agent.slug,this.agent.name)}augmentTelemetry(e,r,n,o){return Kme(this.conversation,"conversationPanel",sn(this.turn.request.message).length,e.tokens,n?.templateId,void 0,r,e.skillResolutions)}addExtensibilityInfoTelemetry(){return{extensibilityInfoJson:JSON.stringify({agent:this.agent.slug,outgoingReferences:this.turn.request.references?.map(e=>e.type)??[],incomingReferences:this.turn.response?.references?.map(e=>e.type)??[]})}}async finishGenerateResponseStep(e,r){e.error?await r.steps.error(nSt,e.error.message):await r.steps.finish(nSt)}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)}};var Tge=class{constructor(e,r,n,o,s,c){this.id=e;this.slug=r;this.name=n;this.description=o;this.avatarUrl=s;this.endpoint=c}static{a(this,"RemoteAgent")}additionalSkills(){return[]}turnProcessor(e){return new bge(this,e)}},d9e=class extends Tge{static{a(this,"ExtensibilityPlatformAgent")}constructor(){super(0,"github","GitHub","Get answers grounded in web search, code search, and your enterprise's knowledge bases.","https://avatars.githubusercontent.com/u/9919?s=200&v=4","chat")}turnProcessor(e){return new bge(this,e)}};f();var k7i="github",jx=class{static{a(this,"RemoteAgentRegistry")}},f9e=class extends jx{constructor(r){super();this.ctx=r;this._agents=void 0;this._lastFetchTime=0}static{a(this,"CapiRemoteAgentRegistry")}async agents(){return this.shouldRefreshAgents()&&(this._agents=await this.fetchAgents()),this._agents!=null?this._agents.slice():[]}shouldRefreshAgents(){return!this._agents||!this._lastFetchTime?!0:this.isLastFetchOlderOneHour()}isLastFetchOlderOneHour(){return Date.now()-this._lastFetchTime>36e5}async fetchAgents(){let r=await $j(this.ctx,"/agents");return r.ok?(this._lastFetchTime=Date.now(),this.parseAgents(await r.text())):(Er.error(this.ctx,"Failed to fetch agents from CAPI",{status:r.status,statusText:r.statusText}),[])}parseAgents(r){let n;try{n=JSON.parse(r).agents,Array.isArray(n)||Er.error(this.ctx,"Expected 'agents' to be an array")}catch(o){return r.includes("access denied")||Er.warn(this.ctx,"Invalid remote agent response:",r,o),[]}return n.filter(o=>o.slug!==k7i).map(o=>new Tge(o.id,o.slug,o.name,o.description,o.avatar_url))}};f();f();var A7r=pe(require("fs")),N_=pe(require("path"));var iSt=[".test",".spec","_test","Test","_spec","_test","Tests",".Tests","Spec"],oSt="test_",Sge={js:{suffix:[".test",".spec"],location:"sameFolder"},ts:{suffix:[".test",".spec"],location:"sameFolder"},go:{suffix:["_test"],location:"sameFolder"},java:{suffix:["Test"],location:"testFolder"},php:{suffix:["Test"],location:"testFolder"},dart:{suffix:["_test"],location:"testFolder"},cs:{suffix:["Test"],location:"testFolder"},rb:{suffix:["_test","_spec"],location:"testFolder"},py:{prefix:"test_",location:"testFolder"},ps1:{suffix:[".Tests"],location:"testFolder"},kt:{suffix:["Test"],location:"testFolder"}},xge=class{constructor(e,r,n=void 0){this.ctx=e;this.fileExists=r;this.baseUri=n}static{a(this,"TestFileFinder")}async findTestFileForSourceFile(e){let r=pi(e),n=N_.extname(r).replace(".",""),o=Sge[n]??{location:"sameFolder",prefix:oSt,suffix:iSt},s=[];if(o.prefix&&s.push(o.prefix+r),o.suffix)for(let d of o.suffix??[]){let p=r.replace(`.${n}`,d+"."+n);s.push(p)}let c=o.location??"sameFolder",l;if(c==="sameFolder"){if(l=Qi(Au(e)),l===void 0)return}else{let d=Qi(e);if(d===void 0)return;l=this.determineTestFolder(d,c)}for(let d of s){let p=N_.join(l,d),h=this.parseTestFilePath(p);if(h&&await this.fileExists(h))return h}let u=Oa(l);if(await this.fileExists(u))return fi(u,s[0])}parseTestFilePath(e){try{return Oa(e)}catch(r){Er.error(this.ctx,`Failed to parse test file path: ${e}`,r);return}}async findImplFileForTestFile(e){let r=pi(e),n=N_.extname(r).replace(".",""),o=Sge[n]??{location:"sameFolder",prefix:oSt,suffix:iSt},s=[];if(o.prefix&&s.push(r.substring(o.prefix.length)),o.suffix)for(let u of o.suffix??[]){let p=r.substring(0,r.length-u.length-1-n.length)+"."+n;s.push(p)}let c=o.location??"sameFolder",l;c==="sameFolder"?l=Au(e):l=this.determineImplFolder(e);for(let u of s){let d=fi(l,u);if(await this.fileExists(d))return d}}findExampleTestFile(e){let r=Qi(e);if(r===void 0)return;let n=N_.extname(pi(e)).replace(".",""),o,s=Sge[n]?.location??"sameFolder";s==="sameFolder"?o=N_.dirname(r):o=this.determineTestFolder(r,s);let c=this.findFiles(o,`.${n}`,Sge[n]);if(c.length>0)return Oa(c[0])}findFiles(e,r,n){let o=this._readdir(e),s=[];for(let c of o){let l=`${e}${N_.sep}${c}`;n?.prefix&&c.startsWith(n.prefix)&&s.push(l),n?.suffix&&n?.suffix.some(u=>c.endsWith(u+r))&&s.push(l)}return s}_readdir(e){return A7r.readdirSync(e,{withFileTypes:!0}).filter(r=>r.isFile()).map(r=>r.name)}determineTestFolder(e,r){let n=(this.baseUri&&Qi(this.baseUri))??"",o=N_.extname(e).replace(".",""),s=this.getRelativeTestFolder(e,n,o,r);return[n,...s].filter(c=>c).join(N_.sep)}getRelativeTestFolder(e,r,n,o){let s=N_.dirname(e).replace(r,"");switch(n){case"php":case"dart":case"py":return["tests"];case"ps1":return["Tests"];case"rb":return["test",s];case"cs":return[s.replace("src","src/tests")];case"java":case"scala":case"kt":return[s.replace(/src[\\/]main/,"src/test")];default:return o==="testFolder"?[s.replace("src","test")]:[s]}}determineImplFolder(e){let r=N_.extname(pi(e)).replace(".",""),n=Au(e);switch(r){case"php":case"dart":case"py":return n.replace("tests","src");case"ps1":return n.replace("Tests","src");case"rb":return n.replace("/test","");case"cs":return n.replace("src/tests","src");case"java":case"scala":case"kt":return n.replace("src/test","src/main");default:return n.replace("test/","src/")}}};function Ige(t){let e=pi(t),r=N_.extname(e),n=Sge[r.replace(".","")];return n?!(n.suffix&&!n.suffix.some(s=>e.endsWith(s+r))||n.prefix&&!e.startsWith(n.prefix)):!!(iSt.some(s=>e.endsWith(s+r))||e.startsWith(oSt))}a(Ige,"isTestFile");f();var E7r=["indexed","indexing","not_indexed"],R6=class{constructor(){this._cache=new $r(100)}static{a(this,"BlackbirdIndexingStatus")}async queryIndexingStatus(e,r,n){let o=e.ctx;if(!n)return!1;let s=`repos/${r}/copilot_internal/embeddings_index`,c=await Gl(o,n,s);return c.ok?(await c.json()).semantic_code_search_ok:!1}isValid(e){return e!==void 0&&Date.now()-e.timestamp<1800*1e3}async isRepoIndexed(e,r,n,o=!1){let s=uN(r);if(!s)return!1;let c=this._cache.get(s);if(!o&&this.isValid(c))return c.status;let l=await this.queryIndexingStatus(e,s,n);return this._cache.set(s,{status:l,timestamp:Date.now()}),l}get cache(){return this._cache}};f();f();f();async function v7r(t,e,r,n){let o=yo(e.tokenizer),s=r.filter(h=>o.tokenLength(h.text)<e.maxTokens);if(s.length===0)return;let c=[],l=await t.get(Ot).getToken(),u=YOe(t,l,"embeddings"),d=l.token,p=0;for(;p<s.length&&!n.isCancellationRequested;){let h=s.slice(p,p+e.maxBatchSize),m=await N7i(t,u,d,e.modelId,h,n);c.push(...m||[]),p+=e.maxBatchSize}return c.length?c:void 0}a(v7r,"fetchEmbeddings");async function N7i(t,e,r,n,o,s){let c=lr(),l=o.map(p=>p.text),u=qE(t);AS()&&(u=await SZ(t,u));let d=await dN(t,e,r,void 0,c,{input:l,model:n,dimensions:1024},s,u);if(d.status!==200||s.isCancellationRequested){Po(t,new ON(`Failed to request dense embeddings, status: ${d.status}`),"LocalSnippetProvider.fetchEmbeddings");return}try{return(await d.json()).data.map(h=>({id:o[h.index].id,embedding:h.embedding}))}catch{return}}a(N7i,"sendEmbeddingsRequest");f();f();var p9e=class{static{a(this,"CosineSimilarityScoring")}score(e,r){let n=Math.sqrt(e.reduce((c,l)=>c+l*l,0)),o=Math.sqrt(r.reduce((c,l)=>c+l*l,0));return e.reduce((c,l,u)=>c+l*r[u],0)/(n*o)}terminateScoring(){}};var O7i="cosine",M7i=new Map([["cosine",p9e]]);function C7r(t){let e=t==="default"?O7i:t,r=M7i.get(e);if(!r)throw new Error(`Scoring constructor for type ${t} not found`);return r}a(C7r,"getScoringAlgorithm");f();var av=class{constructor(){this.workspaceScoringProviders=new $r(25)}static{a(this,"ScoringProvider")}createImplementation(e,r){let n=C7r(r);return new n}getImplementation(e,r,n="default"){let o=this.workspaceScoringProviders.get(r.uri);return o||(o=this.createImplementation(e,n),this.workspaceScoringProviders.set(r.uri,o)),o}score(e,r,n,o,s){return this.getImplementation(e,r,s).score(n,o)}terminateScoring(e,r,n){this.getImplementation(e,r,n).terminateScoring(),this.workspaceScoringProviders.delete(r.uri)}};var b7r={modelFamily:ZOe.textEmbedding3Small,scoringType:"default",dimensions:null};async function T7r(t,e,r,n,o,s,c,l=b7r){let u={...b7r,...l},d=L7i(t,e,r,n);$e.debug(t,`EmbeddingsReranker: Reranking ${d.length} snippets (includes the user query)`);let p=await t.get(Ea).getFirstMatchingEmbeddingModelConfiguration(u.modelFamily);if(p===void 0)throw new Error(`EmbeddingsReranker: Model configuration not found for ${u.modelFamily}`);let h=performance.now(),m=await v7r(t,p,d,s),g=performance.now();if(c.embeddingsTimeMs=Math.floor(g-h),m===void 0||m.length===0)return[];let _=m.findIndex(I=>I.id==="userQuery");if(_===void 0)return[];let y=m.splice(_,1)[0];if(s.isCancellationRequested)return[];let A=performance.now(),E=F7i(t,e,m,y,u.scoringType),v=performance.now();c.rerankingTimeMs=Math.floor(v-A);let b=E.slice(0,o);return $e.debug(t,`EmbeddingsReranker: Returning ${b.length} snippets`),b.map(I=>d.find(w=>w.id===I.id).id)}a(T7r,"rerankSnippets");function L7i(t,e,r,n){let o=n.map(s=>({id:s.id,text:s.chunk.toLowerCase()}));return o.push({id:"userQuery",text:r.toLowerCase()}),o}a(L7i,"formatEmbeddingsInput");function F7i(t,e,r,n,o){let s=t.get(av);return r.map(l=>({id:l.id,score:s.score(t,e,n.embedding,l.embedding,o)})).sort((l,u)=>u.score-l.score)}a(F7i,"scoreEmbeddings");f();f();f();var aSt=pe(X6e());var B7i=.75,U7i=1.2,h9e=class{constructor(e,r){this.ctx=e;this.workspaceFolder=r;this.chunksCount=0;this.sumTokenCount=0;this.status="notStarted"}static{a(this,"BM25Ranking")}get avgTokenCount(){return this.sumTokenCount/this.chunksCount}async initialize(e){this.sumTokenCount=0,this.chunksCount=0;for await(let r of e)this.sumTokenCount+=r.tokenCount,this.chunksCount++;this.status="completed"}async addChunks(e){for await(let r of e)this.sumTokenCount+=r.tokenCount,this.chunksCount++}async query(e){let r=await wge();try{return await this.doQuery(e)}finally{await r.stopWorkerPool()}}async doQuery(e){let r=e.map(l=>l.toLowerCase()),n=await this.calculateIDFValues(r),o=Math.min(10*e.length,cSt),s=Math.min(o,this.chunksCount);return await this.calculateBM25Scores(r,this.avgTokenCount,n,s)}async calculateIDFValues(e){let r=this.ctx.get(ud).getChunks(this.workspaceFolder),n=o6(r,s=>({...s,chunk:s.chunk.toLowerCase()})),o=o6(n,s=>s.chunk);return await q7i(e,o)}async calculateBM25Scores(e,r,n,o){let s=this.ctx.get(ud).getChunks(this.workspaceFolder),c=new sSt(o);for await(let l of s){let u=await j7i({...l,chunk:l.chunk.toLowerCase()},e,r,n);c.add({...u,chunk:l.chunk})}return c.toArray(.75)}deleteEmbeddings(e){this.chunksCount-=e.length,this.sumTokenCount-=e.reduce((r,n)=>r+n.tokenCount,0)}terminateRanking(){}};async function q7i(t,e){let r=new SharedArrayBuffer(t.length*Int32Array.BYTES_PER_ELEMENT),n=new Int32Array(r),o=[],s=0;for await(let u of e){s++;let d=aSt.job(({snippet:p,keywords:h})=>h.map(g=>p.includes(g)?1:0),{data:{snippet:u,keywords:t}}).then(p=>{for(let h=0;h<t.length;h++)Atomics.add(n,h,p[h])});o.push(d)}await Promise.all(o);let c=new Int32Array(r),l={};for(let u=0;u<t.length;u++)l[t[u]]=Math.log((s-c[u]+.5)/(c[u]+.5)+1);return l}a(q7i,"calculateIDFValues");async function j7i(t,e,r,n){return{score:await aSt.job(({keywords:s,document:c,docLength:l,avgTokenCount:u,idfValues:d,k1:p,b:h})=>{let m=0;for(let g of s){let _=d[g],y=(c.match(new RegExp(g,"g"))||[]).length,A=_*(y*(p+1)),E=y+p*(1-h+h*l/u);m+=A/E}return m},{data:{document:t.chunk,docLength:t.tokenCount,keywords:e,avgTokenCount:r,idfValues:n,k1:U7i,b:B7i}}),...t}}a(j7i,"calculateBM25Score");var sSt=class{constructor(e,r=-1/0){this.maxSize=e;this.minScore=r;this.store=[]}static{a(this,"SimpleHeap")}toArray(e){if(this.store.length&&typeof e=="number"){let r=this.store.at(0).score*(1-e);return this.store.filter(n=>n.score>=r)}return this.store}add(e){if(e.score<=this.minScore)return;let r=this.store.findIndex(n=>n.score<e.score);for(this.store.splice(r>=0?r:this.store.length,0,e);this.store.length>this.maxSize;)this.store.pop();this.store.length===this.maxSize&&(this.minScore=this.store.at(-1)?.score??this.minScore)}};var Q7i="bm25",G7i=new Map([["bm25",h9e]]);function S7r(t){let e=t==="default"?Q7i:t,r=G7i.get(e);if(!r)throw new Error(`Ranking constructor for type ${t} not found`);return r}a(S7r,"getRankingAlgorithm");var zh=class{constructor(){this.workspaceRankingProviders=new $r(25)}static{a(this,"RankingProvider")}createImplementation(e,r,n){let o=S7r(n);return new o(e,r)}getImplementation(e,r,n="default"){let o=this.workspaceRankingProviders.get(r.uri);return o||(o=this.createImplementation(e,r,n),this.workspaceRankingProviders.set(r.uri,o)),o}status(e,r,n){return this.getImplementation(e,r,n).status}async initialize(e,r,n,o="default"){await this.getImplementation(e,r,o).initialize(n)}async addChunks(e,r,n,o="default"){await this.getImplementation(e,r,o).addChunks(n)}async query(e,r,n,o){return this.getImplementation(e,r,o).query(n)}async terminateRanking(e,r,n){await this.getImplementation(e,r,n).terminateRanking(),this.workspaceRankingProviders.delete(r.uri)}deleteEmbeddings(e,r,n,o){return this.getImplementation(e,r,o).deleteEmbeddings(n)}};f();async function m9e(t,e){let r=t.ctx,n=await zi.getModelConfiguration(r,"synonyms",void 0,{tool_calls:!0}),o={promptType:"synonyms",modelConfiguration:n},s=await r.get(Wh).toPrompt(t,o);if(!s.toolConfig)return;let c={modelConfiguration:n,uiKind:"conversationPanel",messages:s.messages,tools:s.toolConfig?.tools,tool_choice:s.toolConfig?.tool_choice,llmInteraction:t.toLlmInteraction()},l=new Rs(r),u=await Ua(r,t),d=await l.fetchResponse(c,e,u.extendedBy({messageSource:"chat.synonyms"}));if(d.type==="success"&&d.toolCalls&&d.toolCalls.length>0){let p=d.toolCalls[0],h=s.toolConfig?.extractArguments(p).keywords;return!h||!Array.isArray(h)?void 0:($e.debug(r,`UserQueryParser: Parsed ${h.length} keywords from the original user query: ${h.join(", ")}`),h.length?h:void 0)}else{let p="reason"in d?d.reason:"";Po(r,new ON(`Failed to request user query synonyms, result type: ${d.type}, reason: ${p}`),"LocalSnippetProvider.parseUserQuery")}}a(m9e,"parseUserQuery");var ON=class extends Error{static{a(this,"LocalSnippetProviderError")}constructor(e){super(String(e),{cause:e}),this.name="LocalSnippetProviderError"}},g9e=class{constructor(){this.providerType="local"}static{a(this,"LocalSnippetProvider")}snippetProviderStatus(e,r){if(!e.turn.workspaceFolder)return Promise.resolve("not_indexed");r===void 0&&(r=!0);let n=e.ctx,o=n.get(ud),s=o.status(e.turn.workspaceFolder),c=n.get(zh),l=c.status(n,e.turn.workspaceFolder);if(s==="completed"&&l==="completed")return Promise.resolve("indexed");if(s==="started"||l==="started")return Promise.resolve("indexing");if(r){let u=e.turn.workspaceFolder;if(s==="notStarted")return Promise.race([o.chunk(n,u).then(d=>{if(o.status(u)==="completed")return c.initialize(n,u,d)}).then(()=>this.snippetProviderStatus(e,!1)),new Promise(d=>setTimeout(()=>d("not_indexed"),1e3))]);if(l==="notStarted"){let d=o.getChunks(u);return Promise.race([c.initialize(n,u,d).then(()=>this.snippetProviderStatus(e,!1)),new Promise(p=>setTimeout(()=>p("not_indexed"),1e3))])}}return Promise.resolve("not_indexed")}async collectLocalSnippets(e,r){let n=e.turn.workspaceFolder;if(!n)return[];let o=e.ctx,c=await o.get(ud).chunkCount(n);if(c===0)return[];r.chunkCount=c;let l,u=performance.now();try{l=await m9e(e,e.cancelationToken)}catch(_){let y=new ON(_);Po(o,y,"LocalSnippetProvider.parseUserQuery")}let d=performance.now();if(r.synonymTimeMs=Math.floor(d-u),l===void 0)return[];let p=o.get(zh),h=[],m=performance.now();try{let _=await p.query(o,n,l);r.localSnippetCount=_.length,h=_}catch(_){let y=new ON(_);Po(o,y,"LocalSnippetProvider.rankingQuery")}let g=performance.now();return r.rankingTimeMs=Math.floor(g-m),h}async rerankLocalSnippets(e,r,n){let o=e.turn.workspaceFolder;if(!o)return[];let s=e.ctx,c=sn(e.turn.request.message),l=[];try{l=await T7r(s,o,c,r,5,e.cancelationToken,n)}catch(p){let h=new ON(p);Po(s,h,"LocalSnippetProvider.rerankSnippets")}let u=[],d=s.get(bn);for(let p of l){let h=p.split("#")[0],m=await d.getOrReadTextDocument({uri:h}),g=r.find(_=>_.id===p);if(m.status==="valid"){let _=m.document.positionAt(g.range.start),y=m.document.positionAt(g.range.end),A=rc.range(_,y);u.push({uri:m.document.uri,range:A,snippet:g.chunk})}}return u}async provideSnippets(e){let r=this.collectInfoMessage(e);r&&await e.info(r);let n={...CLr},o=await this.collectLocalSnippets(e,n);if(o.length===0)return{snippets:[],measurements:n};let s=e.ctx;return $e.debug(s,`LocalSnippetProvider: First pass: Found ${o.length} snippets.`),{snippets:await this.rerankLocalSnippets(e,o,n),measurements:n}}collectInfoMessage(e){let r=e.turn.workspaceFolder;if(!r)return;let s=e.ctx.get(ud).checkLimits(r);if(s.fileCountExceeded||s.chunkCountExceeded)return Mo`
|
|
2397
|
+
`)}a(HTt,"applyEditsToDocument");var tte=class{constructor(e){this.ctx=e;this.earlyReturnResponse="Oops, an error has occurred. Please try again";this.uiKind="conversationPanel";this.computeSuggestions=!0}static{a(this,"PanelTurnProcessorStrategy")}processResponse(){return[]}async buildConversationPrompt(e,r,n,o){let s="user",c=await zi.getModelConfiguration(e.ctx,s),l={promptType:s,modelConfiguration:c,languageId:r,userSelectedModelName:o};return await this.ctx.get(Wh).toPrompt(e,l)}extractEditsFromResponse(e,r){return[]}},W6e=class{constructor(e){this.ctx=e;this.earlyReturnResponse="Please open a file and select code for the inline chat to be available";this.uiKind="conversationInline";this.computeSuggestions=!1}static{a(this,"InlineTurnProcessorStrategy")}async buildConversationPrompt(e,r,n){let o=await this.getCurrentEditorSkill(e);if(!o)return;let s=await this.getDocumentIfValid(o.uri);if(!s)return;let c=n?.producesCodeEdits===!1?"user":"inline",l=await e.ctx.get(Ea).getBestChatModelConfig(lA(c)),u={promptType:c,modelConfiguration:l,languageId:r};return u.promptType==="inline"&&(this.currentDocument=s),await this.ctx.get(Wh).toPrompt(e,u)}async processResponse(e){let r=[],n=sn(e.response?.message??"");if(n&&e.status==="success"&&this.currentDocument){let o=await this.processInlineResponse(n,this.currentDocument);o&&r.push(o)}return r}async getCurrentEditorSkill(e){let r=await e.skillResolver.resolve(pg);if(r)return r}async getDocumentIfValid(e){let r=await this.ctx.get(bn).getOrReadTextDocument({uri:e});if(r.status==="valid")return r.document}async processInlineResponse(e,r){let o=GTt(e,r).filter(c=>QTt.includes(c.mode)),s=HTt(o,r);if(s)return await this.ctx.get(Uf).documentDiff({original:r.getText(),updated:s}),{uri:r.uri,text:s}}extractEditsFromResponse(e,r){return GTt(e,r)}};var z6e=class{constructor(){this.slug="github-copilot-coding-agent";this.name="GitHub Copilot Coding Agent";this.description="Create coding tasks that are executed by GitHub Copilot Coding Agent";this.avatarUrl=void 0}static{a(this,"BackendCodingAgent")}additionalSkills(e){return[]}turnProcessor(e){let r=new tte(e.ctx);return new V6e(e,r)}};f();f();f();f();function X9r(t){return t?t.filter(e=>e.type==="github.web-search").map(e=>e):[]}a(X9r,"filterUnsupportedReferences");function Z9r(t){return t?t.filter(e=>e.type==="github.web-search"):[]}a(Z9r,"convertToCopilotReferences");var e7r=S.Object({type:S.Literal("github.web-search"),id:S.String(),data:S.Object({query:S.String(),type:S.String(),results:S.Optional(S.Array(S.Object({title:S.String(),excerpt:S.String(),url:S.String()})))}),metadata:S.Optional(S.Object({display_name:S.Optional(S.String()),display_icon:S.Optional(S.String())}))});var I6=class{constructor(e){this.deltaApplier=e;this.appliedLength=0;this.appliedText="";this.appliedAnnotations=[]}static{a(this,"ConversationFinishCallback")}isFinishedAfter(e,r){let n=e.substring(this.appliedLength,e.length),s=this.mapAnnotations(r.annotations).filter(c=>!this.appliedAnnotations.includes(c.id));this.append(n,s,X9r(r.copilotReferences),r.copilotErrors??[],r.copilotConfirmation,r.thinking)}append(e,r,n,o,s,c){this.deltaApplier(e,r,n,o,s,c),this.appliedLength+=e.length,this.appliedText+=e,this.appliedAnnotations.push(...r.map(l=>l.id))}mapAnnotations(e){if(!e)return[];let r=[],n=e.for("CodeVulnerability").map(s=>({...s,type:"code_vulnerability"})),o=e.for("IPCodeCitations").map(s=>({...s,type:"ip_code_citations"}));return r.push(...n),r.push(...o),r}};f();f();var Y2=class{constructor(e){this.ctx=e;this.githubRepositoryInfoCache=new Map}static{a(this,"GitHubRepositoryApi")}async getRepositoryInfo(e){let r=`${e.hostname}/${e.owner}/${e.repo}`,n=this.githubRepositoryInfoCache.get(r);if(n)return n;let o=await this._doGetRepositoryInfo(e);if(o?.ok){let s=await o.json();return this.githubRepositoryInfoCache.set(r,s),s}}async _doGetRepositoryInfo({owner:e,repo:r,hostname:n}){let o=await this.ctx.get(en).getSession(),s;if(o&&new URL(o.serverUrl).hostname===n)s=o;else{let u=await this.ctx.get(a4).getAuthRecord({authAuthority:n});u&&(s={accessToken:u.oauth_token,apiUrl:`https://api.${n}/`})}if(!s&&!(n==="github.com"||n.endsWith(".ghe.com")))return;let c={Accept:"application/vnd.github+json","X-GitHub-Api-Version":"2022-11-28"};s&&(c.Authorization=`Bearer ${s.accessToken}`);let l=new URL(`repos/${e}/${r}`,s?.apiUrl||`https://api.${n}`).href;return this.ctx.get(ur).fetch(l,{method:"GET",headers:c})}};f();f();var t7r=S.Object({name:S.String(),url:S.String()}),r7r=S.Object({path:S.String(),head:S.Optional(S.Object({name:S.String(),upstream:S.Optional(t7r)})),remotes:S.Optional(S.Array(t7r))}),VTt=class{constructor(e){this.turnContext=e}static{a(this,"GitMetadataSkillProcessor")}value(){return .8}processSkill(e){this.turnContext.collectLabel(K2,"git repository information");let r=[];return r.push([new tr(["Metadata about the current git repository:"]),1]),e.head&&e.head.name?(r.push([new tr([`- Current branch name: ${e.head.name}`]),1]),e.head.upstream&&r.push([new tr([`- Upstream name and url: ${e.head.upstream.name} - ${e.head.upstream.url}`]),1])):r.push([new tr(["- Detached HEAD: yes"]),1]),e.remotes&&e.remotes.length>0&&r.push([new tr([`- Remotes: ${e.remotes.map(n=>n.name).join(", ")}`]),1]),new tr(r)}},K2="git-metadata",Y6e=class extends Bp{static{a(this,"GitMetadataSkill")}constructor(e){super(K2,"Metadata about the current git repository, useful for questions about branch management and git related commands","Reading git information",()=>e,r=>new VTt(r))}};async function n7r(t){let e=await t.skillResolver.resolve(pg);if(e){let c=e.uri,l=y8(t.ctx,c);if(lkr(l))return{repoInfo:l,skillUsed:pg}}let r=await t.skillResolver.resolve(K2);if(!r||!r.remotes||r.remotes.length===0){$e.debug(t.ctx,"Git metadata skill is not available or no remotes available.");return}let o=r.remotes.find(c=>c.name==="origin")??r.remotes[0],s=FAt(o.url);if(s)return{repoInfo:{baseFolder:{uri:r.path},url:o.url,...s},skillUsed:K2}}a(n7r,"extractRepoInfo");async function i7r(t){let e=[];return await r7i(t,e),await n7i(t,e),await i7i(t,e),e}a(i7r,"skillsToReference");async function r7i(t,e){let r=await o7i(t);r&&e.push(r)}a(r7i,"addRepositoryReference");async function n7i(t,e){let r=await s7i(t);r&&e.push(r)}a(n7i,"addSelectionReference");async function i7i(t,e){let r=[],n=await c7i(t);n&&r.push(n),r.push(...await l7i(t)),r.length>0&&e.push(...r)}a(i7i,"addFileReferences");async function o7i(t){let e=await n7r(t);if(e){let r=t.ctx.get(Y2),n=e.repoInfo.owner,o=e.repoInfo.repo,s=await r.getRepositoryInfo(e.repoInfo);if(s)return{type:"github.repository",id:`${n}/${o}`,data:{type:"repository",name:o,ownerLogin:n,id:s.id}}}}a(o7i,"gitMetadataToReference");async function s7i(t){let e=await t.skillResolver.resolve(pg);if(e&&e.selection){let n=await t.ctx.get(bn).getOrReadTextDocument(e),o=Il(n);if(await t.collectFile(t.turn.agent.agentSlug,e.uri,o,e.selection),n.status==="valid")return a7i(e,n.document)}}a(s7i,"currentEditorToSelectionReference");function a7i(t,e){if(t.selection&&!Qee(t.selection)){let r=e.getText(t.selection);return{type:"client.selection",id:t.uri,data:{start:{line:t.selection.start.line,col:t.selection.start.character},end:{line:t.selection.end.line,col:t.selection.end.character},content:r}}}}a(a7i,"extractSelection");async function c7i(t){let e=await t.skillResolver.resolve(pg);if(e){let n=await t.ctx.get(bn).getOrReadTextDocument(e),o=Il(n);if(await t.collectFile(t.turn.agent.agentSlug,e.uri,o),n.status==="valid")return{type:"client.file",id:n.document.uri,data:{content:n.document.getText(),language:n.document.detectedLanguageId}}}}a(c7i,"currentEditorToFileReference");async function l7i(t){let e=[],r=t.turn.request.references;if(r&&r.length>0){let n=t.ctx.get(bn);for(let o of r)if(o.type==="file"){let s=await n.getOrReadTextDocument(o),c=Il(s);if(await t.collectFile(t.turn.agent.agentSlug,o.uri,c,o.selection),s.status==="valid"){let l=s.document.getText();e.push({type:"client.file",id:o.uri,data:{content:l,language:s.document.detectedLanguageId}})}}}return e}a(l7i,"fileReferenceToPlatformFileReference");f();f();var jp="https://aka.ms/github-copilot-rate-limit-error";function u7i(t){if(t<90)return`${t} ${t===1?"second":"seconds"}`;let e=Math.floor(t/60);if(t<=5400)return`${e} ${e===1?"minute":"minutes"}`;let r=Math.floor(e/60),n=e%60,o=`${r} ${r===1?"hour":"hours"}`;return n>0&&(o+=` ${n} ${n===1?"minute":"minutes"}`),o}a(u7i,"secondsToHumanReadableTime");var w6=class t{static{a(this,"CapiErrorTranslator")}static formatRequestId(e,r){let n=[];return e&&n.push(`Request ID: ${e}`),r&&n.push(`GitHub Request ID: ${r}`),n.length>0?` ${n.join(" | ")}`:""}static appendRequestId(e,r,n){return`${e}${t.formatRequestId(r,n)}`}static translateErrorMessage(e,r,n,o,s,c){let l;switch(e){case 466:l="Oops, your plugin is out of date. Please update it.";break;case 401:l="Oops, you are not authorized. Please sign in. If you are using a custom model, please check if the API key is still valid.";break;case 402:l=r||"Oops, you need to upgrade your plan.";break;case 413:l="Oops, your request is too large. Please try again with a smaller input.";break;case 429:l=t.getRateLimitMessage(o,c);break;case 503:l=r||"Oops, the service is currently unavailable. Please try again later.";break;default:if(r&&r.trim().length>0){let u=360,d=t.formatRequestId(n,s),p="Sorry, an error occurred while generating a response. Details: ",h=u-p.length-d.length;if(r.length<=h)return`${p}${r}${d}`;{let m=r.substring(0,h);return`${p}${m}... Read more from logs.${d}`}}l="Sorry, an error occurred while generating a response.";break}return t.appendRequestId(l,n,s)}static getRateLimitMessage(e,r){let n=e===void 0?"a moment":u7i(e),o=r?.capiErrorCode,s=r?.isAuto;if(o?.startsWith("agent_mode_limit_exceeded"))return`Sorry, you have exceeded the agent mode rate limit. Please switch to ask mode and try again in ${n}. [Learn More](${jp})`;if(o?.startsWith("model_overloaded")||o?.startsWith("upstream_provider_rate_limit"))return s?`Sorry, the upstream model provider is currently experiencing high demand. Please try again in ${n}. [Learn More](${jp})`:`Sorry, the upstream model provider is currently experiencing high demand. Please try again in ${n} or consider switching to Auto. [Learn More](${jp})`;if(o?.startsWith("user_global_rate_limited"))return r?.copilotPlan==="free"||r?.copilotPlan==="individual"||r?.copilotPlan==="individual_pro"?`You've hit your session rate limit. Please upgrade your plan or wait ${n} for your limit to reset. [Learn More](${jp})`:`You've hit your session rate limit. Please wait ${n} for your limit to reset. [Learn More](${jp})`;if(o?.startsWith("user_weekly_rate_limited")){if(e!==void 0){let l=new Date(Date.now()+e*1e3).toLocaleString("en-US",{year:"numeric",month:"long",day:"numeric",hour:"numeric",minute:"2-digit"});return r?.copilotPlan==="free"||r?.copilotPlan==="individual"||r?.copilotPlan==="individual_pro"?s?`You've reached your weekly rate limit. Please upgrade your plan or wait for your limit to reset on ${l}. [Learn More](${jp})`:`You've reached your weekly rate limit. Please upgrade your plan or wait for your limit to reset on ${l} or consider switching to Auto. [Learn More](${jp})`:s?`You've reached your weekly rate limit. Please wait for your limit to reset on ${l}. [Learn More](${jp})`:`You've reached your weekly rate limit. Please wait for your limit to reset on ${l} or consider switching to Auto. [Learn More](${jp})`}return s?`You've reached your weekly rate limit. Please wait ${n} for your limit to reset. [Learn More](${jp})`:`You've reached your weekly rate limit. Please wait ${n} for your limit to reset or consider switching to Auto. [Learn More](${jp})`}return o?.startsWith("user_model_rate_limited")?s?`You've hit the rate limit for this model. Please try again in ${n}. [Learn More](${jp})`:`You've hit the rate limit for this model. Please try switching to Auto or try again in ${n}. [Learn More](${jp})`:o?.startsWith("integration_rate_limited")?`Sorry, GitHub Copilot Chat is currently experiencing high demand. Please try again in ${n}. [Learn More](${jp})`:o?s?`Sorry, you have been rate-limited. Please wait ${n} before trying again. [Learn More](${jp})`:`Sorry, you have been rate-limited. Please wait ${n} before trying again or consider switching to Auto. [Learn More](${jp})`:s?`Sorry, your request was rate-limited. Please wait ${n} before trying again. [Learn More](${jp})`:`Sorry, your request was rate-limited. Please wait ${n} before trying again or consider switching to Auto. [Learn More](${jp})`}};f();f();f();var f7r=pe(X6e()),KTt=pe(require("path"));var p7r=500,E7i=Math.floor(.25*p7r),Z6e=class{static{a(this,"FixedSizeChunking")}async chunk(e,r){let n=[],o=KTt.default.extname(__filename)===".ts"?KTt.default.resolve(__dirname,"../../../../../../dist/main.js"):__filename;return n=await f7r.job(async({text:s,uri:c,tokenizerName:l,directory:u,chunkSize:d,overlap:p})=>{let m=await require(u).getTokenizerAsync(l),g=m.tokenize(s),_=g.length,y=[],A=0;for(;A<_;){let E=A+d>=_,v=E?_:A+d,b=g.slice(A,v),x=m.detokenize(b),I=s.indexOf(x);y.push({id:`${c.toString()}#${A}`,chunk:x,tokenCount:b.length,range:{start:I,end:I+x.length}}),A=E?v:v-p}return y},{data:{text:e.getText(),uri:e.uri.toString(),tokenizerName:r.tokenizer,directory:o,chunkSize:p7r,overlap:E7i}}),n}};var v7i="fixedSize",C7i=new Map([["fixedSize",Z6e]]);function h7r(t){let e=t==="default"?v7i:t,r=C7i.get(e);if(!r)throw new Error(`Chunking constructor for type ${t} not found`);return r}a(h7r,"getChunkingAlgorithm");f();f();var e9e=pe(Q5()),J2=pe(require("fs")),m7r=require("os"),Ob=pe(require("path")),rte=require("process");var JTt=5e4,b7i=new Pe("workspaceChunks"),t9e=class t{constructor(e,r){this.ctx=e;this.pathHashLength=8;this.chunksCountCache=new Map;let n=pi(r.uri),o=(0,e9e.SHA256)(r.uri).toString().substring(0,this.pathHashLength);this.cacheRootPath=Ob.join(XTt(),"project-context",`${n}.${o}`)}static{a(this,"WorkspaceChunks")}static{this.CACHE_VERSION="1.0.0"}getChunksCacheFile(e){let r=(0,e9e.SHA256)(e).toString().substring(0,this.pathHashLength),n=Ob.basename(e);return Ob.join(this.cacheRootPath,`${n}.${r}.json`)}async getChunksCacheFromCacheFile(e){let r=await J2.promises.readFile(e,{encoding:"utf8"}).catch(()=>{});if(r)try{return JSON.parse(r)}catch{}}async getChunksCache(e){let r=this.getChunksCacheFile(e);return await this.getChunksCacheFromCacheFile(r)}async setChunksCache(e,r){let n=this.getChunksCacheFile(e);try{await J2.promises.mkdir(Ob.dirname(n),{recursive:!0}),await J2.promises.writeFile(n,JSON.stringify(r),{encoding:"utf8"})}catch(o){b7i.debug(this.ctx,"Failed to set chunks cache:",o)}}async removeChunksCache(e){let r=this.getChunksCacheFile(e);await J2.promises.rm(r).catch(()=>{})}async enumerateChunksCacheFileNames(){return await J2.promises.readdir(this.cacheRootPath).catch(()=>[])}async getFilesCount(){return(await this.enumerateChunksCacheFileNames()).length}async getChunksCount(){let e=0;for(let r of await this.enumerateChunksCacheFileNames()){let n=Ob.join(this.cacheRootPath,r);if(!this.chunksCountCache.has(n)){let o=await this.getChunksCacheFromCacheFile(n);this.chunksCountCache.set(n,o?.documentChunks?.length??0)}e+=this.chunksCountCache.get(n)||0}return e}async*getChunksForFile({uri:e}){let r=await this.getChunksCache(e);r!==void 0&&(yield*r.documentChunks)}async*getChunksFromCacheFile(e){let r=await this.getChunksCacheFromCacheFile(e);yield*r?r.documentChunks:[]}async*getChunks(e){if(e!==void 0)yield*this.getChunksForFile(e);else{let r=await this.enumerateChunksCacheFileNames();for(let n of r)yield*this.getChunksFromCacheFile(Ob.join(this.cacheRootPath,n))}}async getFileHash(e){let r=Qi(e),n="";return r&&(n=await J2.promises.readFile(r,{encoding:"utf8"}).catch(()=>"")),(0,e9e.SHA256)(n).toString()}async addChunks({uri:e},r){let n=Array.isArray(r)?()=>Promise.resolve(r):r,o=Qi(e);if(!o)return;async function s(h){try{return(await J2.promises.stat(h)).mtimeMs}catch{return}}a(s,"getLastModified");let c=await s(o),l=await this.getChunksCache(e);if(l!==void 0&&l.version===t.CACHE_VERSION&&c!==void 0&&l.lastModified===c){this.chunksCountCache.set(o,l.documentChunks.length);return}let u=await this.getFileHash(e),d=await n();this.chunksCountCache.set(o,d.length);let p={version:t.CACHE_VERSION,filePath:e,hash:u,lastModified:c,documentChunks:d};await this.setChunksCache(e,p)}async deleteChunksForSource(e){let r=Oa(e),n=await this.getChunksCache(r);return n===void 0?[]:(await this.removeChunksCache(r),n.documentChunks)}async deleteChunks({uri:e}){let r=Qi(e);if(!r)return[];let n;try{n=await J2.promises.readdir(r)}catch{return await this.deleteChunksForSource(r)}let o=[];for(let s of n){let c=Oa(Ob.join(r,s));o.push(...await this.deleteChunks({uri:c}))}return o}async clear(){await J2.promises.rm(this.cacheRootPath,{recursive:!0}).catch(()=>{})}};function XTt(){return rte.env.XDG_CACHE_HOME&&Ob.isAbsolute(rte.env.XDG_CACHE_HOME)?rte.env.XDG_CACHE_HOME+"/github-copilot":(0,m7r.platform)()==="win32"?rte.env.USERPROFILE+"\\AppData\\Local\\Temp\\github-copilot":rte.env.HOME+"/.cache/github-copilot"}a(XTt,"getXdgCachePath");f();f();var r9e=class{constructor(e,r){this.ctx=e;this.workspaceFolder=r;this.emitter=new Ei;this.onFileChange=this.emitter.event;this.status="created",this.startWatching()}static{a(this,"WorkspaceWatcher")}emitFilesCreated(e){this.emitter.fire({type:"create",documents:e,workspaceFolder:this.workspaceFolder})}emitFilesUpdated(e){this.emitter.fire({type:"update",documents:e,workspaceFolder:this.workspaceFolder})}emitFilesDeleted(e){this.emitter.fire({type:"delete",documents:e,workspaceFolder:this.workspaceFolder})}};var hg=class{constructor(e){this.ctx=e;this.watchers=new $r(25)}static{a(this,"WorkspaceWatcherProvider")}getWatcher(e){let r=this.watchers.get(e.uri);if(r)return r;let n=this.getParentFolder(e.uri);return n?this.watchers.get(n):void 0}getParentFolder(e){return[...this.watchers.keys()].find(n=>{let o=n.replace(/[#?].*/,"").replace(/\/?$/,"/");return e!==n&&e.startsWith(o)})}hasWatcher(e){return this.getParentFolder(e.uri)||this.getWatcher(e)!==void 0}startWatching(e){if($e.debug(this.ctx,`WorkspaceWatcherProvider - Start watching workspace ${e.uri}`),this.hasWatcher(e)){this.getWatcher(e)?.startWatching();return}let r=this.createWatcher(e);this.watchers.set(e.uri,r)}stopWatching(e){this.getWatcher(e)?.stopWatching()}terminateSubfolderWatchers(e){let r=[];for(let s of this.watchers.values())r.push(s.workspaceFolder);let n=e.uri.replace(/[#?].*/,"").replace(/\/?$/,"/"),o=r.filter(s=>s.uri!==e.uri&&s.uri.startsWith(n));for(let s of o)this.terminateWatching(s);return o}terminateWatching(e){if(this.getWatcher(e)?.status!=="stopped")return this.stopWatching(e),this.watchers.delete(e.uri);this.watchers.delete(e.uri)}onFileChange(e,r,n,o){return this.getWatcher(e)?.onFileChange(hp(this.ctx,r,"WorkspaceWatcherProvider.onFileChange"),n,o)}async getWatchedFiles(e){return await this.getWatcher(e)?.getWatchedFiles()??[]}getStatus(e){return this.getWatcher(e)?.status}};var ZTt=1e4;var n9e=class{constructor(e,r,n){this.workspaceFolder=r;this.implementation=n;this._chunkLimiter=new tSt;this.status="notStarted",this.workspaceChunks=new t9e(e,r),this.cancellationToken=new eSt,this._chunkingTimeMs=0,this._fileCountExceeded=!1,this._chunkCountExceeded=!1,this._totalFileCount=0,this._filesUpdated=new Set}static{a(this,"ChunkingHandler")}async chunk(e,r){return r?await this.chunkFiles(e,r):await this.chunkWorkspace(e)}async chunkWorkspace(e){let r=performance.now();if(this.status="started",this.cancellationToken.isCancelled())return this.status="cancelled",this.updateChunkingTime(r,performance.now()),this.workspaceChunks.getChunks();await this.updateModelConfig(e);let n=await e.get(hg).getWatchedFiles(this.workspaceFolder);this._totalFileCount=n.length,n.length>ZTt&&(this._fileCountExceeded=!0,n=n.slice(0,ZTt));let o=n.map(async s=>{this.cancellationToken.isCancelled()||await this._chunkLimiter.queue(()=>this._chunk(e,s))});try{await Promise.all(o)}catch(s){Po(e,s,"ChunkingProvider.chunk"),this.terminateChunking()}return this.status=this.cancellationToken.isCancelled()?"cancelled":"completed",this.updateChunkingTime(r,performance.now()),await this.workspaceChunks.getChunksCount()>JTt&&(this._chunkCountExceeded=!0),this.workspaceChunks.getChunks()}async chunkFiles(e,r){await this.updateModelConfig(e);let n=r.map(async o=>{this.cancellationToken.isCancelled()||(this._filesUpdated.add(o.uri),await this._chunkLimiter.queue(()=>this._chunk(e,o)))});try{await Promise.all(n)}catch(o){Po(e,o,"ChunkingProvider.chunkFiles"),this.terminateChunking()}return await this.workspaceChunks.getChunksCount()>JTt&&(this._chunkCountExceeded=!0),await this.workspaceChunks.getFilesCount()>ZTt&&(this._fileCountExceeded=!0),cLr(...r.map(o=>this.workspaceChunks.getChunks(o)))}async _chunk(e,r){this.cancellationToken.isCancelled()||await this.workspaceChunks.addChunks(r,()=>this.implementation.chunk(r,this.modelConfig))}async updateModelConfig(e){this.modelConfig||(this.modelConfig=await zi.getModelConfiguration(e,"user"))}terminateChunking(){this.cancellationToken.cancel()}async clearChunks(){await this.workspaceChunks.clear()}updateChunkingTime(e,r){this._chunkingTimeMs=r-e}get chunkingTimeMs(){return Math.floor(this._chunkingTimeMs)}get fileCountExceeded(){return this._fileCountExceeded}get totalFileCount(){return this._totalFileCount}get chunkCountExceeded(){return this._chunkCountExceeded}get filesUpdatedCount(){return this._filesUpdated.size}async getFilesCount(){return this.workspaceChunks.getFilesCount()}getChunks(){return this.workspaceChunks.getChunks()}async getChunksCount(){return this.workspaceChunks.getChunksCount()}deleteSubfolderChunks(e){return this.workspaceChunks.deleteChunks({uri:e})}deleteFileChunks(e){return this._filesUpdated.add(e),this.workspaceChunks.deleteChunks({uri:e})}},eSt=class{constructor(){this.cancelled=!1}static{a(this,"ChunkingCancellationToken")}cancel(){this.cancelled=!0}isCancelled(){return this.cancelled}},tSt=class{constructor(e=20){this.maxCount=e;this.tasks=[];this.runningTasks=0}static{a(this,"Limiter")}async queue(e){return new Promise((r,n)=>{this.tasks.push({factory:e,resolve:r,reject:n}),this.consume()})}consume(){for(;this.tasks.length>0&&this.runningTasks<=this.maxCount;){let{factory:e,resolve:r,reject:n}=this.tasks.shift();this.runningTasks++;let o=e();o.then(r,n),o.then(()=>this.consumed(),()=>this.consumed())}}consumed(){this.runningTasks--,this.consume()}};var ud=class{constructor(e){this.ctx=e;this.workspaceChunkingProviders=new Map}static{a(this,"ChunkingProvider")}get workspaceCount(){return this.workspaceChunkingProviders.size}createImplementation(e,r){let n=h7r(r),o=new n;return new n9e(this.ctx,e,o)}getImplementation(e,r="default"){let n=this.getParentFolder(e);if(n)return this.workspaceChunkingProviders.get(n.uri);let o=this.workspaceChunkingProviders.get(e.uri);return o||(o=this.createImplementation(e,r),this.workspaceChunkingProviders.set(e.uri,o)),o}getParentFolder(e){let r=[];for(let n of this.workspaceChunkingProviders.values())r.push(n.workspaceFolder);return r.find(n=>{let o=n.uri.replace(/[#?].*/,"").replace(/\/?$/,"/");return e.uri!==n.uri&&e.uri.startsWith(o)})}status(e){return this.getImplementation(e).status}checkLimits(e){let r=this.getImplementation(e);return{fileCountExceeded:r.fileCountExceeded,chunkCountExceeded:r.chunkCountExceeded}}fileCount(e){return this.getImplementation(e).getFilesCount()}chunkCount(e){return this.getImplementation(e).getChunksCount()}chunkingTimeMs(e){return this.getImplementation(e).chunkingTimeMs}getChunks(e){return this.getImplementation(e).getChunks()}terminateChunking(e,r){let n=this.getImplementation(r);n.terminateChunking();let s=ht.createAndMarkAsIssued().extendedBy(void 0,{fileCount:n.filesUpdatedCount});it(e,"index.terminate",s),this.workspaceChunkingProviders.delete(r.uri)}async clearChunks(e,r){this.terminateChunking(e,r),await this.getImplementation(r).clearChunks()}async deleteSubfolderChunks(e,r){return await this.getImplementation(e).deleteSubfolderChunks(r.uri)}async deleteFileChunks(e,r){let n=this.getImplementation(e),o=[];Array.isArray(r)||(r=[r]);for(let s of r)o.push(...await n.deleteFileChunks(s));return o}async chunk(e,r,n,o){let s;return n&&(Array.isArray(n)?s=n:o=n),o||(o="default"),s?await this.chunkFiles(e,r,s,o):await this.chunkFolder(e,r,o)}async chunkFolder(e,r,n="default"){let o=this.getImplementation(r,n),s=await o.chunk(e),l=ht.createAndMarkAsIssued().extendedBy(void 0,{fileCount:o.totalFileCount,chunkCount:await o.getChunksCount(),timeTakenMs:o.chunkingTimeMs,workspaceCount:this.workspaceCount});return it(e,"index.chunk",l),s}async chunkFiles(e,r,n,o="default"){return await this.getImplementation(r,o).chunk(e,n)}};var T7i=new Pe("ChatFetchResultPostProcessor"),nte=class{constructor(e,r,n){this.turnContext=e;this.chatFetcher=r;this.computeSuggestions=n}static{a(this,"ChatFetchResultPostProcessor")}async postProcess(e,r,n,o,s,c,l,u){switch(yLr(this.turnContext.ctx,l,c,e.type=="offTopic",e.requestId,u,s.extendedBy({},{fileCount:this.turnContext.ctx.get(ud).workspaceCount})),await this.turnContext.ctx.get(Uf).inspectFetchResult(e),e.type){case"success":return await this.processSuccessfulFetchResult(n,e.numTokens,e.requestId,r,l,o,s,u);case"offTopic":return this.processOffTopicFetchResult(s,l,u);case"canceled":return this.turnContext.turn.status="cancelled",this.turnContext.turn.response={message:"Cancelled",type:"user"},{error:{message:sn(this.turnContext.turn.response?.message??""),type:this.turnContext.turn.response?.type}};case"failed":return this.turnContext.turn.status="error",this.turnContext.turn.response={message:e.reason,type:"server"},T7i.error(this.turnContext.ctx,"Fetch failed:",e),{error:{message:w6.translateErrorMessage(e.code,e.reason,e.requestId,e.retryAfter,e.ghRequestId,{capiErrorCode:e.capiErrorCode,isAuto:this.turnContext.turn.userRequestedModel?.toLowerCase()===sv,copilotPlan:CC(this.turnContext.ctx)?.userInfo?.copilotPlan}),code:e.code}};case"filtered":return this.turnContext.turn.status="filtered",{error:{message:"Oops, your response got filtered. Vote down if you think this shouldn't have happened.",responseIsFiltered:!0}};case"length":return this.turnContext.turn.status="error",{error:{message:"Oops, the response got too long. Try to reformulate your question.",responseIsIncomplete:!0}};case"agentAuthRequired":return this.turnContext.turn.status="error",this.turnContext.turn.response={message:"Authorization required",type:"server"},{error:{message:"Authorization required",responseIsFiltered:!1}};case"no_choices":return this.turnContext.turn.status="error",this.turnContext.turn.response={message:"No choices returned",type:"server"},{error:{message:"Oops, no choices received from the server. Please try again.",responseIsFiltered:!1,responseIsIncomplete:!0}};case"no_finish_reason":return this.turnContext.turn.status="error",n&&n.length>0?this.turnContext.turn.response={message:n,type:"model",references:this.turnContext.turn.response?.references}:this.turnContext.turn.response={message:"No finish reason",type:"server"},{error:{message:"Oops, unexpected end of stream. Please try again.",responseIsFiltered:!1,responseIsIncomplete:!0}};case"model_not_supported":{this.turnContext.turn.status="error",this.turnContext.turn.response={message:"Model not supported",type:"server"};let{modelName:d,modelProviderName:p}=zi.parseModelNotSupportedReason(e.reason);return{error:{message:"Oops, the model is not supported. Please try again.",code:400,reason:"model_not_supported",responseIsFiltered:!1,modelName:d,modelProviderName:p}}}case"model_max_prompt_tokens_exceeded":return this.turnContext.turn.status="error",this.turnContext.turn.response={message:"Model max prompt tokens exceeded",type:"server"},{error:{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":return this.turnContext.turn.status="error",{error:{message:"Unknown server side error occurred. Please try again.",responseIsFiltered:!1}}}}async processSuccessfulFetchResult(e,r,n,o,s,c,l,u){if(e&&e.length>0){c.markAsDisplayed(),l.markAsDisplayed(),this.turnContext.turn.status="success",this.turnContext.turn.response={message:e,type:"model",references:this.turnContext.turn.response?.references},ALr(this.turnContext,s,e,r,n,u,l);let d=this.computeSuggestions?await this.fetchSuggestions(o,s,c,u):void 0;if(d){let{followUp:p,suggestedTitle:h}=d;return{followup:p.message!==""?p:void 0,suggestedTitle:h!==""?h:void 0}}return{}}return this.turnContext.turn.status="error",this.turnContext.turn.response={message:"The model returned successful but did not contain any response text.",type:"meta"},{error:{message:sn(this.turnContext.turn.response?.message??""),type:this.turnContext.turn.response?.type}}}async fetchSuggestions(e,r,n,o){let c=await new b6(this.turnContext.ctx,this.chatFetcher).fetchRawSuggestions(this.turnContext,e,r,n);if(c===void 0)return;let l=this.enrichFollowup(c,r,n,o);return $e.debug(this.turnContext.ctx,"Computed followup",l),$e.debug(this.turnContext.ctx,"Computed suggested title",c.suggestedTitle),{followUp:l,suggestedTitle:c.suggestedTitle}}enrichFollowup(e,r,n,o){let s=n.extendedBy({messageSource:"chat.suggestions",suggestionId:lr(),suggestion:"Follow-up from model"},{promptTokenLen:e.promptTokenLen,numTokens:e.numTokens});return bLr(this.turnContext.ctx,r,s,o),{message:e.followUp,id:s.properties.suggestionId,type:s.properties.suggestion}}processOffTopicFetchResult(e,r,n){let o="Sorry, but I can only assist with programming related questions.";return this.turnContext.turn.response={message:o,type:"offtopic-detection"},this.turnContext.turn.status="off-topic",ELr(this.turnContext.ctx,this.turnContext.conversation,r,o,e.properties.messageId,n,e),{error:{message:o,responseIsFiltered:!0}}}};f();var i9e=S.Union([S.String(),S.Number()]),tQ=S.Union([S.String(),S.Number()]),S7i=S.Union([S.Literal("included"),S.Literal("blocked"),S.Literal("notfound"),S.Literal("empty")]),o9e=S.Object({uri:S.String(),position:S.Optional(qp)}),Cge=S.Object({type:S.Literal("file"),uri:S.String(),visibleRange:S.Optional(Gd),selection:S.Optional(Gd),status:S.Optional(S7i),range:S.Optional(Gd)}),x7i=S.Object({type:S.Literal("directory"),uri:S.String()}),I7i=S.Object({type:S.Literal("tool"),uri:S.String(),name:S.Optional(S.String()),server:S.Optional(S.String()),description:S.Optional(S.String())}),ite=S.Union([Cge,x7i,e7r,I7i]),Mb=S.Union([S.Literal("panel"),S.Literal("inline")]),w7i=S.Union([S.Object({type:S.Literal("text"),text:S.String()}),S.Object({type:S.Literal("image_url"),imageUrl:S.Object({url:S.String(),detail:S.Optional(S.Union([S.Literal("low"),S.Literal("high")]))})})]),rSt=S.Union([S.String(),S.Array(w7i)]),_7r=S.Object({request:rSt,response:S.Optional(S.String()),agentSlug:S.Optional(S.String()),turnId:S.Optional(tQ),model:S.Optional(S.String())});function s9e(t){return typeof t=="string"?t:t.map(e=>e.type==="image_url"?{type:"image_url",image_url:{url:e.imageUrl.url,detail:e.imageUrl.detail}}:{type:"text",text:e.text})}a(s9e,"convertToMessageContent");function a9e(t,e){if(t=tv(t),typeof t=="string")return t+e;let r=t.map(n=>n.type==="text").lastIndexOf(!0);if(r>=0){let n=[...t],o=n[r];return n[r]={type:"text",text:o.text+e},n}return[...t,{type:"text",text:e}]}a(a9e,"appendToMessage");var c9e=S.Union([S.Literal("Ask"),S.Literal("Agent"),S.Literal("InlineAgent")]),R7i=S.Object({type:S.String(),description:S.String()}),y7r=S.Object({name:S.String(),description:S.String(),inputSchema:S.Optional(S.Object({type:S.String(),properties:S.Record(S.String(),R7i),required:S.Array(S.String())})),confirmationMessages:S.Optional(S.Object({title:S.String(),message:S.String()}))}),$p=S.Object({uri:S.String(),name:S.String()}),P7i=S.Union([S.Literal("not-started"),S.Literal("in-progress"),S.Literal("completed")]),l9e=S.Object({id:S.Number(),title:S.String(),description:S.Optional(S.String()),status:P7i});var nSt="generate-response",u9e=class extends Error{constructor(r,n,o,s){super(r);this.authorizationUri=n;this.agentSlug=o;this.agentName=s}static{a(this,"RemoteAgentAuthorizationError")}},bge=class{constructor(e,r,n){this.agent=e;this.turnContext=r;this.chatFetcher=n;this.conversationProgress=r.ctx.get(Aa),this.chatFetcher=this.chatFetcher??new Rs(r.ctx),this.postProcessor=new nte(r,this.chatFetcher,!1),this.conversation=r.conversation,this.turn=r.turn}static{a(this,"RemoteAgentTurnProcessor")}async process(e,r,n,o){try{await this.processWithAgent(e,r,this.turnContext,o)}catch(s){$e.error(this.turnContext.ctx,`Error processing turn ${this.turn.id}`,s);let c=s instanceof Error?s.message:String(s);this.turn.status="error",this.turn.response={message:c,type:"meta"},s instanceof u9e?await this.endProgress({unauthorized:{authorizationUri:s.authorizationUri,agentSlug:s.agentSlug,agentName:s.agentName}}):await this.endProgress({error:{message:c,responseIsIncomplete:!0}})}}async processWithAgent(e,r,n,o){await this.conversationProgress.begin(this.conversation,this.turn,e);let s=await Ua(this.turnContext.ctx,this.turnContext,{languageId:o?.detectedLanguageId??""});if(r.isCancellationRequested){this.turn.status="cancelled",await this.cancelProgress();return}let c=await this.buildAgentPrompt(n);if(!c)await this.endTurnWithResponse(`No prompt created for agent ${this.agent.id}`,"error");else{let l={type:"user",prompt:JSON.stringify(c.messages,null,2),tokens:c.tokens};await n.ctx.get(Uf).inspectPrompt(l),await n.steps.start(nSt,"Generating response");let u=this.augmentTelemetry(c,s,this.turn.template,o);if(r.isCancellationRequested){this.turn.status="cancelled",await this.cancelProgress();return}let d=await this.fetchConversationResponse(n,c.messages,r,s.extendedBy({messageSource:"chat.user"},{promptTokenLen:c.tokens}),u,o);this.turn.status==="cancelled"&&this.turn.response?.type==="user"?await this.cancelProgress():(await this.finishGenerateResponseStep(d,n),await this.endProgress({error:d.error,followUp:d.followup,suggestedTitle:d.suggestedTitle,skillResolutions:c.skillResolutions}))}}async buildAgentPrompt(e){let r=this.createMessagesFromHistory(e),n=await this.computeCopilotReferences(e),o=this.getOrCreateAgentSessionId(e);return this.turn.agent&&(this.turn.agent.sessionId=o),this.turn.confirmationResponse?this.addConfirmationResponse(this.turn.confirmationResponse,r):r.push({role:"user",content:tv(e.turn.request.message),copilot_references:n.length>0?n:void 0}),{messages:r,tokens:-1,skillResolutions:[]}}getOrCreateAgentSessionId(e){let r=this.turn.agent?.agentSlug;if(r){for(let n of e.conversation.turns)if(n.agent?.agentSlug===r&&n.agent.sessionId)return n.agent.sessionId}return lr()}addConfirmationResponse(e,r){r.push({role:"user",content:"",copilot_confirmations:[e]})}createMessagesFromHistory(e){return iTt(e.conversation.turns.slice(0,-1),this.agent.slug).flatMap(r=>{let n=[];if(r.request&&n.push({role:"user",content:tv(r.request.message)}),r.response&&r.response.type==="model"){let o=Z9r(r.response.references);n.push({role:"assistant",content:tv(r.response.message),copilot_references:o.length>0?o:void 0})}return n})}async computeCopilotReferences(e){return await i7r(e)}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 fetchConversationResponse(e,r,n,o,s,c){n.onCancellationRequested(async()=>{await this.cancelProgress()});let l=new I6((h,m,g,_,y,A)=>{let E=y?{...y,agentSlug:this.agent.slug}:void 0;this.conversationProgress.report(this.conversation,this.turn,{reply:h,annotations:m,references:g,notifications:_.map(v=>({message:v.message,severity:"warning"})),confirmationRequest:E,thinking:A}),this.turn.response?(this.turn.response.message=a9e(this.turn.response.message,h),this.turn.response.references.push(...g)):this.turn.response={message:h,type:"model",references:g},this.turn.annotations.push(...m??[]),E&&(this.turn.confirmationRequest=E)}),u=await this.turnContext.ctx.get(Ot).getGitHubSession(),d={engineName:"agents",endpoint:this.agent.endpoint??this.agent.slug,messages:r,uiKind:"conversationPanel",intentParams:{intent:!0,intent_threshold:.7,intent_content:sn(this.turn.request.message)},authToken:u?.accessToken,copilot_thread_id:this.turn.agent?.sessionId,llmInteraction:e.toLlmInteraction()},p=await this.chatFetcher.fetchResponse(d,n,o,(h,m)=>l.isFinishedAfter(h,m));return this.ensureAgentIsAuthorized(p),await this.postProcessor.postProcess(p,n,l.appliedText,o,s.extendedBy(this.addExtensibilityInfoTelemetry()),sn(this.turn.request.message),"conversationPanel",c)}ensureAgentIsAuthorized(e){if(e.type==="agentAuthRequired")throw this.turnContext.turn.status="error",this.turnContext.turn.response={message:"Authorization required",type:"server"},new u9e("Authorization required",e.authUrl,this.agent.slug,this.agent.name)}augmentTelemetry(e,r,n,o){return Kme(this.conversation,"conversationPanel",sn(this.turn.request.message).length,e.tokens,n?.templateId,void 0,r,e.skillResolutions)}addExtensibilityInfoTelemetry(){return{extensibilityInfoJson:JSON.stringify({agent:this.agent.slug,outgoingReferences:this.turn.request.references?.map(e=>e.type)??[],incomingReferences:this.turn.response?.references?.map(e=>e.type)??[]})}}async finishGenerateResponseStep(e,r){e.error?await r.steps.error(nSt,e.error.message):await r.steps.finish(nSt)}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)}};var Tge=class{constructor(e,r,n,o,s,c){this.id=e;this.slug=r;this.name=n;this.description=o;this.avatarUrl=s;this.endpoint=c}static{a(this,"RemoteAgent")}additionalSkills(){return[]}turnProcessor(e){return new bge(this,e)}},d9e=class extends Tge{static{a(this,"ExtensibilityPlatformAgent")}constructor(){super(0,"github","GitHub","Get answers grounded in web search, code search, and your enterprise's knowledge bases.","https://avatars.githubusercontent.com/u/9919?s=200&v=4","chat")}turnProcessor(e){return new bge(this,e)}};f();var k7i="github",jx=class{static{a(this,"RemoteAgentRegistry")}},f9e=class extends jx{constructor(r){super();this.ctx=r;this._agents=void 0;this._lastFetchTime=0}static{a(this,"CapiRemoteAgentRegistry")}async agents(){return this.shouldRefreshAgents()&&(this._agents=await this.fetchAgents()),this._agents!=null?this._agents.slice():[]}shouldRefreshAgents(){return!this._agents||!this._lastFetchTime?!0:this.isLastFetchOlderOneHour()}isLastFetchOlderOneHour(){return Date.now()-this._lastFetchTime>36e5}async fetchAgents(){let r=await $j(this.ctx,"/agents");return r.ok?(this._lastFetchTime=Date.now(),this.parseAgents(await r.text())):(Er.error(this.ctx,"Failed to fetch agents from CAPI",{status:r.status,statusText:r.statusText}),[])}parseAgents(r){let n;try{n=JSON.parse(r).agents,Array.isArray(n)||Er.error(this.ctx,"Expected 'agents' to be an array")}catch(o){return r.includes("access denied")||Er.warn(this.ctx,"Invalid remote agent response:",r,o),[]}return n.filter(o=>o.slug!==k7i).map(o=>new Tge(o.id,o.slug,o.name,o.description,o.avatar_url))}};f();f();var A7r=pe(require("fs")),N_=pe(require("path"));var iSt=[".test",".spec","_test","Test","_spec","_test","Tests",".Tests","Spec"],oSt="test_",Sge={js:{suffix:[".test",".spec"],location:"sameFolder"},ts:{suffix:[".test",".spec"],location:"sameFolder"},go:{suffix:["_test"],location:"sameFolder"},java:{suffix:["Test"],location:"testFolder"},php:{suffix:["Test"],location:"testFolder"},dart:{suffix:["_test"],location:"testFolder"},cs:{suffix:["Test"],location:"testFolder"},rb:{suffix:["_test","_spec"],location:"testFolder"},py:{prefix:"test_",location:"testFolder"},ps1:{suffix:[".Tests"],location:"testFolder"},kt:{suffix:["Test"],location:"testFolder"}},xge=class{constructor(e,r,n=void 0){this.ctx=e;this.fileExists=r;this.baseUri=n}static{a(this,"TestFileFinder")}async findTestFileForSourceFile(e){let r=pi(e),n=N_.extname(r).replace(".",""),o=Sge[n]??{location:"sameFolder",prefix:oSt,suffix:iSt},s=[];if(o.prefix&&s.push(o.prefix+r),o.suffix)for(let d of o.suffix??[]){let p=r.replace(`.${n}`,d+"."+n);s.push(p)}let c=o.location??"sameFolder",l;if(c==="sameFolder"){if(l=Qi(Au(e)),l===void 0)return}else{let d=Qi(e);if(d===void 0)return;l=this.determineTestFolder(d,c)}for(let d of s){let p=N_.join(l,d),h=this.parseTestFilePath(p);if(h&&await this.fileExists(h))return h}let u=Oa(l);if(await this.fileExists(u))return fi(u,s[0])}parseTestFilePath(e){try{return Oa(e)}catch(r){Er.error(this.ctx,`Failed to parse test file path: ${e}`,r);return}}async findImplFileForTestFile(e){let r=pi(e),n=N_.extname(r).replace(".",""),o=Sge[n]??{location:"sameFolder",prefix:oSt,suffix:iSt},s=[];if(o.prefix&&s.push(r.substring(o.prefix.length)),o.suffix)for(let u of o.suffix??[]){let p=r.substring(0,r.length-u.length-1-n.length)+"."+n;s.push(p)}let c=o.location??"sameFolder",l;c==="sameFolder"?l=Au(e):l=this.determineImplFolder(e);for(let u of s){let d=fi(l,u);if(await this.fileExists(d))return d}}findExampleTestFile(e){let r=Qi(e);if(r===void 0)return;let n=N_.extname(pi(e)).replace(".",""),o,s=Sge[n]?.location??"sameFolder";s==="sameFolder"?o=N_.dirname(r):o=this.determineTestFolder(r,s);let c=this.findFiles(o,`.${n}`,Sge[n]);if(c.length>0)return Oa(c[0])}findFiles(e,r,n){let o=this._readdir(e),s=[];for(let c of o){let l=`${e}${N_.sep}${c}`;n?.prefix&&c.startsWith(n.prefix)&&s.push(l),n?.suffix&&n?.suffix.some(u=>c.endsWith(u+r))&&s.push(l)}return s}_readdir(e){return A7r.readdirSync(e,{withFileTypes:!0}).filter(r=>r.isFile()).map(r=>r.name)}determineTestFolder(e,r){let n=(this.baseUri&&Qi(this.baseUri))??"",o=N_.extname(e).replace(".",""),s=this.getRelativeTestFolder(e,n,o,r);return[n,...s].filter(c=>c).join(N_.sep)}getRelativeTestFolder(e,r,n,o){let s=N_.dirname(e).replace(r,"");switch(n){case"php":case"dart":case"py":return["tests"];case"ps1":return["Tests"];case"rb":return["test",s];case"cs":return[s.replace("src","src/tests")];case"java":case"scala":case"kt":return[s.replace(/src[\\/]main/,"src/test")];default:return o==="testFolder"?[s.replace("src","test")]:[s]}}determineImplFolder(e){let r=N_.extname(pi(e)).replace(".",""),n=Au(e);switch(r){case"php":case"dart":case"py":return n.replace("tests","src");case"ps1":return n.replace("Tests","src");case"rb":return n.replace("/test","");case"cs":return n.replace("src/tests","src");case"java":case"scala":case"kt":return n.replace("src/test","src/main");default:return n.replace("test/","src/")}}};function Ige(t){let e=pi(t),r=N_.extname(e),n=Sge[r.replace(".","")];return n?!(n.suffix&&!n.suffix.some(s=>e.endsWith(s+r))||n.prefix&&!e.startsWith(n.prefix)):!!(iSt.some(s=>e.endsWith(s+r))||e.startsWith(oSt))}a(Ige,"isTestFile");f();var E7r=["indexed","indexing","not_indexed"],R6=class{constructor(){this._cache=new $r(100)}static{a(this,"BlackbirdIndexingStatus")}async queryIndexingStatus(e,r,n){let o=e.ctx;if(!n)return!1;let s=`repos/${r}/copilot_internal/embeddings_index`,c=await Gl(o,n,s);return c.ok?(await c.json()).semantic_code_search_ok:!1}isValid(e){return e!==void 0&&Date.now()-e.timestamp<1800*1e3}async isRepoIndexed(e,r,n,o=!1){let s=uN(r);if(!s)return!1;let c=this._cache.get(s);if(!o&&this.isValid(c))return c.status;let l=await this.queryIndexingStatus(e,s,n);return this._cache.set(s,{status:l,timestamp:Date.now()}),l}get cache(){return this._cache}};f();f();f();async function v7r(t,e,r,n){let o=yo(e.tokenizer),s=r.filter(h=>o.tokenLength(h.text)<e.maxTokens);if(s.length===0)return;let c=[],l=await t.get(Ot).getToken(),u=YOe(t,l,"embeddings"),d=l.token,p=0;for(;p<s.length&&!n.isCancellationRequested;){let h=s.slice(p,p+e.maxBatchSize),m=await N7i(t,u,d,e.modelId,h,n);c.push(...m||[]),p+=e.maxBatchSize}return c.length?c:void 0}a(v7r,"fetchEmbeddings");async function N7i(t,e,r,n,o,s){let c=lr(),l=o.map(p=>p.text),u=qE(t);AS()&&(u=await SZ(t,u));let d=await dN(t,e,r,void 0,c,{input:l,model:n,dimensions:1024},s,u);if(d.status!==200||s.isCancellationRequested){Po(t,new ON(`Failed to request dense embeddings, status: ${d.status}`),"LocalSnippetProvider.fetchEmbeddings");return}try{return(await d.json()).data.map(h=>({id:o[h.index].id,embedding:h.embedding}))}catch{return}}a(N7i,"sendEmbeddingsRequest");f();f();var p9e=class{static{a(this,"CosineSimilarityScoring")}score(e,r){let n=Math.sqrt(e.reduce((c,l)=>c+l*l,0)),o=Math.sqrt(r.reduce((c,l)=>c+l*l,0));return e.reduce((c,l,u)=>c+l*r[u],0)/(n*o)}terminateScoring(){}};var O7i="cosine",M7i=new Map([["cosine",p9e]]);function C7r(t){let e=t==="default"?O7i:t,r=M7i.get(e);if(!r)throw new Error(`Scoring constructor for type ${t} not found`);return r}a(C7r,"getScoringAlgorithm");f();var av=class{constructor(){this.workspaceScoringProviders=new $r(25)}static{a(this,"ScoringProvider")}createImplementation(e,r){let n=C7r(r);return new n}getImplementation(e,r,n="default"){let o=this.workspaceScoringProviders.get(r.uri);return o||(o=this.createImplementation(e,n),this.workspaceScoringProviders.set(r.uri,o)),o}score(e,r,n,o,s){return this.getImplementation(e,r,s).score(n,o)}terminateScoring(e,r,n){this.getImplementation(e,r,n).terminateScoring(),this.workspaceScoringProviders.delete(r.uri)}};var b7r={modelFamily:ZOe.textEmbedding3Small,scoringType:"default",dimensions:null};async function T7r(t,e,r,n,o,s,c,l=b7r){let u={...b7r,...l},d=L7i(t,e,r,n);$e.debug(t,`EmbeddingsReranker: Reranking ${d.length} snippets (includes the user query)`);let p=await t.get(Ea).getFirstMatchingEmbeddingModelConfiguration(u.modelFamily);if(p===void 0)throw new Error(`EmbeddingsReranker: Model configuration not found for ${u.modelFamily}`);let h=performance.now(),m=await v7r(t,p,d,s),g=performance.now();if(c.embeddingsTimeMs=Math.floor(g-h),m===void 0||m.length===0)return[];let _=m.findIndex(I=>I.id==="userQuery");if(_===void 0)return[];let y=m.splice(_,1)[0];if(s.isCancellationRequested)return[];let A=performance.now(),E=F7i(t,e,m,y,u.scoringType),v=performance.now();c.rerankingTimeMs=Math.floor(v-A);let b=E.slice(0,o);return $e.debug(t,`EmbeddingsReranker: Returning ${b.length} snippets`),b.map(I=>d.find(w=>w.id===I.id).id)}a(T7r,"rerankSnippets");function L7i(t,e,r,n){let o=n.map(s=>({id:s.id,text:s.chunk.toLowerCase()}));return o.push({id:"userQuery",text:r.toLowerCase()}),o}a(L7i,"formatEmbeddingsInput");function F7i(t,e,r,n,o){let s=t.get(av);return r.map(l=>({id:l.id,score:s.score(t,e,n.embedding,l.embedding,o)})).sort((l,u)=>u.score-l.score)}a(F7i,"scoreEmbeddings");f();f();f();var aSt=pe(X6e());var B7i=.75,U7i=1.2,h9e=class{constructor(e,r){this.ctx=e;this.workspaceFolder=r;this.chunksCount=0;this.sumTokenCount=0;this.status="notStarted"}static{a(this,"BM25Ranking")}get avgTokenCount(){return this.sumTokenCount/this.chunksCount}async initialize(e){this.sumTokenCount=0,this.chunksCount=0;for await(let r of e)this.sumTokenCount+=r.tokenCount,this.chunksCount++;this.status="completed"}async addChunks(e){for await(let r of e)this.sumTokenCount+=r.tokenCount,this.chunksCount++}async query(e){let r=await wge();try{return await this.doQuery(e)}finally{await r.stopWorkerPool()}}async doQuery(e){let r=e.map(l=>l.toLowerCase()),n=await this.calculateIDFValues(r),o=Math.min(10*e.length,cSt),s=Math.min(o,this.chunksCount);return await this.calculateBM25Scores(r,this.avgTokenCount,n,s)}async calculateIDFValues(e){let r=this.ctx.get(ud).getChunks(this.workspaceFolder),n=o6(r,s=>({...s,chunk:s.chunk.toLowerCase()})),o=o6(n,s=>s.chunk);return await q7i(e,o)}async calculateBM25Scores(e,r,n,o){let s=this.ctx.get(ud).getChunks(this.workspaceFolder),c=new sSt(o);for await(let l of s){let u=await j7i({...l,chunk:l.chunk.toLowerCase()},e,r,n);c.add({...u,chunk:l.chunk})}return c.toArray(.75)}deleteEmbeddings(e){this.chunksCount-=e.length,this.sumTokenCount-=e.reduce((r,n)=>r+n.tokenCount,0)}terminateRanking(){}};async function q7i(t,e){let r=new SharedArrayBuffer(t.length*Int32Array.BYTES_PER_ELEMENT),n=new Int32Array(r),o=[],s=0;for await(let u of e){s++;let d=aSt.job(({snippet:p,keywords:h})=>h.map(g=>p.includes(g)?1:0),{data:{snippet:u,keywords:t}}).then(p=>{for(let h=0;h<t.length;h++)Atomics.add(n,h,p[h])});o.push(d)}await Promise.all(o);let c=new Int32Array(r),l={};for(let u=0;u<t.length;u++)l[t[u]]=Math.log((s-c[u]+.5)/(c[u]+.5)+1);return l}a(q7i,"calculateIDFValues");async function j7i(t,e,r,n){return{score:await aSt.job(({keywords:s,document:c,docLength:l,avgTokenCount:u,idfValues:d,k1:p,b:h})=>{let m=0;for(let g of s){let _=d[g],y=(c.match(new RegExp(g,"g"))||[]).length,A=_*(y*(p+1)),E=y+p*(1-h+h*l/u);m+=A/E}return m},{data:{document:t.chunk,docLength:t.tokenCount,keywords:e,avgTokenCount:r,idfValues:n,k1:U7i,b:B7i}}),...t}}a(j7i,"calculateBM25Score");var sSt=class{constructor(e,r=-1/0){this.maxSize=e;this.minScore=r;this.store=[]}static{a(this,"SimpleHeap")}toArray(e){if(this.store.length&&typeof e=="number"){let r=this.store.at(0).score*(1-e);return this.store.filter(n=>n.score>=r)}return this.store}add(e){if(e.score<=this.minScore)return;let r=this.store.findIndex(n=>n.score<e.score);for(this.store.splice(r>=0?r:this.store.length,0,e);this.store.length>this.maxSize;)this.store.pop();this.store.length===this.maxSize&&(this.minScore=this.store.at(-1)?.score??this.minScore)}};var Q7i="bm25",G7i=new Map([["bm25",h9e]]);function S7r(t){let e=t==="default"?Q7i:t,r=G7i.get(e);if(!r)throw new Error(`Ranking constructor for type ${t} not found`);return r}a(S7r,"getRankingAlgorithm");var zh=class{constructor(){this.workspaceRankingProviders=new $r(25)}static{a(this,"RankingProvider")}createImplementation(e,r,n){let o=S7r(n);return new o(e,r)}getImplementation(e,r,n="default"){let o=this.workspaceRankingProviders.get(r.uri);return o||(o=this.createImplementation(e,r,n),this.workspaceRankingProviders.set(r.uri,o)),o}status(e,r,n){return this.getImplementation(e,r,n).status}async initialize(e,r,n,o="default"){await this.getImplementation(e,r,o).initialize(n)}async addChunks(e,r,n,o="default"){await this.getImplementation(e,r,o).addChunks(n)}async query(e,r,n,o){return this.getImplementation(e,r,o).query(n)}async terminateRanking(e,r,n){await this.getImplementation(e,r,n).terminateRanking(),this.workspaceRankingProviders.delete(r.uri)}deleteEmbeddings(e,r,n,o){return this.getImplementation(e,r,o).deleteEmbeddings(n)}};f();async function m9e(t,e){let r=t.ctx,n=await zi.getModelConfiguration(r,"synonyms",void 0,{tool_calls:!0}),o={promptType:"synonyms",modelConfiguration:n},s=await r.get(Wh).toPrompt(t,o);if(!s.toolConfig)return;let c={modelConfiguration:n,uiKind:"conversationPanel",messages:s.messages,tools:s.toolConfig?.tools,tool_choice:s.toolConfig?.tool_choice,llmInteraction:t.toLlmInteraction()},l=new Rs(r),u=await Ua(r,t),d=await l.fetchResponse(c,e,u.extendedBy({messageSource:"chat.synonyms"}));if(d.type==="success"&&d.toolCalls&&d.toolCalls.length>0){let p=d.toolCalls[0],h=s.toolConfig?.extractArguments(p).keywords;return!h||!Array.isArray(h)?void 0:($e.debug(r,`UserQueryParser: Parsed ${h.length} keywords from the original user query: ${h.join(", ")}`),h.length?h:void 0)}else{let p="reason"in d?d.reason:"";Po(r,new ON(`Failed to request user query synonyms, result type: ${d.type}, reason: ${p}`),"LocalSnippetProvider.parseUserQuery")}}a(m9e,"parseUserQuery");var ON=class extends Error{static{a(this,"LocalSnippetProviderError")}constructor(e){super(String(e),{cause:e}),this.name="LocalSnippetProviderError"}},g9e=class{constructor(){this.providerType="local"}static{a(this,"LocalSnippetProvider")}snippetProviderStatus(e,r){if(!e.turn.workspaceFolder)return Promise.resolve("not_indexed");r===void 0&&(r=!0);let n=e.ctx,o=n.get(ud),s=o.status(e.turn.workspaceFolder),c=n.get(zh),l=c.status(n,e.turn.workspaceFolder);if(s==="completed"&&l==="completed")return Promise.resolve("indexed");if(s==="started"||l==="started")return Promise.resolve("indexing");if(r){let u=e.turn.workspaceFolder;if(s==="notStarted")return Promise.race([o.chunk(n,u).then(d=>{if(o.status(u)==="completed")return c.initialize(n,u,d)}).then(()=>this.snippetProviderStatus(e,!1)),new Promise(d=>setTimeout(()=>d("not_indexed"),1e3))]);if(l==="notStarted"){let d=o.getChunks(u);return Promise.race([c.initialize(n,u,d).then(()=>this.snippetProviderStatus(e,!1)),new Promise(p=>setTimeout(()=>p("not_indexed"),1e3))])}}return Promise.resolve("not_indexed")}async collectLocalSnippets(e,r){let n=e.turn.workspaceFolder;if(!n)return[];let o=e.ctx,c=await o.get(ud).chunkCount(n);if(c===0)return[];r.chunkCount=c;let l,u=performance.now();try{l=await m9e(e,e.cancelationToken)}catch(_){let y=new ON(_);Po(o,y,"LocalSnippetProvider.parseUserQuery")}let d=performance.now();if(r.synonymTimeMs=Math.floor(d-u),l===void 0)return[];let p=o.get(zh),h=[],m=performance.now();try{let _=await p.query(o,n,l);r.localSnippetCount=_.length,h=_}catch(_){let y=new ON(_);Po(o,y,"LocalSnippetProvider.rankingQuery")}let g=performance.now();return r.rankingTimeMs=Math.floor(g-m),h}async rerankLocalSnippets(e,r,n){let o=e.turn.workspaceFolder;if(!o)return[];let s=e.ctx,c=sn(e.turn.request.message),l=[];try{l=await T7r(s,o,c,r,5,e.cancelationToken,n)}catch(p){let h=new ON(p);Po(s,h,"LocalSnippetProvider.rerankSnippets")}let u=[],d=s.get(bn);for(let p of l){let h=p.split("#")[0],m=await d.getOrReadTextDocument({uri:h}),g=r.find(_=>_.id===p);if(m.status==="valid"){let _=m.document.positionAt(g.range.start),y=m.document.positionAt(g.range.end),A=rc.range(_,y);u.push({uri:m.document.uri,range:A,snippet:g.chunk})}}return u}async provideSnippets(e){let r=this.collectInfoMessage(e);r&&await e.info(r);let n={...CLr},o=await this.collectLocalSnippets(e,n);if(o.length===0)return{snippets:[],measurements:n};let s=e.ctx;return $e.debug(s,`LocalSnippetProvider: First pass: Found ${o.length} snippets.`),{snippets:await this.rerankLocalSnippets(e,o,n),measurements:n}}collectInfoMessage(e){let r=e.turn.workspaceFolder;if(!r)return;let s=e.ctx.get(ud).checkLimits(r);if(s.fileCountExceeded||s.chunkCountExceeded)return Mo`
|
|
2398
2398
|
Copilot has partially indexed this project as it exceeds the file limit. As a result, responses may have incomplete context. Consider excluding large, less relevant files or folders (e.g., large CSV files) to improve accuracy.
|
|
2399
2399
|
`}};f();f();f();f();var io=class t{static{a(this,"Position")}constructor(e,r){this.lineNumber=e,this.column=r}with(e=this.lineNumber,r=this.column){return e===this.lineNumber&&r===this.column?this:new t(e,r)}delta(e=0,r=0){return this.with(this.lineNumber+e,this.column+r)}equals(e){return t.equals(this,e)}static equals(e,r){return!e&&!r?!0:!!e&&!!r&&e.lineNumber===r.lineNumber&&e.column===r.column}isBefore(e){return t.isBefore(this,e)}static isBefore(e,r){return e.lineNumber<r.lineNumber?!0:r.lineNumber<e.lineNumber?!1:e.column<r.column}isBeforeOrEqual(e){return t.isBeforeOrEqual(this,e)}static isBeforeOrEqual(e,r){return e.lineNumber<r.lineNumber?!0:r.lineNumber<e.lineNumber?!1:e.column<=r.column}static compare(e,r){let n=e.lineNumber|0,o=r.lineNumber|0;if(n===o){let s=e.column|0,c=r.column|0;return s-c}return n-o}clone(){return new t(this.lineNumber,this.column)}toString(){return"("+this.lineNumber+","+this.column+")"}static lift(e){return new t(e.lineNumber,e.column)}static isIPosition(e){return e&&typeof e.lineNumber=="number"&&typeof e.column=="number"}toJSON(){return{lineNumber:this.lineNumber,column:this.column}}};var Kn=class t{static{a(this,"Range")}constructor(e,r,n,o){e>n||e===n&&r>o?(this.startLineNumber=n,this.startColumn=o,this.endLineNumber=e,this.endColumn=r):(this.startLineNumber=e,this.startColumn=r,this.endLineNumber=n,this.endColumn=o)}isEmpty(){return t.isEmpty(this)}static isEmpty(e){return e.startLineNumber===e.endLineNumber&&e.startColumn===e.endColumn}containsPosition(e){return t.containsPosition(this,e)}static containsPosition(e,r){return!(r.lineNumber<e.startLineNumber||r.lineNumber>e.endLineNumber||r.lineNumber===e.startLineNumber&&r.column<e.startColumn||r.lineNumber===e.endLineNumber&&r.column>e.endColumn)}static strictContainsPosition(e,r){return!(r.lineNumber<e.startLineNumber||r.lineNumber>e.endLineNumber||r.lineNumber===e.startLineNumber&&r.column<=e.startColumn||r.lineNumber===e.endLineNumber&&r.column>=e.endColumn)}containsRange(e){return t.containsRange(this,e)}static containsRange(e,r){return!(r.startLineNumber<e.startLineNumber||r.endLineNumber<e.startLineNumber||r.startLineNumber>e.endLineNumber||r.endLineNumber>e.endLineNumber||r.startLineNumber===e.startLineNumber&&r.startColumn<e.startColumn||r.endLineNumber===e.endLineNumber&&r.endColumn>e.endColumn)}strictContainsRange(e){return t.strictContainsRange(this,e)}static strictContainsRange(e,r){return!(r.startLineNumber<e.startLineNumber||r.endLineNumber<e.startLineNumber||r.startLineNumber>e.endLineNumber||r.endLineNumber>e.endLineNumber||r.startLineNumber===e.startLineNumber&&r.startColumn<=e.startColumn||r.endLineNumber===e.endLineNumber&&r.endColumn>=e.endColumn)}plusRange(e){return t.plusRange(this,e)}static plusRange(e,r){let n,o,s,c;return r.startLineNumber<e.startLineNumber?(n=r.startLineNumber,o=r.startColumn):r.startLineNumber===e.startLineNumber?(n=r.startLineNumber,o=Math.min(r.startColumn,e.startColumn)):(n=e.startLineNumber,o=e.startColumn),r.endLineNumber>e.endLineNumber?(s=r.endLineNumber,c=r.endColumn):r.endLineNumber===e.endLineNumber?(s=r.endLineNumber,c=Math.max(r.endColumn,e.endColumn)):(s=e.endLineNumber,c=e.endColumn),new t(n,o,s,c)}intersectRanges(e){return t.intersectRanges(this,e)}static intersectRanges(e,r){let n=e.startLineNumber,o=e.startColumn,s=e.endLineNumber,c=e.endColumn,l=r.startLineNumber,u=r.startColumn,d=r.endLineNumber,p=r.endColumn;return n<l?(n=l,o=u):n===l&&(o=Math.max(o,u)),s>d?(s=d,c=p):s===d&&(c=Math.min(c,p)),n>s||n===s&&o>c?null:new t(n,o,s,c)}equalsRange(e){return t.equalsRange(this,e)}static equalsRange(e,r){return!e&&!r?!0:!!e&&!!r&&e.startLineNumber===r.startLineNumber&&e.startColumn===r.startColumn&&e.endLineNumber===r.endLineNumber&&e.endColumn===r.endColumn}getEndPosition(){return t.getEndPosition(this)}static getEndPosition(e){return new io(e.endLineNumber,e.endColumn)}getStartPosition(){return t.getStartPosition(this)}static getStartPosition(e){return new io(e.startLineNumber,e.startColumn)}toString(){return"["+this.startLineNumber+","+this.startColumn+" -> "+this.endLineNumber+","+this.endColumn+"]"}setEndPosition(e,r){return new t(this.startLineNumber,this.startColumn,e,r)}setStartPosition(e,r){return new t(e,r,this.endLineNumber,this.endColumn)}collapseToStart(){return t.collapseToStart(this)}static collapseToStart(e){return new t(e.startLineNumber,e.startColumn,e.startLineNumber,e.startColumn)}collapseToEnd(){return t.collapseToEnd(this)}static collapseToEnd(e){return new t(e.endLineNumber,e.endColumn,e.endLineNumber,e.endColumn)}delta(e){return new t(this.startLineNumber+e,this.startColumn,this.endLineNumber+e,this.endColumn)}isSingleLine(){return this.startLineNumber===this.endLineNumber}static fromPositions(e,r=e){return new t(e.lineNumber,e.column,r.lineNumber,r.column)}static lift(e){return e?new t(e.startLineNumber,e.startColumn,e.endLineNumber,e.endColumn):null}static isIRange(e){return e&&typeof e.startLineNumber=="number"&&typeof e.startColumn=="number"&&typeof e.endLineNumber=="number"&&typeof e.endColumn=="number"}static areIntersectingOrTouching(e,r){return!(e.endLineNumber<r.startLineNumber||e.endLineNumber===r.startLineNumber&&e.endColumn<r.startColumn||r.endLineNumber<e.startLineNumber||r.endLineNumber===e.startLineNumber&&r.endColumn<e.startColumn)}static areIntersecting(e,r){return!(e.endLineNumber<r.startLineNumber||e.endLineNumber===r.startLineNumber&&e.endColumn<=r.startColumn||r.endLineNumber<e.startLineNumber||r.endLineNumber===e.startLineNumber&&r.endColumn<=e.startColumn)}static compareRangesUsingStarts(e,r){if(e&&r){let s=e.startLineNumber|0,c=r.startLineNumber|0;if(s===c){let l=e.startColumn|0,u=r.startColumn|0;if(l===u){let d=e.endLineNumber|0,p=r.endLineNumber|0;if(d===p){let h=e.endColumn|0,m=r.endColumn|0;return h-m}return d-p}return l-u}return s-c}return(e?1:0)-(r?1:0)}static compareRangesUsingEnds(e,r){return e.endLineNumber===r.endLineNumber?e.endColumn===r.endColumn?e.startLineNumber===r.startLineNumber?e.startColumn-r.startColumn:e.startLineNumber-r.startLineNumber:e.endColumn-r.endColumn:e.endLineNumber-r.endLineNumber}static spansMultipleLines(e){return e.endLineNumber>e.startLineNumber}toJSON(){return this}};var x7r=250;function Yh(t){let e;if(typeof t.tokenBudget=="number"&&(e=Math.floor(t.tokenBudget/x7r)),typeof t.maxResults=="number"&&(e=typeof e=="number"?Math.min(t.maxResults,e):t.maxResults),typeof e!="number")throw new Error("Either maxResults or tokenBudget must be provided");return e}a(Yh,"getMaxChunks");var I7r=32e3,w7r=2e4,Rge=.75;f();f();function Kh(t){let e=t.matchAll(/^\s*(```+)/gm),r=Math.max(3,...Array.from(e,n=>n[1].length+1));return"`".repeat(r)}a(Kh,"getFenceForCodeBlock");f();var lBr=pe(vc()),uBr=pe($d());f();var IA=class t{constructor(e){this.id=e}static{a(this,"EmbeddingType")}static{this.text3small_512=new t("text-embedding-3-small-512")}static{this.metis_1024_I16_Binary=new t("metis-1024-I16-Binary")}toString(){return this.id}equals(e){return this.id===e.id}};var rBi=Object.freeze({[IA.text3small_512.id]:{model:"text-embedding-3-small",dimensions:512,quantization:{query:"float32",document:"float32"}},[IA.metis_1024_I16_Binary.id]:{model:"metis-I16-Binary",dimensions:1024,quantization:{query:"float16",document:"binary"}}});function bSt(t){return rBi[t.id]}a(bSt,"getWellKnownEmbeddingTypeInfo");function nBi(t,e){let r=0,n=Math.min(t.length,e.length);for(let o=0;o<n;o++)r+=t[o]*e[o];return r}a(nBi,"dotProduct");function Pge(t,e){if(!t.type.equals(e.type))throw new Error(`Embeddings must be of the same type to compute similarity. Got: ${t.type.id} and ${e.type.id}`);return{embeddingType:t.type,value:nBi(e.value,t.value)}}a(Pge,"distance");function q7r(t,e,r,n){let o=n?.minDistance??0,s=e.map(([c,l])=>({distance:Pge(l,t),value:c})).filter(c=>c.distance.value>o).sort((c,l)=>l.distance.value-c.distance.value).slice(0,r).map(c=>({distance:c.distance,value:c.value}));if(s.length&&typeof n?.maxSpread=="number"){let c=s.at(0).distance.value*(1-n.maxSpread);return s.filter(u=>u.distance.value>=c)}return s}a(q7r,"rankEmbeddings");f();f();var HN=pe(ac()),cBr=pe($d());var nP=new Pe("GitHubCodeSearch"),Qji=300*1e3,l7e=class{constructor(e){this._indexedCommits=new Map;this._indexedRepos=new Map;this._ctx=e,this._refreshTimer=new HN.IntervalTimer,this.startPeriodicRefresh()}static{a(this,"GithubCodeSearchService")}getIndexedCommit(e){return this._indexedCommits.get(e)}setIndexedCommit(e,r){this._indexedCommits.get(e)!==r&&this._indexedCommits.set(e,r)}startPeriodicRefresh(){this._refreshTimer.cancelAndSet(()=>{this.updateIndexedRepoCommit()},Qji)}updateIndexedRepoCommit(){if(this._indexedRepos.size!==0)for(let[e,r]of this._indexedRepos.entries())this._indexedCommits.get(e)&&(async()=>{try{let o=await this._ctx.get(Ot).getGitHubSession();if(!o)return;let{currentStatus:s,indexedCommit:c}=await this.getRemoteIndexState(o,r,{isCancellationRequested:!1});if(s==="ready"&&c){let l=this._indexedCommits.get(e);l!==c&&(this._indexedCommits.set(e,c),nP.info(this._ctx,`Updated indexed commit for ${r.owner}/${r.name}`,{oldCommit:l,newCommit:c}))}}catch(o){nP.warn(this._ctx,`Failed to update indexed commit for ${e}`,o)}})()}async ensureReposIndexed(e,r,n){return await Promise.all(r.map(async o=>{let s=o?.baseFolder.uri;if(!s||n.isCancellationRequested||this._indexedRepos.has(s))return;let{currentStatus:c,indexedCommit:l}=await this.getRemoteIndexState(e,o,n);if(nP.info(this._ctx,`Index status check for ${o.owner}/${o.name}`,{status:c,indexedCommit:l}),c==="ready")this._indexedRepos.set(s,o),l&&this.setIndexedCommit(s,l);else if(c==="not-yet-indexed")try{await this.tryToInstantIndexRepo(e,o,n),nP.info(this._ctx,`Instant indexing completed for ${o.owner}/${o.name}`)}catch(u){nP.warn(this._ctx,`Instant indexing failed for ${o.owner}/${o.name}`,u)}})),r.filter(o=>this._indexedRepos.has(o.baseFolder.uri))}async tryToInstantIndexRepo(e,r,n){await(0,HN.raceTimeout)((async()=>{if(!await(0,HN.raceCancellationError)(this.triggerIndexing(e,"auto",r,n),n))return!1;let c=5,l=1e3;for(;c-- >0;){await(0,HN.raceCancellationError)((0,HN.timeout)(l),n);let{currentStatus:u,indexedCommit:d}=await this.getRemoteIndexState(e,r,n);if(u==="ready"){this._indexedRepos.set(r.baseFolder.uri,r),d&&this.setIndexedCommit(r.baseFolder.uri,d);break}else if(u!=="building-index"){let p=`Instant indexing for '${r.owner}/${r.name}' failed. Found unexpected status: '${u}'`;throw nP.error(this._ctx,p),new Error(p)}}return!0})(),8e3)}async getRemoteIndexState(e,r,n){if(!r.owner||!r.name)return{currentStatus:"not-indexable"};let o=r.owner+"/"+r.name,s=await Gl(this._ctx,e,`repos/${o}/copilot_internal/embeddings_index`,{method:"GET"});if(!s.ok)return nP.error(this._ctx,`Failed to fetch indexing status. Response: ${s.status}.`),{currentStatus:"not-yet-indexed"};let c=await s.json();return nP.debug(this._ctx,`${o} - semantic_code_search_ok: ${c.semantic_code_search_ok}`),c.semantic_code_search_ok?{currentStatus:"ready",indexedCommit:c.semantic_commit_sha}:c.semantic_indexing_enabled?{currentStatus:"building-index"}:{currentStatus:"not-yet-indexed"}}async triggerIndexing(e,r,n,o){let s=yte(this._ctx),c=n.owner+"/"+n.name,l=await Gl(this._ctx,e,`repos/${c}/copilot_internal/embeddings_index`,{headers:s,method:"POST",json:{auto:r==="auto"}});return l.ok?!0:(nP.error(this._ctx,`Failed to request indexing for '${c}'. Response: ${l.status}. ${await l.text()}`),!1)}async searchRepo(e,r,n,o,s,c){let l=yte(this._ctx),u=await Gl(this._ctx,e,"embeddings/code/search",{headers:l,method:"POST",json:{scoping_query:`repo:${n.owner}/${n.name}`,prompt:Hji(o,7800),include_embeddings:!1,limit:s,embedding_model:r.id}});if(!u.ok)throw new Error(`Code search semantic search failed with status: ${u.status}`);let d=await u.json();if(!Array.isArray(d.results))throw new Error("Code search semantic search unexpected response json shape");return Gji(this._ctx,d,n)}dispose(){this._refreshTimer.dispose(),this._indexedCommits.clear(),this._indexedRepos.clear()}};function yte(t){let e=t.get(Br);return{"X-Client-Application":`${Y1(e.getEditorInfo())}`,"X-Client-Source":Y1(e.getEditorPluginInfo()),"X-Client-Feature":"Agent <- codebaseTool"}}a(yte,"editorVersionHeaders");async function Gji(t,e,r){let o=[],s=new IA(e.embedding_model),c=ea(r.baseFolder.uri);return await Promise.all(e.results.map(l=>{let u;try{u=fi(c,l.location.path)}catch(d){nP.error(t,`Error joining path for ${l.location.path}:`,d);return}o.push({chunk:{file:u,text:u7e(l.chunk.text),rawText:void 0,range:new cBr.Range(l.chunk.line_range.start+1,1,l.chunk.line_range.end+1,1),isFullFile:!1},distance:{embeddingType:s,value:l.distance}})})),{chunks:o,outOfSync:!1}}a(Gji,"parseGithubCodeSearchResponse");function Hji(t,e){if(t.length*4<=e)return t;let o=new TextEncoder().encode(t);if(o.length<=e)return t;let s=o.slice(0,e);return new TextDecoder().decode(s,{stream:!0})}a(Hji,"truncateToMaxUtf8Length");function u7e(t){let e=Vji(t);return e.length>=3&&e[0].startsWith("File: ")&&e[1].startsWith("```")&&e.at(-1)?.startsWith("```")?e.slice(2,-1).join(`
|
|
2400
2400
|
`):t}a(u7e,"stripChunkTextMetadata");function Vji(t){return t.split(/\r\n|\r|\n/)}a(Vji,"splitLines");var Hx=pe(ac()),dBr=pe(cte()),fBr=pe(Qf());var Wge=new Pe("ChunkingEndpointClient"),Zxt=class t{constructor(e){this.ctx=e;this._maxParallelChunksRequests=8;this._maxAttempts=3;this.targetQuota=80;this.requestQueue=new dBr.LinkedList;this._numberInFlightRequests=0;this._lastSendTime=Date.now();this._isPumping=!1}static{a(this,"RequestRateLimiter")}static{this._abuseLimit=1e3/40}async enqueue(e,r){let n=new Hx.DeferredPromise;return r.onCancellationRequested(()=>n.cancel()),this.requestQueue.push({task:e,attempt:0,deferred:n,token:r}),await this.pump(),n.p}async pump(){if(!this._isPumping)try{for(this._isPumping=!0;!this.requestQueue.isEmpty();){this._rateLimitTimeout&&(await this._rateLimitTimeout,this._rateLimitTimeout=void 0);let e=Date.now()-this._lastSendTime;if(e<t._abuseLimit&&await(0,Hx.timeout)(t._abuseLimit-e),this._numberInFlightRequests>=this._maxParallelChunksRequests){await(0,Hx.timeout)(10);continue}if(this._latestRateLimitHint){let o=Date.now();if(o<this._latestRateLimitHint.resetAt&&this._latestRateLimitHint.remaining-this._numberInFlightRequests<=0){let s=this._latestRateLimitHint.resetAt-o;await(0,Hx.timeout)(Math.min(s,2e3))}}if(this._latestQuotaUsed&&this._latestQuotaUsed.quota>this.targetQuota){let o=Date.now(),s=this._latestQuotaUsed.quota-this.targetQuota,c=o-this._latestQuotaUsed.timestamp,l=2500,u=1e3,d=s/(100-this.targetQuota);d*=Math.max(1-c/l,0);let p=d*u;p>0&&await(0,Hx.timeout)(Math.min(p,u))}let r=this.requestQueue.shift();if(r.token.isCancellationRequested){await r.deferred.cancel();continue}this._numberInFlightRequests++,this._lastSendTime=Date.now(),r.task(r.attempt).then(async o=>{if(this.updateQuotasFromResponse(o),r.token.isCancellationRequested){await r.deferred.cancel();return}if(o.ok){await r.deferred.complete(o);return}if(r.attempt<this._maxAttempts&&(o.status===429||o.status===403||o.status===408)){let s=this.getRequestRetryDelay(o);s>0&&(this._rateLimitTimeout=(0,Hx.timeout)(s*1e3)),this.requestQueue.unshift({task:r.task,attempt:r.attempt+1,deferred:r.deferred,token:r.token}),await this.pump();return}await r.deferred.complete(o)}).catch(async o=>{await r.deferred.error(o)}).finally(()=>{this._numberInFlightRequests--})}}finally{this._isPumping=!1}}updateQuotasFromResponse(e){let r=Date.now();try{let n=e.headers.get("x-ratelimit-remaining"),o=e.headers.get("x-ratelimit-reset");n&&o&&(this._latestRateLimitHint={timestamp:r,remaining:parseFloat(n),resetAt:parseFloat(o)*1e3});let s=e.headers.get("x-github-total-quota-used");s&&(this._latestQuotaUsed?this._latestQuotaUsed={timestamp:r,quota:parseFloat(s)}:this._latestQuotaUsed={timestamp:r,quota:parseFloat(s)})}catch(n){Wge.error(this.ctx,"Error parsing rate limit/quota headers",n)}}getRequestRetryDelay(e){try{let r=e.headers.get("retry-after");if(r){let n=parseFloat(r);if(!isNaN(n))return n}}catch{Wge.error(this.ctx,"Error parsing retry-after header")}try{let r=e.headers.get("x-ratelimit-reset");if(r){let n=parseFloat(r);if(!isNaN(n)){let o=Math.floor(Date.now()/1e3);return n-o}}}catch{Wge.error(this.ctx,"Error parsing x-ratelimit-reset header")}return e.status===408?.25:2}},d7e=class{constructor(e){this.ctx=e;this._requestLimiter=new Zxt(e)}static{a(this,"ChunkingEndpointClientImpl")}computeChunks(e,r,n,o,s,c,l){return this.doComputeChunksAndEmbeddings(e,r,n,o,{qos:s,computeEmbeddings:!1},c,l)}async computeChunksAndEmbeddings(e,r,n,o,s,c,l){return await this.doComputeChunksAndEmbeddings(e,r,n,o,{qos:s,computeEmbeddings:!0},c,l)}async doComputeChunksAndEmbeddings(e,r,n,o,s,c,l){let u=await(0,Hx.raceCancellationError)(n.getText(),l);if((0,fBr.isFalsyOrWhitespace)(u))return[];try{let d=a(async m=>{let g=yte(this.ctx);return await Gl(this.ctx,e,"chunks",{headers:g,method:"POST",json:{embed:s.computeEmbeddings,qos:s.qos,content:u,path:Qi(n.uri),local_hashes:c?Array.from(c.keys()):[],embedding_model:r.id}})},"makeRequest");o.recomputedFileCount++,o.sentContentTextLength+=u.length;let p=await(0,Hx.raceCancellationError)(this._requestLimiter.enqueue(d,l),l);if(!p.ok){Wge.error(this.ctx,`Error chunking '${n.uri.toString()}'. Status: ${p.status}.`);return}let h=await p.json();return h.chunks.length?(0,lBr.coalesce)(h.chunks.map(m=>{let g=new uBr.Range(m.line_range.start+1,1,m.line_range.end+1,1),_=c?.get(m.hash);if(_)return{chunk:{file:n.uri.toString(),text:u7e(_.chunk.text),rawText:void 0,range:g,isFullFile:_.chunk.isFullFile},chunkHash:m.hash,embedding:_.embedding};if(typeof m.text!="string")return;let y;if(m.embedding?.embedding){let A=new IA(h.embedding_model);if(!A.equals(r))throw new Error(`Unexpected embedding model. Got: ${A.id}. Expected: ${r.id}`);y={type:A,value:m.embedding.embedding}}if(!(s.computeEmbeddings&&!y))return{chunk:{file:n.uri.toString(),text:u7e(m.text),rawText:void 0,range:g,isFullFile:!1},chunkHash:m.hash,embedding:y}})):[]}catch(d){Wge.error(this.ctx,`Error chunking '${n.uri.toString()}'`,d);return}}};f();f();var gg={Tfidf:"semantic.search.tfidf",Embeddings:"semantic.search.embeddings",Remote:"semantic.search.remote",Aggregate:"semantic.search.aggregate"},H0=class t{static{a(this,"WorkspaceChunkSearchTelemetry")}static sendSuccess(e,r,n,o){let s={status_text:"success",...n},c=ht.createAndMarkAsIssued(s,o);it(e,r,c),Qn(e,r,c)}static sendFailure(e,r,n){let o={status_text:"failure"};Po(e,n,r,o),bu(e,r,n,o)}static sendTfidfSuccess(e,r,n,o,s,c,l,u,d){t.sendSuccess(e,gg.Tfidf,{source:d},{timeTakenMs:r,rankingTimeMs:n,rerankingTimeMs:o,localSnippetCount:l,chunkCount:s,fileCount:c,totalFileCount:u})}static sendTfidfFailure(e,r){t.sendSearchFailure(e,gg.Tfidf,r)}static sendEmbeddingsSuccess(e,r,n,o,s,c,l){t.sendSuccess(e,gg.Embeddings,{source:l},{timeTakenMs:r,embeddingsTimeMs:n,chunkCount:o,fileCount:s,totalFileCount:c})}static sendEmbeddingsFailure(e,r){t.sendSearchFailure(e,gg.Embeddings,r)}static sendEmbeddingsSkipped(e,r){t.sendSkipped(e,gg.Embeddings,r)}static sendRemoteSuccess(e,r,n,o,s){t.sendSuccess(e,gg.Remote,{provider:s},{timeTakenMs:r,chunkCount:n,fileCount:o})}static sendRemoteFailure(e,r){t.sendSearchFailure(e,gg.Remote,r)}static sendRemoteSkipped(e,r){t.sendSkipped(e,gg.Remote,r)}static sendSearchFailure(e,r,n){t.sendFailure(e,r,n)}static sendSkipped(e,r,n){let o={status_text:"skipped",reason:n},s=ht.createAndMarkAsIssued(o,{});it(e,r,s),Qn(e,r,s)}static sendAggregateSuccess(e,r,n,o,s,c,l){t.sendSuccess(e,gg.Aggregate,{provider:r,source:l},{timeTakenMs:n,chunkCount:o,fileCount:s,workspaceCount:c})}static sendAggregateFailure(e,r){t.sendFailure(e,gg.Aggregate,r)}};var pBr=pe(vc()),hBr=pe(ac()),eIt=pe(X2());var VN=new Pe("Remote Search"),f7e=class{constructor(e,r,n,o){this.ctx=e;this._embeddingType=r;this._localDiffSearch=n;this._githubCodeSearchService=o;this.id="codesearch";this.localDiffSearchTimeout=15e3}static{a(this,"CodeSearchChunkSearch")}async isAvailable(e){return(await this.getRepos(e)).length>0}async getRepos(e){if(!e?.length)return[];let r=this.ctx.get(Qh),o=(await Promise.all(e.map(async c=>await r.getRepo({uri:c})))).filter(c=>c!==void 0).filter(c=>c.isGitHub()&&c.owner&&c.name),s=new Map;for(let c of o){let l=`${c.owner}/${c.name}`;s.has(l)||s.set(l,c)}return Array.from(s.values())}async searchWorkspace(e,r,n){let o=new eIt.StopWatch,s=await this.getRepos(r.workspaceFolders);if(VN.info(this.ctx,"Starting workspace search",{rawQuery:e.rawQuery,repoCount:s.length,repos:s.map(P=>`${P.owner}/${P.name}`),maxResults:Yh(r)}),s.length===0)throw VN.error(this.ctx,"No GitHub repositories found"),H0.sendRemoteSkipped(this.ctx,"no_github_repos"),new Error("No GitHub repositories found in CodeSearchChunkSearch");let c=await this.ctx.get(Ot).getGitHubSession();if(!c)throw VN.error(this.ctx,"No GitHub session found"),H0.sendRemoteSkipped(this.ctx,"no_github_session"),new Error("No GitHub session found in CodeSearchChunkSearch");let l=await this._githubCodeSearchService.ensureReposIndexed(c,s,n);if(l.length===0)throw VN.error(this.ctx,"Remote index not ready for any repositories"),H0.sendRemoteSkipped(this.ctx,"remote_index_not_ready"),new Error("Remote index not ready");let u=Yh(r),d=Promise.all(l.map(async P=>{kf(n);let k=await e.resolveQuery(n),j=new eIt.StopWatch,D=await this._githubCodeSearchService.searchRepo(c,this._embeddingType,P,k,u,n);return VN.info(this.ctx,`Search completed for ${P.owner}/${P.name}`,{searchTime:j.elapsed(),chunkCount:D.chunks.length}),D})),p=await this._localDiffSearch.getLocalDiff(r.workspaceFolders),h=new Set(p),m=this._localDiffSearch.shouldDoLocalDiffSearch(p,r.workspaceFolders);VN.info(this.ctx,"Local diff files detected",{diffFileCount:p.length,allowLocalDiffSearch:m});let g;m&&(g=(0,hBr.raceTimeout)(this._localDiffSearch.searchLocalDiff(p,e,r,n),this.localDiffSearchTimeout,()=>{VN.warn(this.ctx,"Local diff search timed out",{timeout:this.localDiffSearchTimeout})}));let[_,y]=await Promise.all([d,g?.catch(P=>{VN.error(this.ctx,"Local diff search failed",P)})??Promise.resolve(void 0)]),A=(0,pBr.coalesce)(_).flatMap(P=>P.chunks),E=y?.isOk()?y.val.result.chunks:[],v=E.length>0?[...A.filter(P=>!h.has(P.chunk.file)),...E]:A,b=v.length,I=new Set(v.map(P=>P.chunk.file)).size,w=o.elapsed();VN.info(this.ctx,`Search completed successfully in ${w}ms`,{totalTime:w,totalChunkCount:b,uniqueFileCount:I,indexedRepoCount:l.length,localDiffChunkCount:E.length,localDiffStrategy:y?.isOk()?y.val.strategy:"none"});let R=y?.isOk()?"mixed":"codesearch";return H0.sendRemoteSuccess(this.ctx,w,b,I,R),{chunks:v}}};f();f();var sjr=require("node:url"),ajr=require("path");f();var iUr=require("node:buffer"),R7e=pe(gBr(),1),x7e=pe(bBr(),1),zUr=require("child_process"),Nqr=pe(iIt(),1),Qqr=require("node:path"),bte=pe(iIt(),1),ijr=require("node:events");var IIt=Object.defineProperty,A$i=Object.getOwnPropertyDescriptor,wIt=Object.getOwnPropertyNames,E$i=Object.prototype.hasOwnProperty,Ir=a((t,e)=>a(function(){return t&&(e=(0,t[wIt(t)[0]])(t=0)),e},"__init"),"__esm"),v$i=a((t,e)=>a(function(){return e||(0,t[wIt(t)[0]])((e={exports:{}}).exports,e),e.exports},"__require"),"__commonJS"),Gf=a((t,e)=>{for(var r in e)IIt(t,r,{get:e[r],enumerable:!0})},"__export"),C$i=a((t,e,r,n)=>{if(e&&typeof e=="object"||typeof e=="function")for(let o of wIt(e))!E$i.call(t,o)&&o!==r&&IIt(t,o,{get:a(()=>e[o],"get"),enumerable:!(n=A$i(e,o))||n.enumerable});return t},"__copyProps"),Hd=a(t=>C$i(IIt({},"__esModule",{value:!0}),t),"__toCommonJS");function dIt(...t){let e=new String(t);return w7e.set(e,t),e}a(dIt,"pathspec");function Kge(t){return t instanceof String&&w7e.has(t)}a(Kge,"isPathSpec");function TBr(t){return w7e.get(t)||[]}a(TBr,"toPaths");var w7e,Ste=Ir({"src/lib/args/pathspec.ts"(){"use strict";w7e=new WeakMap}}),zN,B6=Ir({"src/lib/errors/git-error.ts"(){"use strict";zN=class extends Error{static{a(this,"GitError")}constructor(t,e){super(e),this.task=t,Object.setPrototypeOf(this,new.target.prototype)}}}}),Zge,xte=Ir({"src/lib/errors/git-response-error.ts"(){"use strict";B6(),Zge=class extends zN{static{a(this,"GitResponseError")}constructor(t,e){super(void 0,e||String(t)),this.git=t}}}}),rUr,nUr=Ir({"src/lib/errors/task-configuration-error.ts"(){"use strict";B6(),rUr=class extends zN{static{a(this,"TaskConfigurationError")}constructor(t){super(void 0,t)}}}});function oUr(t){return typeof t!="function"?pQ:t}a(oUr,"asFunction");function sUr(t){return typeof t=="function"&&t!==pQ}a(sUr,"isUserFunction");function aUr(t,e){let r=t.indexOf(e);return r<=0?[t,""]:[t.substr(0,r),t.substr(r+1)]}a(aUr,"splitOn");function cUr(t,e=0){return lUr(t)&&t.length>e?t[e]:void 0}a(cUr,"first");function fQ(t,e=0){if(lUr(t)&&t.length>e)return t[t.length-1-e]}a(fQ,"last");function lUr(t){return O7e(t)}a(lUr,"isArrayLike");function e_e(t="",e=!0,r=`
|