@github/copilot-language-server 1.527.0 → 1.527.2
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 +4 -4
- package/package.json +8 -8
package/dist/main.js
CHANGED
|
@@ -1941,7 +1941,7 @@ ${r}+- `:"";return e+this.description+o}}},g0=class{constructor(e,r,n,o){this.la
|
|
|
1941
1941
|
(using_declaration)
|
|
1942
1942
|
(alias_declaration)
|
|
1943
1943
|
(static_assert_declaration)
|
|
1944
|
-
] @statement`}};var MO=class{constructor(e,r,n){this.languageId=e;this.prefix=r;this.completion=n}static{a(this,"BlockTrimmer")}static isSupported(e){return g0.isSupported(e)}static isTrimmedByDefault(e){return g0.isTrimmedByDefault(e)}async withParsedStatementTree(e){var n=[];try{let r=mDt(n,g0.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{gDt(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 WWe=class extends MO{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 Ogn(t,e){var l=[];try{let r=t.getText();let n=t.offsetAt(e);let o=mDt(l,g0.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,f=!0}finally{gDt(l,d,f)}}a(Ogn,"getBlockPositionType");p();function o7o(t){return t.HTTPS_PROXY||t.https_proxy||t.HTTP_PROXY||t.http_proxy}a(o7o,"getProxyFromEnvironment");function s7o(t){return t.NODE_TLS_REJECT_UNAUTHORIZED!=="0"}a(s7o,"getRejectUnauthorizedFromEnvironment");var Lgn=b.Object({proxy:b.Optional(b.String()),proxyStrictSSL:b.Optional(b.Boolean()),proxyAuthorization:b.Optional(b.String()),proxyKerberosServicePrincipal:b.Optional(b.String()),noProxy:b.Optional(b.Array(b.String()))});function Bgn(t){let e=o7o(t),r=Mxe({proxy:e,proxyStrictSSL:s7o(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(Bgn,"getHttpSettingsFromEnvironment");function Mxe(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||a7o(n,o),noProxy:t.noProxy||[]}}catch{return{...t,proxy:""}}}a(Mxe,"normalizeHttpSettings");function a7o(t,e){return!t||!e?"":`${decodeURIComponent(t)}:${decodeURIComponent(e)}`}a(a7o,"getAuth");var Oxe={};Ti(Oxe,{anthropicClaude:()=>m7o,build:()=>f7o,buildType:()=>p7o,default:()=>v7o,dependencies:()=>y7o,description:()=>u7o,devDependencies:()=>A7o,displayName:()=>l7o,engines:()=>h7o,name:()=>c7o,overrides:()=>_7o,overridesComments:()=>E7o,scripts:()=>g7o,version:()=>d7o});var c7o="copilot",l7o="GitHub Copilot",u7o="Your AI pair programmer",d7o="1.527.0",f7o="85",p7o="prod",h7o={node:">=22.13.0",npm:">=11.6.0 <12.0.0"},m7o={cliPackageVersion:"2.1.159"},g7o={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:overrides":"tsx script/checkOverridesDocumented.ts","lint:prettier":"prettier --check . 2>&1","lint:types":"tsc --noEmit",inspect_auth_db:"tsx script/inspectAuthDb.ts",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}" "script/**/*.test.{ts,tsx}" --exclude "lib/src/**/*.int.test.ts"',"test:lib-int":'mocha "lib/src/**/*.int.test.ts"',"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:pkg-runtime":"tsx script/smokeCopilotRuntimePkg.ts","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"},A7o={"@azure/identity":"^4.13.1","@azure/keyvault-secrets":"^4.11.2","@github/prettier-config":"0.0.6","@limegrass/eslint-plugin-import-alias":"^1.6.1","@types/crypto-js":"^4.2.2","@types/diff":"^8.0.0","@types/git-url-parse":"^16.0.2","@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.13.0","@types/semver":"^7.7.1","@types/sinon":"^22.0.0","@types/toposort":"^2.0.7","@types/vscode":"1.125.0","@types/which":"^3.0.0","@types/yargs":"^17.0.35","@vscode/tree-sitter-wasm":"0.0.5-php.2","@yao-pkg/pkg":"^6.21.0",boxen:"^8.0.1",chalk:"^5.6.2","dependency-cruiser":"^18.1.0",esbuild:"^0.28.1","esbuild-plugin-copy":"^2.1.1",eslint:"^9.39.5","eslint-formatter-visualstudio":"^9.0.1","eslint-plugin-mocha":"^10.5.0",globals:"^17.8.0","js-yaml":"^4.2.0",mocha:"^11.7.6","mocha-junit-reporter":"^2.2.1","mocha-multi-reporters":"^1.5.1","npm-run-all":"^4.1.5",openai:"^6.49.0",prettier:"^3.5.3","prettier-plugin-organize-imports":"^4.2.0","simple-git":"^3.36.0",sinon:"^22.1.0","tree-sitter-bash":"^0.23.0","tree-sitter-powershell":"0.25.9","ts-dedent":"^2.3.0",tsx:"^4.23.1",typescript:"^5.9.3","typescript-eslint":"^8.39.1","vscode-dts":"^0.3.3"},y7o={"@adobe/helix-fetch":"github:devm33/helix-fetch#2a08fa939591a0e14f34f611adcc3ed767579e9a","@agentclientprotocol/sdk":"^0.22.1","@anthropic-ai/claude-agent-sdk":"0.3.159","@anthropic-ai/sdk":"^0.98.0","@github/copilot":"^1.0.70","@github/copilot-sdk":"^1.0.6-preview.1","@github/keytar":"7.10.6","@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.11","@microsoft/mxc-sdk":"0.7.0","@modelcontextprotocol/sdk":"^1.29.0","@octokit/graphql":"^9.0.3","@octokit/rest":"^22.0.1","@parcel/watcher":"^2.6.0","@sinclair/typebox":"^0.34.52","@vscode/chat-lib":"^0.57.0","@vscode/codicons":"^0.0.45","@vscode/deviceid":"github:ghc-jetbrains/vscode-deviceid#f0e5738cd362ef20a09aeb30c3a8be99a9a710f5","@vscode/policy-watcher":"^1.4.0","@vscode/prompt-tsx":"^0.4.0-alpha.9","@vscode/webview-ui-toolkit":"^1.3.1","crypto-js":"^4.2.0",diff:"^9.0.0",dldr:"^0.0.10",events:"^3.3.0","git-url-parse":"^16.1.0",glob:"^11.1.0","jsonc-parser":"^3.3.1",kerberos:"^2.2.0","mac-ca":"^3.1.3","markdown-it":"^14.3.0",minimatch:"^10.2.6",open:"^10.2.0",semver:"^7.8.5",shiki:"~1.15.0","source-map-support":"^0.5.21",toposort:"^2.0.2",undici:"^7.29.0",uuid:"^14.0.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",which:"^7.0.0","windows-ca-certs":"^0.2.2",ws:"^8.21.1",yargs:"^18.1.0"},_7o={fsevents:"<0","@github/copilot-linuxmusl-arm64":"<0","@github/copilot-linuxmusl-x64":"<0",bindings:"npm:bundled-bindings@^1.5.0",jws:"^3.2.3",tar:"7.5.11","serialize-javascript":"^7.0.5",uuid:"^14.0.0","ip-address":"^10.1.1","fast-uri":"^3.1.4"},E7o={"//":"Rationale for each entry in `overrides`. Required by `npm run lint:overrides` (script/checkOverridesDocumented.ts). Each value should cover: why (CVE/GHSA or build-hack reason), which direct dep pulls in the vulnerable transitive, and the remove-when condition.",fsevents:"Build hack: macOS-only optional native dep; '<0' is an impossible semver that force-skips install on Linux/Windows pkg builds. Permanent \u2014 keep until @yao-pkg/pkg handles macOS-only optionalDependencies natively. See commit d635096c.","@github/copilot-linuxmusl-arm64":"Build hack: @github/copilot declares a Linux musl optional runtime package, but CLS does not support musl. '<0' prevents npm from installing the unsupported runtime. Drop only if CLS adds musl support.","@github/copilot-linuxmusl-x64":"Build hack: @github/copilot declares a Linux musl optional runtime package, but CLS does not support musl. '<0' prevents npm from installing the unsupported runtime. Drop only if CLS adds musl support.",bindings:"Build hack: alias to bundled-bindings fork that resolves .node native addon paths after pkg/esbuild bundling. Required by kerberos. Drop when upstream `bindings` adopts platform-specific path resolution. See commits c4461665 and b55ece83.",jws:"CVE GHSA-869p-cjfg-cm3x (Improperly Verifies HMAC Signature). Pulled in by jsonwebtoken-family deps. Drop when all transitive consumers pin jws >= 3.2.3. See commit 2b5dc766.",tar:"CVE GHSA-9ppj-qmqm-q256 + GHSA-qffp-2rhf-9h96 (Symlink/Hardlink Path Traversal via Drive-Relative Linkpath). Pulled in by node-gyp / native-build deps. Drop when transitive consumers bump tar >= 7.5.11. See commit e2dff0f3.","serialize-javascript":"CVE GHSA-5c6j-r48x-rmvq (RCE via RegExp.flags / Date.toISOString) + GHSA-qj8w-gfj5-8c6v (ReDoS). Pulled in by mocha 11.x (^6.0.2). Dev-only. Drop when mocha bumps to a release that carries serialize-javascript >= 7.0.3. See commit d49f75fd.",uuid:"CVE GHSA-w5hq-g745-h8pq (missing buffer bounds checks in v3/v5/v6). Pulled in by msal-node and @vscode/deviceid as uuid 8.x/9.x. Drop when both upgrade to uuid >= 14. Dependabot alert #128. See commit 6315f3f8.","ip-address":"CVE GHSA-v2v4-37r5-5v8g (XSS in Address6 HTML-emitting methods: group/link/spanAll and AddressError.parseMessage). Pulled in by @modelcontextprotocol/sdk -> express-rate-limit. Not exploitable here (we don't render HTML or call the affected methods), but the override clears the alert. Drop when express-rate-limit bumps to a release carrying ip-address >= 10.1.1. Dependabot alert #129. See PR #854.","fast-uri":"CVE-2026-6321 GHSA-q3j6-qgpj-74h6 (host confusion via percent-encoded authority delimiters) + CVE-2026-6322 GHSA-v39h-62p7-jpjc (path traversal via percent-encoded dot segments). Pulled in by @modelcontextprotocol/sdk -> ajv -> fast-uri. Drop when ajv bumps to a release carrying fast-uri >= 3.1.2. Dependabot alerts #132, #133."},v7o={name:c7o,displayName:l7o,description:u7o,version:d7o,build:f7o,buildType:p7o,engines:h7o,anthropicClaude:m7o,scripts:g7o,devDependencies:A7o,dependencies:y7o,overrides:_7o,overridesComments:E7o};var ze={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",EditorHandlesAllConfirmation:"agent.editorHandlesAllConfirmation",MaxToolCallingLoop:"agent.maxToolCallingLoop",AutoCompress:"agent.autoCompress",AnthropicThinkingBudgetToken:"agent.anthropicThinkingBudgetToken",EnableSkills:"agent.enableSkills",EnableHooks:"agent.enableHooks",EnableSandbox:"agent.sandbox.enabled",SandboxAddCurrentWorkingDirectory:"agent.sandbox.addCurrentWorkingDirectory",SandboxUserPolicy:"agent.sandbox.userPolicy",EnablePlugins:"agent.enablePlugins",EnableCustomAgents:"agent.enableCustomAgents",EnableOrgCustomAgents:"agent.enableOrgCustomAgents",UseAgentsMd:"agent.useAgentsMdFile",UseNestedAgentsMd:"agent.useNestedAgentsMdFiles",UseClaudeMd:"agent.useClaudeMdFile",UseNestedClaudeMd:"agent.useNestedClaudeMdFiles",CompletionsDelay:"completionsDelay",CompletionsDebounce:"completionsDebounce",EnableThinking:"agent.enableThinking",TranscriptDirectory:"agent.transcriptDirectory",AgentDebugLogsDirectory:"agent.agentDebugLogsDirectory",ClaudeCliPath:"agent.claude.cliPath",CodexCliPath:"agent.codex.cliPath",OtelEnabled:"agent.otel.enabled",OtelEndpoint:"agent.otel.otlpEndpoint",OtelCaptureContent:"agent.otel.captureContent",OtelExporterType:"agent.otel.exporterType",OtelProtocol:"agent.otel.protocol",OtelOutfile:"agent.otel.outfile",OtelServiceName:"agent.otel.serviceName",OtelResourceAttributes:"agent.otel.resourceAttributes",NESExtendedRange:"nextEditSuggestions.extendedRange",NESEagerness:"nextEditSuggestions.eagerness",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",NESModelConfiguration:"internal.nesModelConfiguration",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",UseHelixFetcher:"internal.useHelixFetcher",EnableMapCodeFallback:"internal.enableMapCodeFallback",SearchAgent:"internal.searchAgent",PerfEnabled:"internal.perf.enabled",AuthTokenEncryption:"internal.auth.tokenEncryption",EnableWorkspaceIndex:"workspaceIndex.enabled"};function Fgn(t){return["server","parsingandserver"].includes(t)}a(Fgn,"shouldDoServerTrimming");var t2=class{static{a(this,"BlockModeConfig")}},iue=class extends t2{static{a(this,"ConfigBlockModeConfig")}forLanguage(e,r,n){let o=e.get(tr).overrideBlockMode(n);if(o)return m9t(o,r);let s=e.get(tr).enableProgressiveReveal(n);return(kt(e,ze.AlwaysRequestMultiline)??s)||MO.isTrimmedByDefault(r)?m9t("moremultiline",r):r=="ruby"?"parsing":tT(r)?"parsingandserver":"server"}};function C7o(t){return["parsing","parsingandserver","moremultiline"].includes(t)}a(C7o,"blockModeRequiresTreeSitter");function m9t(t,e){return t==="moremultiline"&&g0.isSupported(e)?t:C7o(t)&&!tT(e)?"server":t}a(m9t,"toApplicableBlockMode");var Qo=class{static{a(this,"ConfigProvider")}requireReady(){return Promise.resolve()}},oue=class extends Qo{constructor(){super(...arguments);this.onDidChangeCopilotSettings=a(()=>({dispose:a(()=>{},"dispose")}),"onDidChangeCopilotSettings");this.onDidChangeHttpSettings=this.onDidChangeCopilotSettings}static{a(this,"DefaultsOnlyConfigProvider")}getConfig(r){return b7o(r)}getOptionalConfig(r){return S7o(r)}dumpForTelemetry(){return{}}getExplicitlySetConfigs(){return new Map}getHttpSettings(){return{proxy:""}}},PK=class extends Qo{constructor(r,n){super();this.baseConfigProvider=r;this.overrides=n;this.copilotEmitter=new Ji;this.onDidChangeCopilotSettings=this.copilotEmitter.event;this.didChangeHttpSettingsEmitter=new Ji;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=Mxe(r);this.httpSettings=n,this.didChangeHttpSettingsEmitter.fire(this.getHttpSettings())}dumpForTelemetry(){let r=this.baseConfigProvider.dumpForTelemetry();for(let n of[ze.ShowEditorCompletions,ze.EnableAutoCompletions,ze.DelayCompletions,ze.FilterCompletions]){let o=this.overrides.get(n);o!==void 0&&(r[n]=JSON.stringify(o))}return r}};function Ugn(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(Ugn,"getConfigKeyRecursively");function b7o(t){if(zWe.has(t))return zWe.get(t);throw new Error(`Missing config default value: ${_Dt}.${t}`)}a(b7o,"getConfigDefaultForKey");function S7o(t){return zWe.get(t)}a(S7o,"getOptionalConfigDefaultForKey");function Lxe(t){return t.get(Qo).getExplicitlySetConfigs()}a(Lxe,"getExplicitlySetConfigs");var T7o={[ze.DebugOverrideCppHeadersEnableSwitch]:!1,[ze.RelatedFilesVSCodeCSharp]:!1,[ze.RelatedFilesVSCodeTypeScript]:!1,[ze.RelatedFilesVSCode]:!1,[ze.IncludeNeighboringFiles]:!1,[ze.ExcludeRelatedFiles]:!1,[ze.ContextProviders]:[],[ze.DebugUseEditorFetcher]:null,[ze.DebugUseElectronFetcher]:null,[ze.DebugOverrideLogLevels]:{},[ze.DebugSnippyOverrideUrl]:"",[ze.AgentDebugLogsDirectory]:void 0,[ze.ClaudeCliPath]:void 0,[ze.CodexCliPath]:void 0,[ze.OtelEnabled]:!1,[ze.OtelEndpoint]:void 0,[ze.OtelCaptureContent]:!1,[ze.OtelExporterType]:"otlp-http",[ze.OtelProtocol]:"",[ze.OtelOutfile]:"",[ze.OtelServiceName]:"",[ze.OtelResourceAttributes]:{},[ze.FetchStrategy]:"auto",[ze.ToolConfirmAutoApprove]:!1,[ze.AutoApproveUnmatchedTerminal]:void 0,[ze.AutoApproveUnmatchedFileOp]:void 0,[ze.TrustToolAnnotations]:!1,[ze.AutoApproveYoloMode]:!1,[ze.EditorHandlesAllConfirmation]:!1,[ze.MaxToolCallingLoop]:25,[ze.AutoCompress]:!1,[ze.AnthropicThinkingBudgetToken]:1024,[ze.EnableSkills]:!1,[ze.EnableHooks]:!1,[ze.EnableSandbox]:!1,[ze.SandboxAddCurrentWorkingDirectory]:void 0,[ze.SandboxUserPolicy]:void 0,[ze.EnablePlugins]:!1,[ze.EnableCustomAgents]:!0,[ze.EnableOrgCustomAgents]:!0,[ze.UseAgentsMd]:!1,[ze.UseNestedAgentsMd]:!1,[ze.UseClaudeMd]:!1,[ze.UseNestedClaudeMd]:!1,[ze.UseSubsetMatching]:null,[ze.ContextProviderTimeBudget]:void 0,[ze.DebugOverrideCapiUrl]:"",[ze.DebugTestOverrideCapiUrl]:"",[ze.DebugOverrideProxyUrl]:"",[ze.DebugTestOverrideProxyUrl]:"",[ze.DebugOverrideEngine]:"",[ze.AlwaysRequestMultiline]:void 0,[ze.ModelAlwaysTerminatesSingleline]:void 0,[ze.TrimCompletionsAggressively]:void 0,[ze.CompletionsDebounce]:void 0,[ze.NESXTab]:void 0,[ze.UseWorkspaceContextCoordinator]:void 0,[ze.ShowWorkspaceContextDebugger]:!1,[ze.CompletionsDelay]:void 0,[ze.UseSplitContextPrompt]:void 0,[ze.UseCompletionsComparisonPanel]:void 0,[ze.ComparisonPanelModelIds]:void 0,[ze.ComparisonPanelRandomizedMode]:void 0,[ze.UseFetchFetcher]:void 0,[ze.UseChatLibCompletions]:void 0,[ze.TranscriptDirectory]:void 0,[ze.EnableThinking]:!0,[ze.ShowEditorCompletions]:void 0,[ze.EnableAutoCompletions]:void 0,[ze.DelayCompletions]:void 0,[ze.FilterCompletions]:void 0,[ze.Enable]:{"*":!0,plaintext:!1,markdown:!1,scminput:!1},[ze.UserSelectedCompletionModel]:"",[ze.DebugFilterLogCategories]:[],[ze.DebugOverrideEngineLegacy]:"",[ze.DebugTestOverrideProxyUrlLegacy]:"",[ze.DebugOverrideProxyUrlLegacy]:"",[ze.DebugTestOverrideCapiUrlLegacy]:"",[ze.DebugOverrideCapiUrlLegacy]:"",[ze.HookErrorOccurredStackTrace]:!1,[ze.NESUseExplicitRejection]:!1,[ze.NESModelConfiguration]:void 0,[ze.AppendPromptTokenCache]:"",[ze.PromptPersistBasePath]:void 0,[ze.AnthropicMessagesEndpoint]:"",[ze.UseHelixFetcher]:"",[ze.EnableMapCodeFallback]:"enabled",[ze.SearchAgent]:"",[ze.PerfEnabled]:"",[ze.NESExtendedRange]:!1,[ze.NESEagerness]:"auto",[ze.AuthTokenEncryption]:"",[ze.EnableWorkspaceIndex]:!1},zWe=new Map(Object.entries(T7o));for(let t of Object.values(ze))if(!zWe.has(t))throw new Error(`Missing config default value ${_Dt}.${t}`);function kt(t,e){return t.get(Qo).getConfig(e)}a(kt,"getConfig");function XE(t){let e=kt(t,ze.EnableWorkspaceIndex);return e===!0||e==="true"}a(XE,"isSemanticSearchEnabled");function Rtn(t){return t.get(Qo).dumpForTelemetry()}a(Rtn,"dumpForTelemetry");var As=class{constructor(){this.packageJson=Oxe}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 SOt(t){return t.get(As).isProduction()}a(SOt,"isProduction");function Msn(t){return t.get(As).getBuildType()==="dev"}a(Msn,"isDevBuild");function _7(t){return t.get(As).getBuildType()}a(_7,"getBuildType");function ktn(t){return t.get(As).getBuild()}a(ktn,"getBuild");function A1(t){return t.get(As).getVersion()}a(A1,"getVersion");var za=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 o1({name:t,version:e}){return`${t}/${e}`}a(o1,"formatNameAndVersion");var Ir=class{static{a(this,"EditorAndPluginInfo")}getCopilotIntegrationId(){}getEditorPluginSpecificFilters(){return[]}getEditorIdentity(){return I$r({editor:this.getEditorInfo(),plugin:this.getEditorPluginInfo()})}isEditorPluginInfoKnown(){return!0}};function AWe(t){let e=t.getCopilotIntegrationId();if(e)return e;switch(t.getEditorPluginInfo().name){case"copilot-intellij":return"jetbrains-chat";case"copilot":case"copilot-vs":return;default:return"jetbrains-chat"}}a(AWe,"getIntegrationId");function s_(t){let e=t.get(Ir);return{"Editor-Version":o1(e.getEditorInfo()),"Editor-Plugin-Version":o1(e.getEditorPluginInfo()),"Copilot-Language-Server-Version":A1(t)}}a(s_,"editorVersionHeaders");var Qgn="Iv1.b507a08c87ecfe98",I7o="350ee525b5da0e4a54c6e8e043edc1b99cc02f19",$ce="Ov23liV9UpD7Rnfnskm3",x7o="5509a52e4c525cd594a6fba9147ff6cc2388dd9f",w7o={[Qgn]:I7o,[$ce]:x7o},ih=class{static{a(this,"GitHubAppInfo")}findAppIdToAuthenticate(){return this.githubAppId??Qgn}findAppSecretToAuthenticate(){let e=this.findAppIdToAuthenticate(),r=w7o[e];if(!r)throw new Error(`GitHubAppInfo: No app secret found for app ID: ${e}`);return r}};function qgn(t){return kt(t,ze.AuthTokenEncryption)==="false"}a(qgn,"isAuthTokenEncryptionDisabled");p();var zgn=fe(require("node:crypto"));var rq=new pe("KeytarMasterKey"),Ggn="copilot-language-server",$gn="oauth-token-key",Vgn=5e3,Ygn=32,g9t;function P7o(t){return g9t??=D7o(t).finally(()=>{g9t=void 0}),g9t}a(P7o,"resolveMasterKey");async function D7o(t){rq.info(t,"keytar-master-key: resolving master key");let e;try{e=await y9t.loadKeytar(),rq.info(t,"keytar-master-key: module loaded")}catch(n){return rq.warn(t,"keytar-master-key: @github/keytar failed to load",n),{diagnostics:A9t("loadModule",n)}}let r;try{r=await M7o(t,e)}catch(n){return n instanceof YWe?(rq.error(t,"keytar-master-key: existing entry is corrupt; refusing to overwrite",n),{diagnostics:A9t("corruptExistingEntry",n)}):(rq.warn(t,"keytar-master-key: master-key resolution failed",n),{diagnostics:A9t("getOrCreateMasterKey",n)})}return rq.info(t,`keytar-master-key: resolved (source=${r.source})`),{masterKey:r.key,diagnostics:{available:!0,masterKeySource:r.source}}}a(D7o,"doResolveMasterKey");function N7o(){return Promise.resolve().then(()=>fe(Hgn()))}a(N7o,"loadKeytar");var y9t={resolveMasterKey:P7o,loadKeytar:N7o};async function M7o(t,e){let r=await Wgn(e.getPassword(Ggn,$gn),Vgn,"getMasterKey");if(rq.info(t,`keytar-master-key: getPassword returned (found=${r!=null})`),r){let o=O7o(r);if(o)return{key:o,source:"useExisting"};throw new YWe}let n=zgn.randomBytes(Ygn);return await Wgn(e.setPassword(Ggn,$gn,n.toString("base64")),Vgn,"setMasterKey"),rq.info(t,"keytar-master-key: setPassword (new key) completed"),{key:n,source:"createNew"}}a(M7o,"getOrCreateMasterKey");function Wgn(t,e,r){return new Promise((n,o)=>{let s=setTimeout(()=>o(new Error(`${r}: timeout after ${e}ms`)),e);s.unref?.(),t.then(c=>{clearTimeout(s),n(c)},c=>{clearTimeout(s),o(c instanceof Error?c:new Error(`${r}: ${String(c)}`))})})}a(Wgn,"withTimeout");var YWe=class extends Error{static{a(this,"CorruptMasterKeyError")}constructor(){super("keytar master-key entry present but undecodable"),this.name="CorruptMasterKeyError"}};function A9t(t,e){return{available:!1,errorPhase:t,error:e}}a(A9t,"unavailable");function O7o(t){let e=Buffer.from(t,"base64");return e.length===Ygn?e:void 0}a(O7o,"decodeMasterKey");p();var sue=fe(require("node:crypto"));var L7o=0,v9t=1,DK=class extends Error{constructor(r,n,o){super(r,o?.cause!==void 0?{cause:o.cause}:void 0);this.kind=n;this.name="SecretUnwrapError"}static{a(this,"SecretUnwrapError")}},JWe=class{static{a(this,"SecretCodec")}},E9t=class extends JWe{constructor(){super(...arguments);this.schemaVersion=L7o}static{a(this,"PlaintextCodec")}encode(r){return Buffer.from(r,"utf8")}decode(r){return Buffer.from(r).toString("utf8")}},KWe=12,_9t=16,Kgn=32,ZWe=class extends JWe{constructor(r){super();this.key=r;this.schemaVersion=v9t;if(r.length!==Kgn)throw new Error(`AesGcmCodec requires a ${Kgn}-byte key, got ${r.length}`)}static{a(this,"AesGcmCodec")}encode(r){let n=sue.randomBytes(KWe),o=sue.createCipheriv("aes-256-gcm",this.key,n),s=Buffer.concat([o.update(Buffer.from(r,"utf8")),o.final()]);return Buffer.concat([n,s,o.getAuthTag()])}decode(r){let n=Buffer.from(r);if(n.length<KWe+_9t)throw new DK("decode: v1 ciphertext too short","malformed");let o=n.subarray(0,KWe),s=n.subarray(n.length-_9t),c=n.subarray(KWe,n.length-_9t);try{let l=sue.createDecipheriv("aes-256-gcm",this.key,o);return l.setAuthTag(s),Buffer.concat([l.update(c),l.final()]).toString("utf8")}catch(l){throw new DK("decode: AES-GCM verification failed","tagMismatch",{cause:l})}}},tF=class t{constructor(e){this.readers=new Map;this.writer=e,this.readers.set(e.schemaVersion,e)}static{a(this,"SecretStorage")}addReader(e){this.readers.set(e.schemaVersion,e)}setWriter(e){this.writer=e,this.readers.set(e.schemaVersion,e)}wrap(e){return{schemaVersion:this.writer.schemaVersion,ciphertext:this.writer.encode(e)}}unwrap(e){let r=this.readers.get(e.schemaVersion);if(!r)throw new DK(`unwrap: unknown schemaVersion ${e.schemaVersion}`,"unknownVersion");return r.decode(e.ciphertext)}static plaintextOnly(){return new t(new E9t)}};p();p();function Jgn(t){return{upsertToken:t.prepare(`
|
|
1944
|
+
] @statement`}};var MO=class{constructor(e,r,n){this.languageId=e;this.prefix=r;this.completion=n}static{a(this,"BlockTrimmer")}static isSupported(e){return g0.isSupported(e)}static isTrimmedByDefault(e){return g0.isTrimmedByDefault(e)}async withParsedStatementTree(e){var n=[];try{let r=mDt(n,g0.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{gDt(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 WWe=class extends MO{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 Ogn(t,e){var l=[];try{let r=t.getText();let n=t.offsetAt(e);let o=mDt(l,g0.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,f=!0}finally{gDt(l,d,f)}}a(Ogn,"getBlockPositionType");p();function o7o(t){return t.HTTPS_PROXY||t.https_proxy||t.HTTP_PROXY||t.http_proxy}a(o7o,"getProxyFromEnvironment");function s7o(t){return t.NODE_TLS_REJECT_UNAUTHORIZED!=="0"}a(s7o,"getRejectUnauthorizedFromEnvironment");var Lgn=b.Object({proxy:b.Optional(b.String()),proxyStrictSSL:b.Optional(b.Boolean()),proxyAuthorization:b.Optional(b.String()),proxyKerberosServicePrincipal:b.Optional(b.String()),noProxy:b.Optional(b.Array(b.String()))});function Bgn(t){let e=o7o(t),r=Mxe({proxy:e,proxyStrictSSL:s7o(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(Bgn,"getHttpSettingsFromEnvironment");function Mxe(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||a7o(n,o),noProxy:t.noProxy||[]}}catch{return{...t,proxy:""}}}a(Mxe,"normalizeHttpSettings");function a7o(t,e){return!t||!e?"":`${decodeURIComponent(t)}:${decodeURIComponent(e)}`}a(a7o,"getAuth");var Oxe={};Ti(Oxe,{anthropicClaude:()=>m7o,build:()=>f7o,buildType:()=>p7o,default:()=>v7o,dependencies:()=>y7o,description:()=>u7o,devDependencies:()=>A7o,displayName:()=>l7o,engines:()=>h7o,name:()=>c7o,overrides:()=>_7o,overridesComments:()=>E7o,scripts:()=>g7o,version:()=>d7o});var c7o="copilot",l7o="GitHub Copilot",u7o="Your AI pair programmer",d7o="1.527.2",f7o="87",p7o="prod",h7o={node:">=22.13.0",npm:">=11.6.0 <12.0.0"},m7o={cliPackageVersion:"2.1.159"},g7o={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:overrides":"tsx script/checkOverridesDocumented.ts","lint:prettier":"prettier --check . 2>&1","lint:types":"tsc --noEmit",inspect_auth_db:"tsx script/inspectAuthDb.ts",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}" "script/**/*.test.{ts,tsx}" --exclude "lib/src/**/*.int.test.ts"',"test:lib-int":'mocha "lib/src/**/*.int.test.ts"',"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:pkg-runtime":"tsx script/smokeCopilotRuntimePkg.ts","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"},A7o={"@azure/identity":"^4.13.1","@azure/keyvault-secrets":"^4.11.2","@github/prettier-config":"0.0.6","@limegrass/eslint-plugin-import-alias":"^1.6.1","@types/crypto-js":"^4.2.2","@types/diff":"^8.0.0","@types/git-url-parse":"^16.0.2","@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.13.0","@types/semver":"^7.7.1","@types/sinon":"^22.0.0","@types/toposort":"^2.0.7","@types/vscode":"1.125.0","@types/which":"^3.0.0","@types/yargs":"^17.0.35","@vscode/tree-sitter-wasm":"0.0.5-php.2","@yao-pkg/pkg":"^6.21.0",boxen:"^8.0.1",chalk:"^5.6.2","dependency-cruiser":"^18.1.0",esbuild:"^0.28.1","esbuild-plugin-copy":"^2.1.1",eslint:"^9.39.5","eslint-formatter-visualstudio":"^9.0.1","eslint-plugin-mocha":"^10.5.0",globals:"^17.8.0","js-yaml":"^4.2.0",mocha:"^11.7.6","mocha-junit-reporter":"^2.2.1","mocha-multi-reporters":"^1.5.1","npm-run-all":"^4.1.5",openai:"^6.49.0",prettier:"^3.5.3","prettier-plugin-organize-imports":"^4.2.0","simple-git":"^3.36.0",sinon:"^22.1.0","tree-sitter-bash":"^0.23.0","tree-sitter-powershell":"0.25.9","ts-dedent":"^2.3.0",tsx:"^4.23.1",typescript:"^5.9.3","typescript-eslint":"^8.39.1","vscode-dts":"^0.3.3"},y7o={"@adobe/helix-fetch":"github:devm33/helix-fetch#2a08fa939591a0e14f34f611adcc3ed767579e9a","@agentclientprotocol/sdk":"^0.22.1","@anthropic-ai/claude-agent-sdk":"0.3.159","@anthropic-ai/sdk":"^0.98.0","@github/copilot":"^1.0.70","@github/copilot-sdk":"^1.0.6-preview.1","@github/keytar":"7.10.6","@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.11","@microsoft/mxc-sdk":"0.7.0","@modelcontextprotocol/sdk":"^1.29.0","@octokit/graphql":"^9.0.3","@octokit/rest":"^22.0.1","@parcel/watcher":"^2.6.0","@sinclair/typebox":"^0.34.52","@vscode/chat-lib":"^0.57.0","@vscode/codicons":"^0.0.45","@vscode/deviceid":"github:ghc-jetbrains/vscode-deviceid#f0e5738cd362ef20a09aeb30c3a8be99a9a710f5","@vscode/policy-watcher":"^1.4.0","@vscode/prompt-tsx":"^0.4.0-alpha.9","@vscode/webview-ui-toolkit":"^1.3.1","crypto-js":"^4.2.0",diff:"^9.0.0",dldr:"^0.0.10",events:"^3.3.0","git-url-parse":"^16.1.0",glob:"^11.1.0","jsonc-parser":"^3.3.1",kerberos:"^2.2.0","mac-ca":"^3.1.3","markdown-it":"^14.3.0",minimatch:"^10.2.6",open:"^10.2.0",semver:"^7.8.5",shiki:"~1.15.0","source-map-support":"^0.5.21",toposort:"^2.0.2",undici:"^7.29.0",uuid:"^14.0.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",which:"^7.0.0","windows-ca-certs":"^0.2.2",ws:"^8.21.1",yargs:"^18.1.0"},_7o={fsevents:"<0","@github/copilot-linuxmusl-arm64":"<0","@github/copilot-linuxmusl-x64":"<0",bindings:"npm:bundled-bindings@^1.5.0",jws:"^3.2.3",tar:"7.5.11","serialize-javascript":"^7.0.5",uuid:"^14.0.0","ip-address":"^10.1.1","fast-uri":"^3.1.4"},E7o={"//":"Rationale for each entry in `overrides`. Required by `npm run lint:overrides` (script/checkOverridesDocumented.ts). Each value should cover: why (CVE/GHSA or build-hack reason), which direct dep pulls in the vulnerable transitive, and the remove-when condition.",fsevents:"Build hack: macOS-only optional native dep; '<0' is an impossible semver that force-skips install on Linux/Windows pkg builds. Permanent \u2014 keep until @yao-pkg/pkg handles macOS-only optionalDependencies natively. See commit d635096c.","@github/copilot-linuxmusl-arm64":"Build hack: @github/copilot declares a Linux musl optional runtime package, but CLS does not support musl. '<0' prevents npm from installing the unsupported runtime. Drop only if CLS adds musl support.","@github/copilot-linuxmusl-x64":"Build hack: @github/copilot declares a Linux musl optional runtime package, but CLS does not support musl. '<0' prevents npm from installing the unsupported runtime. Drop only if CLS adds musl support.",bindings:"Build hack: alias to bundled-bindings fork that resolves .node native addon paths after pkg/esbuild bundling. Required by kerberos. Drop when upstream `bindings` adopts platform-specific path resolution. See commits c4461665 and b55ece83.",jws:"CVE GHSA-869p-cjfg-cm3x (Improperly Verifies HMAC Signature). Pulled in by jsonwebtoken-family deps. Drop when all transitive consumers pin jws >= 3.2.3. See commit 2b5dc766.",tar:"CVE GHSA-9ppj-qmqm-q256 + GHSA-qffp-2rhf-9h96 (Symlink/Hardlink Path Traversal via Drive-Relative Linkpath). Pulled in by node-gyp / native-build deps. Drop when transitive consumers bump tar >= 7.5.11. See commit e2dff0f3.","serialize-javascript":"CVE GHSA-5c6j-r48x-rmvq (RCE via RegExp.flags / Date.toISOString) + GHSA-qj8w-gfj5-8c6v (ReDoS). Pulled in by mocha 11.x (^6.0.2). Dev-only. Drop when mocha bumps to a release that carries serialize-javascript >= 7.0.3. See commit d49f75fd.",uuid:"CVE GHSA-w5hq-g745-h8pq (missing buffer bounds checks in v3/v5/v6). Pulled in by msal-node and @vscode/deviceid as uuid 8.x/9.x. Drop when both upgrade to uuid >= 14. Dependabot alert #128. See commit 6315f3f8.","ip-address":"CVE GHSA-v2v4-37r5-5v8g (XSS in Address6 HTML-emitting methods: group/link/spanAll and AddressError.parseMessage). Pulled in by @modelcontextprotocol/sdk -> express-rate-limit. Not exploitable here (we don't render HTML or call the affected methods), but the override clears the alert. Drop when express-rate-limit bumps to a release carrying ip-address >= 10.1.1. Dependabot alert #129. See PR #854.","fast-uri":"CVE-2026-6321 GHSA-q3j6-qgpj-74h6 (host confusion via percent-encoded authority delimiters) + CVE-2026-6322 GHSA-v39h-62p7-jpjc (path traversal via percent-encoded dot segments). Pulled in by @modelcontextprotocol/sdk -> ajv -> fast-uri. Drop when ajv bumps to a release carrying fast-uri >= 3.1.2. Dependabot alerts #132, #133."},v7o={name:c7o,displayName:l7o,description:u7o,version:d7o,build:f7o,buildType:p7o,engines:h7o,anthropicClaude:m7o,scripts:g7o,devDependencies:A7o,dependencies:y7o,overrides:_7o,overridesComments:E7o};var ze={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",EditorHandlesAllConfirmation:"agent.editorHandlesAllConfirmation",MaxToolCallingLoop:"agent.maxToolCallingLoop",AutoCompress:"agent.autoCompress",AnthropicThinkingBudgetToken:"agent.anthropicThinkingBudgetToken",EnableSkills:"agent.enableSkills",EnableHooks:"agent.enableHooks",EnableSandbox:"agent.sandbox.enabled",SandboxAddCurrentWorkingDirectory:"agent.sandbox.addCurrentWorkingDirectory",SandboxUserPolicy:"agent.sandbox.userPolicy",EnablePlugins:"agent.enablePlugins",EnableCustomAgents:"agent.enableCustomAgents",EnableOrgCustomAgents:"agent.enableOrgCustomAgents",UseAgentsMd:"agent.useAgentsMdFile",UseNestedAgentsMd:"agent.useNestedAgentsMdFiles",UseClaudeMd:"agent.useClaudeMdFile",UseNestedClaudeMd:"agent.useNestedClaudeMdFiles",CompletionsDelay:"completionsDelay",CompletionsDebounce:"completionsDebounce",EnableThinking:"agent.enableThinking",TranscriptDirectory:"agent.transcriptDirectory",AgentDebugLogsDirectory:"agent.agentDebugLogsDirectory",ClaudeCliPath:"agent.claude.cliPath",CodexCliPath:"agent.codex.cliPath",OtelEnabled:"agent.otel.enabled",OtelEndpoint:"agent.otel.otlpEndpoint",OtelCaptureContent:"agent.otel.captureContent",OtelExporterType:"agent.otel.exporterType",OtelProtocol:"agent.otel.protocol",OtelOutfile:"agent.otel.outfile",OtelServiceName:"agent.otel.serviceName",OtelResourceAttributes:"agent.otel.resourceAttributes",NESExtendedRange:"nextEditSuggestions.extendedRange",NESEagerness:"nextEditSuggestions.eagerness",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",NESModelConfiguration:"internal.nesModelConfiguration",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",UseHelixFetcher:"internal.useHelixFetcher",EnableMapCodeFallback:"internal.enableMapCodeFallback",SearchAgent:"internal.searchAgent",PerfEnabled:"internal.perf.enabled",AuthTokenEncryption:"internal.auth.tokenEncryption",EnableWorkspaceIndex:"workspaceIndex.enabled"};function Fgn(t){return["server","parsingandserver"].includes(t)}a(Fgn,"shouldDoServerTrimming");var t2=class{static{a(this,"BlockModeConfig")}},iue=class extends t2{static{a(this,"ConfigBlockModeConfig")}forLanguage(e,r,n){let o=e.get(tr).overrideBlockMode(n);if(o)return m9t(o,r);let s=e.get(tr).enableProgressiveReveal(n);return(kt(e,ze.AlwaysRequestMultiline)??s)||MO.isTrimmedByDefault(r)?m9t("moremultiline",r):r=="ruby"?"parsing":tT(r)?"parsingandserver":"server"}};function C7o(t){return["parsing","parsingandserver","moremultiline"].includes(t)}a(C7o,"blockModeRequiresTreeSitter");function m9t(t,e){return t==="moremultiline"&&g0.isSupported(e)?t:C7o(t)&&!tT(e)?"server":t}a(m9t,"toApplicableBlockMode");var Qo=class{static{a(this,"ConfigProvider")}requireReady(){return Promise.resolve()}},oue=class extends Qo{constructor(){super(...arguments);this.onDidChangeCopilotSettings=a(()=>({dispose:a(()=>{},"dispose")}),"onDidChangeCopilotSettings");this.onDidChangeHttpSettings=this.onDidChangeCopilotSettings}static{a(this,"DefaultsOnlyConfigProvider")}getConfig(r){return b7o(r)}getOptionalConfig(r){return S7o(r)}dumpForTelemetry(){return{}}getExplicitlySetConfigs(){return new Map}getHttpSettings(){return{proxy:""}}},PK=class extends Qo{constructor(r,n){super();this.baseConfigProvider=r;this.overrides=n;this.copilotEmitter=new Ji;this.onDidChangeCopilotSettings=this.copilotEmitter.event;this.didChangeHttpSettingsEmitter=new Ji;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=Mxe(r);this.httpSettings=n,this.didChangeHttpSettingsEmitter.fire(this.getHttpSettings())}dumpForTelemetry(){let r=this.baseConfigProvider.dumpForTelemetry();for(let n of[ze.ShowEditorCompletions,ze.EnableAutoCompletions,ze.DelayCompletions,ze.FilterCompletions]){let o=this.overrides.get(n);o!==void 0&&(r[n]=JSON.stringify(o))}return r}};function Ugn(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(Ugn,"getConfigKeyRecursively");function b7o(t){if(zWe.has(t))return zWe.get(t);throw new Error(`Missing config default value: ${_Dt}.${t}`)}a(b7o,"getConfigDefaultForKey");function S7o(t){return zWe.get(t)}a(S7o,"getOptionalConfigDefaultForKey");function Lxe(t){return t.get(Qo).getExplicitlySetConfigs()}a(Lxe,"getExplicitlySetConfigs");var T7o={[ze.DebugOverrideCppHeadersEnableSwitch]:!1,[ze.RelatedFilesVSCodeCSharp]:!1,[ze.RelatedFilesVSCodeTypeScript]:!1,[ze.RelatedFilesVSCode]:!1,[ze.IncludeNeighboringFiles]:!1,[ze.ExcludeRelatedFiles]:!1,[ze.ContextProviders]:[],[ze.DebugUseEditorFetcher]:null,[ze.DebugUseElectronFetcher]:null,[ze.DebugOverrideLogLevels]:{},[ze.DebugSnippyOverrideUrl]:"",[ze.AgentDebugLogsDirectory]:void 0,[ze.ClaudeCliPath]:void 0,[ze.CodexCliPath]:void 0,[ze.OtelEnabled]:!1,[ze.OtelEndpoint]:void 0,[ze.OtelCaptureContent]:!1,[ze.OtelExporterType]:"otlp-http",[ze.OtelProtocol]:"",[ze.OtelOutfile]:"",[ze.OtelServiceName]:"",[ze.OtelResourceAttributes]:{},[ze.FetchStrategy]:"auto",[ze.ToolConfirmAutoApprove]:!1,[ze.AutoApproveUnmatchedTerminal]:void 0,[ze.AutoApproveUnmatchedFileOp]:void 0,[ze.TrustToolAnnotations]:!1,[ze.AutoApproveYoloMode]:!1,[ze.EditorHandlesAllConfirmation]:!1,[ze.MaxToolCallingLoop]:25,[ze.AutoCompress]:!1,[ze.AnthropicThinkingBudgetToken]:1024,[ze.EnableSkills]:!1,[ze.EnableHooks]:!1,[ze.EnableSandbox]:!1,[ze.SandboxAddCurrentWorkingDirectory]:void 0,[ze.SandboxUserPolicy]:void 0,[ze.EnablePlugins]:!1,[ze.EnableCustomAgents]:!0,[ze.EnableOrgCustomAgents]:!0,[ze.UseAgentsMd]:!1,[ze.UseNestedAgentsMd]:!1,[ze.UseClaudeMd]:!1,[ze.UseNestedClaudeMd]:!1,[ze.UseSubsetMatching]:null,[ze.ContextProviderTimeBudget]:void 0,[ze.DebugOverrideCapiUrl]:"",[ze.DebugTestOverrideCapiUrl]:"",[ze.DebugOverrideProxyUrl]:"",[ze.DebugTestOverrideProxyUrl]:"",[ze.DebugOverrideEngine]:"",[ze.AlwaysRequestMultiline]:void 0,[ze.ModelAlwaysTerminatesSingleline]:void 0,[ze.TrimCompletionsAggressively]:void 0,[ze.CompletionsDebounce]:void 0,[ze.NESXTab]:void 0,[ze.UseWorkspaceContextCoordinator]:void 0,[ze.ShowWorkspaceContextDebugger]:!1,[ze.CompletionsDelay]:void 0,[ze.UseSplitContextPrompt]:void 0,[ze.UseCompletionsComparisonPanel]:void 0,[ze.ComparisonPanelModelIds]:void 0,[ze.ComparisonPanelRandomizedMode]:void 0,[ze.UseFetchFetcher]:void 0,[ze.UseChatLibCompletions]:void 0,[ze.TranscriptDirectory]:void 0,[ze.EnableThinking]:!0,[ze.ShowEditorCompletions]:void 0,[ze.EnableAutoCompletions]:void 0,[ze.DelayCompletions]:void 0,[ze.FilterCompletions]:void 0,[ze.Enable]:{"*":!0,plaintext:!1,markdown:!1,scminput:!1},[ze.UserSelectedCompletionModel]:"",[ze.DebugFilterLogCategories]:[],[ze.DebugOverrideEngineLegacy]:"",[ze.DebugTestOverrideProxyUrlLegacy]:"",[ze.DebugOverrideProxyUrlLegacy]:"",[ze.DebugTestOverrideCapiUrlLegacy]:"",[ze.DebugOverrideCapiUrlLegacy]:"",[ze.HookErrorOccurredStackTrace]:!1,[ze.NESUseExplicitRejection]:!1,[ze.NESModelConfiguration]:void 0,[ze.AppendPromptTokenCache]:"",[ze.PromptPersistBasePath]:void 0,[ze.AnthropicMessagesEndpoint]:"",[ze.UseHelixFetcher]:"",[ze.EnableMapCodeFallback]:"enabled",[ze.SearchAgent]:"",[ze.PerfEnabled]:"",[ze.NESExtendedRange]:!1,[ze.NESEagerness]:"auto",[ze.AuthTokenEncryption]:"",[ze.EnableWorkspaceIndex]:!1},zWe=new Map(Object.entries(T7o));for(let t of Object.values(ze))if(!zWe.has(t))throw new Error(`Missing config default value ${_Dt}.${t}`);function kt(t,e){return t.get(Qo).getConfig(e)}a(kt,"getConfig");function XE(t){let e=kt(t,ze.EnableWorkspaceIndex);return e===!0||e==="true"}a(XE,"isSemanticSearchEnabled");function Rtn(t){return t.get(Qo).dumpForTelemetry()}a(Rtn,"dumpForTelemetry");var As=class{constructor(){this.packageJson=Oxe}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 SOt(t){return t.get(As).isProduction()}a(SOt,"isProduction");function Msn(t){return t.get(As).getBuildType()==="dev"}a(Msn,"isDevBuild");function _7(t){return t.get(As).getBuildType()}a(_7,"getBuildType");function ktn(t){return t.get(As).getBuild()}a(ktn,"getBuild");function A1(t){return t.get(As).getVersion()}a(A1,"getVersion");var za=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 o1({name:t,version:e}){return`${t}/${e}`}a(o1,"formatNameAndVersion");var Ir=class{static{a(this,"EditorAndPluginInfo")}getCopilotIntegrationId(){}getEditorPluginSpecificFilters(){return[]}getEditorIdentity(){return I$r({editor:this.getEditorInfo(),plugin:this.getEditorPluginInfo()})}isEditorPluginInfoKnown(){return!0}};function AWe(t){let e=t.getCopilotIntegrationId();if(e)return e;switch(t.getEditorPluginInfo().name){case"copilot-intellij":return"jetbrains-chat";case"copilot":case"copilot-vs":return;default:return"jetbrains-chat"}}a(AWe,"getIntegrationId");function s_(t){let e=t.get(Ir);return{"Editor-Version":o1(e.getEditorInfo()),"Editor-Plugin-Version":o1(e.getEditorPluginInfo()),"Copilot-Language-Server-Version":A1(t)}}a(s_,"editorVersionHeaders");var Qgn="Iv1.b507a08c87ecfe98",I7o="350ee525b5da0e4a54c6e8e043edc1b99cc02f19",$ce="Ov23liV9UpD7Rnfnskm3",x7o="5509a52e4c525cd594a6fba9147ff6cc2388dd9f",w7o={[Qgn]:I7o,[$ce]:x7o},ih=class{static{a(this,"GitHubAppInfo")}findAppIdToAuthenticate(){return this.githubAppId??Qgn}findAppSecretToAuthenticate(){let e=this.findAppIdToAuthenticate(),r=w7o[e];if(!r)throw new Error(`GitHubAppInfo: No app secret found for app ID: ${e}`);return r}};function qgn(t){return kt(t,ze.AuthTokenEncryption)==="false"}a(qgn,"isAuthTokenEncryptionDisabled");p();var zgn=fe(require("node:crypto"));var rq=new pe("KeytarMasterKey"),Ggn="copilot-language-server",$gn="oauth-token-key",Vgn=5e3,Ygn=32,g9t;function P7o(t){return g9t??=D7o(t).finally(()=>{g9t=void 0}),g9t}a(P7o,"resolveMasterKey");async function D7o(t){rq.info(t,"keytar-master-key: resolving master key");let e;try{e=await y9t.loadKeytar(),rq.info(t,"keytar-master-key: module loaded")}catch(n){return rq.warn(t,"keytar-master-key: @github/keytar failed to load",n),{diagnostics:A9t("loadModule",n)}}let r;try{r=await M7o(t,e)}catch(n){return n instanceof YWe?(rq.error(t,"keytar-master-key: existing entry is corrupt; refusing to overwrite",n),{diagnostics:A9t("corruptExistingEntry",n)}):(rq.warn(t,"keytar-master-key: master-key resolution failed",n),{diagnostics:A9t("getOrCreateMasterKey",n)})}return rq.info(t,`keytar-master-key: resolved (source=${r.source})`),{masterKey:r.key,diagnostics:{available:!0,masterKeySource:r.source}}}a(D7o,"doResolveMasterKey");function N7o(){return Promise.resolve().then(()=>fe(Hgn()))}a(N7o,"loadKeytar");var y9t={resolveMasterKey:P7o,loadKeytar:N7o};async function M7o(t,e){let r=await Wgn(e.getPassword(Ggn,$gn),Vgn,"getMasterKey");if(rq.info(t,`keytar-master-key: getPassword returned (found=${r!=null})`),r){let o=O7o(r);if(o)return{key:o,source:"useExisting"};throw new YWe}let n=zgn.randomBytes(Ygn);return await Wgn(e.setPassword(Ggn,$gn,n.toString("base64")),Vgn,"setMasterKey"),rq.info(t,"keytar-master-key: setPassword (new key) completed"),{key:n,source:"createNew"}}a(M7o,"getOrCreateMasterKey");function Wgn(t,e,r){return new Promise((n,o)=>{let s=setTimeout(()=>o(new Error(`${r}: timeout after ${e}ms`)),e);s.unref?.(),t.then(c=>{clearTimeout(s),n(c)},c=>{clearTimeout(s),o(c instanceof Error?c:new Error(`${r}: ${String(c)}`))})})}a(Wgn,"withTimeout");var YWe=class extends Error{static{a(this,"CorruptMasterKeyError")}constructor(){super("keytar master-key entry present but undecodable"),this.name="CorruptMasterKeyError"}};function A9t(t,e){return{available:!1,errorPhase:t,error:e}}a(A9t,"unavailable");function O7o(t){let e=Buffer.from(t,"base64");return e.length===Ygn?e:void 0}a(O7o,"decodeMasterKey");p();var sue=fe(require("node:crypto"));var L7o=0,v9t=1,DK=class extends Error{constructor(r,n,o){super(r,o?.cause!==void 0?{cause:o.cause}:void 0);this.kind=n;this.name="SecretUnwrapError"}static{a(this,"SecretUnwrapError")}},JWe=class{static{a(this,"SecretCodec")}},E9t=class extends JWe{constructor(){super(...arguments);this.schemaVersion=L7o}static{a(this,"PlaintextCodec")}encode(r){return Buffer.from(r,"utf8")}decode(r){return Buffer.from(r).toString("utf8")}},KWe=12,_9t=16,Kgn=32,ZWe=class extends JWe{constructor(r){super();this.key=r;this.schemaVersion=v9t;if(r.length!==Kgn)throw new Error(`AesGcmCodec requires a ${Kgn}-byte key, got ${r.length}`)}static{a(this,"AesGcmCodec")}encode(r){let n=sue.randomBytes(KWe),o=sue.createCipheriv("aes-256-gcm",this.key,n),s=Buffer.concat([o.update(Buffer.from(r,"utf8")),o.final()]);return Buffer.concat([n,s,o.getAuthTag()])}decode(r){let n=Buffer.from(r);if(n.length<KWe+_9t)throw new DK("decode: v1 ciphertext too short","malformed");let o=n.subarray(0,KWe),s=n.subarray(n.length-_9t),c=n.subarray(KWe,n.length-_9t);try{let l=sue.createDecipheriv("aes-256-gcm",this.key,o);return l.setAuthTag(s),Buffer.concat([l.update(c),l.final()]).toString("utf8")}catch(l){throw new DK("decode: AES-GCM verification failed","tagMismatch",{cause:l})}}},tF=class t{constructor(e){this.readers=new Map;this.writer=e,this.readers.set(e.schemaVersion,e)}static{a(this,"SecretStorage")}addReader(e){this.readers.set(e.schemaVersion,e)}setWriter(e){this.writer=e,this.readers.set(e.schemaVersion,e)}wrap(e){return{schemaVersion:this.writer.schemaVersion,ciphertext:this.writer.encode(e)}}unwrap(e){let r=this.readers.get(e.schemaVersion);if(!r)throw new DK(`unwrap: unknown schemaVersion ${e.schemaVersion}`,"unknownVersion");return r.decode(e.ciphertext)}static plaintextOnly(){return new t(new E9t)}};p();p();function Jgn(t){return{upsertToken:t.prepare(`
|
|
1945
1945
|
INSERT INTO oauth_tokens (
|
|
1946
1946
|
auth_authority, oauth_client_id, user_login, scopes,
|
|
1947
1947
|
token_ciphertext, token_schema_version, source_editor_id,
|
|
@@ -3849,7 +3849,7 @@ Respond in the following locale: ${e}`),n.join(`
|
|
|
3849
3849
|
`),this._sseClients.add(e),gD.debug(this._ctx,`[session ${this.id}] SSE client attached (total: ${this._sseClients.size})`),e.on("close",()=>{this._sseClients.delete(e),gD.debug(this._ctx,`[session ${this.id}] SSE client detached (total: ${this._sseClients.size})`)})}async handleIncoming(e){let r=Array.isArray(e)?e:[e],n=[];for(let o of r)Ldt(o)?n.push(await this._dispatchRequest(o)):vni(o)?this._dispatchNotification(o):gD.warn(this._ctx,`[session ${this.id}] ignored unsupported inbound frame`);return n}dispose(){if(!this._disposed){this._disposed=!0;for(let e of this._inFlightToolCalls.values())e.abort("MCP gateway session disposed");this._inFlightToolCalls.clear(),gD.info(this._ctx,`[session ${this.id}] disposing (SSE clients: ${this._sseClients.size})`);for(let e of this._sseClients)e.destroyed||e.end();this._sseClients.clear(),this._invoker.off(El.ToolsListChanged,this._onToolsListChanged),this._invoker.off(El.ResourcesListChanged,this._onResourcesListChanged),this._invoker.off(El.PromptsListChanged,this._onPromptsListChanged),this._invoker.off(El.LoggingMessage,this._onLoggingMessage),this._onDidDispose()}}async _dispatchRequest(e){gD.debug(this._ctx,`[session ${this.id}] <-- request: ${e.method} (id=${String(e.id)})`);try{let r=await this._handleRequest(e);return{jsonrpc:"2.0",id:e.id,result:r}}catch(r){return r instanceof Yb?{jsonrpc:"2.0",id:e.id,error:{code:r.code,message:r.message,data:r.data}}:(gD.error(this._ctx,`[session ${this.id}] request '${e.method}' failed`,r),{jsonrpc:"2.0",id:e.id,error:{code:Kb.InternalError,message:r instanceof Error?r.message:String(r)}})}}async _handleRequest(e){if(this._disposed)throw new Yb(Kb.InvalidRequest,"Session is disposed");if(e.method==="initialize")return this._handleInitialize(e);if(!this._isInitialized)throw new Yb(Kb.InvalidRequest,"Session is not initialized");switch(e.method){case"ping":return{};case"tools/list":return this._invoker.listTools();case"tools/call":return this._handleCallTool(e);case"resources/list":return this._invoker.listResources();case"resources/read":return this._handleReadResource(e);case"resources/templates/list":return this._invoker.listResourceTemplates();case"prompts/list":return this._invoker.listPrompts();case"prompts/get":return this._handleGetPrompt(e);case"logging/setLevel":return this._handleSetLoggingLevel(e);default:throw new Yb(Kb.MethodNotFound,`Method not found: ${e.method}`)}}_handleInitialize(e){let r=e.params&&typeof e.params=="object"?e.params:void 0,n=typeof r?.protocolVersion=="string"?r.protocolVersion:void 0,o=r?.clientInfo,s=n&&Dut.includes(n)?n:_R;return gD.info(this._ctx,`[session ${this.id}] initialize: client=${o?.name??"unknown"}/${o?.version??"?"}, clientProtocol=${n??"(none)"}, negotiated=${s}`),n&&n!==s&&gD.warn(this._ctx,`[session ${this.id}] unsupported client protocol version '${n}', falling back to '${s}'`),{protocolVersion:s,capabilities:{tools:{listChanged:!0},resources:{listChanged:!0},prompts:{listChanged:!0},logging:{}},serverInfo:{name:kMe,version:PMe}}}async _handleCallTool(e){let r=this._requireObjectParams(e);if(typeof r.name!="string")throw new Yb(Kb.InvalidParams,"Missing tool name");let n=r.arguments&&typeof r.arguments=="object"?r.arguments:{},o=r._meta&&typeof r._meta=="object"?r._meta:{},s=typeof o.progressToken=="string"||typeof o.progressToken=="number"?o.progressToken:void 0;if(this._inFlightToolCalls.has(e.id))throw new Yb(Kb.InvalidRequest,`Duplicate in-flight request id: ${String(e.id)}`);let c=new AbortController;this._inFlightToolCalls.set(e.id,c);try{return await this._invoker.callTool(r.name,n,{signal:c.signal,...s===void 0?{}:{onprogress:a(l=>this._broadcastIfReady({jsonrpc:"2.0",method:"notifications/progress",params:{...l,progressToken:s}}),"onprogress")}})}catch(l){throw c.signal.aborted||Sd(this._ctx,{message:`Error calling tool ${r.name}: ${l instanceof Error?l.message:String(l)}`,server:this._invoker.label}),l}finally{this._inFlightToolCalls.get(e.id)===c&&this._inFlightToolCalls.delete(e.id)}}_handleReadResource(e){let r=this._requireObjectParams(e);if(typeof r.uri!="string")throw new Yb(Kb.InvalidParams,"Missing resource uri");return this._invoker.readResource(r.uri)}_handleGetPrompt(e){let r=this._requireObjectParams(e);if(typeof r.name!="string")throw new Yb(Kb.InvalidParams,"Missing prompt name");let n=r.arguments&&typeof r.arguments=="object"?r.arguments:{};return this._invoker.getPrompt(r.name,n)}async _handleSetLoggingLevel(e){let r=this._requireObjectParams(e);if(typeof r.level!="string")throw new Yb(Kb.InvalidParams,"Missing logging level");return await this._invoker.setLoggingLevel({level:r.level}),{}}_requireObjectParams(e){if(!e.params||typeof e.params!="object")throw new Yb(Kb.InvalidParams,"Missing params");return e.params}_dispatchNotification(e){if(gD.debug(this._ctx,`[session ${this.id}] <-- notification: ${e.method}`),e.method==="notifications/initialized")this._isInitialized=!0,gD.info(this._ctx,`[session ${this.id}] initialized`);else if(e.method==="notifications/cancelled"){let r=e.params&&typeof e.params=="object"?e.params:{},n=r.requestId;if(typeof n=="string"||typeof n=="number"){let o=this._inFlightToolCalls.get(n);o&&!o.signal.aborted&&o.abort(typeof r.reason=="string"?r.reason:void 0)}}}_broadcastIfReady(e){!this._isInitialized||this._disposed||this._broadcast(e)}_broadcast(e){if(this._sseClients.size===0){gD.debug(this._ctx,`[session ${this.id}] no SSE clients, dropping ${e.method}`);return}let r=JSON.stringify(e),n=String(++this._lastEventId),o=r.split(/\r?\n/g),s=[`id: ${n}`,"event: message",...o.map(c=>`data: ${c}`),"",""].join(`
|
|
3850
3850
|
`);for(let c of[...this._sseClients]){if(c.destroyed||c.writableEnded){this._sseClients.delete(c);continue}c.write(s)}}};function Bni(t){let e=Array.isArray(t)?t[0]:t;return!!e&&typeof e.method=="string"&&e.method==="initialize"}a(Bni,"isInitializeMessage");p();p();var xii=fe(Tii(),1),Hdt=fe(require("node:process"),1),wii=require("node:stream");p();var jdt=class{static{a(this,"ReadBuffer")}append(e){this._buffer=this._buffer?Buffer.concat([this._buffer,e]):e}readMessage(){if(!this._buffer)return null;let e=this._buffer.indexOf(`
|
|
3851
3851
|
`);if(e===-1)return null;let r=this._buffer.toString("utf8",0,e).replace(/\r$/,"");return this._buffer=this._buffer.subarray(e+1),YXs(r)}clear(){this._buffer=void 0}};function YXs(t){return cG.parse(JSON.parse(t))}a(YXs,"deserializeMessage");function Iii(t){return JSON.stringify(t)+`
|
|
3852
|
-
`}a(Iii,"serializeMessage");var KXs=Hdt.default.platform==="win32"?["APPDATA","HOMEDRIVE","HOMEPATH","LOCALAPPDATA","PATH","PROCESSOR_ARCHITECTURE","SYSTEMDRIVE","SYSTEMROOT","TEMP","USERNAME","USERPROFILE","PROGRAMFILES"]:["HOME","LOGNAME","PATH","SHELL","TERM","USER"];function JXs(){let t={};for(let e of KXs){let r=Hdt.default.env[e];r!==void 0&&(r.startsWith("()")||(t[e]=r))}return t}a(JXs,"getDefaultEnvironment");var lge=class{static{a(this,"StdioClientTransport")}constructor(e){this._readBuffer=new jdt,this._stderrStream=null,this._serverParams=e,(e.stderr==="pipe"||e.stderr==="overlapped")&&(this._stderrStream=new wii.PassThrough)}async start(){if(this._process)throw new Error("StdioClientTransport already started! If using Client class, note that connect() calls start() automatically.");return new Promise((e,r)=>{this._process=(0,xii.default)(this._serverParams.command,this._serverParams.args??[],{env:{...JXs(),...this._serverParams.env},stdio:["pipe","pipe",this._serverParams.stderr??"inherit"],shell:!1,windowsHide:Hdt.default.platform==="win32",cwd:this._serverParams.cwd}),this._process.on("error",n=>{r(n),this.onerror?.(n)}),this._process.on("spawn",()=>{e()}),this._process.on("close",n=>{this._process=void 0,this.onclose?.()}),this._process.stdin?.on("error",n=>{this.onerror?.(n)}),this._process.stdout?.on("data",n=>{this._readBuffer.append(n),this.processReadBuffer()}),this._process.stdout?.on("error",n=>{this.onerror?.(n)}),this._stderrStream&&this._process.stderr&&this._process.stderr.pipe(this._stderrStream)})}get stderr(){return this._stderrStream?this._stderrStream:this._process?.stderr??null}get pid(){return this._process?.pid??null}processReadBuffer(){for(;;)try{let e=this._readBuffer.readMessage();if(e===null)break;this.onmessage?.(e)}catch(e){this.onerror?.(e)}}async close(){if(this._process){let e=this._process;this._process=void 0;let r=new Promise(n=>{e.once("close",()=>{n()})});try{e.stdin?.end()}catch{}if(await Promise.race([r,new Promise(n=>setTimeout(n,2e3).unref())]),e.exitCode===null){try{e.kill("SIGTERM")}catch{}await Promise.race([r,new Promise(n=>setTimeout(n,2e3).unref())])}if(e.exitCode===null)try{e.kill("SIGKILL")}catch{}}this._readBuffer.clear()}send(e){return new Promise(r=>{if(!this._process?.stdin)throw new Error("Not connected");let n=Iii(e);this._process.stdin.write(n)?r():this._process.stdin.once("drain",r)})}};var Rii=require("child_process"),kii=require("events"),Pii=require("util");var wgr=1e4,ZXs=(0,Pii.promisify)(Rii.exec),DMe=class{constructor(e){this._transport=null;this._emitter=new kii.EventEmitter;this._connected=!1;this.id=e.id,this.label=e.label,this._options=e,this._emitter.setMaxListeners(0),this._client=new yG({name:e.clientInfo.name,version:e.clientInfo.version},{capabilities:{}})}static{a(this,"StdioInvoker")}get isConnected(){return this._connected}async start(){if(this._connected)return;let e={...this._options.params,stderr:"pipe"},r=new lge(e);this._transport=r,this._client.onerror=n=>this._options.onError?.(n),this._client.onclose=()=>{this._connected=!1},r.stderr&&r.stderr.on("data",n=>{this._options.onStderr?.(n.toString())}),this._client.setNotificationHandler(j8,()=>{this._emitter.emit(El.ToolsListChanged)}),this._client.setNotificationHandler(Q8,()=>{this._emitter.emit(El.ResourcesListChanged)}),this._client.setNotificationHandler(q8,()=>{this._emitter.emit(El.PromptsListChanged)}),this._client.setNotificationHandler(mee,n=>{this._emitter.emit(El.LoggingMessage,n)}),await this._client.connect(r),this._connected=!0}async stop(){if(!this._transport){this._connected=!1;return}let e=this._transport;this._transport=null;let r=this._client.close().catch(()=>{}),n=await Promise.race([r.then(()=>!0),new Promise(s=>setTimeout(()=>s(!1),wgr))]),o;if("pid"in e&&typeof e.pid=="number"&&(o=e.pid),!n&&o===void 0&&this._options.onError?.(new Error(`stdio transport exposed no pid; cannot force-kill '${this.id}'`)),!n&&o!==void 0&&process.platform==="win32")try{await ZXs(`taskkill /pid ${o} /t /f`,{timeout:wgr})}catch{}else if(!n&&o!==void 0){try{process.kill(o,"SIGTERM")}catch{}await new Promise(s=>setTimeout(s,wgr));try{process.kill(o,"SIGKILL")}catch{}}this._connected=!1}listTools(){return this._client.listTools()}callTool(e,r,n){return this._client.callTool({name:e,arguments:r},CR,{...n,timeout:this._options.toolCallTimeoutMs,resetTimeoutOnProgress:n?.onprogress!==void 0})}listResources(){return this._client.listResources()}readResource(e){return this._client.readResource({uri:e})}listResourceTemplates(){return this._client.listResourceTemplates()}listPrompts(){return this._client.listPrompts()}getPrompt(e,r){return this._client.getPrompt({name:e,arguments:r})}async setLoggingLevel(e){await this._client.setLoggingLevel(e.level)}on(e,r){this._emitter.on(e,r)}off(e,r){this._emitter.off(e,r)}};p();var xm=class{static{a(this,"AuthenticationService")}};var aI=new pe("mcpGateway.manager");function Dii(t){if(!(t.allowedMcpServers===void 0&&t.deniedMcpServers===void 0))return{allowed:t.allowedMcpServers,denied:t.deniedMcpServers}}a(Dii,"selectManagedMcpSettings");var vG=class extends Error{constructor(r,n){super(n);this.code=r}static{a(this,"ServerActionError")}},XXs={tools:[],resources:[],resourceTemplates:[],prompts:[]},gy=class{constructor(e,r,n){this._entries=new Map;this._disposed=!1;this._applyChain=Promise.resolve();this._oauthChain=Promise.resolve();this._actionChains=new Map;this._ctx=e,this._service=r,this._sender=n,this._unregister=n,this._managedSettings=this._tryGetManagedSettings(),this._managedSettingsSub=this._managedSettings?.observe(Dii,()=>this._onMcpSettingsChanged())}static{a(this,"McpServerManager")}listServers(e){let r=[];for(let n of this._entries.values())rea(n.key.source,e)&&r.push({name:n.key.name,source:n.key.source,status:n.status,error:n.error,authInfo:n.authInfo,registryInfo:n.registryInfo});return r}getServerDetails(e){let r=this._entries.get(EG(e));return r?{tools:r.contents.tools,resources:r.contents.resources,resourceTemplates:r.contents.resourceTemplates,prompts:r.contents.prompts}:null}listReadyEntries(){let e=[];for(let r of this._entries.values()){if(r.status!=="running"||!this._evaluateAllowlist(r).allowed)continue;let n=EG(r.key),o=this._service.listMounts().find(s=>s.id===n);e.push({key:r.key,url:o?.url??null,toolCallTimeoutMs:r.classified.toolCallTimeoutMs})}return e}async applyConfig(e){if(this._disposed)throw new Error("McpServerManager is disposed");let r=this._applyChain.then(()=>this._applyConfigLocked(e));return this._applyChain=r.catch(()=>{}),r}async removeProject(e){if(this._disposed)return;let r=this._applyChain.then(()=>this._removeProjectLocked(e));return this._applyChain=r.catch(()=>{}),r}async applyPluginServers(e,r){if(this._disposed)throw new Error("McpServerManager is disposed");let n=this._applyChain.then(()=>this._applyScope({kind:"plugin",pluginId:e},r));return this._applyChain=n.catch(()=>{}),n}async removePluginServers(e){return this.applyPluginServers(e,{})}async _applyConfigLocked(e){let{workspaceFolder:r,user:n,project:o}=e,s=eea(n),c=s!==this._lastUserHash;c&&(await this._applyScope({kind:"user"},n),this._lastUserHash=s),await this._applyScope({kind:"project",workspaceFolder:r},o),sr(this._ctx,"mcpGateway.applyConfig",{userChanged:String(c),hasProject:String(Object.keys(o).length>0)},{userServerCount:Object.keys(n).length,projectServerCount:Object.keys(o).length})}async _applyScope(e,r){let n=new Map,o=[];for(let[l,u]of Object.entries(r)){let d=iea(l,u);if(!d){o.push(l);continue}n.set(EG({source:e,name:l}),{classified:d,hash:Nii(u)})}o.length>0&&aI.warn(this._ctx,`applyConfig: skipped ${o.length} unrecognised entries in ${nea(e)}: [${o.join(", ")}]`);let s=[];for(let[l,u]of this._entries)tea(u.key.source,e)&&!n.has(l)&&s.push(l);for(let l of s)await this._removeEntry(l);let c=!1;for(let[l,{classified:u,hash:d}]of n){let f=this._entries.get(l);f?f.entryHash!==d&&(await this._stopInvoker(f,"starting"),f.classified=u,f.entryHash=d,f.error=void 0,c=!0,this._beginStart(l)):(this._createEntry({source:e,name:u.name},u,d),c=!0)}c&&this._sender.serversChanged(N4(e))}async _removeProjectLocked(e){let r=[];for(let[n,o]of this._entries)o.key.source.kind==="project"&&o.key.source.workspaceFolder===e&&r.push(n);if(r.length!==0)for(let n of r)await this._removeEntry(n)}serverAction(e,r){let n=EG(e),o=this._entries.get(n);if(!o)throw new vG("unknownServer",`Unknown MCP server: ${e.name}`);switch(r){case"start":case"restart":if(o.status==="blocked")throw new vG("startBlocked",`Server '${e.name}' is blocked by policy and cannot be started`);break;case"logout":case"clearOAuth":if(!o.authInfo&&!o.authDiscovery)throw new vG("noAuth",`Server '${e.name}' has no auth state to clear`);break}let c=(this._actionChains.get(n)??Promise.resolve()).then(()=>this._runAction(n,r));return this._actionChains.set(n,c.catch(()=>{})),Promise.resolve()}async _runAction(e,r){let n=this._entries.get(e);if(n)switch(r){case"start":if(n.status==="running"||n.status==="starting")return;await this._beginStart(e);return;case"stop":if(n.status==="stopped")return;await this._stopInvoker(n,"stopped"),this._sender.serversChanged(N4(n.key.source));return;case"restart":await this._stopInvoker(n,"starting"),this._sender.serversChanged(N4(n.key.source)),await this._beginStart(e);return;case"logout":await this._performLogout(n,!1);return;case"clearOAuth":await this._performLogout(n,!0),await this._beginStart(e);return}}async dispose(){if(this._disposed)return;this._disposed=!0,this._managedSettingsSub?.dispose(),this._managedSettingsSub=void 0;let e=[...this._entries.values()].map(r=>this._stopInvoker(r,"stopped").catch(()=>{}));this._entries.clear(),await Promise.all(e)}_toEvalServer(e){let r=e.classified;if(r.kind==="stdio"){let{command:n,args:o}=r.params;return{name:e.key.name,transport:{kind:"stdio",command:[n,...o??[]]}}}return{name:e.key.name,transport:{kind:r.type,url:r.url}}}_evaluateAllowlist(e){let r=this._managedSettings?Dii(this._managedSettings.get()):void 0;return pgr(this._toEvalServer(e),r)}async _markBlocked(e,r){e.error=r,$c(this._ctx,"mcpGateway.allowlist.blocked",{transport:e.classified.kind==="stdio"?"stdio":e.classified.type,source:e.key.source.kind}),await this._stopInvoker(e,"blocked")}_onMcpSettingsChanged(){if(this._disposed)return;let e=this._applyChain.then(()=>this._reEnforceAllowlistLocked());this._applyChain=e.catch(()=>{})}async _reEnforceAllowlistLocked(){for(let[e,r]of this._entries){let n=this._evaluateAllowlist(r);!n.allowed&&r.status!=="blocked"?await this._markBlocked(r,n.reason):n.allowed&&r.status==="blocked"&&(r.error=void 0,this._beginStart(e))}}_createEntry(e,r,n){let o={key:e,classified:r,entryHash:n,invoker:null,status:"stopped",contents:{...XXs},listeners:null};return this._entries.set(EG(e),o),o}async _removeEntry(e){let r=this._entries.get(e);if(!r)return;let n=N4(r.key.source);await this._stopInvoker(r,"stopped").catch(()=>{}),this._entries.delete(e),this._sender.serversChanged(n)}async _beginStart(e){let r=this._entries.get(e);if(!r)return;let n=this._evaluateAllowlist(r);if(!n.allowed){await this._markBlocked(r,n.reason);return}r.invoker?await this._stopInvoker(r,"starting"):(r.status="starting",r.error=void 0,this._sender.serversChanged(N4(r.key.source)));let o=this._buildInvoker(r);r.invoker=o,this._wireInvokerEvents(r);try{if(await o.start(),r.invoker!==o){await o.stop().catch(()=>{});return}r.status="running",r.error=void 0;try{await this._service.registerMount(o,r.key.name)}catch(s){throw aI.error(this._ctx,`failed to register mount for '${r.key.name}'`,s),s}if(r.invoker!==o){this._service.unregisterMount(EG(r.key)),await o.stop().catch(()=>{});return}if(await this._refreshContents(r).catch(s=>{aI.warn(this._ctx,`failed to refresh contents for '${r.key.name}': ${String(s)}`)}),r.invoker!==o)return;this._sender.serversChanged(N4(r.key.source)),this._sender.serverDetailsChanged(r.key),la(this._ctx,{message:"Connection state: Running",server:r.key.name})}catch(s){if(r.invoker!==o){await o.stop().catch(()=>{});return}s instanceof ige?(r.status="unauthorized",r.error=void 0,aI.warn(this._ctx,`server '${r.key.name}' requires authorization`),mD(this._ctx,{message:"Connection state: Unauthorized (authorization required)",server:r.key.name})):(r.status="error",r.error=s instanceof Error?s.message:String(s),aI.error(this._ctx,`server '${r.key.name}' failed to start`,s),Sd(this._ctx,{message:`Connection state: Error: ${r.error}`,server:r.key.name})),await o.stop().catch(()=>{}),this._unwireInvokerEvents(r),r.invoker=null,this._sender.serversChanged(N4(r.key.source))}}async _stopInvoker(e,r){let n=e.invoker;this._unwireInvokerEvents(e),e.invoker=null,e.status=r,r!=="error"&&r!=="blocked"&&(e.error=void 0),this._service.unregisterMount(EG(e.key)),this._sender.serversChanged(N4(e.key.source)),n&&(r==="stopped"&&la(this._ctx,{message:"Connection state: Stopped",server:e.key.name}),await n.stop().catch(o=>{aI.warn(this._ctx,`failed to stop invoker '${e.key.name}': ${String(o)}`)}))}_wireInvokerEvents(e){let r=e.invoker;if(!r)return;let n={toolsChanged:a(()=>{this._onUpstreamListChanged(e,"tools")},"toolsChanged"),resourcesChanged:a(()=>{this._onUpstreamListChanged(e,"resources")},"resourcesChanged"),promptsChanged:a(()=>{this._onUpstreamListChanged(e,"prompts")},"promptsChanged"),loggingMessage:a(o=>this._onUpstreamLog(e,o),"loggingMessage")};r.on(El.ToolsListChanged,n.toolsChanged),r.on(El.ResourcesListChanged,n.resourcesChanged),r.on(El.PromptsListChanged,n.promptsChanged),r.on(El.LoggingMessage,n.loggingMessage),e.listeners=n}_unwireInvokerEvents(e){let r=e.invoker,n=e.listeners;r&&n&&(r.off(El.ToolsListChanged,n.toolsChanged),r.off(El.ResourcesListChanged,n.resourcesChanged),r.off(El.PromptsListChanged,n.promptsChanged),r.off(El.LoggingMessage,n.loggingMessage)),e.listeners=null}_onUpstreamLog(e,r){let n=r.params.data,o=typeof n=="string"?n:JSON.stringify(n),s=r.params.logger?`${r.params.logger}: ${o}`:o,c=e.key.name;switch(r.params.level){case"warning":mD(this._ctx,{message:s,server:c});break;case"error":case"critical":case"alert":case"emergency":Sd(this._ctx,{message:s,server:c});break;default:la(this._ctx,{message:s,server:c})}}async _onUpstreamListChanged(e,r){if(e.invoker)try{if(r==="tools"){let n=await e.invoker.listTools();e.contents.tools=n.tools}else if(r==="resources"){let[n,o]=await Promise.all([e.invoker.listResources(),e.invoker.listResourceTemplates()]);e.contents.resources=n.resources,e.contents.resourceTemplates=o.resourceTemplates}else{let n=await e.invoker.listPrompts();e.contents.prompts=n.prompts}this._sender.serverDetailsChanged(e.key)}catch(n){aI.warn(this._ctx,`failed to refresh ${r} for '${e.key.name}': ${String(n)}`)}}async _refreshContents(e){if(!e.invoker)return;let r=await Promise.allSettled([e.invoker.listTools(),e.invoker.listResources(),e.invoker.listResourceTemplates(),e.invoker.listPrompts()]);e.contents={tools:r[0].status==="fulfilled"?r[0].value.tools:[],resources:r[1].status==="fulfilled"?r[1].value.resources:[],resourceTemplates:r[2].status==="fulfilled"?r[2].value.resourceTemplates:[],prompts:r[3].status==="fulfilled"?r[3].value.prompts:[]}}_buildInvoker(e){let r=e.classified,n=EG(e.key),o=e.key.name,s=a(c=>{Sd(this._ctx,{message:`Connection state: Error: ${c.message}`,server:o})},"onError");return r.kind==="stdio"?new DMe({id:n,label:o,params:r.params,toolCallTimeoutMs:r.toolCallTimeoutMs,clientInfo:{name:kMe,version:PMe},onStderr:a(c=>{mD(this._ctx,{message:`[server stderr] ${c.trimEnd()}`,server:o})},"onStderr"),onError:s}):new xMe({id:n,label:o,url:r.url,type:r.type,httpOptions:r.type==="http"?r.httpOptions:void 0,sseOptions:r.type==="sse"?r.sseOptions:void 0,toolCallTimeoutMs:r.toolCallTimeoutMs,clientInfo:{name:kMe,version:PMe},onError:s,authProvider:this._tryGetAuthSvc()?this._buildAuthProvider(e,r.url,r.httpOptions?.requestInit?.headers):void 0,onFallback:a(({fromCode:c})=>{aI.info(this._ctx,`'${e.key.name}': Streamable HTTP returned ${c}, falling back to legacy SSE`),sr(this._ctx,"mcpGateway.transport.fallbackToSse",{fromCode:String(c)})},"onFallback")})}_tryGetAuthSvc(){try{return this._ctx.get(xm)}catch{return}}_tryGetManagedSettings(){try{return this._ctx.get(ay)}catch{return}}_buildAuthProvider(e,r,n){let o=a(async()=>{if(e.authDiscovery)return e.authDiscovery;let s=await Mni(this._ctx,r,n);if(!s){aI.warn(this._ctx,`'${e.key.name}': OAuth discovery failed`);return}try{let c=this._tryGetAuthSvc(),l=await Qdt(this._ctx,c,s,e.key.name);if(e.authDiscovery={discovery:s,providerId:l.providerId},l.token){let u=l.sessions.find(d=>d.accessToken===l.token);u&&this._setAuthInfo(e,{providerId:l.providerId,accountName:u.account.label})}return e.authDiscovery}catch(c){aI.error(this._ctx,`'${e.key.name}': dynamic provider setup failed`,c);return}},"ensureDiscovery");return async s=>{let c=this._tryGetAuthSvc();if(!c)return;let l=await o();if(!l)return;if(s==="silent"){let f=await Qdt(this._ctx,c,l.discovery,e.key.name);if(f.token){let h=f.sessions.find(m=>m.accessToken===f.token);h&&this._setAuthInfo(e,{providerId:l.providerId,accountName:h.account.label})}return f.token}let u,d=this._oauthChain.then(async()=>{let f=await Qdt(this._ctx,c,l.discovery,e.key.name);if(f.token){u=f.token;let h=f.sessions.find(m=>m.accessToken===u);h&&this._setAuthInfo(e,{providerId:l.providerId,accountName:h.account.label});return}if(u=await Oni(this._ctx,c,l.discovery,l.providerId,e.key.name,r,f.sessions),u){let m=(await c.getSessions(l.providerId,l.discovery.scopes,{authorizationServer:l.discovery.authorizationServer},!0)).find(g=>g.accessToken===u);m&&this._setAuthInfo(e,{providerId:l.providerId,accountName:m.account.label})}});return this._oauthChain=d.catch(()=>{}),await d,u}}_setAuthInfo(e,r){e.authInfo?.providerId===r.providerId&&e.authInfo?.accountName===r.accountName||(e.authInfo=r,this._sender.serversChanged(N4(e.key.source)))}async _performLogout(e,r){await this._stopInvoker(e,"stopped").catch(()=>{});let n=this._tryGetAuthSvc(),o=e.authInfo?.providerId??e.authDiscovery?.providerId;if(n&&o)try{let s=n.getProvider(o),c=await n.getSessions(o,e.authDiscovery?.discovery.scopes??[],e.authDiscovery?{authorizationServer:e.authDiscovery.discovery.authorizationServer}:void 0,!0);for(let l of c)await s.removeSession(l.id).catch(u=>aI.warn(this._ctx,`removeSession failed for '${e.key.name}': ${String(u)}`))}catch(s){aI.warn(this._ctx,`logout enumeration failed for '${e.key.name}': ${String(s)}`)}if(r&&o){try{await this._unregister.unregisterProvider(o)}catch(s){aI.warn(this._ctx,`unregisterProvider failed for '${e.key.name}': ${String(s)}`)}e.authDiscovery=void 0}e.authInfo=void 0,this._sender.serversChanged(N4(e.key.source))}};function EG(t){switch(t.source.kind){case"user":return`user::${t.name}`;case"project":return`project::${t.source.workspaceFolder}::${t.name}`;case"plugin":return`plugin::${t.source.pluginId}::${t.name}`}}a(EG,"serializeKey");function Nii(t){if(!t||typeof t!="object")return JSON.stringify(t);let e=t,r=Object.keys(e).sort(),n={};for(let o of r)n[o]=e[o];return JSON.stringify(n)}a(Nii,"canonicalEntryHash");function eea(t){let e=Object.keys(t).sort(),r={};for(let n of e)r[n]=Nii(t[n]);return JSON.stringify(r)}a(eea,"canonicalConfigHash");function N4(t){return t.kind==="project"?{kind:"project",workspaceFolder:t.workspaceFolder}:{kind:"user"}}a(N4,"notificationScopeFor");function tea(t,e){return t.kind!==e.kind?!1:t.kind==="project"&&e.kind==="project"?t.workspaceFolder===e.workspaceFolder:t.kind==="plugin"&&e.kind==="plugin"?t.pluginId===e.pluginId:t.kind==="user"&&e.kind==="user"}a(tea,"sameScope");function rea(t,e){return e===void 0||t.kind==="user"||t.kind==="plugin"?!0:t.kind==="project"&&e.kind==="project"?t.workspaceFolder===e.workspaceFolder:!1}a(rea,"entryInScope");function nea(t){switch(t.kind){case"user":return"user";case"project":return`project<${t.workspaceFolder}>`;case"plugin":return`plugin<${t.pluginId}>`}}a(nea,"describeScope");function iea(t,e){if(!e||typeof e!="object")return;let r=e,n=typeof r.timeout=="number"?r.timeout:void 0,o={...r};if(delete o.timeout,typeof r.command=="string")return{kind:"stdio",name:t,params:o,toolCallTimeoutMs:n};if(typeof r.url=="string"){let c=(typeof r.type=="string"?r.type:void 0)==="sse"?"sse":"http";return{kind:"http",name:t,url:r.url,type:c,httpOptions:c==="http"?o:void 0,sseOptions:c==="sse"?o:void 0,toolCallTimeoutMs:n}}}a(iea,"classifyEntry");p();var Rgr=require("crypto"),Mii=require("events"),Oii=fe(require("http"));var CG=new pe("mcpGateway"),oea="mcp-session-id",sea=1024*1024,aea=5e3,Lii={Ready:"ready",Unauthorized:"unauthorized",Error:"error"},Mee={MountsChanged:"mountsChanged"},bG=class{constructor(e,r={}){this._routes=new Map;this._idToRouteId=new Map;this._emitter=new Mii.EventEmitter;this._connections=new Set;this._ctx=e,this._host=r.host??"127.0.0.1"}static{a(this,"McpGatewayService")}get port(){return this._port}get origin(){return this._port===void 0?void 0:`http://${this._host}:${this._port}`}listMounts(){let e=[];for(let[r,n]of this._routes)e.push(this._buildMountInfo(n.invoker.id,n.label,r,n.status));return e}setMountStatus(e,r){let n=this._idToRouteId.get(e);if(!n)return;let o=this._routes.get(n);if(!o||o.status===r)return;let s=o.status;o.status=r,CG.info(this._ctx,`mount '${o.label}' (${e}) status -> ${r}`),sr(this._ctx,"mcpGateway.mount.statusChanged",{from:s,to:r}),this._emitter.emit(Mee.MountsChanged,this.listMounts())}on(e,r){this._emitter.on(e,r)}off(e,r){this._emitter.off(e,r)}async registerMount(e,r,n=Lii.Ready){if(await this._ensureServer(),this._port===void 0)throw new Error("Gateway server failed to start");if(this._idToRouteId.get(e.id))throw new Error(`Mount already registered for id '${e.id}'`);let s=(0,Rgr.randomUUID)(),c=r??e.label;this._routes.set(s,{invoker:e,label:c,sessions:new Map,status:n}),this._idToRouteId.set(e.id,s);let l=this._buildMountInfo(e.id,c,s,n);return CG.info(this._ctx,`registered mount '${c}' (${e.id}) at ${l.url} [${n}]`),sr(this._ctx,"mcpGateway.mount.registered",{status:n}),this._emitter.emit(Mee.MountsChanged,this.listMounts()),l}unregisterMount(e){let r=this._idToRouteId.get(e);if(!r)return;let n=this._routes.get(r);if(n){for(let o of n.sessions.values())o.dispose();n.sessions.clear(),this._routes.delete(r),this._idToRouteId.delete(e),CG.info(this._ctx,`unregistered mount '${n.label}' (${e})`),sr(this._ctx,"mcpGateway.mount.unregistered",{finalStatus:n.status}),this._emitter.emit(Mee.MountsChanged,this.listMounts())}}dispose(){for(let e of this._routes.values()){for(let r of e.sessions.values())r.dispose();e.sessions.clear()}this._routes.clear(),this._idToRouteId.clear(),this._stopServer()}async _ensureServer(){if(!this._server?.listening){if(this._startPromise)return this._startPromise;this._startPromise=this._startServer();try{await this._startPromise}finally{this._startPromise=void 0}}}_startServer(){return new Promise((e,r)=>{let n=Oii.createServer((s,c)=>this._handleRequest(s,c));n.requestTimeout=0,this._server=n,n.on("connection",s=>{this._connections.add(s),s.on("close",()=>this._connections.delete(s))});let o=setTimeout(()=>r(new Error("Gateway listen timeout")),aea);n.once("listening",()=>{let s=n.address();s&&typeof s=="object"&&(this._port=s.port),clearTimeout(o),CG.info(this._ctx,`listening on http://${this._host}:${this._port}`),e()}),n.on("error",s=>{if(s.code==="EADDRINUSE"){n.listen(0,this._host);return}clearTimeout(o),r(s)}),n.listen(0,this._host)})}_stopServer(){if(this._server){CG.info(this._ctx,"stopping HTTP server");for(let e of this._connections)e.destroy();this._connections.clear(),this._server.close(),this._server=void 0,this._port=void 0}}_handleRequest(e,r){let o=new URL(e.url??"/",`http://${e.headers.host??"127.0.0.1"}`).pathname.split("/").filter(Boolean);if(o.length<2||o[1]!=="mcp"){this._respondHttpError(r,404,"Not found");return}let s=o[0],c=this._routes.get(s);if(!c){this._respondHttpError(r,404,"Mount not found");return}if(e.method==="POST"){this._handlePost(c,e,r);return}if(e.method==="GET"){this._handleGet(c,e,r);return}if(e.method==="DELETE"){this._handleDelete(c,e,r);return}this._respondHttpError(r,405,"Method not allowed")}async _handlePost(e,r,n){let o=await this._readBody(r);if(o===void 0){this._respondHttpError(n,413,"Payload too large");return}let s;try{s=JSON.parse(o)}catch(u){let d={jsonrpc:"2.0",id:null,error:{code:Kb.ParseError,message:u instanceof Error?u.message:String(u)}};n.writeHead(400,{"Content-Type":"application/json"}),n.end(JSON.stringify(d));return}let c=this._getSessionId(r),l=this._resolveSession(e,c,s,n);if(l)try{let u=await l.handleIncoming(s),d={"Content-Type":"application/json","Mcp-Session-Id":l.id};if(u.length===0||!this._hasRequest(s)){n.writeHead(202,d),n.end();return}let f=JSON.stringify(Array.isArray(s)?u:u[0]);n.writeHead(200,d),n.end(f)}catch(u){CG.error(this._ctx,"POST handler failed",u),this._respondHttpError(n,500,"Internal server error")}}_handleGet(e,r,n){let o=this._getSessionId(r);if(!o){this._respondHttpError(n,400,"Missing Mcp-Session-Id header");return}let s=e.sessions.get(o);if(!s){this._respondHttpError(n,404,"Session not found");return}s.attachSseClient(n)}_handleDelete(e,r,n){let o=this._getSessionId(r);if(!o){this._respondHttpError(n,400,"Missing Mcp-Session-Id header");return}let s=e.sessions.get(o);if(!s){this._respondHttpError(n,404,"Session not found");return}s.dispose(),n.writeHead(204),n.end()}_resolveSession(e,r,n,o){if(r){let l=e.sessions.get(r);if(!l){this._respondHttpError(o,404,"Session not found");return}return l}if(!Bni(n)){this._respondHttpError(o,400,"Missing Mcp-Session-Id header");return}let s=(0,Rgr.randomUUID)(),c=new RMe(s,this._ctx,e.invoker,()=>{e.sessions.delete(s)&&CG.info(this._ctx,`mount '${e.label}' session detached (sid=${s}, active sessions: ${e.sessions.size})`)});return e.sessions.set(s,c),CG.info(this._ctx,`mount '${e.label}' session attached (sid=${s}, active sessions: ${e.sessions.size})`),c}_hasRequest(e){return(Array.isArray(e)?e:[e]).some(Ldt)}_getSessionId(e){let r=e.headers[oea];return Array.isArray(r)?r[0]:r}async _readBody(e){let r=[],n=0;for await(let o of e){let s=Buffer.isBuffer(o)?o:Buffer.from(o);if(n+=s.byteLength,n>sea)return;r.push(s)}return Buffer.concat(r).toString("utf8")}_respondHttpError(e,r,n){e.writeHead(r,{"Content-Type":"application/json"});let o={jsonrpc:"2.0",id:null,error:{code:r,message:n}};e.end(JSON.stringify(o))}_buildMountInfo(e,r,n,o){return{id:e,label:r,routeId:n,url:`${this.origin}/${n}/mcp`,status:o}}};p();var Bii=[{type:"skill",pick:a(t=>t.skills,"pick")},{type:"agent",pick:a(t=>t.agents,"pick")},{type:"instructions",pick:a(t=>t.instructions,"pick")},{type:"prompt",pick:a(t=>t.commands,"pick")}],J8=class{constructor(e,r){this.ctx=e;this.service=r;this.logger=new pe("PluginContributionInjector");this.registered=new Map;this.disposed=!1;this.syncChain=Promise.resolve();this.changeSubscription=this.service.onDidChangePlugins(()=>this.scheduleSync()),this.gateSubscription=this.subscribeToGateChanges()}static{a(this,"PluginContributionInjector")}subscribeToGateChanges(){try{let e=this.ctx.get(Qo);return this.lastPluginsEnabled=sG(this.ctx),e.onDidChangeCopilotSettings(()=>{let r=sG(this.ctx);r!==this.lastPluginsEnabled&&(this.lastPluginsEnabled=r,this.initialSyncPromise=void 0,this.scheduleSync())})}catch{return}}async ensureInitialSync(){if(this.disposed)return;if(this.initialSyncPromise)return this.initialSyncPromise;if(!this.isEditorIdentityKnown())return;let e,r=new Promise(n=>e=n);return this.initialSyncPromise=r,this.syncChain=this.syncChain.then(()=>this.sync()).then(n=>{n||(this.initialSyncPromise=void 0)}).catch(n=>{this.initialSyncPromise=void 0,this.logger.warn(this.ctx,"plugin contribution initial sync failed",{err:String(n)})}).finally(()=>e()),r}isEditorIdentityKnown(){try{return this.ctx.get(Ir).isEditorPluginInfoKnown()}catch{return!0}}scheduleSync(){this.syncChain=this.syncChain.then(()=>this.sync()).then(()=>{}).catch(e=>{this.logger.warn(this.ctx,"plugin contribution sync failed",{err:String(e)})})}syncedForTesting(){return this.syncChain}async sync(){if(this.disposed)return!0;if(!sG(this.ctx))return this.teardownAll(),!0;let e;try{e=(await this.service.listPlugins()).filter(vme)}catch(n){return this.logger.warn(this.ctx,"listPlugins failed during sync",{err:String(n)}),!1}if(this.disposed)return!0;let r=new Map(e.map(n=>[n.uri,n]));for(let n of[...this.registered.keys()])r.has(n)||this.teardownPlugin(n);for(let[n,o]of r)if(await this.reconcilePlugin(n,o),this.disposed)return!0;return!0}async reconcilePlugin(e,r){let n=this.registered.get(e),o=cea(r),s=lea(r),c=n?.disposables??[];if(!n||n.fileHash!==o){for(let u of c)u.dispose();c=this.registerFiles(e,r)}let l=n?.mcpApplied??!1;if((!n||n.mcpHash!==s||!n.mcpApplied)&&(l=await this.applyMcp(e,r,n)),this.disposed){for(let u of c)u.dispose();l&&this.tryManager()?.removePluginServers(e).catch(d=>this.logger.warn(this.ctx,"removePluginServers failed",{uri:e,err:String(d)}));return}this.registered.set(e,{fileHash:o,mcpHash:s,mcpApplied:l,disposables:c})}registerFiles(e,r){let n=this.tryRegistry();if(!n)return[];let o=[];for(let{type:s,pick:c}of Bii)for(let l of c(r))o.push(n.register(s,[uea(l.uri)],{watchable:!1,classification:{storage:"plugin",pluginInfo:{name:l.name,description:l.description??"",pluginUri:e}}}));return o}async applyMcp(e,r,n){let o=this.tryManager();if(!o)return!0;let s=dea(r.mcpServerDefinitions);if(Object.keys(s).length===0&&!n?.mcpApplied)return!0;try{return await o.applyPluginServers(e,s),!0}catch(c){return this.logger.warn(this.ctx,"applyPluginServers failed",{uri:e,err:String(c)}),!1}}teardownPlugin(e){let r=this.registered.get(e);if(!r)return;for(let o of r.disposables)o.dispose();let n=this.tryManager();n&&n.removePluginServers(e).catch(o=>this.logger.warn(this.ctx,"removePluginServers failed",{uri:e,err:String(o)})),this.registered.delete(e)}teardownAll(){for(let e of[...this.registered.keys()])this.teardownPlugin(e)}tryRegistry(){return this.tryGet(QA)}tryManager(){return this.tryGet(gy)}tryGet(e){try{return this.ctx.get(e)}catch(r){if(r instanceof Ic)return;throw r}}dispose(){this.disposed||(this.disposed=!0,this.changeSubscription.dispose(),this.gateSubscription?.dispose(),this.teardownAll())}};function cea(t){let e=Bii.flatMap(({pick:r})=>r(t).map(n=>JSON.stringify([n.uri,n.name,n.description??""]))).sort();return JSON.stringify(e)}a(cea,"fileContentHash");function lea(t){let e=t.mcpServerDefinitions.map(r=>JSON.stringify([r.name,r.configuration])).sort();return JSON.stringify(e)}a(lea,"mcpContentHash");function uea(t){return t.includes("://")?un(t):t}a(uea,"toPathPattern");function dea(t){let e={};for(let{name:r,configuration:n}of t)n.type==="stdio"?e[r]={command:n.command,...n.args&&{args:[...n.args]},...n.env&&{env:{...n.env}},...n.cwd&&{cwd:n.cwd}}:e[r]={url:n.url,...n.headers&&{headers:{...n.headers}}};return e}a(dea,"toMcpServersConfig");var Fii=fe(require("node:path"));var Gdt=new pe("BackgroundAgent.SessionOptionsBuilder"),fea=5e3;async function Uii(t,e,r,n){let o=LO((async()=>{try{await t.get(J8).ensureInitialSync()}catch(A){if(!(A instanceof Ic))throw A}})(),fea,void 0),s=await n.buildAuthInfo(),c=oo(r.workspaceFolder.uri).fsPath;await o;let l;try{l=t.get(Ig).getSkillDirectories(c),l.length===0&&(l=void 0)}catch{}let u={clientName:t.get(Ir).getEditorPluginInfo().name,sessionId:e,authInfo:s,model:r.model,reasoningEffort:r.reasoningEffort,enableStreaming:r.enableStreaming??!0,excludedTools:r.excludedTools,skillDirectories:l,disabledSkills:r.disabledSkills?new Set(r.disabledSkills):void 0,workingDirectory:c,infiniteSessions:{enabled:!0}};try{await t.get(aF)._handleWorkspaceAdded({uri:r.workspaceFolder.uri,name:r.workspaceFolder.name??""})}catch{}let d=await pZn(t,r.workspaceFolder);d.length>0&&(u.customAgents=d);let f=r.mcpDirectory??r.workspaceFolder.uri;try{let A=t.get(yR).buildMcpServers(f);Gdt.info(t,"Built MCP gateway servers for SDK options",{sessionId:e,gatewayServers:A}),Object.keys(A).length>0&&(u.mcpServers=A)}catch(A){if(!(A instanceof Ic))throw A}u.hooks=hZn(t,r.workspaceFolder);let h=await OXn(t,r.workspaceFolder);if(u.hooks=LXn(u.hooks,h),r.inlineConfinedFile){let A=[...u.hooks.preToolUse??[]];r.inlineConfinementHook&&A.unshift(r.inlineConfinementHook),r.inlineTurnLimiter&&A.unshift(r.inlineTurnLimiter.hook),u.hooks={...u.hooks,preToolUse:A},u.systemMessage={mode:"append",content:UXn(r.inlineConfinedFile)}}else{let A=await kpr(t,[r.workspaceFolder]).catch(v=>{Gdt.warn(t,"Failed to load git commit instructions for systemMessage",v)}),y=r.useNestedAgentsMdFiles===!0?await hea(t,c):void 0,_=r.useNestedClaudeMdFiles===!0?await pea(t,c):void 0,E=_Zn({gitCommitInstructions:A,globalAgentsMdInstructions:r.globalAgentsMdInstructions,nestedAgentsInstructions:y,globalClaudeMdInstructions:r.globalClaudeMdInstructions,nestedClaudeInstructions:_});E!==void 0&&(u.systemMessage={mode:"append",content:E})}r.externalToolDefinitions?.length&&(u.externalToolDefinitions=r.externalToolDefinitions);let m=mZn(r);m.size>0&&(u.disabledInstructionSources=m);let g=Rut(t);return g&&(u.sandboxConfig=g),u}a(Uii,"buildSessionOptions");async function pea(t,e){let r;try{r=t.get(Go)}catch{return}try{return await AZn(async n=>r.readDirectory(Ko(n)),async n=>Qii(r,e,n),e)}catch(n){Gdt.warn(t,"Failed to scan nested CLAUDE.md files",n);return}}a(pea,"scanNestedClaudeSection");async function hea(t,e){let r;try{r=t.get(Go)}catch{return}try{return await yZn(async n=>r.readDirectory(Ko(n)),async n=>Qii(r,e,n),e)}catch(n){Gdt.warn(t,"Failed to scan nested AGENTS.md files",n);return}}a(hea,"scanNestedAgentsSection");async function Qii(t,e,r){try{return await t.readFileString(Ko(Fii.join(e,r)))}catch{return}}a(Qii,"readNestedFile");p();var mea=20,$dt=new pe("BackgroundAgent.SessionRegistry"),Vdt=class{constructor(e,r){this.ctx=e;this.onSessionEvicted=r;this.sessions=new Map;this.resumeOptions=new Map;this.workingDirs=new Map;this.workspaceFolderUris=new Map;this.mcpDirectories=new Map;this.turnIndexes=new Map;this.chatModes=new Map;this.providerModels=new Map;this.appliedSandboxConfig=new Map;this.confinedFiles=new Map;this.turnLimiters=new Map;this.children=new Map}static{a(this,"SessionRegistry")}set(e,r){if(this.sessions.has(e)&&this.sessions.delete(e),this.sessions.set(e,r),this.sessions.size>mea){let n=this.sessions.keys().next().value;if(n!==void 0&&n!==e){let o=this.sessions.get(n);if(!o)return;$dt.debug(this.ctx,`Evicting oldest cached session: ${n}`),this.sessions.delete(n);let s=Promise.resolve();try{s=this.onSessionEvicted?.(n,o)??s}catch(c){s=Promise.reject(c instanceof Error?c:new Error(String(c)))}Promise.all([this.removeExpected(n,o),s]).catch(c=>$dt.warn(this.ctx,`Failed to evict session ${n}`,{error:c instanceof Error?c.message:String(c)}))}}}get(e){return this.sessions.get(e)}has(e){return this.sessions.has(e)}size(){return this.sessions.size}entries(){return this.sessions.entries()}forgetSession(e){this.sessions.delete(e)}setResumeOptions(e,r){this.resumeOptions.set(e,r)}getResumeOptions(e){return this.resumeOptions.get(e)}setWorkingDir(e,r){this.workingDirs.set(e,r)}getWorkingDir(e){return this.workingDirs.get(e)}workingDirEntries(){return this.workingDirs}setWorkspaceFolderUri(e,r){this.workspaceFolderUris.set(e,r)}getWorkspaceFolderUri(e){return this.workspaceFolderUris.get(e)}setMcpDirectory(e,r){this.mcpDirectories.set(e,r)}getMcpDirectory(e){return this.mcpDirectories.get(e)}incrementTurnIndex(e){let r=(this.turnIndexes.get(e)??-1)+1;return this.turnIndexes.set(e,r),r}seedTurnIndexIfAbsent(e,r){this.turnIndexes.has(e)||this.turnIndexes.set(e,r)}setChatMode(e,r){this.chatModes.set(e,r)}getChatMode(e){return this.chatModes.get(e)}deleteChatMode(e){this.chatModes.delete(e)}clearChatMode(){this.chatModes.clear()}chatModeEntries(){return this.chatModes}setProviderModel(e,r){this.providerModels.set(e,r)}getProviderModel(e){return this.providerModels.get(e)}deleteProviderModel(e){this.providerModels.delete(e)}setAppliedSandboxConfig(e,r){this.appliedSandboxConfig.set(e,r)}getAppliedSandboxConfig(e){return this.appliedSandboxConfig.get(e)}deleteAppliedSandboxConfig(e){this.appliedSandboxConfig.delete(e)}setConfinedFile(e,r){this.confinedFiles.set(e,r)}getConfinedFile(e){return this.confinedFiles.get(e)}hasConfinedFile(e){return this.confinedFiles.has(e)}setTurnLimiter(e,r){this.turnLimiters.set(e,r)}getTurnLimiter(e){return this.turnLimiters.get(e)}registerChild(e,r){let n=this.children.get(e);n||(n=[],this.children.set(e,n)),n.push(r)}async remove(e){let r=this.sessions.get(e);await this.removeExpected(e,r)}async removeExpected(e,r){let n=this.children.get(e);this.children.delete(e),n&&await Promise.all(n.map(async s=>{try{await Promise.resolve(s.dispose())}catch(c){$dt.warn(this.ctx,"Child Disposable failed during session removal",{sessionId:e,error:c instanceof Error?c.message:String(c)})}}));let o=this.sessions.get(e);if(r!==void 0&&o!==void 0&&o!==r){$dt.debug(this.ctx,`Skipping map clear for session ${e}: re-cached during removal`);return}this.sessions.delete(e),this.resumeOptions.delete(e),this.workingDirs.delete(e),this.workspaceFolderUris.delete(e),this.mcpDirectories.delete(e),this.turnIndexes.delete(e),this.chatModes.delete(e),this.providerModels.delete(e),this.appliedSandboxConfig.delete(e),this.confinedFiles.delete(e),this.turnLimiters.delete(e)}async removeAll(){let e=[...this.sessions.keys(),...this.children.keys()],r=Array.from(new Set(e));await Promise.all(r.map(n=>this.remove(n))),this.sessions.clear(),this.resumeOptions.clear(),this.workingDirs.clear(),this.workspaceFolderUris.clear(),this.mcpDirectories.clear(),this.turnIndexes.clear(),this.chatModes.clear(),this.providerModels.clear(),this.appliedSandboxConfig.clear(),this.confinedFiles.clear(),this.turnLimiters.clear(),this.children.clear()}};p();p();var kgr=require("node:fs"),Oee=fe(require("node:path"));function qii(t){return t.replace(/[/\\:]/g,"_").split("\0").join("_")}a(qii,"sanitizePathSegment");function zdt(t){return typeof t=="string"?t:void 0}a(zdt,"asString");function Wdt(t){return typeof t=="number"?t:void 0}a(Wdt,"asNumber");function gea(t){return Array.isArray(t)?t.map(e=>{if(!e||typeof e!="object")return{};let r=e;return{tool_call_id:zdt(r.toolCallId),tool:zdt(r.name)}}):[]}a(gea,"asToolCallArray");function Aea(t){if(!t||typeof t!="object")return"";let e=t;return typeof e.detailedContent=="string"?e.detailedContent:typeof e.content=="string"?e.content:""}a(Aea,"toToolResultText");function yea(t){try{return JSON.stringify(t)}catch{return}}a(yea,"safeStringify");var Pgr=class{constructor(e,r,n){this.sessionId=r;this.usageByKey=new Map;this.pendingTools=new Map;this.appendQueues=new Map;this.activeTurnId=n;let o=gHt(new Date),s=qii(r);this.sessionDir=Oee.join(e,`pid-${process.pid}_${o}_bgagent`,"sessions",s)}static{a(this,"BackgroundAgentPersistence")}persistEvent(e){if(e.type==="assistant.turn_start"){this.activeTurnId=e.data.turnId;return}switch(e.type){case"assistant.usage":this.handleUsage(e);break;case"assistant.message":this.handleMessage(e);break;case"tool.execution_start":this.handleToolStart(e);break;case"tool.execution_complete":this.handleToolComplete(e);break;default:break}}outputDir(e){return e?Oee.join(this.sessionDir,"runSubAgent",qii(e)):this.sessionDir}appendJsonl(e,r){let n=yea(r);if(n===void 0)return;let s=(this.appendQueues.get(e)??Promise.resolve()).then(async()=>{await kgr.promises.mkdir(Oee.dirname(e),{recursive:!0}),await kgr.promises.appendFile(e,`${n}
|
|
3852
|
+
`}a(Iii,"serializeMessage");var KXs=Hdt.default.platform==="win32"?["APPDATA","HOMEDRIVE","HOMEPATH","LOCALAPPDATA","PATH","PROCESSOR_ARCHITECTURE","SYSTEMDRIVE","SYSTEMROOT","TEMP","USERNAME","USERPROFILE","PROGRAMFILES"]:["HOME","LOGNAME","PATH","SHELL","TERM","USER"];function JXs(){let t={};for(let e of KXs){let r=Hdt.default.env[e];r!==void 0&&(r.startsWith("()")||(t[e]=r))}return t}a(JXs,"getDefaultEnvironment");var lge=class{static{a(this,"StdioClientTransport")}constructor(e){this._readBuffer=new jdt,this._stderrStream=null,this._serverParams=e,(e.stderr==="pipe"||e.stderr==="overlapped")&&(this._stderrStream=new wii.PassThrough)}async start(){if(this._process)throw new Error("StdioClientTransport already started! If using Client class, note that connect() calls start() automatically.");return new Promise((e,r)=>{this._process=(0,xii.default)(this._serverParams.command,this._serverParams.args??[],{env:{...JXs(),...this._serverParams.env},stdio:["pipe","pipe",this._serverParams.stderr??"inherit"],shell:!1,windowsHide:Hdt.default.platform==="win32",cwd:this._serverParams.cwd}),this._process.on("error",n=>{r(n),this.onerror?.(n)}),this._process.on("spawn",()=>{e()}),this._process.on("close",n=>{this._process=void 0,this.onclose?.()}),this._process.stdin?.on("error",n=>{this.onerror?.(n)}),this._process.stdout?.on("data",n=>{this._readBuffer.append(n),this.processReadBuffer()}),this._process.stdout?.on("error",n=>{this.onerror?.(n)}),this._stderrStream&&this._process.stderr&&this._process.stderr.pipe(this._stderrStream)})}get stderr(){return this._stderrStream?this._stderrStream:this._process?.stderr??null}get pid(){return this._process?.pid??null}processReadBuffer(){for(;;)try{let e=this._readBuffer.readMessage();if(e===null)break;this.onmessage?.(e)}catch(e){this.onerror?.(e)}}async close(){if(this._process){let e=this._process;this._process=void 0;let r=new Promise(n=>{e.once("close",()=>{n()})});try{e.stdin?.end()}catch{}if(await Promise.race([r,new Promise(n=>setTimeout(n,2e3).unref())]),e.exitCode===null){try{e.kill("SIGTERM")}catch{}await Promise.race([r,new Promise(n=>setTimeout(n,2e3).unref())])}if(e.exitCode===null)try{e.kill("SIGKILL")}catch{}}this._readBuffer.clear()}send(e){return new Promise(r=>{if(!this._process?.stdin)throw new Error("Not connected");let n=Iii(e);this._process.stdin.write(n)?r():this._process.stdin.once("drain",r)})}};var Rii=require("child_process"),kii=require("events"),Pii=require("util");var wgr=1e4,ZXs=(0,Pii.promisify)(Rii.exec),DMe=class{constructor(e){this._transport=null;this._emitter=new kii.EventEmitter;this._connected=!1;this.id=e.id,this.label=e.label,this._options=e,this._emitter.setMaxListeners(0),this._client=new yG({name:e.clientInfo.name,version:e.clientInfo.version},{capabilities:{}})}static{a(this,"StdioInvoker")}get isConnected(){return this._connected}async start(){if(this._connected)return;let e={...this._options.params,stderr:"pipe"},r=new lge(e);this._transport=r,this._client.onerror=n=>this._options.onError?.(n),this._client.onclose=()=>{this._connected=!1},r.stderr&&r.stderr.on("data",n=>{this._options.onStderr?.(n.toString())}),this._client.setNotificationHandler(j8,()=>{this._emitter.emit(El.ToolsListChanged)}),this._client.setNotificationHandler(Q8,()=>{this._emitter.emit(El.ResourcesListChanged)}),this._client.setNotificationHandler(q8,()=>{this._emitter.emit(El.PromptsListChanged)}),this._client.setNotificationHandler(mee,n=>{this._emitter.emit(El.LoggingMessage,n)}),await this._client.connect(r),this._connected=!0}async stop(){if(!this._transport){this._connected=!1;return}let e=this._transport;this._transport=null;let r=this._client.close().catch(()=>{}),n=await Promise.race([r.then(()=>!0),new Promise(s=>setTimeout(()=>s(!1),wgr))]),o;if("pid"in e&&typeof e.pid=="number"&&(o=e.pid),!n&&o===void 0&&this._options.onError?.(new Error(`stdio transport exposed no pid; cannot force-kill '${this.id}'`)),!n&&o!==void 0&&process.platform==="win32")try{await ZXs(`taskkill /pid ${o} /t /f`,{timeout:wgr})}catch{}else if(!n&&o!==void 0){try{process.kill(o,"SIGTERM")}catch{}await new Promise(s=>setTimeout(s,wgr));try{process.kill(o,"SIGKILL")}catch{}}this._connected=!1}listTools(){return this._client.listTools()}callTool(e,r,n){return this._client.callTool({name:e,arguments:r},CR,{...n,timeout:this._options.toolCallTimeoutMs,resetTimeoutOnProgress:n?.onprogress!==void 0})}listResources(){return this._client.listResources()}readResource(e){return this._client.readResource({uri:e})}listResourceTemplates(){return this._client.listResourceTemplates()}listPrompts(){return this._client.listPrompts()}getPrompt(e,r){return this._client.getPrompt({name:e,arguments:r})}async setLoggingLevel(e){await this._client.setLoggingLevel(e.level)}on(e,r){this._emitter.on(e,r)}off(e,r){this._emitter.off(e,r)}};p();var xm=class{static{a(this,"AuthenticationService")}};var aI=new pe("mcpGateway.manager");function Dii(t){if(!(t.allowedMcpServers===void 0&&t.deniedMcpServers===void 0))return{allowed:t.allowedMcpServers,denied:t.deniedMcpServers}}a(Dii,"selectManagedMcpSettings");var vG=class extends Error{constructor(r,n){super(n);this.code=r}static{a(this,"ServerActionError")}},XXs={tools:[],resources:[],resourceTemplates:[],prompts:[]},gy=class{constructor(e,r,n){this._entries=new Map;this._disposed=!1;this._applyChain=Promise.resolve();this._oauthChain=Promise.resolve();this._actionChains=new Map;this._ctx=e,this._service=r,this._sender=n,this._unregister=n,this._managedSettings=this._tryGetManagedSettings(),this._managedSettingsSub=this._managedSettings?.observe(Dii,()=>this._onMcpSettingsChanged())}static{a(this,"McpServerManager")}listServers(e){let r=[];for(let n of this._entries.values())rea(n.key.source,e)&&r.push({name:n.key.name,source:n.key.source,status:n.status,error:n.error,authInfo:n.authInfo,registryInfo:n.registryInfo});return r}getServerDetails(e){let r=this._entries.get(EG(e));return r?{tools:r.contents.tools,resources:r.contents.resources,resourceTemplates:r.contents.resourceTemplates,prompts:r.contents.prompts}:null}listReadyEntries(){let e=[];for(let r of this._entries.values()){if(r.status!=="running"||!this._evaluateAllowlist(r).allowed)continue;let n=EG(r.key),o=this._service.listMounts().find(s=>s.id===n);e.push({key:r.key,url:o?.url??null,toolCallTimeoutMs:r.classified.toolCallTimeoutMs})}return e}async applyConfig(e){if(this._disposed)throw new Error("McpServerManager is disposed");let r=this._applyChain.then(()=>this._applyConfigLocked(e));return this._applyChain=r.catch(()=>{}),r}async removeProject(e){if(this._disposed)return;let r=this._applyChain.then(()=>this._removeProjectLocked(e));return this._applyChain=r.catch(()=>{}),r}async applyPluginServers(e,r){if(this._disposed)throw new Error("McpServerManager is disposed");let n=this._applyChain.then(()=>this._applyScope({kind:"plugin",pluginId:e},r));return this._applyChain=n.catch(()=>{}),n}async removePluginServers(e){return this.applyPluginServers(e,{})}async _applyConfigLocked(e){let{workspaceFolder:r,user:n,project:o}=e,s=eea(n),c=s!==this._lastUserHash;c&&(await this._applyScope({kind:"user"},n),this._lastUserHash=s),await this._applyScope({kind:"project",workspaceFolder:r},o),sr(this._ctx,"mcpGateway.applyConfig",{userChanged:String(c),hasProject:String(Object.keys(o).length>0)},{userServerCount:Object.keys(n).length,projectServerCount:Object.keys(o).length})}async _applyScope(e,r){let n=new Map,o=[];for(let[l,u]of Object.entries(r)){let d=iea(l,u);if(!d){o.push(l);continue}n.set(EG({source:e,name:l}),{classified:d,hash:Nii(u)})}o.length>0&&aI.warn(this._ctx,`applyConfig: skipped ${o.length} unrecognised entries in ${nea(e)}: [${o.join(", ")}]`);let s=[];for(let[l,u]of this._entries)tea(u.key.source,e)&&!n.has(l)&&s.push(l);for(let l of s)await this._removeEntry(l);let c=!1;for(let[l,{classified:u,hash:d}]of n){let f=this._entries.get(l);f?f.entryHash!==d&&(await this._stopInvoker(f,"starting"),f.classified=u,f.entryHash=d,f.error=void 0,c=!0,this._beginStart(l)):(this._createEntry({source:e,name:u.name},u,d),c=!0)}c&&this._sender.serversChanged(N4(e))}async _removeProjectLocked(e){let r=[];for(let[n,o]of this._entries)o.key.source.kind==="project"&&o.key.source.workspaceFolder===e&&r.push(n);if(r.length!==0)for(let n of r)await this._removeEntry(n)}serverAction(e,r){let n=EG(e),o=this._entries.get(n);if(!o)throw new vG("unknownServer",`Unknown MCP server: ${e.name}`);switch(r){case"start":case"restart":if(o.status==="blocked")throw new vG("startBlocked",`Server '${e.name}' is blocked by policy and cannot be started`);break;case"logout":case"clearOAuth":if(!o.authInfo&&!o.authDiscovery)throw new vG("noAuth",`Server '${e.name}' has no auth state to clear`);break}let c=(this._actionChains.get(n)??Promise.resolve()).then(()=>this._runAction(n,r));return this._actionChains.set(n,c.catch(()=>{})),Promise.resolve()}async _runAction(e,r){let n=this._entries.get(e);if(n)switch(r){case"start":if(n.status==="running"||n.status==="starting")return;await this._beginStart(e);return;case"stop":if(n.status==="stopped")return;await this._stopInvoker(n,"stopped"),this._sender.serversChanged(N4(n.key.source));return;case"restart":await this._stopInvoker(n,"starting"),this._sender.serversChanged(N4(n.key.source)),await this._beginStart(e);return;case"logout":await this._performLogout(n,!1);return;case"clearOAuth":await this._performLogout(n,!0),await this._beginStart(e);return}}async dispose(){if(this._disposed)return;this._disposed=!0,this._managedSettingsSub?.dispose(),this._managedSettingsSub=void 0;let e=[...this._entries.values()].map(r=>this._stopInvoker(r,"stopped").catch(()=>{}));this._entries.clear(),await Promise.all(e)}_toEvalServer(e){let r=e.classified;if(r.kind==="stdio"){let{command:n,args:o}=r.params;return{name:e.key.name,transport:{kind:"stdio",command:[n,...o??[]]}}}return{name:e.key.name,transport:{kind:r.type,url:r.url}}}_evaluateAllowlist(e){let r=this._managedSettings?Dii(this._managedSettings.get()):void 0;return pgr(this._toEvalServer(e),r)}async _markBlocked(e,r){e.error=r,$c(this._ctx,"mcpGateway.allowlist.blocked",{transport:e.classified.kind==="stdio"?"stdio":e.classified.type,source:e.key.source.kind}),await this._stopInvoker(e,"blocked")}_onMcpSettingsChanged(){if(this._disposed)return;let e=this._applyChain.then(()=>this._reEnforceAllowlistLocked());this._applyChain=e.catch(()=>{})}async _reEnforceAllowlistLocked(){for(let[e,r]of this._entries){let n=this._evaluateAllowlist(r);!n.allowed&&r.status!=="blocked"?await this._markBlocked(r,n.reason):n.allowed&&r.status==="blocked"&&(r.error=void 0,this._beginStart(e))}}_createEntry(e,r,n){let o={key:e,classified:r,entryHash:n,invoker:null,status:"stopped",contents:{...XXs},listeners:null};return this._entries.set(EG(e),o),o}async _removeEntry(e){let r=this._entries.get(e);if(!r)return;let n=N4(r.key.source);await this._stopInvoker(r,"stopped").catch(()=>{}),this._entries.delete(e),this._sender.serversChanged(n)}async _beginStart(e){let r=this._entries.get(e);if(!r)return;let n=this._evaluateAllowlist(r);if(!n.allowed){await this._markBlocked(r,n.reason);return}r.invoker?await this._stopInvoker(r,"starting"):(r.status="starting",r.error=void 0,this._sender.serversChanged(N4(r.key.source)));let o=this._buildInvoker(r);r.invoker=o,this._wireInvokerEvents(r);try{if(await o.start(),r.invoker!==o){await o.stop().catch(()=>{});return}r.status="running",r.error=void 0;try{await this._service.registerMount(o,r.key.name)}catch(s){throw aI.error(this._ctx,`failed to register mount for '${r.key.name}'`,s),s}if(r.invoker!==o){this._service.unregisterMount(EG(r.key)),await o.stop().catch(()=>{});return}if(await this._refreshContents(r).catch(s=>{aI.warn(this._ctx,`failed to refresh contents for '${r.key.name}': ${String(s)}`)}),r.invoker!==o)return;this._sender.serversChanged(N4(r.key.source)),this._sender.serverDetailsChanged(r.key),la(this._ctx,{message:"Connection state: Running",server:r.key.name})}catch(s){if(r.invoker!==o){await o.stop().catch(()=>{});return}s instanceof ige?(r.status="unauthorized",r.error=void 0,aI.warn(this._ctx,`server '${r.key.name}' requires authorization`),mD(this._ctx,{message:"Connection state: Unauthorized (authorization required)",server:r.key.name})):(r.status="error",r.error=s instanceof Error?s.message:String(s),aI.error(this._ctx,`server '${r.key.name}' failed to start`,s),Sd(this._ctx,{message:`Connection state: Error: ${r.error}`,server:r.key.name})),await o.stop().catch(()=>{}),this._unwireInvokerEvents(r),r.invoker=null,this._sender.serversChanged(N4(r.key.source))}}async _stopInvoker(e,r){let n=e.invoker;this._unwireInvokerEvents(e),e.invoker=null,e.status=r,r!=="error"&&r!=="blocked"&&(e.error=void 0),this._service.unregisterMount(EG(e.key)),this._sender.serversChanged(N4(e.key.source)),n&&(r==="stopped"&&la(this._ctx,{message:"Connection state: Stopped",server:e.key.name}),await n.stop().catch(o=>{aI.warn(this._ctx,`failed to stop invoker '${e.key.name}': ${String(o)}`)}))}_wireInvokerEvents(e){let r=e.invoker;if(!r)return;let n={toolsChanged:a(()=>{this._onUpstreamListChanged(e,"tools")},"toolsChanged"),resourcesChanged:a(()=>{this._onUpstreamListChanged(e,"resources")},"resourcesChanged"),promptsChanged:a(()=>{this._onUpstreamListChanged(e,"prompts")},"promptsChanged"),loggingMessage:a(o=>this._onUpstreamLog(e,o),"loggingMessage")};r.on(El.ToolsListChanged,n.toolsChanged),r.on(El.ResourcesListChanged,n.resourcesChanged),r.on(El.PromptsListChanged,n.promptsChanged),r.on(El.LoggingMessage,n.loggingMessage),e.listeners=n}_unwireInvokerEvents(e){let r=e.invoker,n=e.listeners;r&&n&&(r.off(El.ToolsListChanged,n.toolsChanged),r.off(El.ResourcesListChanged,n.resourcesChanged),r.off(El.PromptsListChanged,n.promptsChanged),r.off(El.LoggingMessage,n.loggingMessage)),e.listeners=null}_onUpstreamLog(e,r){let n=r.params.data,o=typeof n=="string"?n:JSON.stringify(n),s=r.params.logger?`${r.params.logger}: ${o}`:o,c=e.key.name;switch(r.params.level){case"warning":mD(this._ctx,{message:s,server:c});break;case"error":case"critical":case"alert":case"emergency":Sd(this._ctx,{message:s,server:c});break;default:la(this._ctx,{message:s,server:c})}}async _onUpstreamListChanged(e,r){if(e.invoker)try{if(r==="tools"){let n=await e.invoker.listTools();e.contents.tools=n.tools}else if(r==="resources"){let[n,o]=await Promise.all([e.invoker.listResources(),e.invoker.listResourceTemplates()]);e.contents.resources=n.resources,e.contents.resourceTemplates=o.resourceTemplates}else{let n=await e.invoker.listPrompts();e.contents.prompts=n.prompts}this._sender.serverDetailsChanged(e.key)}catch(n){aI.warn(this._ctx,`failed to refresh ${r} for '${e.key.name}': ${String(n)}`)}}async _refreshContents(e){if(!e.invoker)return;let r=await Promise.allSettled([e.invoker.listTools(),e.invoker.listResources(),e.invoker.listResourceTemplates(),e.invoker.listPrompts()]);e.contents={tools:r[0].status==="fulfilled"?r[0].value.tools:[],resources:r[1].status==="fulfilled"?r[1].value.resources:[],resourceTemplates:r[2].status==="fulfilled"?r[2].value.resourceTemplates:[],prompts:r[3].status==="fulfilled"?r[3].value.prompts:[]}}_buildInvoker(e){let r=e.classified,n=EG(e.key),o=e.key.name,s=a(c=>{Sd(this._ctx,{message:`Connection state: Error: ${c.message}`,server:o})},"onError");return r.kind==="stdio"?new DMe({id:n,label:o,params:r.params,toolCallTimeoutMs:r.toolCallTimeoutMs,clientInfo:{name:kMe,version:PMe},onStderr:a(c=>{mD(this._ctx,{message:`[server stderr] ${c.trimEnd()}`,server:o})},"onStderr"),onError:s}):new xMe({id:n,label:o,url:r.url,type:r.type,httpOptions:r.type==="http"?r.httpOptions:void 0,sseOptions:r.type==="sse"?r.sseOptions:void 0,toolCallTimeoutMs:r.toolCallTimeoutMs,clientInfo:{name:kMe,version:PMe},onError:s,authProvider:this._tryGetAuthSvc()?this._buildAuthProvider(e,r.url,r.httpOptions?.requestInit?.headers):void 0,onFallback:a(({fromCode:c})=>{aI.info(this._ctx,`'${e.key.name}': Streamable HTTP returned ${c}, falling back to legacy SSE`),sr(this._ctx,"mcpGateway.transport.fallbackToSse",{fromCode:String(c)})},"onFallback")})}_tryGetAuthSvc(){try{return this._ctx.get(xm)}catch{return}}_tryGetManagedSettings(){try{return this._ctx.get(ay)}catch{return}}_buildAuthProvider(e,r,n){let o=a(async()=>{if(e.authDiscovery)return e.authDiscovery;let s=await Mni(this._ctx,r,n);if(!s){aI.warn(this._ctx,`'${e.key.name}': OAuth discovery failed`);return}try{let c=this._tryGetAuthSvc(),l=await Qdt(this._ctx,c,s,e.key.name);if(e.authDiscovery={discovery:s,providerId:l.providerId},l.token){let u=l.sessions.find(d=>d.accessToken===l.token);u&&this._setAuthInfo(e,{providerId:l.providerId,accountName:u.account.label})}return e.authDiscovery}catch(c){aI.error(this._ctx,`'${e.key.name}': dynamic provider setup failed`,c);return}},"ensureDiscovery");return async s=>{let c=this._tryGetAuthSvc();if(!c)return;let l=await o();if(!l)return;if(s==="silent"){let f=await Qdt(this._ctx,c,l.discovery,e.key.name);if(f.token){let h=f.sessions.find(m=>m.accessToken===f.token);h&&this._setAuthInfo(e,{providerId:l.providerId,accountName:h.account.label})}return f.token}let u,d=this._oauthChain.then(async()=>{let f=await Qdt(this._ctx,c,l.discovery,e.key.name);if(f.token){u=f.token;let h=f.sessions.find(m=>m.accessToken===u);h&&this._setAuthInfo(e,{providerId:l.providerId,accountName:h.account.label});return}if(u=await Oni(this._ctx,c,l.discovery,l.providerId,e.key.name,r,f.sessions),u){let m=(await c.getSessions(l.providerId,l.discovery.scopes,{authorizationServer:l.discovery.authorizationServer},!0)).find(g=>g.accessToken===u);m&&this._setAuthInfo(e,{providerId:l.providerId,accountName:m.account.label})}});return this._oauthChain=d.catch(()=>{}),await d,u}}_setAuthInfo(e,r){e.authInfo?.providerId===r.providerId&&e.authInfo?.accountName===r.accountName||(e.authInfo=r,this._sender.serversChanged(N4(e.key.source)))}async _performLogout(e,r){await this._stopInvoker(e,"stopped").catch(()=>{});let n=this._tryGetAuthSvc(),o=e.authInfo?.providerId??e.authDiscovery?.providerId;if(n&&o)try{let s=n.getProvider(o),c=await n.getSessions(o,e.authDiscovery?.discovery.scopes??[],e.authDiscovery?{authorizationServer:e.authDiscovery.discovery.authorizationServer}:void 0,!0);for(let l of c)await s.removeSession(l.id).catch(u=>aI.warn(this._ctx,`removeSession failed for '${e.key.name}': ${String(u)}`))}catch(s){aI.warn(this._ctx,`logout enumeration failed for '${e.key.name}': ${String(s)}`)}if(r&&o){try{await this._unregister.unregisterProvider(o)}catch(s){aI.warn(this._ctx,`unregisterProvider failed for '${e.key.name}': ${String(s)}`)}e.authDiscovery=void 0}e.authInfo=void 0,this._sender.serversChanged(N4(e.key.source))}};function EG(t){switch(t.source.kind){case"user":return`user::${t.name}`;case"project":return`project::${t.source.workspaceFolder}::${t.name}`;case"plugin":return`plugin::${t.source.pluginId}::${t.name}`}}a(EG,"serializeKey");function Nii(t){if(!t||typeof t!="object")return JSON.stringify(t);let e=t,r=Object.keys(e).sort(),n={};for(let o of r)n[o]=e[o];return JSON.stringify(n)}a(Nii,"canonicalEntryHash");function eea(t){let e=Object.keys(t).sort(),r={};for(let n of e)r[n]=Nii(t[n]);return JSON.stringify(r)}a(eea,"canonicalConfigHash");function N4(t){return t.kind==="project"?{kind:"project",workspaceFolder:t.workspaceFolder}:{kind:"user"}}a(N4,"notificationScopeFor");function tea(t,e){return t.kind!==e.kind?!1:t.kind==="project"&&e.kind==="project"?t.workspaceFolder===e.workspaceFolder:t.kind==="plugin"&&e.kind==="plugin"?t.pluginId===e.pluginId:t.kind==="user"&&e.kind==="user"}a(tea,"sameScope");function rea(t,e){return e===void 0||t.kind==="user"||t.kind==="plugin"?!0:t.kind==="project"&&e.kind==="project"?t.workspaceFolder===e.workspaceFolder:!1}a(rea,"entryInScope");function nea(t){switch(t.kind){case"user":return"user";case"project":return`project<${t.workspaceFolder}>`;case"plugin":return`plugin<${t.pluginId}>`}}a(nea,"describeScope");function iea(t,e){if(!e||typeof e!="object")return;let r=e,n=typeof r.timeout=="number"?r.timeout:void 0,o={...r};if(delete o.timeout,typeof r.command=="string")return{kind:"stdio",name:t,params:o,toolCallTimeoutMs:n};if(typeof r.url=="string"){let c=(typeof r.type=="string"?r.type:void 0)==="sse"?"sse":"http";return{kind:"http",name:t,url:r.url,type:c,httpOptions:c==="http"?o:void 0,sseOptions:c==="sse"?o:void 0,toolCallTimeoutMs:n}}}a(iea,"classifyEntry");p();var Rgr=require("crypto"),Mii=require("events"),Oii=fe(require("http"));var CG=new pe("mcpGateway"),oea="mcp-session-id",sea=1024*1024,aea=5e3,Lii={Ready:"ready",Unauthorized:"unauthorized",Error:"error"},Mee={MountsChanged:"mountsChanged"},bG=class{constructor(e,r={}){this._routes=new Map;this._idToRouteId=new Map;this._emitter=new Mii.EventEmitter;this._connections=new Set;this._ctx=e,this._host=r.host??"127.0.0.1"}static{a(this,"McpGatewayService")}get port(){return this._port}get origin(){return this._port===void 0?void 0:`http://${this._host}:${this._port}`}listMounts(){let e=[];for(let[r,n]of this._routes)e.push(this._buildMountInfo(n.invoker.id,n.label,r,n.status));return e}setMountStatus(e,r){let n=this._idToRouteId.get(e);if(!n)return;let o=this._routes.get(n);if(!o||o.status===r)return;let s=o.status;o.status=r,CG.info(this._ctx,`mount '${o.label}' (${e}) status -> ${r}`),sr(this._ctx,"mcpGateway.mount.statusChanged",{from:s,to:r}),this._emitter.emit(Mee.MountsChanged,this.listMounts())}on(e,r){this._emitter.on(e,r)}off(e,r){this._emitter.off(e,r)}async registerMount(e,r,n=Lii.Ready){if(await this._ensureServer(),this._port===void 0)throw new Error("Gateway server failed to start");if(this._idToRouteId.get(e.id))throw new Error(`Mount already registered for id '${e.id}'`);let s=(0,Rgr.randomUUID)(),c=r??e.label;this._routes.set(s,{invoker:e,label:c,sessions:new Map,status:n}),this._idToRouteId.set(e.id,s);let l=this._buildMountInfo(e.id,c,s,n);return CG.info(this._ctx,`registered mount '${c}' (${e.id}) at ${l.url} [${n}]`),sr(this._ctx,"mcpGateway.mount.registered",{status:n}),this._emitter.emit(Mee.MountsChanged,this.listMounts()),l}unregisterMount(e){let r=this._idToRouteId.get(e);if(!r)return;let n=this._routes.get(r);if(n){for(let o of n.sessions.values())o.dispose();n.sessions.clear(),this._routes.delete(r),this._idToRouteId.delete(e),CG.info(this._ctx,`unregistered mount '${n.label}' (${e})`),sr(this._ctx,"mcpGateway.mount.unregistered",{finalStatus:n.status}),this._emitter.emit(Mee.MountsChanged,this.listMounts())}}dispose(){for(let e of this._routes.values()){for(let r of e.sessions.values())r.dispose();e.sessions.clear()}this._routes.clear(),this._idToRouteId.clear(),this._stopServer()}async _ensureServer(){if(!this._server?.listening){if(this._startPromise)return this._startPromise;this._startPromise=this._startServer();try{await this._startPromise}finally{this._startPromise=void 0}}}_startServer(){return new Promise((e,r)=>{let n=Oii.createServer((s,c)=>this._handleRequest(s,c));n.requestTimeout=0,this._server=n,n.on("connection",s=>{this._connections.add(s),s.on("close",()=>this._connections.delete(s))});let o=setTimeout(()=>r(new Error("Gateway listen timeout")),aea);n.once("listening",()=>{let s=n.address();s&&typeof s=="object"&&(this._port=s.port),clearTimeout(o),CG.info(this._ctx,`listening on http://${this._host}:${this._port}`),e()}),n.on("error",s=>{if(s.code==="EADDRINUSE"){n.listen(0,this._host);return}clearTimeout(o),r(s)}),n.listen(0,this._host)})}_stopServer(){if(this._server){CG.info(this._ctx,"stopping HTTP server");for(let e of this._connections)e.destroy();this._connections.clear(),this._server.close(),this._server=void 0,this._port=void 0}}_handleRequest(e,r){let o=new URL(e.url??"/",`http://${e.headers.host??"127.0.0.1"}`).pathname.split("/").filter(Boolean);if(o.length<2||o[1]!=="mcp"){this._respondHttpError(r,404,"Not found");return}let s=o[0],c=this._routes.get(s);if(!c){this._respondHttpError(r,404,"Mount not found");return}if(e.method==="POST"){this._handlePost(c,e,r);return}if(e.method==="GET"){this._handleGet(c,e,r);return}if(e.method==="DELETE"){this._handleDelete(c,e,r);return}this._respondHttpError(r,405,"Method not allowed")}async _handlePost(e,r,n){let o=await this._readBody(r);if(o===void 0){this._respondHttpError(n,413,"Payload too large");return}let s;try{s=JSON.parse(o)}catch(u){let d={jsonrpc:"2.0",id:null,error:{code:Kb.ParseError,message:u instanceof Error?u.message:String(u)}};n.writeHead(400,{"Content-Type":"application/json"}),n.end(JSON.stringify(d));return}let c=this._getSessionId(r),l=this._resolveSession(e,c,s,n);if(l)try{let u=await l.handleIncoming(s),d={"Content-Type":"application/json","Mcp-Session-Id":l.id};if(u.length===0||!this._hasRequest(s)){n.writeHead(202,d),n.end();return}let f=JSON.stringify(Array.isArray(s)?u:u[0]);n.writeHead(200,d),n.end(f)}catch(u){CG.error(this._ctx,"POST handler failed",u),this._respondHttpError(n,500,"Internal server error")}}_handleGet(e,r,n){let o=this._getSessionId(r);if(!o){this._respondHttpError(n,400,"Missing Mcp-Session-Id header");return}let s=e.sessions.get(o);if(!s){this._respondHttpError(n,404,"Session not found");return}s.attachSseClient(n)}_handleDelete(e,r,n){let o=this._getSessionId(r);if(!o){this._respondHttpError(n,400,"Missing Mcp-Session-Id header");return}let s=e.sessions.get(o);if(!s){this._respondHttpError(n,404,"Session not found");return}s.dispose(),n.writeHead(204),n.end()}_resolveSession(e,r,n,o){if(r){let l=e.sessions.get(r);if(!l){this._respondHttpError(o,404,"Session not found");return}return l}if(!Bni(n)){this._respondHttpError(o,400,"Missing Mcp-Session-Id header");return}let s=(0,Rgr.randomUUID)(),c=new RMe(s,this._ctx,e.invoker,()=>{e.sessions.delete(s)&&CG.info(this._ctx,`mount '${e.label}' session detached (sid=${s}, active sessions: ${e.sessions.size})`)});return e.sessions.set(s,c),CG.info(this._ctx,`mount '${e.label}' session attached (sid=${s}, active sessions: ${e.sessions.size})`),c}_hasRequest(e){return(Array.isArray(e)?e:[e]).some(Ldt)}_getSessionId(e){let r=e.headers[oea];return Array.isArray(r)?r[0]:r}async _readBody(e){let r=[],n=0;for await(let o of e){let s=Buffer.isBuffer(o)?o:Buffer.from(o);if(n+=s.byteLength,n>sea)return;r.push(s)}return Buffer.concat(r).toString("utf8")}_respondHttpError(e,r,n){e.writeHead(r,{"Content-Type":"application/json"});let o={jsonrpc:"2.0",id:null,error:{code:r,message:n}};e.end(JSON.stringify(o))}_buildMountInfo(e,r,n,o){return{id:e,label:r,routeId:n,url:`${this.origin}/${n}/mcp`,status:o}}};p();var Bii=[{type:"skill",pick:a(t=>t.skills,"pick")},{type:"agent",pick:a(t=>t.agents,"pick")},{type:"instructions",pick:a(t=>t.instructions,"pick")},{type:"prompt",pick:a(t=>t.commands,"pick")}],J8=class{constructor(e,r){this.ctx=e;this.service=r;this.logger=new pe("PluginContributionInjector");this.registered=new Map;this.disposed=!1;this.syncChain=Promise.resolve();this.changeSubscription=this.service.onDidChangePlugins(()=>this.scheduleSync()),this.gateSubscription=this.subscribeToGateChanges()}static{a(this,"PluginContributionInjector")}subscribeToGateChanges(){try{let e=this.ctx.get(Qo);return this.lastPluginsEnabled=sG(this.ctx),e.onDidChangeCopilotSettings(()=>{let r=sG(this.ctx);r!==this.lastPluginsEnabled&&(this.lastPluginsEnabled=r,this.initialSyncPromise=void 0,this.scheduleSync())})}catch{return}}async ensureInitialSync(){if(this.disposed)return;if(this.initialSyncPromise)return this.initialSyncPromise;if(!this.isEditorIdentityKnown())return;let e,r=new Promise(n=>e=n);return this.initialSyncPromise=r,this.syncChain=this.syncChain.then(()=>this.sync()).then(n=>{n||(this.initialSyncPromise=void 0)}).catch(n=>{this.initialSyncPromise=void 0,this.logger.warn(this.ctx,"plugin contribution initial sync failed",{err:String(n)})}).finally(()=>e()),r}isEditorIdentityKnown(){try{return this.ctx.get(Ir).isEditorPluginInfoKnown()}catch{return!0}}scheduleSync(){this.syncChain=this.syncChain.then(()=>this.sync()).then(()=>{}).catch(e=>{this.logger.warn(this.ctx,"plugin contribution sync failed",{err:String(e)})})}syncedForTesting(){return this.syncChain}async sync(){if(this.disposed)return!0;if(!sG(this.ctx))return this.teardownAll(),!0;let e;try{e=(await this.service.listPlugins()).filter(vme)}catch(n){return this.logger.warn(this.ctx,"listPlugins failed during sync",{err:String(n)}),!1}if(this.disposed)return!0;let r=new Map(e.map(n=>[n.uri,n]));for(let n of[...this.registered.keys()])r.has(n)||this.teardownPlugin(n);for(let[n,o]of r)if(await this.reconcilePlugin(n,o),this.disposed)return!0;return!0}async reconcilePlugin(e,r){let n=this.registered.get(e),o=cea(r),s=lea(r),c=n?.disposables??[];if(!n||n.fileHash!==o){for(let u of c)u.dispose();c=this.registerFiles(e,r)}let l=n?.mcpApplied??!1;if((!n||n.mcpHash!==s||!n.mcpApplied)&&(l=await this.applyMcp(e,r,n)),this.disposed){for(let u of c)u.dispose();l&&this.tryManager()?.removePluginServers(e).catch(d=>this.logger.warn(this.ctx,"removePluginServers failed",{uri:e,err:String(d)}));return}this.registered.set(e,{fileHash:o,mcpHash:s,mcpApplied:l,disposables:c})}registerFiles(e,r){let n=this.tryRegistry();if(!n)return[];let o=[];for(let{type:s,pick:c}of Bii)for(let l of c(r))o.push(n.register(s,[uea(l.uri)],{watchable:!1,classification:{storage:"plugin",pluginInfo:{name:l.name,description:l.description??"",pluginUri:e}}}));return o}async applyMcp(e,r,n){let o=this.tryManager();if(!o)return!0;let s=dea(r.mcpServerDefinitions);if(Object.keys(s).length===0&&!n?.mcpApplied)return!0;try{return await o.applyPluginServers(e,s),!0}catch(c){return this.logger.warn(this.ctx,"applyPluginServers failed",{uri:e,err:String(c)}),!1}}teardownPlugin(e){let r=this.registered.get(e);if(!r)return;for(let o of r.disposables)o.dispose();let n=this.tryManager();n&&n.removePluginServers(e).catch(o=>this.logger.warn(this.ctx,"removePluginServers failed",{uri:e,err:String(o)})),this.registered.delete(e)}teardownAll(){for(let e of[...this.registered.keys()])this.teardownPlugin(e)}tryRegistry(){return this.tryGet(QA)}tryManager(){return this.tryGet(gy)}tryGet(e){try{return this.ctx.get(e)}catch(r){if(r instanceof Ic)return;throw r}}dispose(){this.disposed||(this.disposed=!0,this.changeSubscription.dispose(),this.gateSubscription?.dispose(),this.teardownAll())}};function cea(t){let e=Bii.flatMap(({pick:r})=>r(t).map(n=>JSON.stringify([n.uri,n.name,n.description??""]))).sort();return JSON.stringify(e)}a(cea,"fileContentHash");function lea(t){let e=t.mcpServerDefinitions.map(r=>JSON.stringify([r.name,r.configuration])).sort();return JSON.stringify(e)}a(lea,"mcpContentHash");function uea(t){return t.includes("://")?un(t):t}a(uea,"toPathPattern");function dea(t){let e={};for(let{name:r,configuration:n}of t)n.type==="stdio"?e[r]={command:n.command,...n.args&&{args:[...n.args]},...n.env&&{env:{...n.env}},...n.cwd&&{cwd:n.cwd}}:e[r]={url:n.url,...n.headers&&{headers:{...n.headers}}};return e}a(dea,"toMcpServersConfig");var Fii=fe(require("node:path"));var Gdt=new pe("BackgroundAgent.SessionOptionsBuilder"),fea=5e3;async function Uii(t,e,r,n){let o=LO((async()=>{try{await t.get(J8).ensureInitialSync()}catch(A){if(!(A instanceof Ic))throw A}})(),fea,void 0),s=await n.buildAuthInfo(),c=oo(r.workspaceFolder.uri).fsPath;await o;let l;try{l=t.get(Ig).getSkillDirectories(c),l.length===0&&(l=void 0)}catch{}let u={clientName:t.get(Ir).getEditorPluginInfo().name,sessionId:e,authInfo:s,model:r.model,reasoningEffort:r.reasoningEffort,enableStreaming:r.enableStreaming??!0,excludedTools:r.excludedTools,skillDirectories:l,disabledSkills:r.disabledSkills?new Set(r.disabledSkills):void 0,workingDirectory:c,infiniteSessions:{enabled:!0},memory:{enabled:!0}};try{await t.get(aF)._handleWorkspaceAdded({uri:r.workspaceFolder.uri,name:r.workspaceFolder.name??""})}catch{}let d=await pZn(t,r.workspaceFolder);d.length>0&&(u.customAgents=d);let f=r.mcpDirectory??r.workspaceFolder.uri;try{let A=t.get(yR).buildMcpServers(f);Gdt.info(t,"Built MCP gateway servers for SDK options",{sessionId:e,gatewayServers:A}),Object.keys(A).length>0&&(u.mcpServers=A)}catch(A){if(!(A instanceof Ic))throw A}u.hooks=hZn(t,r.workspaceFolder);let h=await OXn(t,r.workspaceFolder);if(u.hooks=LXn(u.hooks,h),r.inlineConfinedFile){let A=[...u.hooks.preToolUse??[]];r.inlineConfinementHook&&A.unshift(r.inlineConfinementHook),r.inlineTurnLimiter&&A.unshift(r.inlineTurnLimiter.hook),u.hooks={...u.hooks,preToolUse:A},u.systemMessage={mode:"append",content:UXn(r.inlineConfinedFile)}}else{let A=await kpr(t,[r.workspaceFolder]).catch(v=>{Gdt.warn(t,"Failed to load git commit instructions for systemMessage",v)}),y=r.useNestedAgentsMdFiles===!0?await hea(t,c):void 0,_=r.useNestedClaudeMdFiles===!0?await pea(t,c):void 0,E=_Zn({gitCommitInstructions:A,globalAgentsMdInstructions:r.globalAgentsMdInstructions,nestedAgentsInstructions:y,globalClaudeMdInstructions:r.globalClaudeMdInstructions,nestedClaudeInstructions:_});E!==void 0&&(u.systemMessage={mode:"append",content:E})}r.externalToolDefinitions?.length&&(u.externalToolDefinitions=r.externalToolDefinitions);let m=mZn(r);m.size>0&&(u.disabledInstructionSources=m);let g=Rut(t);return g&&(u.sandboxConfig=g),u}a(Uii,"buildSessionOptions");async function pea(t,e){let r;try{r=t.get(Go)}catch{return}try{return await AZn(async n=>r.readDirectory(Ko(n)),async n=>Qii(r,e,n),e)}catch(n){Gdt.warn(t,"Failed to scan nested CLAUDE.md files",n);return}}a(pea,"scanNestedClaudeSection");async function hea(t,e){let r;try{r=t.get(Go)}catch{return}try{return await yZn(async n=>r.readDirectory(Ko(n)),async n=>Qii(r,e,n),e)}catch(n){Gdt.warn(t,"Failed to scan nested AGENTS.md files",n);return}}a(hea,"scanNestedAgentsSection");async function Qii(t,e,r){try{return await t.readFileString(Ko(Fii.join(e,r)))}catch{return}}a(Qii,"readNestedFile");p();var mea=20,$dt=new pe("BackgroundAgent.SessionRegistry"),Vdt=class{constructor(e,r){this.ctx=e;this.onSessionEvicted=r;this.sessions=new Map;this.resumeOptions=new Map;this.workingDirs=new Map;this.workspaceFolderUris=new Map;this.mcpDirectories=new Map;this.turnIndexes=new Map;this.chatModes=new Map;this.providerModels=new Map;this.appliedSandboxConfig=new Map;this.confinedFiles=new Map;this.turnLimiters=new Map;this.children=new Map}static{a(this,"SessionRegistry")}set(e,r){if(this.sessions.has(e)&&this.sessions.delete(e),this.sessions.set(e,r),this.sessions.size>mea){let n=this.sessions.keys().next().value;if(n!==void 0&&n!==e){let o=this.sessions.get(n);if(!o)return;$dt.debug(this.ctx,`Evicting oldest cached session: ${n}`),this.sessions.delete(n);let s=Promise.resolve();try{s=this.onSessionEvicted?.(n,o)??s}catch(c){s=Promise.reject(c instanceof Error?c:new Error(String(c)))}Promise.all([this.removeExpected(n,o),s]).catch(c=>$dt.warn(this.ctx,`Failed to evict session ${n}`,{error:c instanceof Error?c.message:String(c)}))}}}get(e){return this.sessions.get(e)}has(e){return this.sessions.has(e)}size(){return this.sessions.size}entries(){return this.sessions.entries()}forgetSession(e){this.sessions.delete(e)}setResumeOptions(e,r){this.resumeOptions.set(e,r)}getResumeOptions(e){return this.resumeOptions.get(e)}setWorkingDir(e,r){this.workingDirs.set(e,r)}getWorkingDir(e){return this.workingDirs.get(e)}workingDirEntries(){return this.workingDirs}setWorkspaceFolderUri(e,r){this.workspaceFolderUris.set(e,r)}getWorkspaceFolderUri(e){return this.workspaceFolderUris.get(e)}setMcpDirectory(e,r){this.mcpDirectories.set(e,r)}getMcpDirectory(e){return this.mcpDirectories.get(e)}incrementTurnIndex(e){let r=(this.turnIndexes.get(e)??-1)+1;return this.turnIndexes.set(e,r),r}seedTurnIndexIfAbsent(e,r){this.turnIndexes.has(e)||this.turnIndexes.set(e,r)}setChatMode(e,r){this.chatModes.set(e,r)}getChatMode(e){return this.chatModes.get(e)}deleteChatMode(e){this.chatModes.delete(e)}clearChatMode(){this.chatModes.clear()}chatModeEntries(){return this.chatModes}setProviderModel(e,r){this.providerModels.set(e,r)}getProviderModel(e){return this.providerModels.get(e)}deleteProviderModel(e){this.providerModels.delete(e)}setAppliedSandboxConfig(e,r){this.appliedSandboxConfig.set(e,r)}getAppliedSandboxConfig(e){return this.appliedSandboxConfig.get(e)}deleteAppliedSandboxConfig(e){this.appliedSandboxConfig.delete(e)}setConfinedFile(e,r){this.confinedFiles.set(e,r)}getConfinedFile(e){return this.confinedFiles.get(e)}hasConfinedFile(e){return this.confinedFiles.has(e)}setTurnLimiter(e,r){this.turnLimiters.set(e,r)}getTurnLimiter(e){return this.turnLimiters.get(e)}registerChild(e,r){let n=this.children.get(e);n||(n=[],this.children.set(e,n)),n.push(r)}async remove(e){let r=this.sessions.get(e);await this.removeExpected(e,r)}async removeExpected(e,r){let n=this.children.get(e);this.children.delete(e),n&&await Promise.all(n.map(async s=>{try{await Promise.resolve(s.dispose())}catch(c){$dt.warn(this.ctx,"Child Disposable failed during session removal",{sessionId:e,error:c instanceof Error?c.message:String(c)})}}));let o=this.sessions.get(e);if(r!==void 0&&o!==void 0&&o!==r){$dt.debug(this.ctx,`Skipping map clear for session ${e}: re-cached during removal`);return}this.sessions.delete(e),this.resumeOptions.delete(e),this.workingDirs.delete(e),this.workspaceFolderUris.delete(e),this.mcpDirectories.delete(e),this.turnIndexes.delete(e),this.chatModes.delete(e),this.providerModels.delete(e),this.appliedSandboxConfig.delete(e),this.confinedFiles.delete(e),this.turnLimiters.delete(e)}async removeAll(){let e=[...this.sessions.keys(),...this.children.keys()],r=Array.from(new Set(e));await Promise.all(r.map(n=>this.remove(n))),this.sessions.clear(),this.resumeOptions.clear(),this.workingDirs.clear(),this.workspaceFolderUris.clear(),this.mcpDirectories.clear(),this.turnIndexes.clear(),this.chatModes.clear(),this.providerModels.clear(),this.appliedSandboxConfig.clear(),this.confinedFiles.clear(),this.turnLimiters.clear(),this.children.clear()}};p();p();var kgr=require("node:fs"),Oee=fe(require("node:path"));function qii(t){return t.replace(/[/\\:]/g,"_").split("\0").join("_")}a(qii,"sanitizePathSegment");function zdt(t){return typeof t=="string"?t:void 0}a(zdt,"asString");function Wdt(t){return typeof t=="number"?t:void 0}a(Wdt,"asNumber");function gea(t){return Array.isArray(t)?t.map(e=>{if(!e||typeof e!="object")return{};let r=e;return{tool_call_id:zdt(r.toolCallId),tool:zdt(r.name)}}):[]}a(gea,"asToolCallArray");function Aea(t){if(!t||typeof t!="object")return"";let e=t;return typeof e.detailedContent=="string"?e.detailedContent:typeof e.content=="string"?e.content:""}a(Aea,"toToolResultText");function yea(t){try{return JSON.stringify(t)}catch{return}}a(yea,"safeStringify");var Pgr=class{constructor(e,r,n){this.sessionId=r;this.usageByKey=new Map;this.pendingTools=new Map;this.appendQueues=new Map;this.activeTurnId=n;let o=gHt(new Date),s=qii(r);this.sessionDir=Oee.join(e,`pid-${process.pid}_${o}_bgagent`,"sessions",s)}static{a(this,"BackgroundAgentPersistence")}persistEvent(e){if(e.type==="assistant.turn_start"){this.activeTurnId=e.data.turnId;return}switch(e.type){case"assistant.usage":this.handleUsage(e);break;case"assistant.message":this.handleMessage(e);break;case"tool.execution_start":this.handleToolStart(e);break;case"tool.execution_complete":this.handleToolComplete(e);break;default:break}}outputDir(e){return e?Oee.join(this.sessionDir,"runSubAgent",qii(e)):this.sessionDir}appendJsonl(e,r){let n=yea(r);if(n===void 0)return;let s=(this.appendQueues.get(e)??Promise.resolve()).then(async()=>{await kgr.promises.mkdir(Oee.dirname(e),{recursive:!0}),await kgr.promises.appendFile(e,`${n}
|
|
3853
3853
|
`,"utf8")});this.appendQueues.set(e,s.catch(()=>{}))}handleUsage(e){let r=e.data.parentToolCallId??"main";this.usageByKey.set(r,{inputTokens:Wdt(e.data.inputTokens),outputTokens:Wdt(e.data.outputTokens),cacheReadTokens:Wdt(e.data.cacheReadTokens)})}handleMessage(e){let r=e.data.parentToolCallId,n=r??"main",o=this.usageByKey.get(n),s=gea(e.data.toolRequests),c=this.outputDir(r);s.length>0&&this.appendJsonl(Oee.join(c,"trajectory.jsonl"),{tool_calls:s,input_tokens:o?.inputTokens,output_tokens:Wdt(e.data.outputTokens)??o?.outputTokens,cached_input_tokens:o?.cacheReadTokens,conversationId:this.sessionId,turnId:this.activeTurnId})}handleToolStart(e){let r=zdt(e.data.toolCallId);r&&this.pendingTools.set(r,{toolCallId:r,toolName:e.data.toolName,arguments:e.data.arguments,parentToolCallId:e.data.parentToolCallId,startTimestamp:e.timestamp})}handleToolComplete(e){let r=zdt(e.data.toolCallId);if(!r)return;let n=this.pendingTools.get(r);this.pendingTools.delete(r);let o=this.outputDir(n?.parentToolCallId),s=n?.startTimestamp?new Date(n.startTimestamp).getTime():void 0,c=new Date(e.timestamp).getTime(),l=s?c-s:void 0;this.appendJsonl(Oee.join(o,"tool-in-out.jsonl"),{tool_call_id:r,tool:n?.toolName??"",input:typeof n?.arguments=="object"&&n.arguments!==null?n.arguments:{},output:Aea(e.data.result),status:e.data.success?"success":"error",timestamp:e.timestamp,duration_ms:l})}};function jii(t,e,r){let n=kt(t,ze.PromptPersistBasePath)?.trim()||void 0;if(n)return new Pgr(n,e,r)}a(jii,"createBackgroundAgentPersistence");p();var Ydt=class{constructor(){this.pendingWaits=new Map;this.data={permission:{totalMs:0,count:0},user_input:{totalMs:0,count:0},exit_plan_mode:{totalMs:0,count:0}}}static{a(this,"UserWaitTracker")}trackEvent(e){let r=e.type,n=e.data;if(r==="permission.requested"||r==="user_input.requested"||r==="exit_plan_mode.requested"){let o=typeof n?.requestId=="string"?n.requestId:void 0;if(!o)return;let s=r.replace(".requested","");this.pendingWaits.set(o,{waitType:s,startTimeMs:performance.now()})}else if(r==="permission.completed"||r==="user_input.completed"||r==="exit_plan_mode.completed"){let o=typeof n?.requestId=="string"?n.requestId:void 0;if(!o)return;let s=this.pendingWaits.get(o);if(s){let c=performance.now()-s.startTimeMs;this.pendingWaits.delete(o);let l=this.data[s.waitType];l.totalMs+=c,l.count+=1}}}};p();p();var uge={INVOKE_AGENT:"invoke_agent",EXECUTE_TOOL:"execute_tool"},Pn={OPERATION_NAME:"gen_ai.operation.name",AGENT_NAME:"gen_ai.agent.name",SYSTEM:"gen_ai.system",REQUEST_MODEL:"gen_ai.request.model",RESPONSE_MODEL:"gen_ai.response.model",SYSTEM_INSTRUCTIONS:"gen_ai.system_instructions",INPUT_MESSAGES:"gen_ai.input.messages",OUTPUT_MESSAGES:"gen_ai.output.messages",CONVERSATION_ID:"gen_ai.conversation.id",USAGE_INPUT_TOKENS:"gen_ai.usage.input_tokens",USAGE_OUTPUT_TOKENS:"gen_ai.usage.output_tokens",USAGE_CACHE_READ_INPUT_TOKENS:"gen_ai.usage.cache_read.input_tokens",USAGE_CACHE_CREATION_INPUT_TOKENS:"gen_ai.usage.cache_creation.input_tokens",TURN_COUNT:"gen_ai.turn_count",TOTAL_COST_USD:"gen_ai.total_cost_usd",TOOL_NAME:"gen_ai.tool.name",TOOL_CALL_ID:"gen_ai.tool.call.id",TOOL_CALL_ARGUMENTS:"gen_ai.tool.call.arguments",TOOL_CALL_RESULT:"gen_ai.tool.call.result"};function Z8(t,e){return JSON.stringify([{role:t,parts:[{type:"text",content:e}]}])}a(Z8,"genAiMessagesJson");p();var NMe=require("fs"),dge=fe(require("path"));var Dgr=new pe("OtelSpanFilePersistence"),_ea="debug.jsonl",cI=class{constructor(e){this.ctx=e}static{a(this,"OTelSpanFilePersistence")}isEnabled(){return!!this.getDirectory()}getDirectory(){let e=kt(this.ctx,ze.AgentDebugLogsDirectory);return typeof e=="string"&&e.length>0?e:void 0}async appendSpans(e){if(!this.isEnabled()||e.length===0)return;let r=new Map;for(let n of e){let o=Eea(n);if(!o){Dgr.warn(this.ctx,`Dropping span without gen_ai.conversation.id (traceId=${n.traceId})`);continue}let s=r.get(o);s?s.push(n):r.set(o,[n])}for(let[n,o]of r)try{let s=this.getFilePath(n);await NMe.promises.mkdir(dge.dirname(s),{recursive:!0,mode:448});let c=o.map(l=>JSON.stringify(l)).join(`
|
|
3854
3854
|
`)+`
|
|
3855
3855
|
`;await NMe.promises.appendFile(s,c,{encoding:"utf8",mode:384})}catch(s){Dgr.warn(this.ctx,`Failed to persist spans for conversation=${n}: ${s instanceof Error?s.message:String(s)}`)}}async readSpans(e){if(!this.isEnabled())return[];try{let r=await NMe.promises.readFile(this.getFilePath(e),"utf8"),n=[];for(let o of r.split(`
|
|
@@ -3986,9 +3986,9 @@ ${d.toFixed(2)} ${u}`).join("")??"";return aft.debug(t,`ghostText produced from
|
|
|
3986
3986
|
`),new Promise((c,l)=>{let u=setTimeout(()=>{this.pendingRequests.delete(o),l(new Error(`Timeout waiting for response to ${r} (id=${o})`))},3e4);this.pendingRequests.set(o,{resolve:c,reject:l,timer:u})})}sendNotification(r,n){if(!this.process?.stdin||!this.process.stdin.writable)return HI.warn(this.ctx,`sendNotification: stdin unavailable, dropping ${r}`),!1;let o=JSON.stringify({jsonrpc:"2.0",method:r,params:n??{}});try{return this.process.stdin.write(o+`
|
|
3987
3987
|
`),!0}catch(s){let c=s instanceof Error?s.message:String(s);return HI.warn(this.ctx,`sendNotification: write failed for ${r}: ${c}`),!1}}onNotification(r){this.notificationHandlers.push(r)}onServerRequest(r,n){this.serverRequestHandlers.set(r,n)}sendRawResponse(r,n){if(!this.process?.stdin||!this.process.stdin.writable)return HI.warn(this.ctx,`sendRawResponse: stdin unavailable, dropping response id=${r}`),!1;let o=JSON.stringify({jsonrpc:"2.0",id:r,result:n});try{return this.process.stdin.write(o+`
|
|
3988
3988
|
`),!0}catch(s){let c=s instanceof Error?s.message:String(s);return HI.warn(this.ctx,`sendRawResponse: write failed for id=${r}: ${c}`),!1}}isRunning(){return this.process!==void 0&&!this.process.killed}handleLine(r){if(r.trim())try{let n=JSON.parse(r),o=typeof n.id=="number"||typeof n.id=="string";if(o&&this.pendingRequests.has(n.id)){let s=this.pendingRequests.get(n.id);this.pendingRequests.delete(n.id),clearTimeout(s.timer),n.error?s.reject(new Error(JSON.stringify(n.error))):s.resolve(n.result)}else if(o&&n.method)HI.info(this.ctx,`CodexProcessManager: \u2190 REQUEST ${n.method} (id=${JSON.stringify(n.id)}) params=${JSON.stringify(n.params).slice(0,500)}`),this.handleServerRequest(n.id,n.method,n.params);else if(n.method)for(let s of this.notificationHandlers)s(n.method,n.params);else n.id===null&&HI.warn(this.ctx,`CodexProcessManager: dropped frame with null id: ${r.slice(0,500)}`)}catch{}}handleServerRequest(r,n,o){HI.debug(this.ctx,`CodexProcessManager: server request ${n} (id=${JSON.stringify(r)})`);let s=this.serverRequestHandlers.get(n);if(s){s(o,r);return}this.sendRawResponse(r,{decision:"accept"});for(let c of this.notificationHandlers)c(n,o)}handleProcessExit(r){if(this.process=void 0,this.rl=void 0,this.stopping)return;let n=new Error(`Codex process exited unexpectedly (code: ${r})`);this.rejectAllPending(n),this.emit("error",n)}rejectAllPending(r){for(let[,n]of this.pendingRequests)clearTimeout(n.timer),n.reject(r);this.pendingRequests.clear()}};p();p();var VEe=class{constructor(){this._copilotUsage=new vge;this._pendingPermissions=new Map}static{a(this,"CodexSessionStateService")}setActiveThread(e){this._activeThreadId=e}getActiveThread(){return this._activeThreadId}addCopilotUsageNanoAiuForThread(e,r){this._copilotUsage.add(e,r)}takeCopilotUsageNanoAiuForThread(e){return this._copilotUsage.take(e)}clear(e){this._copilotUsage.clear(e),this._activeThreadId===e&&(this._activeThreadId=void 0)}setPendingPermission(e,r,n){let o=this._pendingPermissions.get(e);o||(o=new Map,this._pendingPermissions.set(e,o)),o.set(r,n)}takePendingPermission(e,r){let n=this._pendingPermissions.get(e);if(!n)return;let o=n.get(r);if(o)return n.delete(r),n.size===0&&this._pendingPermissions.delete(e),o}takeAllPendingPermissionsForSession(e){let r=this._pendingPermissions.get(e);if(!r)return[];let n=Array.from(r.entries());return this._pendingPermissions.delete(e),n}takeAllPendingPermissions(){let e=[];for(let[r,n]of this._pendingPermissions)for(let[o,s]of n)e.push([r,o,s]);return this._pendingPermissions.clear(),e}};var Nzi=fe(require("node:http")),x8r=require("node:stream/promises");var o9=new pe("CodexResponsesProxyServer"),vLc=16*1024*1024,dIt=class{constructor(e,r=new VEe){this.ctx=e;this.stateService=r;this.port=0}static{a(this,"CodexResponsesProxyServer")}async start(){if(this.server)return this.port;let e=Nzi.createServer((r,n)=>{this.handleRequest(r,n)});return this.server=e,new Promise((r,n)=>{e.once("error",n),e.listen(0,"127.0.0.1",()=>{let o=e.address();o&&typeof o=="object"?(this.port=o.port,o9.info(this.ctx,`CodexResponsesProxyServer listening on port ${o.port}`),e.removeListener("error",n),r(this.port)):n(new Error("Failed to get server address"))})})}async stop(){let e=this.server;e&&(await new Promise(r=>{e.close(()=>r())}),this.server=void 0,this.port=0)}getPort(){return this.port}async handleRequest(e,r){try{if(o9.info(this.ctx,`handleRequest: ${e.method} ${e.url}`),e.method==="POST"&&e.url?.includes("/responses")){let n=await this.readBody(e);o9.info(this.ctx,`proxyToCapiResponses: forwarding ${n.length} bytes`),await this.proxyToCapiResponses(n,r),o9.info(this.ctx,"proxyToCapiResponses: completed")}else o9.debug(this.ctx,`CodexResponsesProxyServer: unhandled ${e.method} ${e.url}`),r.writeHead(404),r.end("{}")}catch(n){o9.exception(this.ctx,n,".handleRequest"),r.headersSent||r.writeHead(500,{"Content-Type":"application/json"}),r.writableEnded||r.end(JSON.stringify({error:{message:"Internal proxy error"}}))}}async proxyToCapiResponses(e,r){let n=this.ctx.get(Qt),o=this.ctx.get(Jt),s;try{s=await n.getToken()}catch(h){o9.exception(this.ctx,h,".proxyToCapiResponses/getToken"),r.writeHead(401,{"Content-Type":"application/json"}),r.end(JSON.stringify({error:{message:"Failed to acquire Copilot token"}}));return}let c=Jle(this.ctx,s,"v1/responses"),l={...om(this.ctx),"Content-Type":"application/json"},{headers:u}=await Kle(this.ctx,l,s.token),d=new AbortController,f=a(()=>{d.signal.aborted||d.abort()},"onClose");r.on("close",f);try{let h=await o.fetch(c,{method:"POST",headers:u,body:e,signal:d.signal});Zle(this.ctx,h,"v1/responses");let m=h.headers.get("content-type")||"application/json";r.writeHead(h.status,{"Content-Type":m});let g=h.body();if(!g){r.end();return}let A=m.toLowerCase().includes("text/event-stream"),y=this.stateService.getActiveThread();if(A&&y){let _=LMe(E=>{this.stateService.addCopilotUsageNanoAiuForThread(y,E)});await(0,x8r.pipeline)(g,_,r)}else await(0,x8r.pipeline)(g,r)}catch(h){if(d.signal.aborted){o9.debug(this.ctx,"upstream fetch aborted by client disconnect"),r.writableEnded||r.end();return}if(o9.exception(this.ctx,h,".proxyToCapiResponses"),r.headersSent||r.writableEnded){r.destroy();return}r.writeHead(500,{"Content-Type":"application/json"}),r.end(JSON.stringify({error:{message:"Upstream request failed"}}))}finally{r.removeListener("close",f)}}readBody(e){return new Promise((r,n)=>{let o=[],s=0;e.on("data",c=>{if(s+=c.length,s>vLc){n(new Error("Request body exceeds maximum allowed size")),e.destroy();return}o.push(c)}),e.on("end",()=>r(Buffer.concat(o).toString("utf8"))),e.on("error",n)})}};p();var w8r=require("node:fs"),Mzi=fe(require("node:os")),fIt=fe(require("node:path"));Fo();function CLc(){let t=process.env.CODEX_HOME;return t||fIt.join(Mzi.homedir(),".codex")}a(CLc,"codexHome");async function pIt(t){let e=fIt.join(CLc(),"sessions");try{return await Ozi(e,t)}catch{return null}}a(pIt,"findRolloutFile");async function Ozi(t,e){let r;try{r=await w8r.promises.readdir(t,{withFileTypes:!0})}catch{return null}for(let n of r){let o=fIt.join(t,n.name);if(n.isDirectory()){let s=await Ozi(o,e);if(s)return s}else if(n.isFile()&&n.name.endsWith(".jsonl")&&n.name.includes(e))return o}return null}a(Ozi,"searchForRollout");async function hIt(t){let e;try{e=await w8r.promises.readFile(t,"utf8")}catch{return null}let r=e.split(`
|
|
3989
|
-
`).filter(c=>c.trim().length>0),n=[];for(let c of r)try{n.push(JSON.parse(c))}catch{}let o=[],s={sessionStarted:!1,currentTurnId:void 0,currentModel:void 0,eventMsgCompletionCallIds:bLc(n),sealedCallIds:new Set};for(let c of n){let l=SLc(c,s);l&&(Array.isArray(l)?o.push(...l):o.push(l))}return o}a(hIt,"readAndTranslateRollout");function bLc(t){let e=new Set;for(let r of t){if(r.type!=="event_msg")continue;let n=r.payload.type;if(n!=="patch_apply_end"&&n!=="web_search_end")continue;let o=r.payload.call_id;typeof o=="string"&&o.length>0&&e.add(o)}return e}a(bLc,"collectEventMsgCompletionCallIds");function SLc(t,e){switch(t.type){case"event_msg":return TLc(t.timestamp,t.payload,e);case"response_item":return ILc(t.timestamp,t.payload,e);case"turn_context":{let r=t.payload.model;return typeof r=="string"&&r.length>0&&(e.currentModel=r),null}default:return null}}a(SLc,"translateRolloutLine");function TLc(t,e,r){switch(e.type){case"task_started":return r.currentTurnId=e.turn_id||void 0,r.sessionStarted?null:(r.sessionStarted=!0,{id:Dt(),timestamp:t,type:"session.start",data:{producer:"codex",startTime:t}});case"user_message":{let o=e.message||"",{content:s,attachments:c}=OLc(o),l={content:s};return c.length>0&&(l.attachments=c),{id:Dt(),timestamp:t,type:"user.message",data:l}}case"agent_message":{let o=e.message||"",s=Dt(),c=r.currentTurnId||s;return[{id:Dt(),timestamp:t,type:"assistant.turn_start",data:{turnId:s,interactionId:c}},{id:s,timestamp:t,type:"assistant.message",data:{content:o,messageId:s,model:r.currentModel}}]}case"token_count":{let s=e.info?.last_token_usage;return s?{id:Dt(),timestamp:t,type:"assistant.usage",data:{inputTokens:s.input_tokens,outputTokens:s.output_tokens,cacheReadTokens:s.cached_input_tokens}}:null}case"task_complete":return r.currentTurnId=void 0,{id:Dt(),timestamp:t,type:"session.idle"};case"patch_apply_end":{let o=e.call_id||"";if(!o||r.sealedCallIds.has(o))return null;r.sealedCallIds.add(o);let s=e.success===!0,c=e.changes,l=typeof e.stderr=="string"?e.stderr:"",u=typeof e.status=="string"?e.status:"failed";return{id:Dt(),timestamp:t,type:"tool.execution_complete",data:{toolCallId:o,success:s,result:s?{
|
|
3989
|
+
`).filter(c=>c.trim().length>0),n=[];for(let c of r)try{n.push(JSON.parse(c))}catch{}let o=[],s={sessionStarted:!1,currentTurnId:void 0,currentModel:void 0,eventMsgCompletionCallIds:bLc(n),sealedCallIds:new Set};for(let c of n){let l=SLc(c,s);l&&(Array.isArray(l)?o.push(...l):o.push(l))}return o}a(hIt,"readAndTranslateRollout");function bLc(t){let e=new Set;for(let r of t){if(r.type!=="event_msg")continue;let n=r.payload.type;if(n!=="patch_apply_end"&&n!=="web_search_end")continue;let o=r.payload.call_id;typeof o=="string"&&o.length>0&&e.add(o)}return e}a(bLc,"collectEventMsgCompletionCallIds");function SLc(t,e){switch(t.type){case"event_msg":return TLc(t.timestamp,t.payload,e);case"response_item":return ILc(t.timestamp,t.payload,e);case"turn_context":{let r=t.payload.model;return typeof r=="string"&&r.length>0&&(e.currentModel=r),null}default:return null}}a(SLc,"translateRolloutLine");function TLc(t,e,r){switch(e.type){case"task_started":return r.currentTurnId=e.turn_id||void 0,r.sessionStarted?null:(r.sessionStarted=!0,{id:Dt(),timestamp:t,type:"session.start",data:{producer:"codex",startTime:t}});case"user_message":{let o=e.message||"",{content:s,attachments:c}=OLc(o),l={content:s};return c.length>0&&(l.attachments=c),{id:Dt(),timestamp:t,type:"user.message",data:l}}case"agent_message":{let o=e.message||"",s=Dt(),c=r.currentTurnId||s;return[{id:Dt(),timestamp:t,type:"assistant.turn_start",data:{turnId:s,interactionId:c}},{id:s,timestamp:t,type:"assistant.message",data:{content:o,messageId:s,model:r.currentModel}}]}case"token_count":{let s=e.info?.last_token_usage;return s?{id:Dt(),timestamp:t,type:"assistant.usage",data:{inputTokens:s.input_tokens,outputTokens:s.output_tokens,cacheReadTokens:s.cached_input_tokens}}:null}case"task_complete":return r.currentTurnId=void 0,{id:Dt(),timestamp:t,type:"session.idle"};case"patch_apply_end":{let o=e.call_id||"";if(!o||r.sealedCallIds.has(o))return null;r.sealedCallIds.add(o);let s=e.success===!0,c=e.changes,l=typeof e.stderr=="string"?e.stderr:"",u=typeof e.status=="string"?e.status:"failed";return{id:Dt(),timestamp:t,type:"tool.execution_complete",data:{toolCallId:o,success:s,result:s?{type:"text",content:JSON.stringify(c??{})}:void 0,error:s?void 0:{message:l||`Patch apply ${u}`}}}}case"web_search_end":{let o=e.call_id||"";return!o||r.sealedCallIds.has(o)?null:(r.sealedCallIds.add(o),[{id:Dt(),timestamp:t,type:"tool.execution_start",data:{toolCallId:o,toolName:"web_search",arguments:{query:e.query,action:e.action}}},{id:Dt(),timestamp:t,type:"tool.execution_complete",data:{toolCallId:o,success:!0}}])}default:return null}}a(TLc,"translateEventMsg");function ILc(t,e,r){switch(e.type){case"message":return null;case"reasoning":return xLc(t,e);case"function_call":return RLc(t,e,r);case"function_call_output":return kLc(t,e,r);case"custom_tool_call":return PLc(t,e,r);case"custom_tool_call_output":return DLc(t,e,r);case"web_search_call":return null;default:return null}}a(ILc,"translateResponseItem");function xLc(t,e){let r=wLc(e);if(!r)return null;let n=e.id||Dt();return{id:Dt(),timestamp:t,type:"assistant.reasoning",data:{reasoningId:n,content:r}}}a(xLc,"translateReasoningItem");function wLc(t){let e=[];for(let r of["summary","content"]){let n=t[r];if(Array.isArray(n)){for(let o of n)if(typeof o=="string")o.length>0&&e.push(o);else if(o&&typeof o=="object"){let s=o.text;typeof s=="string"&&s.length>0&&e.push(s)}}}return e.join(`
|
|
3990
3990
|
`).trim()}a(wLc,"extractReasoningText");function RLc(t,e,r){let n=e.call_id||e.id||"";if(!n)return null;let o=e.name||"unknown",s=o==="shell_command"?"shell":o,c=NLc(e.arguments);return{id:Dt(),timestamp:t,type:"tool.execution_start",data:{toolCallId:n,toolName:s,arguments:c??{}}}}a(RLc,"translateFunctionCall");function kLc(t,e,r){let n=e.call_id||"";if(!n||r.sealedCallIds.has(n))return null;r.sealedCallIds.add(n);let o=typeof e.output=="string"?e.output:"";return{id:Dt(),timestamp:t,type:"tool.execution_complete",data:{toolCallId:n,success:!0,result:{content:o}}}}a(kLc,"translateFunctionCallOutput");function PLc(t,e,r){let n=e.call_id||e.id||"";if(!n)return null;let s=e.name||"unknown";return{id:Dt(),timestamp:t,type:"tool.execution_start",data:{toolCallId:n,toolName:s,arguments:{input:e.input}}}}a(PLc,"translateCustomToolCall");function DLc(t,e,r){let n=e.call_id||"";if(!n||r.eventMsgCompletionCallIds.has(n)||r.sealedCallIds.has(n))return null;r.sealedCallIds.add(n);let o=typeof e.output=="string"?e.output:"";return{id:Dt(),timestamp:t,type:"tool.execution_complete",data:{toolCallId:n,success:!0,result:{content:o}}}}a(DLc,"translateCustomToolCallOutput");function NLc(t){if(typeof t!="string")return null;try{let e=JSON.parse(t);return e&&typeof e=="object"&&!Array.isArray(e)?e:null}catch{return null}}a(NLc,"parseJsonSafe");var MLc=/^\[Referenced files:([^\]]*)\]\r?\n\r?\n/;function OLc(t){let e=MLc.exec(t);if(!e)return{content:t,attachments:[]};let r=e[1].split(",").map(n=>n.trim()).filter(n=>n.length>0).map(n=>({type:"file",path:n,displayName:LLc(n)}));return{content:t.slice(e[0].length),attachments:r}}a(OLc,"extractReferencedFiles");function LLc(t){let e=t.replace(/\\/g,"/"),r=e.lastIndexOf("/");return r===-1?e:e.slice(r+1)}a(LLc,"basename");p();Fo();function Bh(t,e,r){return{id:Dt(),timestamp:new Date().toISOString(),type:t,...e!==void 0?{data:e}:{},...r?{ephemeral:r}:{}}}a(Bh,"envelope");function WEe(){return{turnStreamCtx:new Map,pendingUserInputs:new Map,pendingUserInputAggregates:new Map,pendingApprovalSubjects:new Map}}a(WEe,"createCodexTranslatorState");function k8r(t,e){return`${t}:${e}`}a(k8r,"composeUserInputRequestId");function P8r(t,e){let r=t.turnStreamCtx.get(e);return r||(r={agentMessageIds:[],reasoningIds:[],tokenUsageSum:{inputTokens:0,outputTokens:0,cachedInputTokens:0},tokenUsageObserved:!1},t.turnStreamCtx.set(e,r)),r}a(P8r,"ctxFor");function Lzi(t,e,r,n,o){switch(t){case"turn/started":return BLc(e);case"turn/completed":return FLc(e,r,o);case"item/started":return ULc(e,r);case"item/completed":return QLc(e,r);case"thread/tokenUsage/updated":return qLc(e,r);case"item/agentMessage/delta":return HLc(e);case"item/reasoning/summaryTextDelta":return aBc(e,r);case"item/commandExecution/outputDelta":return zLc(e);case"item/tool/requestUserInput":return uBc(e,r,n);case"item/commandExecution/requestApproval":case"item/fileChange/requestApproval":case"item/permissions/requestApproval":return dBc(t,e,r);default:return null}}a(Lzi,"translateCodexNotification");function BLc(t){return null}a(BLc,"translateTurnStarted");function FLc(t,e,r){let n=[],o=t.turn?.id,s=o?e.turnStreamCtx.get(o):void 0,c=s?.tokenUsageObserved?s.tokenUsageSum:void 0,l=r?.copilotUsageNanoAiu;return n.push(Bh("assistant.usage",{model:"codex",duration:t.turn?.durationMs??void 0,...c?{inputTokens:c.inputTokens,outputTokens:c.outputTokens,cacheReadTokens:c.cachedInputTokens}:{},...l!==void 0&&l>0?{copilotUsage:{totalNanoAiu:l}}:{}},!0)),n.push(Bh("session.idle",{},!0)),o&&e.turnStreamCtx.delete(o),n}a(FLc,"translateTurnCompleted");function ULc(t,e){let r=t.item;if(!r)return null;switch(r.type){case"agentMessage":return jLc(e,t.turnId,r);case"commandExecution":return e.pendingApprovalSubjects.set(r.id,r),VLc(r);case"fileChange":return e.pendingApprovalSubjects.set(r.id,r),YLc(r);case"mcpToolCall":return JLc(r);case"webSearch":return eBc(r);case"imageView":return rBc(r);case"dynamicToolCall":return iBc(r);case"reasoning":return sBc(e,t.turnId,r);default:return null}}a(ULc,"translateItemStarted");function QLc(t,e){let r=t.item;if(!r)return null;switch(r.type){case"agentMessage":return GLc(e,t.turnId,r);case"commandExecution":return e.pendingApprovalSubjects.delete(r.id),WLc(r);case"fileChange":return e.pendingApprovalSubjects.delete(r.id),KLc(r);case"mcpToolCall":return ZLc(r);case"webSearch":return tBc(r);case"imageView":return nBc(r);case"dynamicToolCall":return oBc(r);case"reasoning":return cBc(e,t.turnId,r);default:return null}}a(QLc,"translateItemCompleted");function qLc(t,e){let r=P8r(e,t.turnId),n=t.tokenUsage?.last;return n&&(typeof n.inputTokens=="number"&&Number.isFinite(n.inputTokens)&&(r.tokenUsageSum.inputTokens+=n.inputTokens),typeof n.outputTokens=="number"&&Number.isFinite(n.outputTokens)&&(r.tokenUsageSum.outputTokens+=n.outputTokens),typeof n.cachedInputTokens=="number"&&Number.isFinite(n.cachedInputTokens)&&(r.tokenUsageSum.cachedInputTokens+=n.cachedInputTokens),r.tokenUsageObserved=!0),null}a(qLc,"translateTokenUsageUpdated");function jLc(t,e,r){return P8r(t,e).agentMessageIds.push(r.id),Bh("assistant.turn_start",{turnId:r.id,interactionId:e})}a(jLc,"translateAgentMessageItemStarted");function HLc(t){return Bh("assistant.message_delta",{messageId:t.itemId||t.turnId,deltaContent:t.delta},!0)}a(HLc,"translateAgentMessageDelta");function GLc(t,e,r){let n=r.text??"";if(n.length===0)return null;let o=t.turnStreamCtx.get(e)?.agentMessageIds.shift()??r.id;return Bh("assistant.message",{messageId:o,content:n})}a(GLc,"translateAgentMessageItemCompleted");function zEe(t){return t==="failed"||t==="cancelled"||t==="declined"}a(zEe,"isFailedStatus");var R8r=4096;function $Lc(t){return t.length<=R8r?t:`${t.slice(0,R8r)}
|
|
3991
|
-
\u2026 [truncated ${t.length-R8r} chars]`}a($Lc,"truncateForError");function VLc(t){return Bh("tool.execution_start",{toolCallId:t.id,toolName:"shell",arguments:{command:t.command,cwd:t.cwd,commandActions:t.commandActions}})}a(VLc,"translateCommandExecutionItemStarted");function WLc(t){let e=!zEe(t.status),r=t.aggregatedOutput??"";return Bh("tool.execution_complete",{toolCallId:t.id,success:e,result:e?{content:r}:void 0,error:e?void 0:{message:r.length>0?$Lc(r):`Command ${t.status??"failed"} with exit code ${t.exitCode??"unknown"}`},durationMs:t.durationMs??void 0,exitCode:t.exitCode??void 0})}a(WLc,"translateCommandExecutionItemCompleted");function zLc(t){return null}a(zLc,"translateCommandExecutionOutputDelta");function YLc(t){return t.changes.map(e=>Bh("tool.execution_start",{toolCallId:Bzi(t.id,e),toolName:"file_change",arguments:{...e}}))}a(YLc,"translateFileChangeItemStarted");function KLc(t){let e=!zEe(t.status);return t.changes.map(r=>Bh("tool.execution_complete",{toolCallId:Bzi(t.id,r),success:e,result:e?{
|
|
3991
|
+
\u2026 [truncated ${t.length-R8r} chars]`}a($Lc,"truncateForError");function VLc(t){return Bh("tool.execution_start",{toolCallId:t.id,toolName:"shell",arguments:{command:t.command,cwd:t.cwd,commandActions:t.commandActions}})}a(VLc,"translateCommandExecutionItemStarted");function WLc(t){let e=!zEe(t.status),r=t.aggregatedOutput??"";return Bh("tool.execution_complete",{toolCallId:t.id,success:e,result:e?{content:r}:void 0,error:e?void 0:{message:r.length>0?$Lc(r):`Command ${t.status??"failed"} with exit code ${t.exitCode??"unknown"}`},durationMs:t.durationMs??void 0,exitCode:t.exitCode??void 0})}a(WLc,"translateCommandExecutionItemCompleted");function zLc(t){return null}a(zLc,"translateCommandExecutionOutputDelta");function YLc(t){return t.changes.map(e=>Bh("tool.execution_start",{toolCallId:Bzi(t.id,e),toolName:"file_change",arguments:{...e}}))}a(YLc,"translateFileChangeItemStarted");function KLc(t){let e=!zEe(t.status);return t.changes.map(r=>Bh("tool.execution_complete",{toolCallId:Bzi(t.id,r),success:e,result:e?{type:"text",content:JSON.stringify(r)}:void 0,error:e?void 0:{message:`File change ${t.status??"failed"}`},durationMs:t.durationMs??void 0}))}a(KLc,"translateFileChangeItemCompleted");function Bzi(t,e){return`${t}:${e.kind}:${encodeURIComponent(e.path)}`}a(Bzi,"fileChangeToolCallId");function JLc(t){return Bh("tool.execution_start",{toolCallId:t.id,toolName:`mcp:${t.server}.${t.tool}`,arguments:t.arguments??{}})}a(JLc,"translateMcpToolCallItemStarted");function ZLc(t){let e=!zEe(t.status)&&!t.error;return Bh("tool.execution_complete",{toolCallId:t.id,success:e,result:e?XLc(t.result):void 0,error:e?void 0:{message:t.error??`MCP tool ${t.status??"failed"}`},durationMs:t.durationMs??void 0})}a(ZLc,"translateMcpToolCallItemCompleted");function XLc(t){return t&&typeof t=="object"&&!Array.isArray(t)&&"content"in t?t:{content:t}}a(XLc,"wrapMcpResult");function eBc(t){return null}a(eBc,"translateWebSearchItemStarted");function tBc(t){let e=!zEe(t.status),r=t.query?.trim()?t.query:t.action?.query??t.action?.queries?.join(", "),n=t.results!==void 0&&t.results!==null;return[Bh("tool.execution_start",{toolCallId:t.id,toolName:"web_search",arguments:{query:r,action:t.action}}),Bh("tool.execution_complete",{toolCallId:t.id,success:e,result:e&&n?{content:t.results}:void 0,error:e?void 0:{message:`Web search ${t.status??"failed"}`},durationMs:t.durationMs??void 0})]}a(tBc,"translateWebSearchItemCompleted");function rBc(t){return Bh("tool.execution_start",{toolCallId:t.id,toolName:"view_image",arguments:{path:t.path}})}a(rBc,"translateImageViewItemStarted");function nBc(t){let e=!zEe(t.status);return Bh("tool.execution_complete",{toolCallId:t.id,success:e,result:e?{path:t.path}:void 0,error:e?void 0:{message:`Image view ${t.status??"failed"}`}})}a(nBc,"translateImageViewItemCompleted");function iBc(t){return Bh("tool.execution_start",{toolCallId:t.id,toolName:t.tool,arguments:t.arguments??{}})}a(iBc,"translateDynamicToolCallItemStarted");function oBc(t){let e=t.success!==void 0?t.success:!zEe(t.status)&&!t.error;return Bh("tool.execution_complete",{toolCallId:t.id,success:e,result:e?{content:t.contentItems}:void 0,error:e?void 0:{message:t.error??`Tool ${t.status??"failed"}`},durationMs:t.durationMs??void 0})}a(oBc,"translateDynamicToolCallItemCompleted");function sBc(t,e,r){return P8r(t,e).reasoningIds.push(r.id),null}a(sBc,"translateReasoningItemStarted");function aBc(t,e){let r=e.turnStreamCtx.get(t.turnId)?.reasoningIds,n=r&&r.length>0?r[r.length-1]:void 0;return Bh("assistant.reasoning_delta",{reasoningId:t.itemId||t.reasoningId||n||`codex-reasoning:${t.turnId}`,deltaContent:t.delta},!0)}a(aBc,"translateReasoningDelta");function cBc(t,e,r){let n=t.turnStreamCtx.get(e)?.reasoningIds.shift()??r.id,o=lBc(r);return o?Bh("assistant.reasoning",{reasoningId:n,content:o}):null}a(cBc,"translateReasoningItemCompleted");function lBc(t){let e=[];for(let r of[t.summary,t.content])if(Array.isArray(r))for(let n of r)typeof n=="string"?n.length>0&&e.push(n):n&&typeof n.text=="string"&&n.text.length>0&&e.push(n.text);return e.join(`
|
|
3992
3992
|
`).trim()}a(lBc,"extractReasoningText");function uBc(t,e,r){if(!t?.itemId||!t.threadId||r===void 0)return null;let n=t.questions??[];if(n.length===0)return null;let o=t.autoResolutionMs??void 0,s=new Set,c=[];for(let l of n){if(typeof l?.id!="string"||l.id.length===0||s.has(l.id)||typeof l.question!="string"||l.question.length===0)continue;let u=k8r(t.itemId,l.id);e.pendingUserInputs.set(u,{itemId:t.itemId,questionId:l.id}),s.add(l.id);let d=l.options&&l.options.length>0?l.options.map(f=>f.label):void 0;c.push(Bh("user_input.requested",{requestId:u,question:l.header?`${l.header}
|
|
3993
3993
|
${l.question}`:l.question,...d!==void 0?{choices:d}:{},allowFreeform:!0,...o!==void 0?{autoResolutionMs:o}:{}}))}return c.length===0?null:(e.pendingUserInputAggregates.set(t.itemId,{requestJsonRpcId:r,expectedQuestionIds:s,answers:new Map}),c)}a(uBc,"translateRequestUserInput");function D8r(t){return t.includes("commandExecution")?"shell":t.includes("fileChange")?"write":t.includes("permissions")?"permissions":"unknown"}a(D8r,"codexApprovalKind");function N8r(t,e){return`codex-perm:${t}:${e}`}a(N8r,"composePermissionRequestId");function dBc(t,e,r){if(!e?.itemId)return null;let n=D8r(t),o=N8r(e.itemId,n),s=r.pendingApprovalSubjects.get(e.itemId);return Bh("permission.requested",{requestId:o,permissionRequest:fBc(n,t,e,s)})}a(dBc,"translateRequestApproval");function fBc(t,e,r,n){let o={kind:t,method:e,toolCallId:r.itemId,payload:r};switch(t){case"shell":return{...o,...mBc(r,ABc(n)?n:void 0)};case"write":return{...o,...gBc(r,yBc(n)?n:void 0)};case"permissions":return{...o,...pBc(r)};default:return{...o,intention:Qy(r.reason)}}}a(fBc,"buildCodexPermissionRequest");function pBc(t){let e=Array.isArray(t.grants)?t.grants:[],r=e.find(l=>!!l&&typeof l=="object"),n=r?Qy(r.kind):void 0,o=r?Qy(r.url)??Qy(r.host):void 0,s=r?Qy(r.path)??Qy(r.root):void 0,c=mIt([s]);return{intention:Qy(t.reason)??hBc(n,o??s),...o!==void 0?{url:o}:{},...c.length>0?{possiblePaths:c}:{},...e.length>1?{grantCount:e.length}:{}}}a(pBc,"buildPermissionsPermissionRequest");function hBc(t,e){return t&&e?`Grant ${t} access to ${e}`:e?`Grant access to ${e}`:t?`Grant ${t} access`:"Grant additional permission"}a(hBc,"describePermissionsIntention");function mBc(t,e){let r=Qy(t.command)??e?.command,n=Qy(t.cwd)??e?.cwd,o=_Bc(t.commandActions,e?.commandActions,r),s=mIt([n]);return{intention:Qy(t.reason)??EBc(r,n),...r!==void 0?{fullCommandText:r}:{},...o.length>0?{commands:o}:{},...s.length>0?{possiblePaths:s}:{}}}a(mBc,"buildShellPermissionRequest");function gBc(t,e){let r=vBc(e,t),n=r[0]?.path??Qy(t.grantRoot),o=mIt([...r.map(c=>c.path),Qy(t.grantRoot)]),s=CBc(r);return{intention:Qy(t.reason)??bBc(r,n),...n!==void 0?{fileName:n}:{},...s!==void 0?{diff:s}:{},...o.length>0?{possiblePaths:o}:{}}}a(gBc,"buildWritePermissionRequest");function Qy(t){return typeof t=="string"&&t.length>0?t:void 0}a(Qy,"stringOrUndefined");function ABc(t){return t?.type==="commandExecution"}a(ABc,"isCodexCommandExecutionItem");function yBc(t){return t?.type==="fileChange"}a(yBc,"isCodexFileChangeItem");function _Bc(t,e,r){let o=(Array.isArray(t)?t:e??[]).map(s=>s&&typeof s=="object"?Qy(s.command):void 0).filter(s=>s!==void 0);return o.length===0&&r!==void 0&&o.push(r),mIt(o).map(s=>({identifier:s,readOnly:!1}))}a(_Bc,"buildShellPermissionCommands");function mIt(t){return[...new Set(t.filter(e=>e!==void 0&&e.length>0))]}a(mIt,"distinctNonEmptyStrings");function EBc(t,e){return t&&e?`Run shell command in ${e}: ${t}`:t?`Run shell command: ${t}`:e?`Run shell command in ${e}`:"Run shell command"}a(EBc,"describeShellIntention");function vBc(t,e){if(t?.changes)return t.changes;let r=e.changes;return Array.isArray(r)?r.map(n=>{if(!n||typeof n!="object")return;let o=Qy(n.path),s=Qy(n.kind);if(!o||!s)return;let c=Qy(n.diff);return c!==void 0?{path:o,kind:s,diff:c}:{path:o,kind:s}}).filter(n=>n!==void 0):[]}a(vBc,"extractFileChanges");function CBc(t){let e=t.filter(r=>typeof r.diff=="string");if(e.length!==0)return e.length===1?e[0].diff:e.map(r=>`# ${r.path}
|
|
3994
3994
|
${r.diff}`).join(`
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"url": "git+https://github.com/github/copilot-language-server-release.git"
|
|
12
12
|
},
|
|
13
13
|
"license": "MIT",
|
|
14
|
-
"version": "1.527.
|
|
14
|
+
"version": "1.527.2",
|
|
15
15
|
"bin": {
|
|
16
16
|
"copilot-language-server": "../dist/language-server.js"
|
|
17
17
|
},
|
|
@@ -42,12 +42,12 @@
|
|
|
42
42
|
"vscode-languageserver-protocol": "^3.17.5"
|
|
43
43
|
},
|
|
44
44
|
"optionalDependencies": {
|
|
45
|
-
"@github/copilot-language-server-win32-x64": "1.527.
|
|
46
|
-
"@github/copilot-language-server-win32-arm64": "1.527.
|
|
47
|
-
"@github/copilot-language-server-linux-x64": "1.527.
|
|
48
|
-
"@github/copilot-language-server-linux-arm64": "1.527.
|
|
49
|
-
"@github/copilot-language-server-darwin-x64": "1.527.
|
|
50
|
-
"@github/copilot-language-server-darwin-arm64": "1.527.
|
|
45
|
+
"@github/copilot-language-server-win32-x64": "1.527.2",
|
|
46
|
+
"@github/copilot-language-server-win32-arm64": "1.527.2",
|
|
47
|
+
"@github/copilot-language-server-linux-x64": "1.527.2",
|
|
48
|
+
"@github/copilot-language-server-linux-arm64": "1.527.2",
|
|
49
|
+
"@github/copilot-language-server-darwin-x64": "1.527.2",
|
|
50
|
+
"@github/copilot-language-server-darwin-arm64": "1.527.2",
|
|
51
51
|
"@github/copilot-win32-x64": "1.0.70",
|
|
52
52
|
"@github/copilot-win32-arm64": "1.0.70",
|
|
53
53
|
"@github/copilot-linux-x64": "1.0.70",
|
|
@@ -56,5 +56,5 @@
|
|
|
56
56
|
"@github/copilot-darwin-arm64": "1.0.70"
|
|
57
57
|
},
|
|
58
58
|
"buildType": "prod",
|
|
59
|
-
"build": "
|
|
59
|
+
"build": "87"
|
|
60
60
|
}
|