From 62d571f202953a70933d010ad1758b1881d9f464 Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Mon, 1 Dec 2025 10:49:21 -0800 Subject: [PATCH 01/33] PR --- .../organizationAndEnterpriseAgentProvider.ts | 1 - ...scode.proposed.chatParticipantPrivate.d.ts | 20 ++++++------------- 2 files changed, 6 insertions(+), 15 deletions(-) diff --git a/src/extension/agents/vscode-node/organizationAndEnterpriseAgentProvider.ts b/src/extension/agents/vscode-node/organizationAndEnterpriseAgentProvider.ts index 3120a1c87d..db3e24767d 100644 --- a/src/extension/agents/vscode-node/organizationAndEnterpriseAgentProvider.ts +++ b/src/extension/agents/vscode-node/organizationAndEnterpriseAgentProvider.ts @@ -127,7 +127,6 @@ export class OrganizationAndEnterpriseAgentProvider extends Disposable implement // Convert VS Code API options to internal options const internalOptions = options ? { - target: options.target, includeSources: ['org', 'enterprise'] // don't include 'repo' to avoid redundancy } satisfies CustomAgentListOptions : undefined; diff --git a/src/extension/vscode.proposed.chatParticipantPrivate.d.ts b/src/extension/vscode.proposed.chatParticipantPrivate.d.ts index e7df255394..59dd414ad6 100644 --- a/src/extension/vscode.proposed.chatParticipantPrivate.d.ts +++ b/src/extension/vscode.proposed.chatParticipantPrivate.d.ts @@ -334,25 +334,17 @@ declare module 'vscode' { * The URI to the agent or prompt resource file. */ readonly uri: Uri; - } - /** - * Target environment for custom agents. - */ - export enum CustomAgentTarget { - GitHubCopilot = 'github-copilot', - VSCode = 'vscode', + /** + * Indicates whether the custom agent resource is editable. Defaults to false. + */ + readonly isEditable?: boolean; } /** * Options for querying custom agents. */ - export interface CustomAgentQueryOptions { - /** - * Filter agents by target environment. - */ - readonly target?: CustomAgentTarget; - } + export interface CustomAgentQueryOptions { } /** * A provider that supplies custom agent resources (from .agent.md and .prompt.md files) for repositories. @@ -361,7 +353,7 @@ declare module 'vscode' { /** * An optional event to signal that custom agents have changed. */ - onDidChangeCustomAgents?: Event; + readonly onDidChangeCustomAgents?: Event; /** * Provide the list of custom agent resources available for a given repository. From e5520132870b1ec287094cf22af918348bfc6525 Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Mon, 1 Dec 2025 11:11:54 -0800 Subject: [PATCH 02/33] activation --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index b9c761a821..8dcda850a6 100644 --- a/package.json +++ b/package.json @@ -83,7 +83,8 @@ "onLanguageModelChat:copilot", "onUri", "onFileSystem:ccreq", - "onFileSystem:ccsettings" + "onFileSystem:ccsettings", + "onCustomAgentsProvider" ], "main": "./dist/extension", "l10n": "./l10n", From 94e111e13af8ea9788dbc66cf838f7c32e1d0480 Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Mon, 1 Dec 2025 11:13:41 -0800 Subject: [PATCH 03/33] fix test --- .../test/organizationAndEnterpriseAgentProvider.spec.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts b/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts index b9633c6c84..d5c7c2439a 100644 --- a/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts +++ b/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts @@ -425,15 +425,12 @@ Detailed prompt content return []; }; - const queryOptions: vscode.CustomAgentQueryOptions = { - target: 'vscode' as any, - }; + const queryOptions: vscode.CustomAgentQueryOptions = {}; await provider.provideCustomAgents(queryOptions, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); assert.ok(capturedOptions); - assert.equal(capturedOptions.target, 'vscode'); assert.deepEqual(capturedOptions.includeSources, ['org', 'enterprise']); }); From b539e0e0bf964e386abf8f0c5125c581fe9caedd Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Mon, 1 Dec 2025 12:26:08 -0800 Subject: [PATCH 04/33] wip --- package.json | 8 +- package.nls.json | 1 + .../organizationInstructionsContrib.ts | 30 ++ .../organizationInstructionsProvider.ts | 274 ++++++++++++++++++ ...nizationAndEnterpriseAgentProvider.spec.ts | 1 + .../extension/vscode-node/contributions.ts | 2 + ...scode.proposed.chatParticipantPrivate.d.ts | 34 +++ .../common/configurationService.ts | 3 + src/platform/github/common/githubService.ts | 19 ++ .../github/common/octoKitServiceImpl.ts | 33 ++- 10 files changed, 403 insertions(+), 2 deletions(-) create mode 100644 src/extension/agents/vscode-node/organizationInstructionsContrib.ts create mode 100644 src/extension/agents/vscode-node/organizationInstructionsProvider.ts diff --git a/package.json b/package.json index 8dcda850a6..baca4b56bb 100644 --- a/package.json +++ b/package.json @@ -84,7 +84,8 @@ "onUri", "onFileSystem:ccreq", "onFileSystem:ccsettings", - "onCustomAgentsProvider" + "onCustomAgentsProvider", + "onInstructionsProvider" ], "main": "./dist/extension", "l10n": "./l10n", @@ -2502,6 +2503,11 @@ "default": true, "description": "%github.copilot.config.customAgents.showOrganizationAndEnterpriseAgents%" }, + "github.copilot.chat.customInstructions.showOrganizationInstructions": { + "type": "boolean", + "default": true, + "description": "%github.copilot.config.customInstructions.showOrganizationInstructions%" + }, "github.copilot.chat.agent.currentEditorContext.enabled": { "type": "boolean", "default": true, diff --git a/package.nls.json b/package.nls.json index fef8de49f3..2e156976a5 100644 --- a/package.nls.json +++ b/package.nls.json @@ -346,6 +346,7 @@ "github.copilot.config.agent.currentEditorContext.enabled": "When enabled, Copilot will include the name of the current active editor in the context for agent mode.", "github.copilot.config.customInstructionsInSystemMessage": "When enabled, custom instructions and mode instructions will be appended to the system message instead of a user message.", "github.copilot.config.customAgents.showOrganizationAndEnterpriseAgents": "Enable custom agents from GitHub Enterprise and Organizations. When disabled, custom agents from your organization or enterprise will not be available in Copilot.", + "github.copilot.config.customInstructions.showOrganizationInstructions": "Enable custom instructions from GitHub Organizations. When disabled, custom instructions from your organization will not be available in Copilot.", "copilot.toolSet.editing.description": "Edit files in your workspace", "copilot.toolSet.read.description": "Read files in your workspace", "copilot.toolSet.search.description": "Search files in your workspace", diff --git a/src/extension/agents/vscode-node/organizationInstructionsContrib.ts b/src/extension/agents/vscode-node/organizationInstructionsContrib.ts new file mode 100644 index 0000000000..b2c79b8f0b --- /dev/null +++ b/src/extension/agents/vscode-node/organizationInstructionsContrib.ts @@ -0,0 +1,30 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as vscode from 'vscode'; +import { ConfigKey, IConfigurationService } from '../../../platform/configuration/common/configurationService'; +import { Disposable } from '../../../util/vs/base/common/lifecycle'; +import { IInstantiationService } from '../../../util/vs/platform/instantiation/common/instantiation'; +import { IExtensionContribution } from '../../common/contributions'; +import { OrganizationInstructionsProvider } from './organizationInstructionsProvider'; + +export class OrganizationInstructionsContribution extends Disposable implements IExtensionContribution { + readonly id = 'OrganizationInstructions'; + + constructor( + @IInstantiationService instantiationService: IInstantiationService, + @IConfigurationService configurationService: IConfigurationService, + ) { + super(); + + if ('registerInstructionsProvider' in vscode.chat) { + // Only register the provider if the setting is enabled + if (configurationService.getConfig(ConfigKey.ShowOrganizationInstructions)) { + const provider = instantiationService.createInstance(OrganizationInstructionsProvider); + this._register(vscode.chat.registerInstructionsProvider(provider)); + } + } + } +} diff --git a/src/extension/agents/vscode-node/organizationInstructionsProvider.ts b/src/extension/agents/vscode-node/organizationInstructionsProvider.ts new file mode 100644 index 0000000000..e7c4c286f2 --- /dev/null +++ b/src/extension/agents/vscode-node/organizationInstructionsProvider.ts @@ -0,0 +1,274 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import * as vscode from 'vscode'; +import YAML from 'yaml'; +import { IVSCodeExtensionContext } from '../../../platform/extContext/common/extensionContext'; +import { IFileSystemService } from '../../../platform/filesystem/common/fileSystemService'; +import { FileType } from '../../../platform/filesystem/common/fileTypes'; +import { IGitService } from '../../../platform/git/common/gitService'; +import { CustomInstructionListItem, IOctoKitService } from '../../../platform/github/common/githubService'; +import { ILogService } from '../../../platform/log/common/logService'; +import { Disposable } from '../../../util/vs/base/common/lifecycle'; +import { getRepoId } from '../../chatSessions/vscode/copilotCodingAgentUtils'; + +const InstructionFileExtension = '.instruction.md'; + +export class OrganizationInstructionsProvider extends Disposable implements vscode.InstructionsProvider { + + private readonly _onDidChangeInstructions = this._register(new vscode.EventEmitter()); + readonly onDidChangeInstructions = this._onDidChangeInstructions.event; + + private isFetching = false; + + constructor( + @IOctoKitService private readonly octoKitService: IOctoKitService, + @ILogService private readonly logService: ILogService, + @IGitService private readonly gitService: IGitService, + @IVSCodeExtensionContext readonly extensionContext: IVSCodeExtensionContext, + @IFileSystemService private readonly fileSystem: IFileSystemService, + ) { + super(); + } + + private getCacheDir(): vscode.Uri | undefined { + if (!this.extensionContext.storageUri) { + return; + } + return vscode.Uri.joinPath(this.extensionContext.storageUri, 'githubInstructionsCache'); + } + + async provideInstructions( + options: vscode.InstructionQueryOptions, + _token: vscode.CancellationToken + ): Promise { + try { + // Get repository information from the active git repository + const repoId = await getRepoId(this.gitService); + if (!repoId) { + this.logService.trace('[OrganizationInstructionsProvider] No active repository found'); + return []; + } + + const orgLogin = repoId.org; + + // Read from cache first + const cachedInstructions = await this.readFromCache(orgLogin); + + // Trigger async fetch to update cache + this.fetchAndUpdateCache(orgLogin, options).catch(error => { + this.logService.error(`[OrganizationInstructionsProvider] Error in background fetch: ${error}`); + }); + + return cachedInstructions; + } catch (error) { + this.logService.error(`[OrganizationInstructionsProvider] Error in provideInstructions: ${error}`); + return []; + } + } + + private async readFromCache( + orgLogin: string, + ): Promise { + try { + const cacheDir = this.getCacheDir(); + if (!cacheDir) { + this.logService.trace('[OrganizationInstructionsProvider] No workspace open, cannot use cache'); + return []; + } + + const cacheContents = await this.readCacheContents(cacheDir); + if (cacheContents.size === 0) { + this.logService.trace(`[OrganizationInstructionsProvider] No cache found for org ${orgLogin}`); + return []; + } + + const instructions: vscode.CustomAgentResource[] = []; + + for (const [filename, text] of cacheContents) { + // Parse metadata from the file (name and description) + const metadata = this.parseInstructionMetadata(text, filename); + if (metadata) { + const fileUri = vscode.Uri.joinPath(cacheDir, filename); + instructions.push({ + name: metadata.name, + description: metadata.description, + uri: fileUri, + }); + } + } + + this.logService.trace(`[OrganizationInstructionsProvider] Loaded ${instructions.length} instructions from cache for org ${orgLogin}`); + return instructions; + } catch (error) { + this.logService.error(`[OrganizationInstructionsProvider] Error reading from cache: ${error}`); + return []; + } + } + + private async fetchAndUpdateCache( + orgLogin: string, + options: vscode.InstructionQueryOptions + ): Promise { + // Prevent concurrent fetches + if (this.isFetching) { + this.logService.trace('[OrganizationInstructionsProvider] Fetch already in progress, skipping'); + return; + } + + this.isFetching = true; + try { + this.logService.trace(`[OrganizationInstructionsProvider] Fetching custom instructions for org ${orgLogin}`); + + const instructions = await this.octoKitService.getOrgCustomInstructions(orgLogin); + const cacheDir = this.getCacheDir(); + if (!cacheDir) { + this.logService.trace('[OrganizationInstructionsProvider] No workspace open, cannot use cache'); + return; + } + + // Ensure cache directory exists + try { + await this.fileSystem.stat(cacheDir); + } catch (error) { + // Directory doesn't exist, create it + await this.fileSystem.createDirectory(cacheDir); + } + + // Read existing cache contents before updating + const existingContents = await this.readCacheContents(cacheDir); + + // Generate new cache contents + const newContents = new Map(); + for (const instruction of instructions) { + const filename = this.sanitizeFilename(instruction.name) + InstructionFileExtension; + + // Generate instruction markdown file content + const content = this.generateInstructionMarkdown(instruction); + newContents.set(filename, content); + } + + // Compare contents to detect changes + const hasChanges = this.hasContentChanged(existingContents, newContents); + + if (!hasChanges) { + this.logService.trace(`[OrganizationInstructionsProvider] No changes detected in cache for org ${orgLogin}`); + return; + } + + // Clear existing cache files + const existingFiles = await this.fileSystem.readDirectory(cacheDir); + for (const [filename, fileType] of existingFiles) { + if (fileType === FileType.File && filename.endsWith(InstructionFileExtension)) { + await this.fileSystem.delete(vscode.Uri.joinPath(cacheDir, filename)); + } + } + + // Write new cache files + for (const [filename, content] of newContents) { + const fileUri = vscode.Uri.joinPath(cacheDir, filename); + await this.fileSystem.writeFile(fileUri, new TextEncoder().encode(content)); + } + + this.logService.trace(`[OrganizationInstructionsProvider] Updated cache with ${instructions.length} instructions for org ${orgLogin}`); + + // Fire event to notify consumers that instructions have changed + this._onDidChangeInstructions.fire(); + } finally { + this.isFetching = false; + } + } + + private async readCacheContents(cacheDir: vscode.Uri): Promise> { + const contents = new Map(); + try { + const files = await this.fileSystem.readDirectory(cacheDir); + for (const [filename, fileType] of files) { + if (fileType === FileType.File && filename.endsWith(InstructionFileExtension)) { + const fileUri = vscode.Uri.joinPath(cacheDir, filename); + const content = await this.fileSystem.readFile(fileUri); + const text = new TextDecoder().decode(content); + contents.set(filename, text); + } + } + } catch { + // Directory might not exist yet or other errors + } + return contents; + } + + private hasContentChanged(oldContents: Map, newContents: Map): boolean { + // Check if the set of files changed + if (oldContents.size !== newContents.size) { + return true; + } + + // Check if any file content changed + for (const [filename, newContent] of newContents) { + const oldContent = oldContents.get(filename); + if (oldContent !== newContent) { + return true; + } + } + + // Check if any old files are missing in new contents + for (const filename of oldContents.keys()) { + if (!newContents.has(filename)) { + return true; + } + } + + return false; + } + + private generateInstructionMarkdown(instruction: CustomInstructionListItem): string { + const frontmatterObj: Record = {}; + + if (instruction.display_name) { + frontmatterObj.name = instruction.display_name; + } + if (instruction.description) { + // Escape newlines in description to keep it on a single line + frontmatterObj.description = instruction.description.replace(/\n/g, '\\n'); + } + + const frontmatter = YAML.stringify(frontmatterObj, { lineWidth: 0 }).trim(); + // Note: We don't have the prompt content from the list API, so we'll just use empty body + // The actual prompt content would need to be fetched separately if needed + const body = ''; + + return `---\n${frontmatter}\n---\n${body}\n`; + } + + private parseInstructionMetadata(content: string, filename: string): { name: string; description: string } | null { + try { + // Extract name from filename (e.g., "example.instruction.md" -> "example") + const name = filename.replace(InstructionFileExtension, ''); + let description = ''; + + // Look for frontmatter (YAML between --- markers) and extract description + const lines = content.split('\n'); + if (lines[0]?.trim() === '---') { + const endIndex = lines.findIndex((line, i) => i > 0 && line.trim() === '---'); + if (endIndex > 0) { + const frontmatter = lines.slice(1, endIndex).join('\n'); + const descMatch = frontmatter.match(/description:\s*(.+)/); + if (descMatch) { + description = descMatch[1].trim(); + } + } + } + + return { name, description }; + } catch (error) { + this.logService.error(`[OrganizationInstructionsProvider] Error parsing instruction metadata: ${error}`); + return null; + } + } + + private sanitizeFilename(name: string): string { + return name.replace(/[^a-z0-9_-]/gi, '_').toLowerCase(); + } +} diff --git a/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts b/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts index d5c7c2439a..e4b797514b 100644 --- a/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts +++ b/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts @@ -117,6 +117,7 @@ class MockOctoKitService implements IOctoKitService { getPullRequestFiles = async () => []; closePullRequest = async () => false; getFileContent = async () => ''; + getOrgCustomInstructions = async () => []; async getCustomAgents(owner: string, repo: string, options?: CustomAgentListOptions): Promise { return this.customAgents; diff --git a/src/extension/extension/vscode-node/contributions.ts b/src/extension/extension/vscode-node/contributions.ts index f68ac06d17..06ad738789 100644 --- a/src/extension/extension/vscode-node/contributions.ts +++ b/src/extension/extension/vscode-node/contributions.ts @@ -4,6 +4,7 @@ *--------------------------------------------------------------------------------------------*/ import { OrganizationAndEnterpriseAgentContribution } from '../../agents/vscode-node/organizationAndEnterpriseAgentContrib'; +import { OrganizationInstructionsContribution } from '../../agents/vscode-node/organizationInstructionsContrib'; import { AuthenticationContrib } from '../../authentication/vscode-node/authentication.contribution'; import { BYOKContrib } from '../../byok/vscode-node/byokContribution'; import { ChatQuotaContribution } from '../../chat/vscode-node/chatQuota.contribution'; @@ -119,5 +120,6 @@ export const vscodeNodeChatContributions: IExtensionContributionFactory[] = [ asContributionFactory(McpSetupCommands), asContributionFactory(LanguageModelProxyContrib), asContributionFactory(OrganizationAndEnterpriseAgentContribution), + asContributionFactory(OrganizationInstructionsContribution), newWorkspaceContribution, ]; diff --git a/src/extension/vscode.proposed.chatParticipantPrivate.d.ts b/src/extension/vscode.proposed.chatParticipantPrivate.d.ts index 59dd414ad6..7967959e24 100644 --- a/src/extension/vscode.proposed.chatParticipantPrivate.d.ts +++ b/src/extension/vscode.proposed.chatParticipantPrivate.d.ts @@ -364,6 +364,33 @@ declare module 'vscode' { provideCustomAgents(options: CustomAgentQueryOptions, token: CancellationToken): ProviderResult; } + // #endregion + + // #region InstructionsProvider + + /** + * Options for querying instructions. + */ + export interface InstructionQueryOptions { } + + /** + * A provider that supplies instruction resources for repositories. + */ + export interface InstructionsProvider { + /** + * An optional event to signal that instructions have changed. + */ + readonly onDidChangeInstructions?: Event; + + /** + * Provide the list of instruction resources available for a given repository. + * @param options Optional query parameters. + * @param token A cancellation token. + * @returns An array of instruction resources or a promise that resolves to such. + */ + provideInstructions(options: InstructionQueryOptions, token: CancellationToken): ProviderResult; + } + export namespace chat { /** * Register a provider for custom agents. @@ -371,6 +398,13 @@ declare module 'vscode' { * @returns A disposable that unregisters the provider when disposed. */ export function registerCustomAgentsProvider(provider: CustomAgentsProvider): Disposable; + + /** + * Register a provider for instructions. + * @param provider The instructions provider. + * @returns A disposable that unregisters the provider when disposed. + */ + export function registerInstructionsProvider(provider: InstructionsProvider): Disposable; } // #endregion diff --git a/src/platform/configuration/common/configurationService.ts b/src/platform/configuration/common/configurationService.ts index ffa9b0dd58..8467d30649 100644 --- a/src/platform/configuration/common/configurationService.ts +++ b/src/platform/configuration/common/configurationService.ts @@ -869,6 +869,9 @@ export namespace ConfigKey { /** Enable custom agents from GitHub Enterprise/Organizations */ export const ShowOrganizationAndEnterpriseAgents = defineSetting('chat.customAgents.showOrganizationAndEnterpriseAgents', ConfigType.Simple, true); + /** Enable custom instructions from GitHub Organizations */ + export const ShowOrganizationInstructions = defineSetting('chat.customInstructions.showOrganizationInstructions', ConfigType.Simple, true); + export const CompletionsFetcher = defineSetting('chat.completionsFetcher', ConfigType.ExperimentBased, undefined); export const NextEditSuggestionsFetcher = defineSetting('chat.nesFetcher', ConfigType.ExperimentBased, undefined); diff --git a/src/platform/github/common/githubService.ts b/src/platform/github/common/githubService.ts index 511412b18a..0a68d0f6c2 100644 --- a/src/platform/github/common/githubService.ts +++ b/src/platform/github/common/githubService.ts @@ -164,6 +164,18 @@ export interface CustomAgentDetails extends CustomAgentListItem { prompt: string; } +export interface CustomInstructionListItem { + name: string; + display_name: string; + description: string; + version: string; + metadata?: Record; +} + +export interface CustomInstructionDetails extends CustomInstructionListItem { + prompt: string; +} + export interface PullRequestFile { filename: string; status: 'added' | 'removed' | 'modified' | 'renamed' | 'copied' | 'changed' | 'unchanged'; @@ -301,6 +313,13 @@ export interface IOctoKitService { * @returns The file content as a string */ getFileContent(owner: string, repo: string, ref: string, path: string): Promise; + + /** + * Gets the list of custom instructions available for an organization. + * @param orgLogin The organization login + * @returns An array of custom instruction list items with basic metadata + */ + getOrgCustomInstructions(orgLogin: string): Promise; } /** diff --git a/src/platform/github/common/octoKitServiceImpl.ts b/src/platform/github/common/octoKitServiceImpl.ts index 1aec40de20..ea6da9e76d 100644 --- a/src/platform/github/common/octoKitServiceImpl.ts +++ b/src/platform/github/common/octoKitServiceImpl.ts @@ -9,7 +9,7 @@ import { ILogService } from '../../log/common/logService'; import { IFetcherService } from '../../networking/common/fetcherService'; import { ITelemetryService } from '../../telemetry/common/telemetry'; import { PullRequestComment, PullRequestSearchItem, SessionInfo } from './githubAPI'; -import { BaseOctoKitService, CustomAgentDetails, CustomAgentListItem, CustomAgentListOptions, ErrorResponseWithStatusCode, IOctoKitService, IOctoKitUser, JobInfo, PullRequestFile, RemoteAgentJobPayload, RemoteAgentJobResponse } from './githubService'; +import { BaseOctoKitService, CustomAgentDetails, CustomAgentListItem, CustomAgentListOptions, CustomInstructionListItem, ErrorResponseWithStatusCode, IOctoKitService, IOctoKitUser, JobInfo, PullRequestFile, RemoteAgentJobPayload, RemoteAgentJobResponse } from './githubService'; export class OctoKitService extends BaseOctoKitService implements IOctoKitService { declare readonly _serviceBrand: undefined; @@ -312,4 +312,35 @@ export class OctoKitService extends BaseOctoKitService implements IOctoKitServic } return this.getFileContentWithToken(owner, repo, ref, path, authToken); } + + async getOrgCustomInstructions(orgLogin: string): Promise { + try { + const authToken = (await this._authService.getPermissiveGitHubSession({ createIfNone: true }))?.accessToken; + if (!authToken) { + throw new Error('No authentication token available'); + } + const response = await this._capiClientService.makeRequest({ + method: 'GET', + headers: { + Authorization: `Bearer ${authToken}`, + } + }, { + type: RequestType.OrgCustomInstructions, + orgLogin + }); + if (!response.ok) { + throw new Error(`Failed to fetch custom instructions for org ${orgLogin}: ${response.statusText}`); + } + const data = await response.json() as { + instructions?: CustomInstructionListItem[]; + }; + if (data && Array.isArray(data.instructions)) { + return data.instructions; + } + throw new Error('Invalid response format'); + } catch (e) { + this._logService.error(e); + return []; + } + } } \ No newline at end of file From e2e9c04efe3384f2af6c2eeceeaad30bf4504b75 Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Mon, 1 Dec 2025 14:40:24 -0800 Subject: [PATCH 05/33] update --- .../organizationInstructionsProvider.ts | 153 ++++-------------- src/platform/github/common/githubService.ts | 14 +- .../github/common/octoKitServiceImpl.ts | 14 +- 3 files changed, 36 insertions(+), 145 deletions(-) diff --git a/src/extension/agents/vscode-node/organizationInstructionsProvider.ts b/src/extension/agents/vscode-node/organizationInstructionsProvider.ts index e7c4c286f2..e31acbddfc 100644 --- a/src/extension/agents/vscode-node/organizationInstructionsProvider.ts +++ b/src/extension/agents/vscode-node/organizationInstructionsProvider.ts @@ -4,12 +4,11 @@ *--------------------------------------------------------------------------------------------*/ import * as vscode from 'vscode'; -import YAML from 'yaml'; import { IVSCodeExtensionContext } from '../../../platform/extContext/common/extensionContext'; import { IFileSystemService } from '../../../platform/filesystem/common/fileSystemService'; import { FileType } from '../../../platform/filesystem/common/fileTypes'; import { IGitService } from '../../../platform/git/common/gitService'; -import { CustomInstructionListItem, IOctoKitService } from '../../../platform/github/common/githubService'; +import { IOctoKitService } from '../../../platform/github/common/githubService'; import { ILogService } from '../../../platform/log/common/logService'; import { Disposable } from '../../../util/vs/base/common/lifecycle'; import { getRepoId } from '../../chatSessions/vscode/copilotCodingAgentUtils'; @@ -40,6 +39,10 @@ export class OrganizationInstructionsProvider extends Disposable implements vsco return vscode.Uri.joinPath(this.extensionContext.storageUri, 'githubInstructionsCache'); } + private getCacheFilename(orgLogin: string): string { + return orgLogin + InstructionFileExtension; + } + async provideInstructions( options: vscode.InstructionQueryOptions, _token: vscode.CancellationToken @@ -79,26 +82,20 @@ export class OrganizationInstructionsProvider extends Disposable implements vsco return []; } - const cacheContents = await this.readCacheContents(cacheDir); - if (cacheContents.size === 0) { + const cacheContents = await this.readCacheContents(orgLogin, cacheDir); + if (cacheContents === undefined) { this.logService.trace(`[OrganizationInstructionsProvider] No cache found for org ${orgLogin}`); return []; } const instructions: vscode.CustomAgentResource[] = []; - - for (const [filename, text] of cacheContents) { - // Parse metadata from the file (name and description) - const metadata = this.parseInstructionMetadata(text, filename); - if (metadata) { - const fileUri = vscode.Uri.joinPath(cacheDir, filename); - instructions.push({ - name: metadata.name, - description: metadata.description, - uri: fileUri, - }); - } - } + const fileName = this.getCacheFilename(orgLogin); + const fileUri = vscode.Uri.joinPath(cacheDir, fileName); + instructions.push({ + name: orgLogin, + description: '', + uri: fileUri, + }); this.logService.trace(`[OrganizationInstructionsProvider] Loaded ${instructions.length} instructions from cache for org ${orgLogin}`); return instructions; @@ -129,6 +126,11 @@ export class OrganizationInstructionsProvider extends Disposable implements vsco return; } + if (!instructions) { + this.logService.trace(`[OrganizationInstructionsProvider] No custom instructions found for org ${orgLogin}`); + return; + } + // Ensure cache directory exists try { await this.fileSystem.stat(cacheDir); @@ -137,42 +139,19 @@ export class OrganizationInstructionsProvider extends Disposable implements vsco await this.fileSystem.createDirectory(cacheDir); } - // Read existing cache contents before updating - const existingContents = await this.readCacheContents(cacheDir); - - // Generate new cache contents - const newContents = new Map(); - for (const instruction of instructions) { - const filename = this.sanitizeFilename(instruction.name) + InstructionFileExtension; - - // Generate instruction markdown file content - const content = this.generateInstructionMarkdown(instruction); - newContents.set(filename, content); - } - - // Compare contents to detect changes - const hasChanges = this.hasContentChanged(existingContents, newContents); + const existingInstructions = await this.readCacheContents(orgLogin, cacheDir); + const hasChanges = instructions !== existingInstructions; if (!hasChanges) { this.logService.trace(`[OrganizationInstructionsProvider] No changes detected in cache for org ${orgLogin}`); return; } - // Clear existing cache files - const existingFiles = await this.fileSystem.readDirectory(cacheDir); - for (const [filename, fileType] of existingFiles) { - if (fileType === FileType.File && filename.endsWith(InstructionFileExtension)) { - await this.fileSystem.delete(vscode.Uri.joinPath(cacheDir, filename)); - } - } - - // Write new cache files - for (const [filename, content] of newContents) { - const fileUri = vscode.Uri.joinPath(cacheDir, filename); - await this.fileSystem.writeFile(fileUri, new TextEncoder().encode(content)); - } + const fileName = this.getCacheFilename(orgLogin); + const fileUri = vscode.Uri.joinPath(cacheDir, fileName); + await this.fileSystem.writeFile(fileUri, new TextEncoder().encode(instructions)); - this.logService.trace(`[OrganizationInstructionsProvider] Updated cache with ${instructions.length} instructions for org ${orgLogin}`); + this.logService.trace(`[OrganizationInstructionsProvider] Updated cache with instructions for org ${orgLogin}`); // Fire event to notify consumers that instructions have changed this._onDidChangeInstructions.fire(); @@ -181,94 +160,20 @@ export class OrganizationInstructionsProvider extends Disposable implements vsco } } - private async readCacheContents(cacheDir: vscode.Uri): Promise> { - const contents = new Map(); + private async readCacheContents(orgLogin: string, cacheDir: vscode.Uri): Promise { try { const files = await this.fileSystem.readDirectory(cacheDir); for (const [filename, fileType] of files) { - if (fileType === FileType.File && filename.endsWith(InstructionFileExtension)) { + if (fileType === FileType.File && filename.endsWith(orgLogin + InstructionFileExtension)) { const fileUri = vscode.Uri.joinPath(cacheDir, filename); const content = await this.fileSystem.readFile(fileUri); const text = new TextDecoder().decode(content); - contents.set(filename, text); + return text; } } } catch { // Directory might not exist yet or other errors } - return contents; - } - - private hasContentChanged(oldContents: Map, newContents: Map): boolean { - // Check if the set of files changed - if (oldContents.size !== newContents.size) { - return true; - } - - // Check if any file content changed - for (const [filename, newContent] of newContents) { - const oldContent = oldContents.get(filename); - if (oldContent !== newContent) { - return true; - } - } - - // Check if any old files are missing in new contents - for (const filename of oldContents.keys()) { - if (!newContents.has(filename)) { - return true; - } - } - - return false; - } - - private generateInstructionMarkdown(instruction: CustomInstructionListItem): string { - const frontmatterObj: Record = {}; - - if (instruction.display_name) { - frontmatterObj.name = instruction.display_name; - } - if (instruction.description) { - // Escape newlines in description to keep it on a single line - frontmatterObj.description = instruction.description.replace(/\n/g, '\\n'); - } - - const frontmatter = YAML.stringify(frontmatterObj, { lineWidth: 0 }).trim(); - // Note: We don't have the prompt content from the list API, so we'll just use empty body - // The actual prompt content would need to be fetched separately if needed - const body = ''; - - return `---\n${frontmatter}\n---\n${body}\n`; - } - - private parseInstructionMetadata(content: string, filename: string): { name: string; description: string } | null { - try { - // Extract name from filename (e.g., "example.instruction.md" -> "example") - const name = filename.replace(InstructionFileExtension, ''); - let description = ''; - - // Look for frontmatter (YAML between --- markers) and extract description - const lines = content.split('\n'); - if (lines[0]?.trim() === '---') { - const endIndex = lines.findIndex((line, i) => i > 0 && line.trim() === '---'); - if (endIndex > 0) { - const frontmatter = lines.slice(1, endIndex).join('\n'); - const descMatch = frontmatter.match(/description:\s*(.+)/); - if (descMatch) { - description = descMatch[1].trim(); - } - } - } - - return { name, description }; - } catch (error) { - this.logService.error(`[OrganizationInstructionsProvider] Error parsing instruction metadata: ${error}`); - return null; - } - } - - private sanitizeFilename(name: string): string { - return name.replace(/[^a-z0-9_-]/gi, '_').toLowerCase(); + return undefined; } } diff --git a/src/platform/github/common/githubService.ts b/src/platform/github/common/githubService.ts index 0a68d0f6c2..4eebc2639d 100644 --- a/src/platform/github/common/githubService.ts +++ b/src/platform/github/common/githubService.ts @@ -164,18 +164,6 @@ export interface CustomAgentDetails extends CustomAgentListItem { prompt: string; } -export interface CustomInstructionListItem { - name: string; - display_name: string; - description: string; - version: string; - metadata?: Record; -} - -export interface CustomInstructionDetails extends CustomInstructionListItem { - prompt: string; -} - export interface PullRequestFile { filename: string; status: 'added' | 'removed' | 'modified' | 'renamed' | 'copied' | 'changed' | 'unchanged'; @@ -319,7 +307,7 @@ export interface IOctoKitService { * @param orgLogin The organization login * @returns An array of custom instruction list items with basic metadata */ - getOrgCustomInstructions(orgLogin: string): Promise; + getOrgCustomInstructions(orgLogin: string): Promise; } /** diff --git a/src/platform/github/common/octoKitServiceImpl.ts b/src/platform/github/common/octoKitServiceImpl.ts index ea6da9e76d..621bfab62c 100644 --- a/src/platform/github/common/octoKitServiceImpl.ts +++ b/src/platform/github/common/octoKitServiceImpl.ts @@ -9,7 +9,7 @@ import { ILogService } from '../../log/common/logService'; import { IFetcherService } from '../../networking/common/fetcherService'; import { ITelemetryService } from '../../telemetry/common/telemetry'; import { PullRequestComment, PullRequestSearchItem, SessionInfo } from './githubAPI'; -import { BaseOctoKitService, CustomAgentDetails, CustomAgentListItem, CustomAgentListOptions, CustomInstructionListItem, ErrorResponseWithStatusCode, IOctoKitService, IOctoKitUser, JobInfo, PullRequestFile, RemoteAgentJobPayload, RemoteAgentJobResponse } from './githubService'; +import { BaseOctoKitService, CustomAgentDetails, CustomAgentListItem, CustomAgentListOptions, ErrorResponseWithStatusCode, IOctoKitService, IOctoKitUser, JobInfo, PullRequestFile, RemoteAgentJobPayload, RemoteAgentJobResponse } from './githubService'; export class OctoKitService extends BaseOctoKitService implements IOctoKitService { declare readonly _serviceBrand: undefined; @@ -313,7 +313,7 @@ export class OctoKitService extends BaseOctoKitService implements IOctoKitServic return this.getFileContentWithToken(owner, repo, ref, path, authToken); } - async getOrgCustomInstructions(orgLogin: string): Promise { + async getOrgCustomInstructions(orgLogin: string): Promise { try { const authToken = (await this._authService.getPermissiveGitHubSession({ createIfNone: true }))?.accessToken; if (!authToken) { @@ -331,16 +331,14 @@ export class OctoKitService extends BaseOctoKitService implements IOctoKitServic if (!response.ok) { throw new Error(`Failed to fetch custom instructions for org ${orgLogin}: ${response.statusText}`); } - const data = await response.json() as { - instructions?: CustomInstructionListItem[]; - }; - if (data && Array.isArray(data.instructions)) { - return data.instructions; + const data = await response.json() as { prompt: string }; + if (data) { + return data.prompt; } throw new Error('Invalid response format'); } catch (e) { this._logService.error(e); - return []; + return undefined; } } } \ No newline at end of file From 0c9900bb95949c9b1164d928cbd74a8c42c380d8 Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Mon, 1 Dec 2025 15:07:33 -0800 Subject: [PATCH 06/33] tests --- ...nizationAndEnterpriseAgentProvider.spec.ts | 2 +- .../organizationInstructionsProvider.spec.ts | 674 ++++++++++++++++++ 2 files changed, 675 insertions(+), 1 deletion(-) create mode 100644 src/extension/agents/vscode-node/test/organizationInstructionsProvider.spec.ts diff --git a/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts b/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts index e4b797514b..5ba667fc71 100644 --- a/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts +++ b/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts @@ -117,7 +117,7 @@ class MockOctoKitService implements IOctoKitService { getPullRequestFiles = async () => []; closePullRequest = async () => false; getFileContent = async () => ''; - getOrgCustomInstructions = async () => []; + getOrgCustomInstructions = async () => undefined; async getCustomAgents(owner: string, repo: string, options?: CustomAgentListOptions): Promise { return this.customAgents; diff --git a/src/extension/agents/vscode-node/test/organizationInstructionsProvider.spec.ts b/src/extension/agents/vscode-node/test/organizationInstructionsProvider.spec.ts new file mode 100644 index 0000000000..b5d3121044 --- /dev/null +++ b/src/extension/agents/vscode-node/test/organizationInstructionsProvider.spec.ts @@ -0,0 +1,674 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +import { assert } from 'chai'; +import { afterEach, beforeEach, suite, test } from 'vitest'; +import * as vscode from 'vscode'; +import { IFileSystemService } from '../../../../platform/filesystem/common/fileSystemService'; +import { FileType } from '../../../../platform/filesystem/common/fileTypes'; +import { MockFileSystemService } from '../../../../platform/filesystem/node/test/mockFileSystemService'; +import { GithubRepoId, IGitService, RepoContext } from '../../../../platform/git/common/gitService'; +import { IOctoKitService } from '../../../../platform/github/common/githubService'; +import { ILogService } from '../../../../platform/log/common/logService'; +import { Event } from '../../../../util/vs/base/common/event'; +import { DisposableStore } from '../../../../util/vs/base/common/lifecycle'; +import { constObservable, observableValue } from '../../../../util/vs/base/common/observable'; +import { URI } from '../../../../util/vs/base/common/uri'; +import { createExtensionUnitTestingServices } from '../../../test/node/services'; +import { OrganizationInstructionsProvider } from '../organizationInstructionsProvider'; + +/** + * Mock implementation of IGitService for testing + */ +class MockGitService implements IGitService { + _serviceBrand: undefined; + isInitialized = true; + activeRepository = observableValue(this, undefined); + onDidOpenRepository = Event.None; + onDidCloseRepository = Event.None; + onDidFinishInitialization = Event.None; + + get repositories(): RepoContext[] { + const repo = this.activeRepository.get(); + return repo ? [repo] : []; + } + + setActiveRepository(repoId: GithubRepoId | undefined) { + if (repoId) { + this.activeRepository.set({ + rootUri: URI.file('/test/repo'), + headBranchName: undefined, + headCommitHash: undefined, + upstreamBranchName: undefined, + upstreamRemote: undefined, + isRebasing: false, + remoteFetchUrls: [`https://github.com/${repoId.org}/${repoId.repo}.git`], + remotes: [], + changes: undefined, + headBranchNameObs: constObservable(undefined), + headCommitHashObs: constObservable(undefined), + upstreamBranchNameObs: constObservable(undefined), + upstreamRemoteObs: constObservable(undefined), + isRebasingObs: constObservable(false), + isIgnored: async () => false, + }, undefined); + } else { + this.activeRepository.set(undefined, undefined); + } + } + + async getRepository(uri: URI): Promise { + return undefined; + } + + async getRepositoryFetchUrls(uri: URI): Promise | undefined> { + return undefined; + } + + async initialize(): Promise { } + async add(uri: URI, paths: string[]): Promise { } + async log(uri: URI, options?: any): Promise { + return []; + } + async diffBetween(uri: URI, ref1: string, ref2: string): Promise { + return []; + } + async diffWith(uri: URI, ref: string): Promise { + return []; + } + async diffIndexWithHEADShortStats(uri: URI): Promise { + return undefined; + } + async fetch(uri: URI, remote?: string, ref?: string, depth?: number): Promise { } + async getMergeBase(uri: URI, ref1: string, ref2: string): Promise { + return undefined; + } + async createWorktree(uri: URI, options?: { path?: string; commitish?: string; branch?: string }): Promise { + return undefined; + } + async deleteWorktree(uri: URI, path: string, options?: { force?: boolean }): Promise { } + async migrateChanges(uri: URI, sourceRepositoryUri: URI, options?: { confirmation?: boolean; deleteFromSource?: boolean; untracked?: boolean }): Promise { } + + dispose() { } +} + +/** + * Mock implementation of IOctoKitService for testing + */ +class MockOctoKitService implements IOctoKitService { + _serviceBrand: undefined; + + private orgInstructions: Map = new Map(); + + getCurrentAuthedUser = async () => ({ login: 'testuser', name: 'Test User', avatar_url: '' }); + getCopilotPullRequestsForUser = async () => []; + getCopilotSessionsForPR = async () => []; + getSessionLogs = async () => ''; + getSessionInfo = async () => undefined; + postCopilotAgentJob = async () => undefined; + getJobByJobId = async () => undefined; + getJobBySessionId = async () => undefined; + addPullRequestComment = async () => null; + getAllOpenSessions = async () => []; + getPullRequestFromGlobalId = async () => null; + getPullRequestFiles = async () => []; + closePullRequest = async () => false; + getFileContent = async () => ''; + getCustomAgents = async () => []; + getCustomAgentDetails = async () => undefined; + + async getOrgCustomInstructions(orgLogin: string): Promise { + return this.orgInstructions.get(orgLogin); + } + + setOrgInstructions(orgLogin: string, instructions: string | undefined) { + if (instructions === undefined) { + this.orgInstructions.delete(orgLogin); + } else { + this.orgInstructions.set(orgLogin, instructions); + } + } + + clearInstructions() { + this.orgInstructions.clear(); + } +} + +/** + * Mock implementation of extension context for testing + */ +class MockExtensionContext { + storageUri: vscode.Uri | undefined; + + constructor(storageUri?: vscode.Uri) { + this.storageUri = storageUri; + } +} + +suite('OrganizationInstructionsProvider', () => { + let disposables: DisposableStore; + let mockGitService: MockGitService; + let mockOctoKitService: MockOctoKitService; + let mockFileSystem: MockFileSystemService; + let mockExtensionContext: MockExtensionContext; + let accessor: any; + let provider: OrganizationInstructionsProvider; + + beforeEach(() => { + disposables = new DisposableStore(); + + // Create mocks first + mockGitService = new MockGitService(); + mockOctoKitService = new MockOctoKitService(); + const storageUri = URI.file('/test/storage'); + mockExtensionContext = new MockExtensionContext(storageUri); + + // Set up testing services + const testingServiceCollection = createExtensionUnitTestingServices(disposables); + accessor = disposables.add(testingServiceCollection.createTestingAccessor()); + + mockFileSystem = accessor.get(IFileSystemService) as MockFileSystemService; + }); + + afterEach(() => { + disposables.dispose(); + mockOctoKitService.clearInstructions(); + }); + + function createProvider() { + // Create provider manually with all dependencies + provider = new OrganizationInstructionsProvider( + mockOctoKitService, + accessor.get(ILogService), + mockGitService, + mockExtensionContext as any, + mockFileSystem + ); + disposables.add(provider); + return provider; + } + + test('returns empty array when no active repository', async () => { + mockGitService.setActiveRepository(undefined); + const provider = createProvider(); + + const instructions = await provider.provideInstructions({}, {} as any); + + assert.deepEqual(instructions, []); + }); + + test('returns empty array when no storage URI available', async () => { + mockExtensionContext.storageUri = undefined; + mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); + const provider = createProvider(); + + const instructions = await provider.provideInstructions({}, {} as any); + + assert.deepEqual(instructions, []); + }); + + test('returns cached instructions on first call', async () => { + mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); + const provider = createProvider(); + + // Pre-populate cache + const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); + mockFileSystem.mockDirectory(cacheDir, [['testorg.instruction.md', FileType.File]]); + const instructionFile = URI.joinPath(cacheDir, 'testorg.instruction.md'); + const instructionContent = `# Organization Instructions + +Always follow our coding standards.`; + mockFileSystem.mockFile(instructionFile, instructionContent); + + const instructions = await provider.provideInstructions({}, {} as any); + + assert.equal(instructions.length, 1); + assert.equal(instructions[0].name, 'testorg'); + assert.equal(instructions[0].description, ''); + }); + + test('fetches and caches instructions from API', async () => { + mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); + const provider = createProvider(); + + // Mock API response + const mockInstructions = `# Organization Instructions + +Always use TypeScript strict mode.`; + mockOctoKitService.setOrgInstructions('testorg', mockInstructions); + + // First call returns cached (empty) results + const instructions1 = await provider.provideInstructions({}, {} as any); + assert.deepEqual(instructions1, []); + + // Wait for background fetch to complete + await new Promise(resolve => setTimeout(resolve, 100)); + + // Second call should return newly cached instructions + const instructions2 = await provider.provideInstructions({}, {} as any); + assert.equal(instructions2.length, 1); + assert.equal(instructions2[0].name, 'testorg'); + }); + + test('caches instructions with correct content', async () => { + mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); + const provider = createProvider(); + + const mockInstructions = `# Coding Standards + +1. Use tabs for indentation +2. Follow TypeScript conventions +3. Write comprehensive tests`; + mockOctoKitService.setOrgInstructions('testorg', mockInstructions); + + await provider.provideInstructions({}, {} as any); + await new Promise(resolve => setTimeout(resolve, 100)); + + // Check cached file content + const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); + const instructionFile = URI.joinPath(cacheDir, 'testorg.instruction.md'); + const contentBytes = await mockFileSystem.readFile(instructionFile); + const content = new TextDecoder().decode(contentBytes); + + assert.equal(content, mockInstructions); + }); + + test('fires change event when cache is updated', async () => { + mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); + const provider = createProvider(); + + const mockInstructions = `# Initial Instructions`; + mockOctoKitService.setOrgInstructions('testorg', mockInstructions); + + await provider.provideInstructions({}, {} as any); + await new Promise(resolve => setTimeout(resolve, 100)); + + let eventFired = false; + provider.onDidChangeInstructions(() => { + eventFired = true; + }); + + // Update the instructions + const updatedInstructions = `# Updated Instructions`; + mockOctoKitService.setOrgInstructions('testorg', updatedInstructions); + + await provider.provideInstructions({}, {} as any); + await new Promise(resolve => setTimeout(resolve, 150)); + + assert.equal(eventFired, true); + }); + + test('handles API errors gracefully', async () => { + mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); + const provider = createProvider(); + + // Make the API throw an error + mockOctoKitService.getOrgCustomInstructions = async () => { + throw new Error('API Error'); + }; + + // Should not throw, should return empty array + const instructions = await provider.provideInstructions({}, {} as any); + assert.deepEqual(instructions, []); + }); + + test('prevents concurrent fetches when called multiple times rapidly', async () => { + mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); + const provider = createProvider(); + + let apiCallCount = 0; + mockOctoKitService.getOrgCustomInstructions = async () => { + apiCallCount++; + // Simulate slow API call + await new Promise(resolve => setTimeout(resolve, 50)); + return 'Test instructions'; + }; + + // Make multiple concurrent calls + const promise1 = provider.provideInstructions({}, {} as any); + const promise2 = provider.provideInstructions({}, {} as any); + const promise3 = provider.provideInstructions({}, {} as any); + + await Promise.all([promise1, promise2, promise3]); + await new Promise(resolve => setTimeout(resolve, 100)); + + // API should only be called once due to isFetching guard + assert.equal(apiCallCount, 1); + }); + + test('does not fire change event when content is identical', async () => { + mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); + const provider = createProvider(); + + const mockInstructions = `# Stable Instructions`; + mockOctoKitService.setOrgInstructions('testorg', mockInstructions); + + await provider.provideInstructions({}, {} as any); + await new Promise(resolve => setTimeout(resolve, 100)); + + let changeEventCount = 0; + provider.onDidChangeInstructions(() => { + changeEventCount++; + }); + + // Fetch again with identical content + await provider.provideInstructions({}, {} as any); + await new Promise(resolve => setTimeout(resolve, 150)); + + // No change event should fire + assert.equal(changeEventCount, 0); + }); + + test('handles no instructions found from API', async () => { + mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); + const provider = createProvider(); + + // API returns undefined (no instructions) + mockOctoKitService.setOrgInstructions('testorg', undefined); + + await provider.provideInstructions({}, {} as any); + await new Promise(resolve => setTimeout(resolve, 100)); + + // Should not create any cache files + const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); + try { + const files = await mockFileSystem.readDirectory(cacheDir); + assert.equal(files.length, 0); + } catch { + // Directory might not exist, which is also fine + } + }); + + test('generates correct cache filename for organization', async () => { + mockGitService.setActiveRepository(new GithubRepoId('mycompany', 'testrepo')); + const provider = createProvider(); + + const mockInstructions = `# Company Instructions`; + mockOctoKitService.setOrgInstructions('mycompany', mockInstructions); + + await provider.provideInstructions({}, {} as any); + await new Promise(resolve => setTimeout(resolve, 100)); + + // Check that file was created with correct name + const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); + const instructionFile = URI.joinPath(cacheDir, 'mycompany.instruction.md'); + try { + const contentBytes = await mockFileSystem.readFile(instructionFile); + const content = new TextDecoder().decode(contentBytes); + assert.equal(content, mockInstructions); + } catch (error) { + assert.fail('Cache file should exist with correct name'); + } + }); + + test('handles repository context changes between calls', async () => { + const provider = createProvider(); + + // First call with org A + mockGitService.setActiveRepository(new GithubRepoId('orgA', 'repoA')); + + let capturedOrgLogin: string | undefined; + mockOctoKitService.getOrgCustomInstructions = async (orgLogin: string) => { + capturedOrgLogin = orgLogin; + return 'Org A instructions'; + }; + + await provider.provideInstructions({}, {} as any); + await new Promise(resolve => setTimeout(resolve, 100)); + + assert.equal(capturedOrgLogin, 'orgA'); + + // Change to org B + mockGitService.setActiveRepository(new GithubRepoId('orgB', 'repoB')); + + await provider.provideInstructions({}, {} as any); + await new Promise(resolve => setTimeout(resolve, 100)); + + // Should fetch from new organization + assert.equal(capturedOrgLogin, 'orgB'); + }); + + test('creates cache directory if it does not exist', async () => { + mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); + const provider = createProvider(); + + const mockInstructions = `# Test Instructions`; + mockOctoKitService.setOrgInstructions('testorg', mockInstructions); + + // Initially no cache directory + const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); + + await provider.provideInstructions({}, {} as any); + await new Promise(resolve => setTimeout(resolve, 100)); + + // Cache directory should now exist + try { + const stat = await mockFileSystem.stat(cacheDir); + assert.ok(stat); + } catch { + assert.fail('Cache directory should have been created'); + } + }); + + test('reads existing cache even when directory check fails', async () => { + mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); + const provider = createProvider(); + + // Pre-populate cache + const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); + mockFileSystem.mockDirectory(cacheDir, [['testorg.instruction.md', FileType.File]]); + const instructionFile = URI.joinPath(cacheDir, 'testorg.instruction.md'); + const instructionContent = `# Existing Instructions`; + mockFileSystem.mockFile(instructionFile, instructionContent); + + const instructions = await provider.provideInstructions({}, {} as any); + + // Should successfully read cached instructions + assert.equal(instructions.length, 1); + assert.equal(instructions[0].name, 'testorg'); + }); + + test('handles cache read errors gracefully', async () => { + mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); + const provider = createProvider(); + + // Make readDirectory throw an error + const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); + mockFileSystem.mockDirectory(cacheDir, []); // Empty directory + const originalReadDir = mockFileSystem.readDirectory.bind(mockFileSystem); + mockFileSystem.readDirectory = async () => { + throw new Error('Read error'); + }; + + // Should not throw, should return empty array + const instructions = await provider.provideInstructions({}, {} as any); + assert.deepEqual(instructions, []); + + // Restore original method + mockFileSystem.readDirectory = originalReadDir; + }); + + test('detects instruction additions', async () => { + mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); + const provider = createProvider(); + + // Initial setup with no instructions + mockOctoKitService.setOrgInstructions('testorg', undefined); + + await provider.provideInstructions({}, {} as any); + await new Promise(resolve => setTimeout(resolve, 100)); + + let changeEventFired = false; + provider.onDidChangeInstructions(() => { + changeEventFired = true; + }); + + // Add new instructions + const newInstructions = `# New Instructions + +Follow these rules.`; + mockOctoKitService.setOrgInstructions('testorg', newInstructions); + + await provider.provideInstructions({}, {} as any); + await new Promise(resolve => setTimeout(resolve, 150)); + + assert.equal(changeEventFired, true); + const instructions = await provider.provideInstructions({}, {} as any); + assert.equal(instructions.length, 1); + }); + + test('detects instruction removals', async () => { + mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); + const provider = createProvider(); + + // Initial setup with instructions + const initialInstructions = `# Initial Instructions`; + mockOctoKitService.setOrgInstructions('testorg', initialInstructions); + + await provider.provideInstructions({}, {} as any); + await new Promise(resolve => setTimeout(resolve, 100)); + + provider.onDidChangeInstructions(() => { + // Event listener registered for potential future use + }); + + // Remove instructions + mockOctoKitService.setOrgInstructions('testorg', undefined); + + await provider.provideInstructions({}, {} as any); + await new Promise(resolve => setTimeout(resolve, 150)); + + // Note: Currently the implementation doesn't delete cache files when instructions are removed, + // so the change event might not fire. This test documents current behavior. + // The cached instructions would still be returned on the next call. + }); + + test('handles empty instructions string', async () => { + mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); + const provider = createProvider(); + + // API returns empty string + mockOctoKitService.setOrgInstructions('testorg', ''); + + await provider.provideInstructions({}, {} as any); + await new Promise(resolve => setTimeout(resolve, 100)); + + // Empty strings are treated as "no instructions" and not cached + const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); + const instructionFile = URI.joinPath(cacheDir, 'testorg.instruction.md'); + try { + await mockFileSystem.readFile(instructionFile); + assert.fail('Cache file should not exist for empty instructions'); + } catch { + // Expected - empty instructions are not cached + } + }); + + test('handles instructions with special characters', async () => { + mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); + const provider = createProvider(); + + const mockInstructions = `# Instructions + +Use "double quotes" and 'single quotes'. +Include special chars: @#$%^&*() +Unicode: 你好 🚀`; + mockOctoKitService.setOrgInstructions('testorg', mockInstructions); + + await provider.provideInstructions({}, {} as any); + await new Promise(resolve => setTimeout(resolve, 100)); + + // Check that special characters are preserved + const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); + const instructionFile = URI.joinPath(cacheDir, 'testorg.instruction.md'); + const contentBytes = await mockFileSystem.readFile(instructionFile); + const content = new TextDecoder().decode(contentBytes); + + assert.equal(content, mockInstructions); + }); + + test('handles very large instruction content', async () => { + mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); + const provider = createProvider(); + + // Generate large content (e.g., 100KB) + const largeContent = '# Large Instructions\n\n' + 'x'.repeat(100000); + mockOctoKitService.setOrgInstructions('testorg', largeContent); + + await provider.provideInstructions({}, {} as any); + await new Promise(resolve => setTimeout(resolve, 100)); + + // Check that large content is handled correctly + const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); + const instructionFile = URI.joinPath(cacheDir, 'testorg.instruction.md'); + const contentBytes = await mockFileSystem.readFile(instructionFile); + const content = new TextDecoder().decode(contentBytes); + + assert.equal(content.length, largeContent.length); + }); + + test('returns correct URI for cached instruction resource', async () => { + mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); + const provider = createProvider(); + + // Pre-populate cache + const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); + mockFileSystem.mockDirectory(cacheDir, [['testorg.instruction.md', FileType.File]]); + const instructionFile = URI.joinPath(cacheDir, 'testorg.instruction.md'); + const instructionContent = `# Test`; + mockFileSystem.mockFile(instructionFile, instructionContent); + + const instructions = await provider.provideInstructions({}, {} as any); + + assert.equal(instructions.length, 1); + assert.ok(instructions[0].uri); + assert.equal(instructions[0].uri.toString(), instructionFile.toString()); + }); + + test('handles multiple organizations in same cache directory', async () => { + const provider = createProvider(); + + // First organization + mockGitService.setActiveRepository(new GithubRepoId('org1', 'repo1')); + mockOctoKitService.setOrgInstructions('org1', '# Org 1 Instructions'); + + await provider.provideInstructions({}, {} as any); + await new Promise(resolve => setTimeout(resolve, 100)); + + // Second organization + mockGitService.setActiveRepository(new GithubRepoId('org2', 'repo2')); + mockOctoKitService.setOrgInstructions('org2', '# Org 2 Instructions'); + + await provider.provideInstructions({}, {} as any); + await new Promise(resolve => setTimeout(resolve, 100)); + + // Both instruction files should exist in cache + const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); + const files = await mockFileSystem.readDirectory(cacheDir); + const instructionFiles = files.filter(([name]) => name.endsWith('.instruction.md')); + + assert.equal(instructionFiles.length, 2); + }); + + test('reads correct organization instructions when multiple are cached', async () => { + const provider = createProvider(); + + // Pre-populate cache with multiple organizations + const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); + mockFileSystem.mockDirectory(cacheDir, [ + ['org1.instruction.md', FileType.File], + ['org2.instruction.md', FileType.File], + ]); + mockFileSystem.mockFile(URI.joinPath(cacheDir, 'org1.instruction.md'), '# Org 1 Instructions'); + mockFileSystem.mockFile(URI.joinPath(cacheDir, 'org2.instruction.md'), '# Org 2 Instructions'); + + // Request instructions for org1 + mockGitService.setActiveRepository(new GithubRepoId('org1', 'repo1')); + const instructions = await provider.provideInstructions({}, {} as any); + + assert.equal(instructions.length, 1); + assert.equal(instructions[0].name, 'org1'); + }); +}); From 22808a211573b319d34ec200d027cd4634dab101 Mon Sep 17 00:00:00 2001 From: Paul Date: Mon, 1 Dec 2025 15:15:30 -0800 Subject: [PATCH 07/33] Update src/platform/github/common/githubService.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/platform/github/common/githubService.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/platform/github/common/githubService.ts b/src/platform/github/common/githubService.ts index 4eebc2639d..bd68d02fb4 100644 --- a/src/platform/github/common/githubService.ts +++ b/src/platform/github/common/githubService.ts @@ -303,9 +303,9 @@ export interface IOctoKitService { getFileContent(owner: string, repo: string, ref: string, path: string): Promise; /** - * Gets the list of custom instructions available for an organization. + * Gets the custom instructions prompt for an organization. * @param orgLogin The organization login - * @returns An array of custom instruction list items with basic metadata + * @returns The prompt string or undefined if not available */ getOrgCustomInstructions(orgLogin: string): Promise; } From 58f0b9847f3135e15c42916f7f2860f84fa79a19 Mon Sep 17 00:00:00 2001 From: Paul Date: Mon, 1 Dec 2025 15:15:46 -0800 Subject: [PATCH 08/33] Update src/extension/agents/vscode-node/organizationInstructionsProvider.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../agents/vscode-node/organizationInstructionsProvider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/extension/agents/vscode-node/organizationInstructionsProvider.ts b/src/extension/agents/vscode-node/organizationInstructionsProvider.ts index e31acbddfc..520b1c9a7c 100644 --- a/src/extension/agents/vscode-node/organizationInstructionsProvider.ts +++ b/src/extension/agents/vscode-node/organizationInstructionsProvider.ts @@ -164,7 +164,7 @@ export class OrganizationInstructionsProvider extends Disposable implements vsco try { const files = await this.fileSystem.readDirectory(cacheDir); for (const [filename, fileType] of files) { - if (fileType === FileType.File && filename.endsWith(orgLogin + InstructionFileExtension)) { + if (fileType === FileType.File && filename === this.getCacheFilename(orgLogin)) { const fileUri = vscode.Uri.joinPath(cacheDir, filename); const content = await this.fileSystem.readFile(fileUri); const text = new TextDecoder().decode(content); From 8b4ca5116e68206828360fa708d90df5b08d727a Mon Sep 17 00:00:00 2001 From: Paul Date: Mon, 1 Dec 2025 15:16:07 -0800 Subject: [PATCH 09/33] Update src/platform/github/common/octoKitServiceImpl.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- src/platform/github/common/octoKitServiceImpl.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/platform/github/common/octoKitServiceImpl.ts b/src/platform/github/common/octoKitServiceImpl.ts index 621bfab62c..8f3a00c67f 100644 --- a/src/platform/github/common/octoKitServiceImpl.ts +++ b/src/platform/github/common/octoKitServiceImpl.ts @@ -332,10 +332,7 @@ export class OctoKitService extends BaseOctoKitService implements IOctoKitServic throw new Error(`Failed to fetch custom instructions for org ${orgLogin}: ${response.statusText}`); } const data = await response.json() as { prompt: string }; - if (data) { - return data.prompt; - } - throw new Error('Invalid response format'); + return data.prompt; } catch (e) { this._logService.error(e); return undefined; From 7e4d5b7ed2495a0bbd110772e77f4bbed481dd00 Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Mon, 1 Dec 2025 15:28:21 -0800 Subject: [PATCH 10/33] update --- package-lock.json | 8 +- package.json | 5263 +-------------------------------------------- 2 files changed, 5 insertions(+), 5266 deletions(-) diff --git a/package-lock.json b/package-lock.json index 4e2c6b5327..6cf57fea82 100644 --- a/package-lock.json +++ b/package-lock.json @@ -17,7 +17,7 @@ "@humanwhocodes/gitignore-to-minimatch": "1.0.2", "@microsoft/tiktokenizer": "^1.0.10", "@sinclair/typebox": "^0.34.41", - "@vscode/copilot-api": "^0.2.5", + "@vscode/copilot-api": "^0.2.6", "@vscode/extension-telemetry": "^1.2.0", "@vscode/l10n": "^0.0.18", "@vscode/prompt-tsx": "^0.4.0-alpha.5", @@ -6429,9 +6429,9 @@ } }, "node_modules/@vscode/copilot-api": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/@vscode/copilot-api/-/copilot-api-0.2.5.tgz", - "integrity": "sha512-FITunwQI7JNXOFHikgMt6y2TKEjro14CCJbYjieLwvXkv+3t6tDxI0SEU+W4z0VxMMp4g3uCOqk8+WZa1LQaBw==", + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@vscode/copilot-api/-/copilot-api-0.2.6.tgz", + "integrity": "sha512-I5CTQMaV1iIIczA2sew3E85O0qYvwGZhgQtzTxdBk7wclhLcDTVXoz/oAcY1vc5gTl+SzlwM720NDNt/5GpLZQ==", "license": "SEE LICENSE" }, "node_modules/@vscode/debugadapter": { diff --git a/package.json b/package.json index 2dcfd8f076..56f26e2c4f 100644 --- a/package.json +++ b/package.json @@ -1,5262 +1 @@ -{ - "name": "copilot-chat", - "displayName": "GitHub Copilot Chat", - "description": "AI chat features powered by Copilot", - "version": "0.34.0", - "build": "1", - "internalAIKey": "1058ec22-3c95-4951-8443-f26c1f325911", - "completionsCoreVersion": "1.378.1799", - "internalLargeStorageAriaKey": "ec712b3202c5462fb6877acae7f1f9d7-c19ad55e-3e3c-4f99-984b-827f6d95bd9e-6917", - "ariaKey": "0c6ae279ed8443289764825290e4f9e2-1a736e7c-1324-4338-be46-fc2a58ae4d14-7255", - "buildType": "dev", - "publisher": "GitHub", - "homepage": "https://github.com/features/copilot?editor=vscode", - "license": "SEE LICENSE IN LICENSE.txt", - "repository": { - "type": "git", - "url": "https://github.com/microsoft/vscode-copilot-chat" - }, - "bugs": { - "url": "https://github.com/microsoft/vscode/issues" - }, - "qna": "https://github.com/github-community/community/discussions/categories/copilot", - "icon": "assets/copilot.png", - "pricing": "Trial", - "engines": { - "vscode": "^1.107.0-20251119", - "npm": ">=9.0.0", - "node": ">=22.14.0" - }, - "categories": [ - "AI", - "Chat", - "Programming Languages", - "Machine Learning" - ], - "keywords": [ - "ai", - "openai", - "codex", - "pilot", - "snippets", - "documentation", - "autocomplete", - "intellisense", - "refactor", - "javascript", - "python", - "typescript", - "php", - "go", - "golang", - "ruby", - "c++", - "c#", - "java", - "kotlin", - "co-pilot" - ], - "badges": [ - { - "url": "https://img.shields.io/badge/GitHub%20Copilot-Subscription%20Required-orange", - "href": "https://github.com/github-copilot/signup?editor=vscode", - "description": "%github.copilot.badge.signUp%" - }, - { - "url": "https://img.shields.io/github/stars/github/copilot-docs?style=social", - "href": "https://github.com/github/copilot-docs", - "description": "%github.copilot.badge.star%" - }, - { - "url": "https://img.shields.io/youtube/channel/views/UC7c3Kb6jYCRj4JOHHZTxKsQ?style=social", - "href": "https://www.youtube.com/@GitHub/search?query=copilot", - "description": "%github.copilot.badge.youtube%" - }, - { - "url": "https://img.shields.io/twitter/follow/github?style=social", - "href": "https://twitter.com/github", - "description": "%github.copilot.badge.twitter%" - } - ], - "activationEvents": [ - "onStartupFinished", - "onLanguageModelChat:copilot", - "onUri", - "onFileSystem:ccreq", - "onFileSystem:ccsettings", - "onCustomAgentsProvider", - "onInstructionsProvider" - ], - "main": "./dist/extension", - "l10n": "./l10n", - "enabledApiProposals": [ - "extensionsAny", - "newSymbolNamesProvider", - "interactive", - "codeActionAI", - "activeComment", - "commentReveal", - "contribCommentThreadAdditionalMenu", - "contribCommentsViewThreadMenus", - "documentFiltersExclusive", - "embeddings", - "findTextInFiles", - "findTextInFiles2", - "findFiles2@2", - "textSearchProvider", - "terminalDataWriteEvent", - "terminalExecuteCommandEvent", - "terminalSelection", - "terminalQuickFixProvider", - "mappedEditsProvider", - "aiRelatedInformation", - "aiSettingsSearch", - "chatParticipantAdditions", - "chatEditing", - "defaultChatParticipant@4", - "contribSourceControlInputBoxMenu", - "authLearnMore", - "testObserver", - "aiTextSearchProvider@2", - "chatParticipantPrivate@11", - "chatProvider@4", - "contribDebugCreateConfiguration", - "chatReferenceDiagnostic", - "textSearchProvider2", - "chatReferenceBinaryData", - "languageModelSystem", - "languageModelCapabilities", - "inlineCompletionsAdditions", - "chatStatusItem", - "taskProblemMatcherStatus", - "contribLanguageModelToolSets", - "textDocumentChangeReason", - "resolvers", - "taskExecutionTerminal", - "dataChannels", - "languageModelThinkingPart", - "chatSessionsProvider@3", - "devDeviceId", - "contribEditorContentMenu" - ], - "contributes": { - "languageModelTools": [ - { - "name": "copilot_searchCodebase", - "toolReferenceName": "codebase", - "displayName": "%copilot.tools.searchCodebase.name%", - "icon": "$(folder)", - "userDescription": "%copilot.codebase.tool.description%", - "modelDescription": "Run a natural language search for relevant code or documentation comments from the user's current workspace. Returns relevant code snippets from the user's current workspace if it is large, or the full contents of the workspace if it is small.", - "tags": [ - "codesearch", - "vscode_codesearch" - ], - "inputSchema": { - "type": "object", - "properties": { - "query": { - "type": "string", - "description": "The query to search the codebase for. Should contain all relevant context. Should ideally be text that might appear in the codebase, such as function names, variable names, or comments." - } - }, - "required": [ - "query" - ] - } - }, - { - "name": "copilot_searchWorkspaceSymbols", - "toolReferenceName": "symbols", - "displayName": "%copilot.tools.searchWorkspaceSymbols.name%", - "icon": "$(symbol)", - "userDescription": "%copilot.workspaceSymbols.tool.description%", - "modelDescription": "Search the user's workspace for code symbols using language services. Use this tool when the user is looking for a specific symbol in their workspace.", - "tags": [ - "vscode_codesearch" - ], - "inputSchema": { - "type": "object", - "properties": { - "symbolName": { - "type": "string", - "description": "The symbol to search for, such as a function name, class name, or variable name." - } - }, - "required": [ - "symbolName" - ] - } - }, - { - "name": "copilot_listCodeUsages", - "toolReferenceName": "usages", - "legacyToolReferenceFullNames": [ - "usages" - ], - "displayName": "%copilot.tools.listCodeUsages.name%", - "icon": "$(references)", - "userDescription": "%copilot.listCodeUsages.tool.description%", - "modelDescription": "Request to list all usages (references, definitions, implementations etc) of a function, class, method, variable etc. Use this tool when \n1. Looking for a sample implementation of an interface or class\n2. Checking how a function is used throughout the codebase.\n3. Including and updating all usages when changing a function, method, or constructor", - "tags": [ - "vscode_codesearch" - ], - "inputSchema": { - "type": "object", - "properties": { - "symbolName": { - "type": "string", - "description": "The name of the symbol, such as a function name, class name, method name, variable name, etc." - }, - "filePaths": { - "type": "array", - "description": "One or more file paths which likely contain the definition of the symbol. For instance the file which declares a class or function. This is optional but will speed up the invocation of this tool and improve the quality of its output.", - "items": { - "type": "string" - } - } - }, - "required": [ - "symbolName" - ] - } - }, - { - "name": "copilot_getVSCodeAPI", - "toolReferenceName": "vscodeAPI", - "displayName": "%copilot.tools.getVSCodeAPI.name%", - "icon": "$(references)", - "userDescription": "%copilot.vscode.tool.description%", - "modelDescription": "Get comprehensive VS Code API documentation and references for extension development. This tool provides authoritative documentation for VS Code's extensive API surface, including proposed APIs, contribution points, and best practices. Use this tool for understanding complex VS Code API interactions.\n\nWhen to use this tool:\n- User asks about specific VS Code APIs, interfaces, or extension capabilities\n- Need documentation for VS Code extension contribution points (commands, views, settings, etc.)\n- Questions about proposed APIs and their usage patterns\n- Understanding VS Code extension lifecycle, activation events, and packaging\n- Best practices for VS Code extension development architecture\n- API examples and code patterns for extension features\n- Troubleshooting extension-specific issues or API limitations\n\nWhen NOT to use this tool:\n- Creating simple standalone files or scripts unrelated to VS Code extensions\n- General programming questions not specific to VS Code extension development\n- Questions about using VS Code as an editor (user-facing features)\n- Non-extension related development tasks\n- File creation or editing that doesn't involve VS Code extension APIs\n\nCRITICAL usage guidelines:\n1. Always include specific API names, interfaces, or concepts in your query\n2. Mention the extension feature you're trying to implement\n3. Include context about proposed vs stable APIs when relevant\n4. Reference specific contribution points when asking about extension manifest\n5. Be specific about the VS Code version or API version when known\n\nScope: This tool is for EXTENSION DEVELOPMENT ONLY - building tools that extend VS Code itself, not for general file creation or non-extension programming tasks.", - "inputSchema": { - "type": "object", - "properties": { - "query": { - "type": "string", - "description": "The query to search vscode documentation for. Should contain all relevant context." - } - }, - "required": [ - "query" - ] - }, - "tags": [] - }, - { - "name": "copilot_findFiles", - "toolReferenceName": "fileSearch", - "displayName": "%copilot.tools.findFiles.name%", - "modelDescription": "Search for files in the workspace by glob pattern. This only returns the paths of matching files. Use this tool when you know the exact filename pattern of the files you're searching for. Glob patterns match from the root of the workspace folder. Examples:\n- **/*.{js,ts} to match all js/ts files in the workspace.\n- src/** to match all files under the top-level src folder.\n- **/foo/**/*.js to match all js files under any foo folder in the workspace.", - "tags": [ - "vscode_codesearch" - ], - "inputSchema": { - "type": "object", - "properties": { - "query": { - "type": "string", - "description": "Search for files with names or paths matching this glob pattern." - }, - "maxResults": { - "type": "number", - "description": "The maximum number of results to return. Do not use this unless necessary, it can slow things down. By default, only some matches are returned. If you use this and don't see what you're looking for, you can try again with a more specific query or a larger maxResults." - } - }, - "required": [ - "query" - ] - } - }, - { - "name": "copilot_findTextInFiles", - "toolReferenceName": "textSearch", - "displayName": "%copilot.tools.findTextInFiles.name%", - "modelDescription": "Do a fast text search in the workspace. Use this tool when you want to search with an exact string or regex. If you are not sure what words will appear in the workspace, prefer using regex patterns with alternation (|) or character classes to search for multiple potential words at once instead of making separate searches. For example, use 'function|method|procedure' to look for all of those words at once. Use includePattern to search within files matching a specific pattern, or in a specific file, using a relative path. Use 'includeIgnoredFiles' to include files normally ignored by .gitignore, other ignore files, and `files.exclude` and `search.exclude` settings. Warning: using this may cause the search to be slower, only set it when you want to search in ignored folders like node_modules or build outputs. Use this tool when you want to see an overview of a particular file, instead of using read_file many times to look for code within a file.", - "tags": [ - "vscode_codesearch" - ], - "inputSchema": { - "type": "object", - "properties": { - "query": { - "type": "string", - "description": "The pattern to search for in files in the workspace. Use regex with alternation (e.g., 'word1|word2|word3') or character classes to find multiple potential words in a single search. Be sure to set the isRegexp property properly to declare whether it's a regex or plain text pattern. Is case-insensitive." - }, - "isRegexp": { - "type": "boolean", - "description": "Whether the pattern is a regex." - }, - "includePattern": { - "type": "string", - "description": "Search files matching this glob pattern. Will be applied to the relative path of files within the workspace. To search recursively inside a folder, use a proper glob pattern like \"src/folder/**\". Do not use | in includePattern." - }, - "maxResults": { - "type": "number", - "description": "The maximum number of results to return. Do not use this unless necessary, it can slow things down. By default, only some matches are returned. If you use this and don't see what you're looking for, you can try again with a more specific query or a larger maxResults." - }, - "includeIgnoredFiles": { - "type": "boolean", - "description": "Whether to include files that would normally be ignored according to .gitignore, other ignore files and `files.exclude` and `search.exclude` settings. Warning: using this may cause the search to be slower. Only set it when you want to search in ignored folders like node_modules or build outputs." - } - }, - "required": [ - "query", - "isRegexp" - ] - } - }, - { - "name": "copilot_applyPatch", - "displayName": "%copilot.tools.applyPatch.name%", - "toolReferenceName": "applyPatch", - "userDescription": "%copilot.tools.applyPatch.description%", - "modelDescription": "Edit text files. Do not use this tool to edit Jupyter notebooks. `apply_patch` allows you to execute a diff/patch against a text file, but the format of the diff specification is unique to this task, so pay careful attention to these instructions. To use the `apply_patch` command, you should pass a message of the following structure as \"input\":\n\n*** Begin Patch\n[YOUR_PATCH]\n*** End Patch\n\nWhere [YOUR_PATCH] is the actual content of your patch, specified in the following V4A diff format.\n\n*** [ACTION] File: [/absolute/path/to/file] -> ACTION can be one of Add, Update, or Delete.\nAn example of a message that you might pass as \"input\" to this function, in order to apply a patch, is shown below.\n\n*** Begin Patch\n*** Update File: /Users/someone/pygorithm/searching/binary_search.py\n@@class BaseClass\n@@ def search():\n- pass\n+ raise NotImplementedError()\n\n@@class Subclass\n@@ def search():\n- pass\n+ raise NotImplementedError()\n\n*** End Patch\nDo not use line numbers in this diff format.", - "inputSchema": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "The edit patch to apply." - }, - "explanation": { - "type": "string", - "description": "A short description of what the tool call is aiming to achieve." - } - }, - "required": [ - "input", - "explanation" - ] - } - }, - { - "name": "copilot_readFile", - "toolReferenceName": "readFile", - "legacyToolReferenceFullNames": [ - "search/readFile" - ], - "displayName": "%copilot.tools.readFile.name%", - "userDescription": "%copilot.tools.readFile.userDescription%", - "modelDescription": "Read the contents of a file.\n\nYou must specify the line range you're interested in. Line numbers are 1-indexed. If the file contents returned are insufficient for your task, you may call this tool again to retrieve more content. Prefer reading larger ranges over doing many small reads.", - "tags": [ - "vscode_codesearch" - ], - "inputSchema": { - "type": "object", - "properties": { - "filePath": { - "description": "The absolute path of the file to read.", - "type": "string" - }, - "startLine": { - "type": "number", - "description": "The line number to start reading from, 1-based." - }, - "endLine": { - "type": "number", - "description": "The inclusive line number to end reading at, 1-based." - } - }, - "required": [ - "filePath", - "startLine", - "endLine" - ] - } - }, - { - "name": "copilot_listDirectory", - "toolReferenceName": "listDirectory", - "displayName": "%copilot.tools.listDirectory.name%", - "modelDescription": "List the contents of a directory. Result will have the name of the child. If the name ends in /, it's a folder, otherwise a file", - "tags": [ - "vscode_codesearch" - ], - "inputSchema": { - "type": "object", - "properties": { - "path": { - "type": "string", - "description": "The absolute path to the directory to list." - } - }, - "required": [ - "path" - ] - } - }, - { - "name": "copilot_getErrors", - "displayName": "%copilot.tools.getErrors.name%", - "toolReferenceName": "problems", - "legacyToolReferenceFullNames": [ - "problems" - ], - "icon": "$(error)", - "userDescription": "%copilot.tools.errors.description%", - "modelDescription": "Get any compile or lint errors in a specific file or across all files. If the user mentions errors or problems in a file, they may be referring to these. Use the tool to see the same errors that the user is seeing. If the user asks you to analyze all errors, or does not specify a file, use this tool to gather errors for all files. Also use this tool after editing a file to validate the change.", - "tags": [], - "inputSchema": { - "type": "object", - "properties": { - "filePaths": { - "description": "The absolute paths to the files or folders to check for errors. Omit 'filePaths' when retrieving all errors.", - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - { - "name": "copilot_readProjectStructure", - "displayName": "%copilot.tools.readProjectStructure.name%", - "modelDescription": "Get a file tree representation of the workspace.", - "tags": [] - }, - { - "name": "copilot_getChangedFiles", - "displayName": "%copilot.tools.getChangedFiles.name%", - "toolReferenceName": "changes", - "legacyToolReferenceFullNames": [ - "changes" - ], - "icon": "$(diff)", - "userDescription": "%copilot.tools.changes.description%", - "modelDescription": "Get git diffs of current file changes in a git repository. Don't forget that you can use run_in_terminal to run git commands in a terminal as well.", - "tags": [ - "vscode_codesearch" - ], - "inputSchema": { - "type": "object", - "properties": { - "repositoryPath": { - "type": "string", - "description": "The absolute path to the git repository to look for changes in. If not provided, the active git repository will be used." - }, - "sourceControlState": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "staged", - "unstaged", - "merge-conflicts" - ] - }, - "description": "The kinds of git state to filter by. Allowed values are: 'staged', 'unstaged', and 'merge-conflicts'. If not provided, all states will be included." - } - } - } - }, - { - "name": "copilot_testFailure", - "toolReferenceName": "testFailure", - "legacyToolReferenceFullNames": [ - "testFailure" - ], - "displayName": "%copilot.tools.testFailure.name%", - "icon": "$(beaker)", - "userDescription": "%copilot.testFailure.tool.description%", - "modelDescription": "Includes test failure information in the prompt.", - "inputSchema": {}, - "tags": [ - "vscode_editing_with_tests", - "enable_other_tool_copilot_readFile", - "enable_other_tool_copilot_listDirectory", - "enable_other_tool_copilot_findFiles", - "enable_other_tool_copilot_runTests" - ] - }, - { - "name": "copilot_updateUserPreferences", - "toolReferenceName": "updateUserPreferences", - "displayName": "%copilot.tools.updateUserPreferences.name%", - "modelDescription": "Update the user's preferences file with new information about the user and their coding preferences, based on the current chat history.", - "canBeReferencedInPrompt": true, - "tags": [], - "inputSchema": { - "type": "object", - "properties": { - "facts": { - "type": "array", - "items": { - "type": "string" - }, - "description": "An array of new user preferences to remember." - } - }, - "required": [ - "facts" - ] - }, - "when": "config.github.copilot.chat.enableUserPreferences" - }, - { - "name": "copilot_createNewWorkspace", - "displayName": "%github.copilot.tools.createNewWorkspace.name%", - "toolReferenceName": "newWorkspace", - "legacyToolReferenceFullNames": [ - "new/newWorkspace" - ], - "icon": "$(new-folder)", - "userDescription": "%github.copilot.tools.createNewWorkspace.userDescription%", - "when": "config.github.copilot.chat.newWorkspaceCreation.enabled", - "modelDescription": "Get comprehensive setup steps to help the user create complete project structures in a VS Code workspace. This tool is designed for full project initialization and scaffolding, not for creating individual files.\n\nWhen to use this tool:\n- User wants to create a new complete project from scratch\n- Setting up entire project frameworks (TypeScript projects, React apps, Node.js servers, etc.)\n- Initializing Model Context Protocol (MCP) servers with full structure\n- Creating VS Code extensions with proper scaffolding\n- Setting up Next.js, Vite, or other framework-based projects\n- User asks for \"new project\", \"create a workspace\", \"set up a [framework] project\"\n- Need to establish complete development environment with dependencies, config files, and folder structure\n\nWhen NOT to use this tool:\n- Creating single files or small code snippets\n- Adding individual files to existing projects\n- Making modifications to existing codebases\n- User asks to \"create a file\" or \"add a component\"\n- Simple code examples or demonstrations\n- Debugging or fixing existing code\n\nThis tool provides complete project setup including:\n- Folder structure creation\n- Package.json and dependency management\n- Configuration files (tsconfig, eslint, etc.)\n- Initial boilerplate code\n- Development environment setup\n- Build and run instructions\n\nUse other file creation tools for individual files within existing projects.", - "inputSchema": { - "type": "object", - "properties": { - "query": { - "type": "string", - "description": "The query to use to generate the new workspace. This should be a clear and concise description of the workspace the user wants to create." - } - }, - "required": [ - "query" - ] - }, - "tags": [ - "enable_other_tool_install_extension", - "enable_other_tool_get_project_setup_info" - ] - }, - { - "name": "copilot_getProjectSetupInfo", - "displayName": "%github.copilot.tools.getProjectSetupInfo.name%", - "when": "config.github.copilot.chat.newWorkspaceCreation.enabled", - "toolReferenceName": "getProjectSetupInfo", - "legacyToolReferenceFullNames": [ - "new/getProjectSetupInfo" - ], - "modelDescription": "Do not call this tool without first calling the tool to create a workspace. This tool provides a project setup information for a Visual Studio Code workspace based on a project type and programming language.", - "inputSchema": { - "type": "object", - "properties": { - "projectType": { - "type": "string", - "description": "The type of project to create. Supported values are: 'python-script', 'python-project', 'mcp-server', 'model-context-protocol-server', 'vscode-extension', 'next-js', 'vite' and 'other'" - } - }, - "required": [ - "projectType" - ] - }, - "tags": [] - }, - { - "name": "copilot_installExtension", - "displayName": "Install Extension in VS Code", - "when": "config.github.copilot.chat.newWorkspaceCreation.enabled", - "toolReferenceName": "installExtension", - "legacyToolReferenceFullNames": [ - "new/installExtension" - ], - "modelDescription": "Install an extension in VS Code. Use this tool to install an extension in Visual Studio Code as part of a new workspace creation process only.", - "inputSchema": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The ID of the extension to install. This should be in the format .." - }, - "name": { - "type": "string", - "description": "The name of the extension to install. This should be a clear and concise description of the extension." - } - }, - "required": [ - "id", - "name" - ] - }, - "tags": [] - }, - { - "name": "copilot_runVscodeCommand", - "displayName": "Run VS Code Command", - "when": "config.github.copilot.chat.newWorkspaceCreation.enabled", - "toolReferenceName": "runCommand", - "legacyToolReferenceFullNames": [ - "new/runVscodeCommand" - ], - "modelDescription": "Run a command in VS Code. Use this tool to run a command in Visual Studio Code as part of a new workspace creation process only.", - "inputSchema": { - "type": "object", - "properties": { - "commandId": { - "type": "string", - "description": "The ID of the command to execute. This should be in the format ." - }, - "name": { - "type": "string", - "description": "The name of the command to execute. This should be a clear and concise description of the command." - }, - "args": { - "type": "array", - "description": "The arguments to pass to the command. This should be an array of strings.", - "items": { - "type": "string" - } - } - }, - "required": [ - "commandId", - "name" - ] - }, - "tags": [] - }, - { - "name": "copilot_createNewJupyterNotebook", - "displayName": "Create New Jupyter Notebook", - "icon": "$(notebook)", - "toolReferenceName": "createJupyterNotebook", - "legacyToolReferenceFullNames": [ - "newJupyterNotebook" - ], - "modelDescription": "Generates a new Jupyter Notebook (.ipynb) in VS Code. Jupyter Notebooks are interactive documents commonly used for data exploration, analysis, visualization, and combining code with narrative text. Prefer creating plain Python files or similar unless a user explicitly requests creating a new Jupyter Notebook or already has a Jupyter Notebook opened or exists in the workspace.", - "userDescription": "%copilot.tools.newJupyterNotebook.description%", - "inputSchema": { - "type": "object", - "properties": { - "query": { - "type": "string", - "description": "The query to use to generate the jupyter notebook. This should be a clear and concise description of the notebook the user wants to create." - } - }, - "required": [ - "query" - ] - }, - "tags": [] - }, - { - "name": "copilot_insertEdit", - "toolReferenceName": "insertEdit", - "displayName": "%copilot.tools.insertEdit.name%", - "modelDescription": "Insert new code into an existing file in the workspace. Use this tool once per file that needs to be modified, even if there are multiple changes for a file. Generate the \"explanation\" property first.\nThe system is very smart and can understand how to apply your edits to the files, you just need to provide minimal hints.\nAvoid repeating existing code, instead use comments to represent regions of unchanged code. Be as concise as possible. For example:\n// ...existing code...\n{ changed code }\n// ...existing code...\n{ changed code }\n// ...existing code...\n\nHere is an example of how you should use format an edit to an existing Person class:\nclass Person {\n\t// ...existing code...\n\tage: number;\n\t// ...existing code...\n\tgetAge() {\n\treturn this.age;\n\t}\n}", - "tags": [], - "inputSchema": { - "type": "object", - "properties": { - "explanation": { - "type": "string", - "description": "A short explanation of the edit being made." - }, - "filePath": { - "type": "string", - "description": "An absolute path to the file to edit." - }, - "code": { - "type": "string", - "description": "The code change to apply to the file.\nThe system is very smart and can understand how to apply your edits to the files, you just need to provide minimal hints.\nAvoid repeating existing code, instead use comments to represent regions of unchanged code. Be as concise as possible. For example:\n// ...existing code...\n{ changed code }\n// ...existing code...\n{ changed code }\n// ...existing code...\n\nHere is an example of how you should use format an edit to an existing Person class:\nclass Person {\n\t// ...existing code...\n\tage: number;\n\t// ...existing code...\n\tgetAge() {\n\t\treturn this.age;\n\t}\n}" - } - }, - "required": [ - "explanation", - "filePath", - "code" - ] - } - }, - { - "name": "copilot_createFile", - "toolReferenceName": "createFile", - "legacyToolReferenceFullNames": [ - "createFile" - ], - "displayName": "%copilot.tools.createFile.name%", - "userDescription": "%copilot.tools.createFile.description%", - "modelDescription": "This is a tool for creating a new file in the workspace. The file will be created with the specified content. The directory will be created if it does not already exist. Never use this tool to edit a file that already exists.", - "tags": [], - "inputSchema": { - "type": "object", - "properties": { - "filePath": { - "type": "string", - "description": "The absolute path to the file to create." - }, - "content": { - "type": "string", - "description": "The content to write to the file." - } - }, - "required": [ - "filePath", - "content" - ] - } - }, - { - "name": "copilot_createDirectory", - "toolReferenceName": "createDirectory", - "legacyToolReferenceFullNames": [ - "createDirectory" - ], - "displayName": "%copilot.tools.createDirectory.name%", - "userDescription": "%copilot.tools.createDirectory.description%", - "modelDescription": "Create a new directory structure in the workspace. Will recursively create all directories in the path, like mkdir -p. You do not need to use this tool before using create_file, that tool will automatically create the needed directories.", - "tags": [], - "inputSchema": { - "type": "object", - "properties": { - "dirPath": { - "type": "string", - "description": "The absolute path to the directory to create." - } - }, - "required": [ - "dirPath" - ] - } - }, - { - "name": "copilot_openSimpleBrowser", - "displayName": "%copilot.tools.openSimpleBrowser.name%", - "modelDescription": "Preview a website or open a URL in the editor's Simple Browser. Useful for quickly viewing locally hosted websites, demos, or resources without leaving the coding environment.", - "userDescription": "%copilot.tools.openSimpleBrowser.description%", - "toolReferenceName": "openSimpleBrowser", - "legacyToolReferenceFullNames": [ - "openSimpleBrowser" - ], - "tags": [], - "inputSchema": { - "type": "object", - "properties": { - "url": { - "type": "string", - "description": "The website URL to preview or open in the Simple Browser inside the editor. Must be either an http or https URL" - } - }, - "required": [ - "url" - ] - } - }, - { - "name": "copilot_replaceString", - "toolReferenceName": "replaceString", - "displayName": "%copilot.tools.replaceString.name%", - "modelDescription": "This is a tool for making edits in an existing file in the workspace. For moving or renaming files, use run in terminal tool with the 'mv' command instead. For larger edits, split them into smaller edits and call the edit tool multiple times to ensure accuracy. Before editing, always ensure you have the context to understand the file's contents and context. To edit a file, provide: 1) filePath (absolute path), 2) oldString (MUST be the exact literal text to replace including all whitespace, indentation, newlines, and surrounding code etc), and 3) newString (MUST be the exact literal text to replace \\`oldString\\` with (also including all whitespace, indentation, newlines, and surrounding code etc.). Ensure the resulting code is correct and idiomatic.). Each use of this tool replaces exactly ONE occurrence of oldString.\n\nCRITICAL for \\`oldString\\`: Must uniquely identify the single instance to change. Include at least 3 lines of context BEFORE and AFTER the target text, matching whitespace and indentation precisely. If this string matches multiple locations, or does not match exactly, the tool will fail. Never use 'Lines 123-456 omitted' from summarized documents or ...existing code... comments in the oldString or newString.", - "when": "!config.github.copilot.chat.disableReplaceTool", - "inputSchema": { - "type": "object", - "properties": { - "filePath": { - "type": "string", - "description": "An absolute path to the file to edit." - }, - "oldString": { - "type": "string", - "description": "The exact literal text to replace, preferably unescaped. For single replacements (default), include at least 3 lines of context BEFORE and AFTER the target text, matching whitespace and indentation precisely. For multiple replacements, specify expected_replacements parameter. If this string is not the exact literal text (i.e. you escaped it) or does not match exactly, the tool will fail." - }, - "newString": { - "type": "string", - "description": "The exact literal text to replace `old_string` with, preferably unescaped. Provide the EXACT text. Ensure the resulting code is correct and idiomatic." - } - }, - "required": [ - "filePath", - "oldString", - "newString" - ] - } - }, - { - "name": "copilot_multiReplaceString", - "toolReferenceName": "multiReplaceString", - "displayName": "%copilot.tools.multiReplaceString.name%", - "modelDescription": "This tool allows you to apply multiple replace_string_in_file operations in a single call, which is more efficient than calling replace_string_in_file multiple times. It takes an array of replacement operations and applies them sequentially. Each replacement operation has the same parameters as replace_string_in_file: filePath, oldString, newString, and explanation. This tool is ideal when you need to make multiple edits across different files or multiple edits in the same file. The tool will provide a summary of successful and failed operations.", - "when": "!config.github.copilot.chat.disableReplaceTool", - "inputSchema": { - "type": "object", - "properties": { - "explanation": { - "type": "string", - "description": "A brief explanation of what the multi-replace operation will accomplish." - }, - "replacements": { - "type": "array", - "description": "An array of replacement operations to apply sequentially.", - "items": { - "type": "object", - "properties": { - "explanation": { - "type": "string", - "description": "A brief explanation of this specific replacement operation." - }, - "filePath": { - "type": "string", - "description": "An absolute path to the file to edit." - }, - "oldString": { - "type": "string", - "description": "The exact literal text to replace, preferably unescaped. Include at least 3 lines of context BEFORE and AFTER the target text, matching whitespace and indentation precisely. If this string is not the exact literal text or does not match exactly, this replacement will fail." - }, - "newString": { - "type": "string", - "description": "The exact literal text to replace `oldString` with, preferably unescaped. Provide the EXACT text. Ensure the resulting code is correct and idiomatic." - } - }, - "required": [ - "explanation", - "filePath", - "oldString", - "newString" - ] - }, - "minItems": 1 - } - }, - "required": [ - "explanation", - "replacements" - ] - } - }, - { - "name": "copilot_editNotebook", - "toolReferenceName": "editNotebook", - "icon": "$(pencil)", - "displayName": "%copilot.tools.editNotebook.name%", - "userDescription": "%copilot.tools.editNotebook.userDescription%", - "modelDescription": "This is a tool for editing an existing Notebook file in the workspace. Generate the \"explanation\" property first.\nThe system is very smart and can understand how to apply your edits to the notebooks.\nWhen updating the content of an existing cell, ensure newCode preserves whitespace and indentation exactly and does NOT include any code markers such as (...existing code...).", - "tags": [ - "enable_other_tool_copilot_getNotebookSummary" - ], - "inputSchema": { - "type": "object", - "properties": { - "filePath": { - "type": "string", - "description": "An absolute path to the notebook file to edit, or the URI of a untitled, not yet named, file, such as `untitled:Untitled-1." - }, - "cellId": { - "type": "string", - "description": "Id of the cell that needs to be deleted or edited. Use the value `TOP`, `BOTTOM` when inserting a cell at the top or bottom of the notebook, else provide the id of the cell after which a new cell is to be inserted. Remember, if a cellId is provided and editType=insert, then a cell will be inserted after the cell with the provided cellId." - }, - "newCode": { - "anyOf": [ - { - "type": "string", - "description": "The code for the new or existing cell to be edited. Code should not be wrapped within tags. Do NOT include code markers such as (...existing code...) to indicate existing code." - }, - { - "type": "array", - "items": { - "type": "string", - "description": "The code for the new or existing cell to be edited. Code should not be wrapped within tags" - } - } - ] - }, - "language": { - "type": "string", - "description": "The language of the cell. `markdown`, `python`, `javascript`, `julia`, etc." - }, - "editType": { - "type": "string", - "enum": [ - "insert", - "delete", - "edit" - ], - "description": "The operation peformed on the cell, whether `insert`, `delete` or `edit`.\nUse the `editType` field to specify the operation: `insert` to add a new cell, `edit` to modify an existing cell's content, and `delete` to remove a cell." - } - }, - "required": [ - "filePath", - "editType", - "cellId" - ] - } - }, - { - "name": "copilot_runNotebookCell", - "displayName": "%copilot.tools.runNotebookCell.name%", - "toolReferenceName": "runNotebookCell", - "legacyToolReferenceFullNames": [ - "runNotebooks/runCell" - ], - "icon": "$(play)", - "modelDescription": "This is a tool for running a code cell in a notebook file directly in the notebook editor. The output from the execution will be returned. Code cells should be run as they are added or edited when working through a problem to bring the kernel state up to date and ensure the code executes successfully. Code cells are ready to run and don't require any pre-processing. If asked to run the first cell in a notebook, you should run the first code cell since markdown cells cannot be executed. NOTE: Avoid executing Markdown cells or providing Markdown cell IDs, as Markdown cells cannot be executed.", - "userDescription": "%copilot.tools.runNotebookCell.description%", - "tags": [ - "enable_other_tool_copilot_getNotebookSummary" - ], - "inputSchema": { - "type": "object", - "properties": { - "filePath": { - "type": "string", - "description": "An absolute path to the notebook file with the cell to run, or the URI of a untitled, not yet named, file, such as `untitled:Untitled-1.ipynb" - }, - "reason": { - "type": "string", - "description": "An optional explanation of why the cell is being run. This will be shown to the user before the tool is run and is not necessary if it's self-explanatory." - }, - "cellId": { - "type": "string", - "description": "The ID for the code cell to execute. Avoid providing markdown cell IDs as nothing will be executed." - }, - "continueOnError": { - "type": "boolean", - "description": "Whether or not execution should continue for remaining cells if an error is encountered. Default to false unless instructed otherwise." - } - }, - "required": [ - "filePath", - "cellId" - ] - } - }, - { - "name": "copilot_getNotebookSummary", - "toolReferenceName": "getNotebookSummary", - "legacyToolReferenceFullNames": [ - "runNotebooks/getNotebookSummary" - ], - "displayName": "Get the structure of a notebook", - "modelDescription": "This is a tool returns the list of the Notebook cells along with the id, cell types, line ranges, language, execution information and output mime types for each cell. This is useful to get Cell Ids when executing a notebook or determine what cells have been executed and what order, or what cells have outputs. If required to read contents of a cell use this to determine the line range of a cells, and then use read_file tool to read a specific line range. Requery this tool if the contents of the notebook change.", - "tags": [], - "inputSchema": { - "type": "object", - "properties": { - "filePath": { - "type": "string", - "description": "An absolute path to the notebook file with the cell to run, or the URI of a untitled, not yet named, file, such as `untitled:Untitled-1.ipynb" - } - }, - "required": [ - "filePath" - ] - } - }, - { - "name": "copilot_readNotebookCellOutput", - "displayName": "%copilot.tools.getNotebookCellOutput.name%", - "toolReferenceName": "readNotebookCellOutput", - "legacyToolReferenceFullNames": [ - "runNotebooks/readNotebookCellOutput" - ], - "icon": "$(notebook-render-output)", - "modelDescription": "This tool will retrieve the output for a notebook cell from its most recent execution or restored from disk. The cell may have output even when it has not been run in the current kernel session. This tool has a higher token limit for output length than the runNotebookCell tool.", - "userDescription": "%copilot.tools.getNotebookCellOutput.description%", - "when": "userHasOpenedNotebook", - "tags": [], - "inputSchema": { - "type": "object", - "properties": { - "filePath": { - "type": "string", - "description": "An absolute path to the notebook file with the cell to run, or the URI of a untitled, not yet named, file, such as `untitled:Untitled-1.ipynb" - }, - "cellId": { - "type": "string", - "description": "The ID of the cell for which output should be retrieved." - } - }, - "required": [ - "filePath", - "cellId" - ] - } - }, - { - "name": "copilot_fetchWebPage", - "displayName": "%copilot.tools.fetchWebPage.name%", - "toolReferenceName": "fetch", - "legacyToolReferenceFullNames": [ - "fetch" - ], - "when": "!isWeb", - "icon": "$(globe)", - "userDescription": "%copilot.tools.fetchWebPage.description%", - "modelDescription": "Fetches the main content from a web page. This tool is useful for summarizing or analyzing the content of a webpage. You should use this tool when you think the user is looking for information from a specific webpage.", - "tags": [], - "inputSchema": { - "type": "object", - "properties": { - "urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "An array of URLs to fetch content from." - }, - "query": { - "type": "string", - "description": "The query to search for in the web page's content. This should be a clear and concise description of the content you want to find." - } - }, - "required": [ - "urls", - "query" - ] - } - }, - { - "name": "copilot_findTestFiles", - "displayName": "%copilot.tools.findTestFiles.name%", - "icon": "$(beaker)", - "canBeReferencedInPrompt": false, - "toolReferenceName": "findTestFiles", - "userDescription": "%copilot.tools.findTestFiles.description%", - "modelDescription": "For a source code file, find the file that contains the tests. For a test file find the file that contains the code under test.", - "tags": [], - "inputSchema": { - "type": "object", - "properties": { - "filePaths": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "filePaths" - ] - } - }, - { - "name": "copilot_getDocInfo", - "displayName": "%copilot.tools.getDocInfo.name%", - "icon": "$(beaker)", - "canBeReferencedInPrompt": false, - "toolReferenceName": "docInfo", - "userDescription": "%copilot.tools.getDocInfo.description%", - "modelDescription": "Find information about how to document it a symbol like a class or function. This tool is useful for generating documentation comments for code symbols. You should use this tool when you think the user is looking for information about how to document a specific code symbol.", - "tags": [], - "inputSchema": { - "type": "object", - "properties": { - "filePaths": { - "type": "array", - "items": { - "type": "string" - }, - "description": "The file paths for which documentation information is needed." - } - }, - "required": [ - "filePaths" - ] - } - }, - { - "name": "copilot_getSearchResults", - "toolReferenceName": "searchResults", - "displayName": "%github.copilot.tools.searchResults.name%", - "icon": "$(search)", - "userDescription": "%github.copilot.tools.searchResults.description%", - "modelDescription": "The results from the search view" - }, - { - "name": "copilot_githubRepo", - "toolReferenceName": "githubRepo", - "legacyToolReferenceFullNames": [ - "githubRepo" - ], - "displayName": "%github.copilot.tools.githubRepo.name%", - "modelDescription": "Searches a GitHub repository for relevant source code snippets. Only use this tool if the user is very clearly asking for code snippets from a specific GitHub repository. Do not use this tool for Github repos that the user has open in their workspace.", - "userDescription": "%github.copilot.tools.githubRepo.userDescription%", - "icon": "$(repo)", - "when": "!config.github.copilot.chat.githubMcpServer.enabled", - "inputSchema": { - "type": "object", - "properties": { - "repo": { - "type": "string", - "description": "The name of the Github repository to search for code in. Should must be formatted as '/'." - }, - "query": { - "type": "string", - "description": "The query to search for repo. Should contain all relevant context." - } - }, - "required": [ - "repo", - "query" - ] - } - }, - { - "name": "copilot_toolReplay", - "modelDescription": "Replays a tool call from a previous chat session.", - "displayName": "tool replay", - "when": "false", - "inputSchema": { - "type": "object", - "properties": { - "toolCallId": { - "type": "string", - "description": "the id of the tool original tool call" - }, - "toolName": { - "type": "string", - "description": "the name of the tool being replayed" - }, - "toolCallArgs": { - "type": "object", - "description": "the arguments of the tool call" - } - } - } - }, - { - "name": "copilot_memory", - "toolReferenceName": "memory", - "displayName": "%copilot.tools.memory.name%", - "userDescription": "%copilot.tools.memory.description%", - "modelDescription": "Manage persistent memory across conversations. This tool allows you to create, view, update, and delete memory files that persist between chat sessions. Use this to remember important information about the user, their preferences, project context, or anything that should be recalled in future conversations. Available commands: view (list/read memories), create (new memory file), str_replace (edit content), insert (add content), delete (remove memory), rename (change filename).", - "icon": "$(database)", - "when": "config.github.copilot.chat.tools.memory.enabled", - "canBeReferencedInPrompt": true, - "tags": [], - "inputSchema": { - "type": "object", - "properties": { - "command": { - "type": "string", - "enum": [ - "view", - "create", - "str_replace", - "insert", - "delete", - "rename" - ], - "description": "The memory operation to perform:\n- view: Show directory contents or file contents (optional line ranges)\n- create: Create or overwrite a file\n- str_replace: Replace text in a file\n- insert: Insert text at a specific line\n- delete: Delete a file or directory\n- rename: Rename or move a file or directory" - }, - "path": { - "type": "string", - "description": "Path to the memory file or directory. Must start with /memories.\n- For view: /memories or /memories/file.md\n- For create/str_replace/insert/delete: /memories/file.md\n- Not used for rename (use old_path/new_path instead)" - }, - "view_range": { - "type": "array", - "items": { - "type": "number" - }, - "minItems": 2, - "maxItems": 2, - "description": "[view only] Optional line range [start, end] to view specific lines. Example: [1, 10]" - }, - "file_text": { - "type": "string", - "description": "[create only] Content to write to the file. Required for create command." - }, - "old_str": { - "type": "string", - "description": "[str_replace only] The exact literal text to find and replace. Must be unique in the file. Required for str_replace command." - }, - "new_str": { - "type": "string", - "description": "[str_replace only] The exact literal text to replace old_str with. Can be empty string. Required for str_replace command." - }, - "insert_line": { - "type": "number", - "description": "[insert only] Line number at which to insert text (0-indexed, 0 = before first line). Required for insert command." - }, - "insert_text": { - "type": "string", - "description": "[insert only] Text to insert at the specified line. Required for insert command." - }, - "old_path": { - "type": "string", - "description": "[rename only] Current path of the file or directory. Must start with /memories. Required for rename command." - }, - "new_path": { - "type": "string", - "description": "[rename only] New path for the file or directory. Must start with /memories. Required for rename command." - } - }, - "required": [ - "command" - ] - } - }, - { - "name": "copilot_editFiles", - "modelDescription": "This is a placeholder tool, do not use", - "userDescription": "Edit files", - "icon": "$(pencil)", - "displayName": "Edit Files", - "toolReferenceName": "editFiles", - "legacyToolReferenceFullNames": [ - "editFiles" - ] - } - ], - "languageModelToolSets": [ - { - "name": "edit", - "description": "%copilot.toolSet.editing.description%", - "icon": "$(pencil)", - "tools": [ - "createDirectory", - "createFile", - "createJupyterNotebook", - "editFiles", - "editNotebook" - ] - }, - { - "name": "execute", - "description": "", - "tools": [ - "runNotebookCell", - "testFailure" - ] - }, - { - "name": "read", - "description": "%copilot.toolSet.read.description%", - "icon": "$(eye)", - "tools": [ - "getNotebookSummary", - "readFile", - "readNotebookCellOutput" - ] - }, - { - "name": "search", - "description": "%copilot.toolSet.search.description%", - "icon": "$(search)", - "tools": [ - "changes", - "codebase", - "fileSearch", - "listDirectory", - "problems", - "searchResults", - "textSearch", - "usages" - ] - }, - { - "name": "vscode", - "description": "", - "tools": [ - "getProjectSetupInfo", - "installExtension", - "newWorkspace", - "openSimpleBrowser", - "runCommand", - "vscodeAPI" - ] - }, - { - "name": "web", - "description": "%copilot.toolSet.web.description%", - "icon": "$(globe)", - "tools": [ - "fetch", - "githubRepo" - ] - } - ], - "chatParticipants": [ - { - "id": "github.copilot.default", - "name": "GitHubCopilot", - "fullName": "GitHub Copilot", - "description": "%copilot.description%", - "isDefault": true, - "locations": [ - "panel" - ], - "modes": [ - "ask" - ], - "disambiguation": [ - { - "category": "generate_code_sample", - "description": "The user wants to generate code snippets without referencing the contents of the current workspace. This category does not include generating entire projects.", - "examples": [ - "Write an example of computing a SHA256 hash." - ] - }, - { - "category": "add_feature_to_file", - "description": "The user wants to change code in a file that is provided in their request, without referencing the contents of the current workspace. This category does not include generating entire projects.", - "examples": [ - "Add a refresh button to the table widget." - ] - }, - { - "category": "question_about_specific_files", - "description": "The user has a question about a specific file or code snippet that they have provided as part of their query, and the question does not require additional workspace context to answer.", - "examples": [ - "What does this file do?" - ] - } - ] - }, - { - "id": "github.copilot.editingSession", - "name": "GitHubCopilot", - "fullName": "GitHub Copilot", - "description": "%copilot.edits.description%", - "isDefault": true, - "locations": [ - "panel" - ], - "modes": [ - "edit" - ], - "when": "!config.chat.edits2.enabled" - }, - { - "id": "github.copilot.editingSessionEditor", - "name": "GitHubCopilot", - "fullName": "GitHub Copilot", - "description": "%copilot.edits.description%", - "isDefault": true, - "locations": [ - "editor" - ], - "commands": [ - { - "name": "generate", - "when": "!config.chat.edits2.enabled", - "description": "%copilot.workspace.generate.description%", - "disambiguation": [ - { - "category": "generate", - "description": "Generate new code", - "examples": [ - "Add a function that returns the sum of two numbers" - ] - } - ] - }, - { - "name": "edit", - "when": "!config.chat.edits2.enabled", - "description": "%copilot.workspace.edit.inline.description%", - "disambiguation": [ - { - "category": "edit", - "description": "Make changes to existing code", - "examples": [ - "Change this method to use async/await" - ] - } - ] - }, - { - "name": "doc", - "when": "!config.chat.edits2.enabled", - "description": "%copilot.workspace.doc.description%", - "disambiguation": [ - { - "category": "doc", - "description": "Add documentation comment for this symbol", - "examples": [ - "Add jsdoc to this method" - ] - } - ] - }, - { - "name": "fix", - "when": "!config.chat.edits2.enabled", - "description": "%copilot.workspace.fix.description%", - "disambiguation": [ - { - "category": "fix", - "description": "Propose a fix for the problems in the selected code", - "examples": [ - "There is a problem in this code. Rewrite the code to show it with the bug fixed." - ] - } - ] - }, - { - "name": "tests", - "when": "!config.chat.edits2.enabled", - "description": "%copilot.workspace.tests.description%", - "disambiguation": [ - { - "category": "tests", - "description": "Generate unit tests for the selected code. The user does not want to fix their existing tests.", - "examples": [ - "Write a set of detailed unit test functions for the code above." - ] - } - ] - } - ] - }, - { - "id": "github.copilot.editingSession2", - "name": "GitHubCopilot", - "fullName": "GitHub Copilot", - "description": "%copilot.edits.description%", - "isDefault": true, - "locations": [ - "panel" - ], - "modes": [ - "edit" - ], - "when": "config.chat.edits2.enabled" - }, - { - "id": "github.copilot.editsAgent", - "name": "agent", - "fullName": "GitHub Copilot", - "description": "%copilot.agent.description%", - "locations": [ - "panel" - ], - "modes": [ - "agent" - ], - "isEngine": true, - "isDefault": true, - "isAgent": true, - "when": "config.chat.agent.enabled", - "commands": [ - { - "name": "list" - }, - { - "name": "error", - "description": "Make a model request which will result in an error", - "when": "github.copilot.chat.debug" - } - ] - }, - { - "id": "github.copilot.notebook", - "name": "GitHubCopilot", - "fullName": "GitHub Copilot", - "description": "%copilot.description%", - "isDefault": true, - "locations": [ - "notebook" - ], - "when": "!config.inlineChat.notebookAgent", - "commands": [ - { - "name": "fix", - "description": "%copilot.workspace.fix.description%" - }, - { - "name": "explain", - "description": "%copilot.workspace.explain.description%" - } - ] - }, - { - "id": "github.copilot.notebookEditorAgent", - "name": "GitHubCopilot", - "fullName": "GitHub Copilot", - "description": "%copilot.description%", - "isDefault": true, - "locations": [ - "notebook" - ], - "when": "config.inlineChat.notebookAgent", - "commands": [ - { - "name": "fix", - "description": "%copilot.workspace.fix.description%" - }, - { - "name": "explain", - "description": "%copilot.workspace.explain.description%" - } - ] - }, - { - "id": "github.copilot.workspace", - "name": "workspace", - "fullName": "Workspace", - "description": "%copilot.workspace.description%", - "when": "!github.copilot.interactiveSession.disabled", - "sampleRequest": "%copilot.workspace.sampleRequest%", - "locations": [ - "panel" - ], - "disambiguation": [ - { - "category": "workspace_project_questions", - "description": "The user wants to learn about or update the code or files in their current workspace. Questions in this category may be about understanding what the whole workspace does or locating the implementation of some code. This does not include generating or updating tests.", - "examples": [ - "What does this project do?" - ] - }, - { - "category": "find_code_in_workspace", - "description": "The user wants to locate the implementation of some functionality in their current workspace.", - "examples": [ - "Where is the tree widget implemented?" - ] - }, - { - "category": "generate_with_workspace_context", - "description": "The user wants to generate code based on multiple files in the workspace and did not specify which files to reference.", - "examples": [ - "Create a README for this project." - ] - } - ], - "commands": [ - { - "name": "explain", - "description": "%copilot.workspace.explain.description%" - }, - { - "name": "review", - "description": "%copilot.workspace.review.description%", - "when": "github.copilot.advanced.review.intent" - }, - { - "name": "tests", - "description": "%copilot.workspace.tests.description%", - "disambiguation": [ - { - "category": "create_tests", - "description": "The user wants to generate unit tests.", - "examples": [ - "Generate tests for my selection using pytest." - ] - } - ] - }, - { - "name": "fix", - "description": "%copilot.workspace.fix.description%", - "sampleRequest": "%copilot.workspace.fix.sampleRequest%" - }, - { - "name": "new", - "description": "%copilot.workspace.new.description%", - "sampleRequest": "%copilot.workspace.new.sampleRequest%", - "isSticky": true, - "disambiguation": [ - { - "category": "create_new_workspace_or_extension", - "description": "The user wants to create a complete Visual Studio Code workspace from scratch, such as a new application or a Visual Studio Code extension. Use this category only if the question relates to generating or creating new workspaces in Visual Studio Code. Do not use this category for updating existing code or generating sample code snippets", - "examples": [ - "Scaffold a Node server.", - "Create a sample project which uses the fileSystemProvider API.", - "react application" - ] - } - ] - }, - { - "name": "newNotebook", - "description": "%copilot.workspace.newNotebook.description%", - "sampleRequest": "%copilot.workspace.newNotebook.sampleRequest%", - "disambiguation": [ - { - "category": "create_jupyter_notebook", - "description": "The user wants to create a new Jupyter notebook in Visual Studio Code.", - "examples": [ - "Create a notebook to analyze this CSV file." - ] - } - ] - }, - { - "name": "semanticSearch", - "description": "%copilot.workspace.semanticSearch.description%", - "sampleRequest": "%copilot.workspace.semanticSearch.sampleRequest%", - "when": "config.github.copilot.semanticSearch.enabled" - }, - { - "name": "setupTests", - "description": "%copilot.vscode.setupTests.description%", - "sampleRequest": "%copilot.vscode.setupTests.sampleRequest%", - "when": "config.github.copilot.chat.setupTests.enabled", - "disambiguation": [ - { - "category": "set_up_tests", - "description": "The user wants to configure project test setup, framework, or test runner. The user does not want to fix their existing tests.", - "examples": [ - "Set up tests for this project." - ] - } - ] - } - ] - }, - { - "id": "github.copilot.vscode", - "name": "vscode", - "fullName": "VS Code", - "description": "%copilot.vscode.description%", - "when": "!github.copilot.interactiveSession.disabled", - "sampleRequest": "%copilot.vscode.sampleRequest%", - "locations": [ - "panel" - ], - "disambiguation": [ - { - "category": "vscode_configuration_questions", - "description": "The user wants to learn about, use, or configure the Visual Studio Code. Use this category if the users question is specifically about commands, settings, keybindings, extensions and other features available in Visual Studio Code. Do not use this category to answer questions about generating code or creating new projects including Visual Studio Code extensions.", - "examples": [ - "Switch to light mode.", - "Keyboard shortcut to toggle terminal visibility.", - "Settings to enable minimap.", - "Whats new in the latest release?" - ] - }, - { - "category": "configure_python_environment", - "description": "The user wants to set up their Python environment.", - "examples": [ - "Create a virtual environment for my project." - ] - } - ], - "commands": [ - { - "name": "search", - "description": "%copilot.vscode.search.description%", - "sampleRequest": "%copilot.vscode.search.sampleRequest%" - } - ] - }, - { - "id": "github.copilot.terminal", - "name": "terminal", - "fullName": "Terminal", - "description": "%copilot.terminal.description%", - "when": "!github.copilot.interactiveSession.disabled", - "sampleRequest": "%copilot.terminal.sampleRequest%", - "isDefault": true, - "locations": [ - "terminal" - ], - "commands": [ - { - "name": "explain", - "description": "%copilot.terminal.explain.description%", - "sampleRequest": "%copilot.terminal.explain.sampleRequest%" - } - ] - }, - { - "id": "github.copilot.terminalPanel", - "name": "terminal", - "fullName": "Terminal", - "description": "%copilot.terminalPanel.description%", - "when": "!github.copilot.interactiveSession.disabled", - "sampleRequest": "%copilot.terminal.sampleRequest%", - "locations": [ - "panel" - ], - "commands": [ - { - "name": "explain", - "description": "%copilot.terminal.explain.description%", - "sampleRequest": "%copilot.terminal.explain.sampleRequest%", - "disambiguation": [ - { - "category": "terminal_state_questions", - "description": "The user wants to learn about specific state such as the selection, command, or failed command in the integrated terminal in Visual Studio Code.", - "examples": [ - "Why did the latest terminal command fail?" - ] - } - ] - } - ] - }, - { - "id": "github.copilot.chatReplay", - "name": "chatReplay", - "fullName": "Chat Replay", - "when": "debugType == 'vscode-chat-replay'", - "locations": [ - "panel" - ] - } - ], - "languageModelChatProviders": [ - { - "vendor": "copilot", - "displayName": "Copilot" - }, - { - "vendor": "azure", - "displayName": "Azure", - "managementCommand": "github.copilot.chat.manageBYOK" - }, - { - "vendor": "anthropic", - "displayName": "Anthropic", - "managementCommand": "github.copilot.chat.manageBYOK" - }, - { - "vendor": "xai", - "displayName": "xAI", - "managementCommand": "github.copilot.chat.manageBYOK" - }, - { - "vendor": "ollama", - "displayName": "Ollama" - }, - { - "vendor": "openai", - "displayName": "OpenAI", - "managementCommand": "github.copilot.chat.manageBYOK" - }, - { - "vendor": "gemini", - "displayName": "Google", - "managementCommand": "github.copilot.chat.manageBYOK" - }, - { - "vendor": "groq", - "displayName": "Groq", - "managementCommand": "github.copilot.chat.manageBYOK" - }, - { - "vendor": "openrouter", - "displayName": "OpenRouter", - "managementCommand": "github.copilot.chat.manageBYOK" - }, - { - "vendor": "customoai", - "when": "productQualityType != 'stable'", - "displayName": "OpenAI Compatible", - "managementCommand": "github.copilot.chat.manageBYOK" - } - ], - "interactiveSession": [ - { - "label": "GitHub Copilot", - "id": "copilot", - "icon": "", - "when": "!github.copilot.interactiveSession.disabled" - } - ], - "mcpServerDefinitionProviders": [ - { - "id": "github", - "label": "GitHub" - } - ], - "viewsWelcome": [ - { - "view": "debug", - "when": "github.copilot-chat.activated", - "contents": "%github.copilot.viewsWelcome.debug%" - }, - { - "view": "codex-placeholder", - "when": "true", - "contents": "%github.copilot.viewsWelcome.codexPlaceholder%" - }, - { - "view": "workbench.view.chat.sessions.openai-codex", - "contents": "%github.copilot.viewsWelcome.codexWelcomeView%" - }, - { - "view": "copilot-agents-placeholder", - "when": "true", - "contents": "%github.copilot.viewsWelcome.agentsPlaceholder%" - }, - { - "view": "workbench.view.chat.sessions.copilot-cloud-agent", - "when": "github.copilot.auth.missingPermissiveSession", - "contents": "%github.copilot.viewsWelcome.noPermissiveToken.contents%" - }, - { - "view": "workbench.view.chat.sessions.copilot-cloud-agent", - "when": "workspaceFolderCount == 0", - "contents": "%github.copilot.viewsWelcome.noFolder.contents%" - }, - { - "view": "workbench.view.chat.sessions.copilot-cloud-agent", - "when": "git.state == initialized && gitOpenRepositoryCount == 0 && workspaceFolderCount > 0 && git.parentRepositoryCount == 0", - "contents": "%github.copilot.viewsWelcome.noRepo.contents%" - }, - { - "view": "workbench.view.chat.sessions.copilot-cloud-agent", - "when": "git.state == initialized && workspaceFolderCount > 0 && (git.parentRepositoryCount > 0 || gitOpenRepositoryCount > 0) && !github:hasGitHubRemotes", - "contents": "%github.copilot.viewsWelcome.noGitHub.contents%" - }, - { - "view": "workbench.view.chat.sessions.copilot-cloud-agent", - "when": "github.copilot.chat.cloudSessionsEmpty", - "contents": "%github.copilot.viewsWelcome.cloudSessionsEmpty.contents%" - }, - { - "view": "workbench.view.chat.sessions.copilotcli", - "when": "github.copilot.chat.cliSessionsEmpty", - "contents": "%github.copilot.viewsWelcome.cliSessionsEmpty.contents%" - } - ], - "chatViewsWelcome": [ - { - "icon": "$(copilot-large)", - "title": "Ask Copilot", - "content": "%github.copilot.viewsWelcome.individual.expired%", - "when": "github.copilot.interactiveSession.individual.expired" - }, - { - "icon": "$(copilot-large)", - "title": "Ask Copilot", - "content": "%github.copilot.viewsWelcome.enterprise%", - "when": "github.copilot.interactiveSession.enterprise.disabled" - }, - { - "icon": "$(copilot-large)", - "title": "Ask Copilot", - "content": "%github.copilot.viewsWelcome.offline%", - "when": "github.copilot.offline" - }, - { - "icon": "$(copilot-large)", - "title": "Ask Copilot", - "content": "%github.copilot.viewsWelcome.contactSupport%", - "when": "github.copilot.interactiveSession.contactSupport" - }, - { - "icon": "$(copilot-large)", - "title": "Ask Copilot", - "content": "%github.copilot.viewsWelcome.chatDisabled%", - "when": "github.copilot.interactiveSession.chatDisabled" - }, - { - "icon": "$(copilot-large)", - "title": "Ask Copilot", - "content": "%github.copilot.viewsWelcome.switchToReleaseChannel%", - "when": "github.copilot.interactiveSession.switchToReleaseChannel" - } - ], - "commands": [ - { - "command": "github.copilot.chat.triggerPermissiveSignIn", - "title": "%github.copilot.command.triggerPermissiveSignIn%" - }, - { - "command": "github.copilot.claude.sessions.refresh", - "title": "%github.copilot.command.refreshClaudeCodeSessions%", - "icon": "$(refresh)", - "category": "Claude Code" - }, - { - "command": "github.copilot.cli.sessions.refresh", - "title": "%github.copilot.command.refreshAgentSessions%", - "icon": "$(refresh)", - "category": "Copilot CLI" - }, - { - "command": "github.copilot.cli.sessions.delete", - "title": "%github.copilot.command.deleteAgentSession%", - "icon": "$(close)", - "category": "Copilot CLI" - }, - { - "command": "github.copilot.cli.sessions.resumeInTerminal", - "title": "%github.copilot.command.cli.sessions.resumeInTerminal%", - "icon": "$(terminal)", - "category": "Copilot CLI" - }, - { - "command": "github.copilot.cli.sessions.newTerminalSession", - "title": "%github.copilot.cli.sessions.newTerminalSession%", - "icon": "$(terminal)", - "category": "Copilot CLI" - }, - { - "command": "github.copilot.chat.replay", - "title": "Start Chat Replay", - "icon": "$(debug-line-by-line)", - "enablement": "resourceFilename === 'benchRun.chatReplay.json' && !inDebugMode" - }, - { - "command": "github.copilot.chat.replay.enableWorkspaceEditTracing", - "title": "%github.copilot.command.enableEditTracing%", - "category": "Developer", - "enablement": "!github.copilot.chat.replay.workspaceEditTracing" - }, - { - "command": "github.copilot.chat.replay.disableWorkspaceEditTracing", - "title": "%github.copilot.command.disableEditTracing%", - "category": "Developer", - "enablement": "github.copilot.chat.replay.workspaceEditTracing" - }, - { - "command": "github.copilot.chat.explain", - "title": "%github.copilot.command.explainThis%", - "enablement": "!github.copilot.interactiveSession.disabled", - "category": "Chat" - }, - { - "command": "github.copilot.chat.explain.palette", - "title": "%github.copilot.command.explainThis%", - "enablement": "!github.copilot.interactiveSession.disabled && !editorReadonly", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review", - "title": "%github.copilot.command.reviewAndComment%", - "enablement": "config.github.copilot.chat.reviewSelection.enabled && !github.copilot.interactiveSession.disabled", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.apply", - "title": "%github.copilot.command.applyReviewSuggestion%", - "icon": "$(sparkle)", - "enablement": "commentThread =~ /hasSuggestion/", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.applyAndNext", - "title": "%github.copilot.command.applyReviewSuggestionAndNext%", - "icon": "$(sparkle)", - "enablement": "commentThread =~ /hasSuggestion/", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.discard", - "title": "%github.copilot.command.discardReviewSuggestion%", - "icon": "$(close)", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.discardAndNext", - "title": "%github.copilot.command.discardReviewSuggestionAndNext%", - "icon": "$(close)", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.discardAll", - "title": "%github.copilot.command.discardAllReviewSuggestion%", - "icon": "$(close-all)", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.stagedChanges", - "title": "%github.copilot.command.reviewStagedChanges%", - "icon": "$(code-review)", - "enablement": "github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.unstagedChanges", - "title": "%github.copilot.command.reviewUnstagedChanges%", - "icon": "$(code-review)", - "enablement": "github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.changes", - "title": "%github.copilot.command.reviewChanges%", - "icon": "$(code-review)", - "enablement": "github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.stagedFileChange", - "title": "%github.copilot.command.reviewFileChange%", - "icon": "$(code-review)", - "enablement": "github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.unstagedFileChange", - "title": "%github.copilot.command.reviewFileChange%", - "icon": "$(code-review)", - "enablement": "github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.previous", - "title": "%github.copilot.command.gotoPreviousReviewSuggestion%", - "icon": "$(arrow-up)", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.next", - "title": "%github.copilot.command.gotoNextReviewSuggestion%", - "icon": "$(arrow-down)", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.continueInInlineChat", - "title": "%github.copilot.command.continueReviewInInlineChat%", - "icon": "$(comment-discussion)", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.continueInChat", - "title": "%github.copilot.command.continueReviewInChat%", - "icon": "$(comment-discussion)", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.markHelpful", - "title": "%github.copilot.command.helpfulReviewSuggestion%", - "icon": "$(thumbsup)", - "enablement": "!(commentThread =~ /markedAsHelpful/)", - "category": "Chat" - }, - { - "command": "github.copilot.chat.openUserPreferences", - "title": "%github.copilot.command.openUserPreferences%", - "category": "Chat", - "enablement": "config.github.copilot.chat.enableUserPreferences" - }, - { - "command": "github.copilot.chat.tools.memory.openFolder", - "title": "%github.copilot.command.openMemoryFolder%", - "category": "Chat", - "enablement": "config.github.copilot.chat.tools.memory.enabled" - }, - { - "command": "github.copilot.chat.review.markUnhelpful", - "title": "%github.copilot.command.unhelpfulReviewSuggestion%", - "icon": "$(thumbsdown)", - "enablement": "!(commentThread =~ /markedAsUnhelpful/)", - "category": "Chat" - }, - { - "command": "github.copilot.chat.generate", - "title": "%github.copilot.command.generateThis%", - "icon": "$(sparkle)", - "enablement": "!github.copilot.interactiveSession.disabled && !editorReadonly", - "category": "Chat" - }, - { - "command": "github.copilot.chat.generateDocs", - "title": "%github.copilot.command.generateDocs%", - "enablement": "!github.copilot.interactiveSession.disabled && !editorReadonly", - "category": "Chat" - }, - { - "command": "github.copilot.chat.generateTests", - "title": "%github.copilot.command.generateTests%", - "enablement": "!github.copilot.interactiveSession.disabled && !editorReadonly", - "category": "Chat" - }, - { - "command": "github.copilot.chat.fix", - "title": "%github.copilot.command.fixThis%", - "enablement": "!github.copilot.interactiveSession.disabled && !editorReadonly", - "category": "Chat" - }, - { - "command": "github.copilot.interactiveSession.feedback", - "title": "%github.copilot.command.sendChatFeedback%", - "enablement": "github.copilot-chat.activated && !github.copilot.interactiveSession.disabled", - "icon": "$(feedback)", - "category": "Chat" - }, - { - "command": "github.copilot.debug.workbenchState", - "title": "%github.copilot.command.logWorkbenchState%", - "category": "Developer" - }, - { - "command": "github.copilot.debug.showChatLogView", - "title": "%github.copilot.command.showChatLogView%", - "category": "Developer" - }, - { - "command": "github.copilot.debug.showOutputChannel", - "title": "%github.copilot.command.showOutputChannel%", - "category": "Developer" - }, - { - "command": "github.copilot.debug.showContextInspectorView", - "title": "%github.copilot.command.showContextInspectorView%", - "icon": "$(inspect)", - "category": "Developer" - }, - { - "command": "github.copilot.debug.validateNesRename", - "title": "%github.copilot.command.validateNesRename%", - "category": "Developer" - }, - { - "command": "github.copilot.debug.resetVirtualToolGroups", - "title": "%github.copilot.command.resetVirtualToolGroups%", - "icon": "$(inspect)", - "category": "Developer" - }, - { - "command": "github.copilot.terminal.explainTerminalLastCommand", - "title": "%github.copilot.command.explainTerminalLastCommand%", - "category": "Chat" - }, - { - "command": "github.copilot.git.generateCommitMessage", - "title": "%github.copilot.git.generateCommitMessage%", - "icon": "$(sparkle)", - "enablement": "!github.copilot.interactiveSession.disabled", - "category": "Chat" - }, - { - "command": "github.copilot.git.resolveMergeConflicts", - "title": "%github.copilot.git.resolveMergeConflicts%", - "icon": "$(chat-sparkle)", - "enablement": "!github.copilot.interactiveSession.disabled", - "category": "Chat" - }, - { - "command": "github.copilot.devcontainer.generateDevContainerConfig", - "title": "%github.copilot.devcontainer.generateDevContainerConfig%", - "category": "Chat" - }, - { - "command": "github.copilot.tests.fixTestFailure", - "icon": "$(sparkle)", - "title": "%github.copilot.command.fixTestFailure%", - "category": "Chat" - }, - { - "command": "github.copilot.tests.fixTestFailure.fromInline", - "icon": "$(sparkle)", - "title": "%github.copilot.command.fixTestFailure%" - }, - { - "command": "github.copilot.chat.attachFile", - "title": "%github.copilot.chat.attachFile%", - "category": "Chat" - }, - { - "command": "github.copilot.chat.attachSelection", - "title": "%github.copilot.chat.attachSelection%", - "icon": "$(comment-discussion)", - "category": "Chat" - }, - { - "command": "github.copilot.debug.collectDiagnostics", - "title": "%github.copilot.command.collectDiagnostics%", - "category": "Developer" - }, - { - "command": "github.copilot.debug.inlineEdit.clearCache", - "title": "%github.copilot.command.inlineEdit.clearCache%", - "category": "Developer" - }, - { - "command": "github.copilot.debug.inlineEdit.reportNotebookNESIssue", - "title": "%github.copilot.command.inlineEdit.reportNotebookNESIssue%", - "enablement": "config.github.copilot.chat.advanced.notebook.alternativeNESFormat.enabled || github.copilot.chat.enableEnhancedNotebookNES", - "category": "Developer" - }, - { - "command": "github.copilot.debug.generateSTest", - "title": "%github.copilot.command.generateSTest%", - "enablement": "github.copilot.debugReportFeedback", - "category": "Developer" - }, - { - "command": "github.copilot.open.walkthrough", - "title": "%github.copilot.command.openWalkthrough%", - "category": "Chat" - }, - { - "command": "github.copilot.debug.generateInlineEditTests", - "title": "Generate Inline Edit Tests", - "category": "Chat", - "enablement": "resourceScheme == 'ccreq'" - }, - { - "command": "github.copilot.buildLocalWorkspaceIndex", - "title": "%github.copilot.command.buildLocalWorkspaceIndex%", - "category": "Chat", - "enablement": "github.copilot-chat.activated" - }, - { - "command": "github.copilot.buildRemoteWorkspaceIndex", - "title": "%github.copilot.command.buildRemoteWorkspaceIndex%", - "category": "Chat", - "enablement": "github.copilot-chat.activated" - }, - { - "command": "github.copilot.report", - "title": "Report Issue", - "category": "Chat" - }, - { - "command": "github.copilot.chat.rerunWithCopilotDebug", - "title": "%github.copilot.command.rerunWithCopilotDebug%", - "category": "Chat" - }, - { - "command": "github.copilot.chat.startCopilotDebugCommand", - "title": "Start Copilot Debug" - }, - { - "command": "github.copilot.chat.clearTemporalContext", - "title": "Clear Temporal Context", - "category": "Developer" - }, - { - "command": "github.copilot.search.markHelpful", - "title": "Helpful", - "icon": "$(thumbsup)", - "enablement": "!github.copilot.search.feedback.sent" - }, - { - "command": "github.copilot.search.markUnhelpful", - "title": "Unhelpful", - "icon": "$(thumbsdown)", - "enablement": "!github.copilot.search.feedback.sent" - }, - { - "command": "github.copilot.search.feedback", - "title": "Feedback", - "icon": "$(feedback)", - "enablement": "!github.copilot.search.feedback.sent" - }, - { - "command": "github.copilot.chat.debug.showElements", - "title": "Show Rendered Elements" - }, - { - "command": "github.copilot.chat.debug.hideElements", - "title": "Hide Rendered Elements" - }, - { - "command": "github.copilot.chat.debug.showTools", - "title": "Show Tools" - }, - { - "command": "github.copilot.chat.debug.hideTools", - "title": "Hide Tools" - }, - { - "command": "github.copilot.chat.debug.showNesRequests", - "title": "Show NES Requests" - }, - { - "command": "github.copilot.chat.debug.hideNesRequests", - "title": "Hide NES Requests" - }, - { - "command": "github.copilot.chat.debug.showRawRequestBody", - "title": "Show Raw Request Body" - }, - { - "command": "github.copilot.chat.debug.exportLogItem", - "title": "Export as...", - "icon": "$(export)" - }, - { - "command": "github.copilot.chat.debug.exportPromptArchive", - "title": "Export All as Archive...", - "icon": "$(archive)" - }, - { - "command": "github.copilot.chat.debug.exportPromptLogsAsJson", - "title": "Export All as JSON...", - "icon": "$(export)" - }, - { - "command": "github.copilot.chat.debug.exportAllPromptLogsAsJson", - "title": "Export All Prompt Logs as JSON...", - "icon": "$(export)" - }, - { - "command": "github.copilot.chat.showAsChatSession", - "title": "Show as chat session", - "icon": "$(chat-sparkle)" - }, - { - "command": "github.copilot.debug.collectWorkspaceIndexDiagnostics", - "title": "%github.copilot.command.collectWorkspaceIndexDiagnostics%", - "category": "Developer" - }, - { - "command": "github.copilot.chat.mcp.setup.check", - "title": "MCP Check: is supported" - }, - { - "command": "github.copilot.chat.mcp.setup.validatePackage", - "title": "MCP Check: validate package" - }, - { - "command": "github.copilot.chat.mcp.setup.flow", - "title": "MCP Check: do prompts" - }, - { - "command": "github.copilot.chat.generateAltText", - "title": "Generate/Refine Alt Text" - }, - { - "command": "github.copilot.chat.notebook.enableFollowCellExecution", - "title": "Enable Follow Cell Execution from Chat", - "shortTitle": "Follow", - "icon": "$(pinned)" - }, - { - "command": "github.copilot.chat.notebook.disableFollowCellExecution", - "title": "Disable Follow Cell Execution from Chat", - "shortTitle": "Unfollow", - "icon": "$(pinned-dirty)" - }, - { - "command": "github.copilot.chat.manageBYOK", - "title": "Manage Bring Your Own Key Vendor", - "enablement": "false" - }, - { - "command": "github.copilot.chat.manageBYOKAPIKey", - "title": "Manage Bring Your Own Key API Key", - "enablement": "false" - }, - { - "command": "github.copilot.cloud.sessions.refresh", - "title": "%github.copilot.command.refreshAgentSessions%", - "icon": "$(refresh)" - }, - { - "command": "github.copilot.cloud.resetWorkspaceConfirmations", - "title": "%github.copilot.command.resetCloudAgentWorkspaceConfirmations%" - }, - { - "command": "github.copilot.cloud.sessions.openInBrowser", - "title": "%github.copilot.command.openCopilotAgentSessionsInBrowser%", - "icon": "$(link-external)" - }, - { - "command": "github.copilot.cloud.sessions.proxy.closeChatSessionPullRequest", - "title": "%github.copilot.command.closeChatSessionPullRequest.title%" - }, - { - "command": "github.copilot.chat.openSuggestionsPanel", - "title": "Open Completions Panel", - "enablement": "github.copilot.extensionUnification.activated && !isWeb", - "category": "GitHub Copilot" - }, - { - "command": "github.copilot.chat.toggleStatusMenu", - "title": "Open Status Menu", - "enablement": "github.copilot.extensionUnification.activated", - "category": "GitHub Copilot" - }, - { - "command": "github.copilot.chat.completions.disable", - "title": "Disable Inline Suggestions", - "enablement": "github.copilot.extensionUnification.activated && github.copilot.activated && config.editor.inlineSuggest.enabled && github.copilot.completions.enabled", - "category": "GitHub Copilot" - }, - { - "command": "github.copilot.chat.completions.enable", - "title": "Enable Inline Suggestions", - "enablement": "github.copilot.extensionUnification.activated && github.copilot.activated && !(config.editor.inlineSuggest.enabled && github.copilot.completions.enabled)", - "category": "GitHub Copilot" - }, - { - "command": "github.copilot.chat.completions.toggle", - "title": "Toggle (Enable/Disable) Inline Suggestions", - "enablement": "github.copilot.extensionUnification.activated && github.copilot.activated", - "category": "GitHub Copilot" - }, - { - "command": "github.copilot.chat.openModelPicker", - "title": "Change Completions Model", - "category": "GitHub Copilot", - "enablement": "github.copilot.extensionUnification.activated && !isWeb" - }, - { - "command": "github.copilot.chat.applyCopilotCLIAgentSessionChanges", - "title": "%github.copilot.command.applyCopilotCLIAgentSessionChanges%", - "icon": "$(git-stash-pop)", - "category": "GitHub Copilot" - } - ], - "configuration": [ - { - "title": "GitHub Copilot Chat", - "id": "stable", - "properties": { - "github.copilot.chat.codeGeneration.useInstructionFiles": { - "type": "boolean", - "default": true, - "markdownDescription": "%github.copilot.config.codeGeneration.useInstructionFiles%" - }, - "github.copilot.editor.enableCodeActions": { - "type": "boolean", - "default": true, - "description": "%github.copilot.config.enableCodeActions%" - }, - "github.copilot.renameSuggestions.triggerAutomatically": { - "type": "boolean", - "default": true, - "description": "%github.copilot.config.renameSuggestions.triggerAutomatically%" - }, - "github.copilot.chat.localeOverride": { - "type": "string", - "enum": [ - "auto", - "en", - "fr", - "it", - "de", - "es", - "ru", - "zh-CN", - "zh-TW", - "ja", - "ko", - "cs", - "pt-br", - "tr", - "pl" - ], - "enumDescriptions": [ - "Use VS Code's configured display language", - "English", - "français", - "italiano", - "Deutsch", - "español", - "русский", - "中文(简体)", - "中文(繁體)", - "日本語", - "한국어", - "čeština", - "português", - "Türkçe", - "polski" - ], - "default": "auto", - "markdownDescription": "%github.copilot.config.localeOverride%" - }, - "github.copilot.chat.terminalChatLocation": { - "type": "string", - "default": "chatView", - "markdownDescription": "%github.copilot.config.terminalChatLocation%", - "markdownEnumDescriptions": [ - "%github.copilot.config.terminalChatLocation.chatView%", - "%github.copilot.config.terminalChatLocation.quickChat%", - "%github.copilot.config.terminalChatLocation.terminal%" - ], - "enum": [ - "chatView", - "quickChat", - "terminal" - ] - }, - "github.copilot.chat.scopeSelection": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.scopeSelection%" - }, - "github.copilot.chat.useProjectTemplates": { - "type": "boolean", - "default": true, - "markdownDescription": "%github.copilot.config.useProjectTemplates%" - }, - "github.copilot.nextEditSuggestions.enabled": { - "type": "boolean", - "default": false, - "tags": [ - "nextEditSuggestions", - "onExp" - ], - "markdownDescription": "%github.copilot.nextEditSuggestions.enabled%", - "scope": "language-overridable" - }, - "github.copilot.nextEditSuggestions.fixes": { - "type": "boolean", - "default": true, - "tags": [ - "nextEditSuggestions", - "onExp" - ], - "markdownDescription": "%github.copilot.nextEditSuggestions.fixes%", - "scope": "language-overridable" - }, - "github.copilot.nextEditSuggestions.allowWhitespaceOnlyChanges": { - "type": "boolean", - "default": true, - "tags": [ - "nextEditSuggestions", - "onExp" - ], - "markdownDescription": "%github.copilot.nextEditSuggestions.allowWhitespaceOnlyChanges%", - "scope": "language-overridable" - }, - "github.copilot.chat.agent.autoFix": { - "type": "boolean", - "default": true, - "description": "%github.copilot.config.autoFix%", - "tags": [ - "onExp" - ] - }, - "github.copilot.chat.customInstructionsInSystemMessage": { - "type": "boolean", - "default": true, - "description": "%github.copilot.config.customInstructionsInSystemMessage%" - }, - "github.copilot.chat.customAgents.showOrganizationAndEnterpriseAgents": { - "type": "boolean", - "default": true, - "description": "%github.copilot.config.customAgents.showOrganizationAndEnterpriseAgents%" - }, - "github.copilot.chat.customInstructions.showOrganizationInstructions": { - "type": "boolean", - "default": true, - "description": "%github.copilot.config.customInstructions.showOrganizationInstructions%" - }, - "github.copilot.chat.agent.currentEditorContext.enabled": { - "type": "boolean", - "default": true, - "description": "%github.copilot.config.agent.currentEditorContext.enabled%" - }, - "github.copilot.chat.agent.delegate.autoCommitAndPush": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.agent.delegate.autoCommitAndPush%" - }, - "github.copilot.enable": { - "type": "object", - "scope": "window", - "default": { - "*": true, - "plaintext": false, - "markdown": false, - "scminput": false - }, - "additionalProperties": { - "type": "boolean" - }, - "markdownDescription": "Enable or disable auto triggering of Copilot completions for specified [languages](https://code.visualstudio.com/docs/languages/identifiers). You can still trigger suggestions manually using `Alt + \\`" - }, - "github.copilot.selectedCompletionModel": { - "type": "string", - "default": "", - "markdownDescription": "The currently selected completion model ID. To select from a list of available models, use the __\"Change Completions Model\"__ command or open the model picker (from the Copilot menu in the VS Code title bar, select __\"Configure Code Completions\"__ then __\"Change Completions Model\"__. The value must be a valid model ID. An empty value indicates that the default model will be used." - } - } - }, - { - "id": "preview", - "properties": { - "github.copilot.chat.reviewAgent.enabled": { - "type": "boolean", - "default": true, - "description": "%github.copilot.config.reviewAgent.enabled%", - "tags": [ - "preview" - ] - }, - "github.copilot.chat.reviewSelection.enabled": { - "type": "boolean", - "default": true, - "description": "%github.copilot.config.reviewSelection.enabled%", - "tags": [ - "preview" - ] - }, - "github.copilot.chat.reviewSelection.instructions": { - "type": "array", - "items": { - "oneOf": [ - { - "type": "object", - "markdownDescription": "%github.copilot.config.reviewSelection.instruction.file%", - "properties": { - "file": { - "type": "string", - "examples": [ - ".copilot-review-instructions.md" - ] - }, - "language": { - "type": "string" - } - }, - "examples": [ - { - "file": ".copilot-review-instructions.md" - } - ], - "required": [ - "file" - ] - }, - { - "type": "object", - "markdownDescription": "%github.copilot.config.reviewSelection.instruction.text%", - "properties": { - "text": { - "type": "string", - "examples": [ - "Use underscore for field names." - ] - }, - "language": { - "type": "string" - } - }, - "required": [ - "text" - ], - "examples": [ - { - "text": "Use underscore for field names." - }, - { - "text": "Resolve all TODO tasks." - } - ] - } - ] - }, - "default": [], - "markdownDescription": "%github.copilot.config.reviewSelection.instructions%", - "examples": [ - [ - { - "file": ".copilot-review-instructions.md" - }, - { - "text": "Resolve all TODO tasks." - } - ] - ], - "tags": [ - "preview" - ] - }, - "github.copilot.chat.copilotDebugCommand.enabled": { - "type": "boolean", - "default": true, - "tags": [ - "preview" - ], - "description": "%github.copilot.chat.copilotDebugCommand.enabled%" - }, - "github.copilot.chat.codesearch.enabled": { - "type": "boolean", - "default": false, - "tags": [ - "preview" - ], - "markdownDescription": "%github.copilot.config.codesearch.enabled%" - }, - "github.copilot.chat.byok.ollamaEndpoint": { - "type": "string", - "default": "http://localhost:11434", - "tags": [ - "preview" - ], - "markdownDescription": "%github.copilot.config.byok.ollamaEndpoint%" - } - } - }, - { - "id": "experimental", - "properties": { - "github.copilot.chat.githubMcpServer.enabled": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.githubMcpServer.enabled%", - "tags": [ - "experimental" - ] - }, - "github.copilot.chat.githubMcpServer.toolsets": { - "type": "array", - "default": [ - "default" - ], - "markdownDescription": "%github.copilot.config.githubMcpServer.toolsets%", - "items": { - "type": "string" - }, - "tags": [ - "experimental" - ] - }, - "github.copilot.chat.githubMcpServer.readonly": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.githubMcpServer.readonly%", - "tags": [ - "experimental" - ] - }, - "github.copilot.chat.githubMcpServer.lockdown": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.githubMcpServer.lockdown%", - "tags": [ - "experimental" - ] - }, - "github.copilot.chat.imageUpload.enabled": { - "type": "boolean", - "default": true, - "tags": [ - "experimental", - "onExp" - ], - "markdownDescription": "%github.copilot.config.imageUpload.enabled%" - }, - "github.copilot.chat.edits.suggestRelatedFilesFromGitHistory": { - "type": "boolean", - "default": true, - "tags": [ - "experimental" - ], - "markdownDescription": "%github.copilot.config.edits.suggestRelatedFilesFromGitHistory%" - }, - "github.copilot.chat.edits.suggestRelatedFilesForTests": { - "type": "boolean", - "default": true, - "tags": [ - "experimental" - ], - "markdownDescription": "%github.copilot.chat.edits.suggestRelatedFilesForTests%" - }, - "github.copilot.chat.codeGeneration.instructions": { - "markdownDeprecationMessage": "%github.copilot.config.codeGeneration.instructions.deprecated%", - "type": "array", - "items": { - "oneOf": [ - { - "type": "object", - "markdownDescription": "%github.copilot.config.codeGeneration.instruction.file%", - "properties": { - "file": { - "type": "string", - "examples": [ - ".copilot-codeGeneration-instructions.md" - ] - }, - "language": { - "type": "string" - } - }, - "examples": [ - { - "file": ".copilot-codeGeneration-instructions.md" - } - ], - "required": [ - "file" - ] - }, - { - "type": "object", - "markdownDescription": "%github.copilot.config.codeGeneration.instruction.text%", - "properties": { - "text": { - "type": "string", - "examples": [ - "Use underscore for field names." - ] - }, - "language": { - "type": "string" - } - }, - "required": [ - "text" - ], - "examples": [ - { - "text": "Use underscore for field names." - }, - { - "text": "Always add a comment: 'Generated by Copilot'." - } - ] - } - ] - }, - "default": [], - "markdownDescription": "%github.copilot.config.codeGeneration.instructions%", - "examples": [ - [ - { - "file": ".copilot-codeGeneration-instructions.md" - }, - { - "text": "Always add a comment: 'Generated by Copilot'." - } - ] - ], - "tags": [ - "experimental" - ] - }, - "github.copilot.chat.testGeneration.instructions": { - "markdownDeprecationMessage": "%github.copilot.config.testGeneration.instructions.deprecated%", - "type": "array", - "items": { - "oneOf": [ - { - "type": "object", - "markdownDescription": "%github.copilot.config.experimental.testGeneration.instruction.file%", - "properties": { - "file": { - "type": "string", - "examples": [ - ".copilot-test-instructions.md" - ] - }, - "language": { - "type": "string" - } - }, - "examples": [ - { - "file": ".copilot-test-instructions.md" - } - ], - "required": [ - "file" - ] - }, - { - "type": "object", - "markdownDescription": "%github.copilot.config.experimental.testGeneration.instruction.text%", - "properties": { - "text": { - "type": "string", - "examples": [ - "Use suite and test instead of describe and it." - ] - }, - "language": { - "type": "string" - } - }, - "required": [ - "text" - ], - "examples": [ - { - "text": "Always try uniting related tests in a suite." - } - ] - } - ] - }, - "default": [], - "markdownDescription": "%github.copilot.config.testGeneration.instructions%", - "examples": [ - [ - { - "file": ".copilot-test-instructions.md" - }, - { - "text": "Always try uniting related tests in a suite." - } - ] - ], - "tags": [ - "experimental" - ] - }, - "github.copilot.chat.commitMessageGeneration.instructions": { - "type": "array", - "items": { - "oneOf": [ - { - "type": "object", - "markdownDescription": "%github.copilot.config.commitMessageGeneration.instruction.file%", - "properties": { - "file": { - "type": "string", - "examples": [ - ".copilot-commit-message-instructions.md" - ] - } - }, - "examples": [ - { - "file": ".copilot-commit-message-instructions.md" - } - ], - "required": [ - "file" - ] - }, - { - "type": "object", - "markdownDescription": "%github.copilot.config.commitMessageGeneration.instruction.text%", - "properties": { - "text": { - "type": "string", - "examples": [ - "Use conventional commit message format." - ] - } - }, - "required": [ - "text" - ], - "examples": [ - { - "text": "Use conventional commit message format." - } - ] - } - ] - }, - "default": [], - "markdownDescription": "%github.copilot.config.commitMessageGeneration.instructions%", - "examples": [ - [ - { - "file": ".copilot-commit-message-instructions.md" - }, - { - "text": "Use conventional commit message format." - } - ] - ], - "tags": [ - "experimental" - ] - }, - "github.copilot.chat.pullRequestDescriptionGeneration.instructions": { - "type": "array", - "items": { - "oneOf": [ - { - "type": "object", - "markdownDescription": "%github.copilot.config.pullRequestDescriptionGeneration.instruction.file%", - "properties": { - "file": { - "type": "string", - "examples": [ - ".copilot-pull-request-description-instructions.md" - ] - } - }, - "examples": [ - { - "file": ".copilot-pull-request-description-instructions.md" - } - ], - "required": [ - "file" - ] - }, - { - "type": "object", - "markdownDescription": "%github.copilot.config.pullRequestDescriptionGeneration.instruction.text%", - "properties": { - "text": { - "type": "string", - "examples": [ - "Include every commit message in the pull request description." - ] - } - }, - "required": [ - "text" - ], - "examples": [ - { - "text": "Include every commit message in the pull request description." - } - ] - } - ] - }, - "default": [], - "markdownDescription": "%github.copilot.config.pullRequestDescriptionGeneration.instructions%", - "examples": [ - [ - { - "file": ".copilot-pull-request-description-instructions.md" - }, - { - "text": "Use conventional commit message format." - } - ] - ], - "tags": [ - "experimental" - ] - }, - "github.copilot.chat.generateTests.codeLens": { - "type": "boolean", - "default": false, - "description": "%github.copilot.config.generateTests.codeLens%", - "tags": [ - "experimental" - ] - }, - "github.copilot.chat.setupTests.enabled": { - "type": "boolean", - "default": true, - "markdownDescription": "%github.copilot.config.setupTests.enabled%", - "tags": [ - "experimental" - ] - }, - "github.copilot.chat.languageContext.typescript.enabled": { - "type": "boolean", - "default": false, - "scope": "resource", - "tags": [ - "experimental", - "onExP" - ], - "markdownDescription": "%github.copilot.chat.languageContext.typescript.enabled%" - }, - "github.copilot.chat.languageContext.typescript.items": { - "type": "string", - "enum": [ - "minimal", - "double", - "fillHalf", - "fill" - ], - "default": "double", - "scope": "resource", - "tags": [ - "experimental", - "onExP" - ], - "markdownDescription": "%github.copilot.chat.languageContext.typescript.items%" - }, - "github.copilot.chat.languageContext.typescript.includeDocumentation": { - "type": "boolean", - "default": false, - "scope": "resource", - "tags": [ - "experimental", - "onExP" - ], - "markdownDescription": "%github.copilot.chat.languageContext.typescript.includeDocumentation%" - }, - "github.copilot.chat.languageContext.typescript.cacheTimeout": { - "type": "number", - "default": 500, - "scope": "resource", - "tags": [ - "experimental", - "onExP" - ], - "markdownDescription": "%github.copilot.chat.languageContext.typescript.cacheTimeout%" - }, - "github.copilot.chat.languageContext.fix.typescript.enabled": { - "type": "boolean", - "default": false, - "scope": "resource", - "tags": [ - "experimental", - "onExP" - ], - "markdownDescription": "%github.copilot.chat.languageContext.fix.typescript.enabled%" - }, - "github.copilot.chat.languageContext.inline.typescript.enabled": { - "type": "boolean", - "default": false, - "scope": "resource", - "tags": [ - "experimental", - "onExP" - ], - "markdownDescription": "%github.copilot.chat.languageContext.inline.typescript.enabled%" - }, - "github.copilot.chat.newWorkspaceCreation.enabled": { - "type": "boolean", - "default": true, - "tags": [ - "experimental" - ], - "description": "%github.copilot.config.newWorkspaceCreation.enabled%" - }, - "github.copilot.chat.newWorkspace.useContext7": { - "type": "boolean", - "default": false, - "tags": [ - "experimental" - ], - "markdownDescription": "%github.copilot.config.newWorkspace.useContext7%" - }, - "github.copilot.chat.notebook.followCellExecution.enabled": { - "type": "boolean", - "default": false, - "tags": [ - "experimental" - ], - "description": "%github.copilot.config.notebook.followCellExecution%" - }, - "github.copilot.chat.notebook.enhancedNextEditSuggestions.enabled": { - "type": "boolean", - "default": false, - "tags": [ - "experimental", - "onExp" - ], - "description": "%github.copilot.config.notebook.enhancedNextEditSuggestions%" - }, - "github.copilot.chat.summarizeAgentConversationHistory.enabled": { - "type": "boolean", - "default": true, - "tags": [ - "experimental" - ], - "description": "%github.copilot.config.summarizeAgentConversationHistory.enabled%" - }, - "github.copilot.chat.virtualTools.threshold": { - "type": "number", - "minimum": 0, - "maximum": 128, - "default": 128, - "tags": [ - "experimental" - ], - "markdownDescription": "%github.copilot.config.virtualTools.threshold%" - }, - "github.copilot.chat.azureAuthType": { - "type": "string", - "enum": [ - "entraId", - "apiKey" - ], - "enumDescriptions": [ - "%github.copilot.config.azureAuthType.entraId%", - "%github.copilot.config.azureAuthType.apiKey%" - ], - "default": "entraId", - "tags": [ - "experimental" - ], - "markdownDescription": "%github.copilot.config.azureAuthType%" - }, - "github.copilot.chat.azureModels": { - "type": "object", - "default": {}, - "tags": [ - "experimental" - ], - "additionalProperties": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Display name of the Azure model" - }, - "url": { - "type": "string", - "markdownDescription": "URL endpoint for the Azure model.\n\n**Important:** Base URLs default to Chat Completions API. Explicit API paths including `/responses` or `/chat/completions` are respected. Both behaviors are independent of the `#github.copilot.chat.useResponsesApi#` setting." - }, - "toolCalling": { - "type": "boolean", - "description": "Whether the model supports tool calling" - }, - "vision": { - "type": "boolean", - "description": "Whether the model supports vision capabilities" - }, - "maxInputTokens": { - "type": "number", - "description": "Maximum number of input tokens supported by the model" - }, - "maxOutputTokens": { - "type": "number", - "description": "Maximum number of output tokens supported by the model" - }, - "thinking": { - "type": "boolean", - "default": false, - "description": "Whether the model supports thinking capabilities" - }, - "zeroDataRetentionEnabled": { - "type": "boolean", - "default": false, - "markdownDescription": "Whether Zero Data Retention (ZDR) is enabled for this endpoint. When `true`, `previous_response_id` will not be sent in requests via Responses API." - }, - "requestHeaders": { - "type": "object", - "description": "Additional HTTP headers to include with requests to this model. These reserved headers are not allowed and ignored if present: forbidden request headers (https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_request_header), forwarding headers ('forwarded', 'x-forwarded-for', 'x-forwarded-host', 'x-forwarded-proto'), and others ('api-key', 'authorization', 'content-type', 'openai-intent', 'x-github-api-version', 'x-initiator', 'x-interaction-id', 'x-interaction-type', 'x-onbehalf-extension-id', 'x-request-id', 'x-vscode-user-agent-library-version'). Pattern-based forbidden headers ('proxy-*', 'sec-*', 'x-http-method*' with forbidden methods) are also blocked.", - "additionalProperties": { - "type": "string" - } - } - }, - "required": [ - "name", - "url", - "toolCalling", - "vision", - "maxInputTokens", - "maxOutputTokens" - ], - "additionalProperties": false - }, - "markdownDescription": "Configure custom Azure OpenAI models. Each key should be a unique model ID, and the value should be an object with model configuration including name, url, toolCalling, vision, maxInputTokens, and maxOutputTokens properties." - }, - "github.copilot.chat.customOAIModels": { - "type": "object", - "default": {}, - "tags": [ - "experimental" - ], - "additionalProperties": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Display name of the custom OpenAI model" - }, - "url": { - "type": "string", - "markdownDescription": "URL endpoint for the custom OpenAI-compatible model.\n\n**Important:** Base URLs default to Chat Completions API. Explicit API paths including `/responses` or `/chat/completions` are respected. Both behaviors are independent of the `#github.copilot.chat.useResponsesApi#` setting." - }, - "toolCalling": { - "type": "boolean", - "description": "Whether the model supports tool calling" - }, - "vision": { - "type": "boolean", - "description": "Whether the model supports vision capabilities" - }, - "maxInputTokens": { - "type": "number", - "description": "Maximum number of input tokens supported by the model" - }, - "maxOutputTokens": { - "type": "number", - "description": "Maximum number of output tokens supported by the model" - }, - "requiresAPIKey": { - "type": "boolean", - "description": "Whether the model requires an API key for authentication", - "default": true - }, - "editTools": { - "type": "array", - "description": "List of edit tools supported by the model. If this is not configured, the editor will try multiple edit tools and pick the best one.\n\n- 'find-replace': Find and replace text in a document.\n- 'multi-find-replace': Find and replace text in a document.\n- 'apply-patch': A file-oriented diff format used by some OpenAI models\n- 'code-rewrite': A general but slower editing tool that allows the model to rewrite and code snippet and provide only the replacement to the editor.", - "items": { - "type": "string", - "enum": [ - "find-replace", - "multi-find-replace", - "apply-patch", - "code-rewrite" - ] - } - }, - "thinking": { - "type": "boolean", - "default": false, - "description": "Whether the model supports thinking capabilities" - }, - "zeroDataRetentionEnabled": { - "type": "boolean", - "default": false, - "markdownDescription": "Whether Zero Data Retention (ZDR) is enabled for this endpoint. When `true`, `previous_response_id` will not be sent in requests via Responses API." - }, - "requestHeaders": { - "type": "object", - "description": "Additional HTTP headers to include with requests to this model. These reserved headers are not allowed and ignored if present: forbidden request headers (https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_request_header), forwarding headers ('forwarded', 'x-forwarded-for', 'x-forwarded-host', 'x-forwarded-proto'), and others ('api-key', 'authorization', 'content-type', 'openai-intent', 'x-github-api-version', 'x-initiator', 'x-interaction-id', 'x-interaction-type', 'x-onbehalf-extension-id', 'x-request-id', 'x-vscode-user-agent-library-version'). Pattern-based forbidden headers ('proxy-*', 'sec-*', 'x-http-method*' with forbidden methods) are also blocked.", - "additionalProperties": { - "type": "string" - } - } - }, - "required": [ - "name", - "url", - "toolCalling", - "vision", - "maxInputTokens", - "maxOutputTokens", - "requiresAPIKey" - ], - "additionalProperties": false - }, - "markdownDescription": "Configure custom OpenAI-compatible models. Each key should be a unique model ID, and the value should be an object with model configuration including name, url, toolCalling, vision, maxInputTokens, and maxOutputTokens properties." - }, - "github.copilot.chat.alternateGptPrompt.enabled": { - "type": "boolean", - "default": false, - "tags": [ - "experimental" - ], - "description": "%github.copilot.config.alternateGptPrompt.enabled%" - }, - "github.copilot.chat.useResponsesApi": { - "type": "boolean", - "default": true, - "markdownDescription": "%github.copilot.config.useResponsesApi%", - "tags": [ - "experimental", - "onExp" - ] - }, - "github.copilot.chat.responsesApiReasoningEffort": { - "type": "string", - "default": "default", - "markdownDescription": "%github.copilot.config.responsesApiReasoningEffort%", - "tags": [ - "experimental", - "onExp" - ], - "enum": [ - "low", - "medium", - "high", - "default" - ] - }, - "github.copilot.chat.responsesApiReasoningSummary": { - "type": "string", - "default": "detailed", - "markdownDescription": "%github.copilot.config.responsesApiReasoningSummary%", - "tags": [ - "experimental", - "onExp" - ], - "enum": [ - "off", - "detailed" - ] - }, - "github.copilot.chat.anthropic.thinking.budgetTokens": { - "type": [ - "number", - "null" - ], - "markdownDescription": "%github.copilot.config.anthropic.thinking.budgetTokens%", - "minimum": 1024, - "maximum": 32000, - "tags": [ - "experimental", - "onExp" - ] - }, - "github.copilot.chat.anthropic.tools.websearch.enabled": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.anthropic.tools.websearch.enabled%", - "tags": [ - "experimental", - "onExp" - ] - }, - "github.copilot.chat.anthropic.tools.websearch.maxUses": { - "type": "number", - "default": 5, - "markdownDescription": "%github.copilot.config.anthropic.tools.websearch.maxUses%", - "minimum": 1, - "maximum": 20, - "tags": [ - "experimental" - ] - }, - "github.copilot.chat.anthropic.tools.websearch.allowedDomains": { - "type": "array", - "default": [], - "markdownDescription": "%github.copilot.config.anthropic.tools.websearch.allowedDomains%", - "items": { - "type": "string" - }, - "tags": [ - "experimental" - ] - }, - "github.copilot.chat.anthropic.tools.websearch.blockedDomains": { - "type": "array", - "default": [], - "markdownDescription": "%github.copilot.config.anthropic.tools.websearch.blockedDomains%", - "items": { - "type": "string" - }, - "tags": [ - "experimental" - ] - }, - "github.copilot.chat.anthropic.tools.websearch.userLocation": { - "type": [ - "object", - "null" - ], - "default": null, - "markdownDescription": "%github.copilot.config.anthropic.tools.websearch.userLocation%", - "properties": { - "city": { - "type": "string", - "description": "City name (e.g., 'San Francisco')" - }, - "region": { - "type": "string", - "description": "State or region (e.g., 'California')" - }, - "country": { - "type": "string", - "description": "ISO country code (e.g., 'US')" - }, - "timezone": { - "type": "string", - "description": "IANA timezone identifier (e.g., 'America/Los_Angeles')" - } - }, - "tags": [ - "experimental" - ] - }, - "github.copilot.chat.tools.memory.enabled": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.tools.memory.enabled%", - "tags": [ - "experimental", - "onExp" - ] - }, - "github.copilot.chat.completionsFetcher": { - "type": [ - "string", - "null" - ], - "markdownDescription": "%github.copilot.config.completionsFetcher%", - "tags": [ - "experimental", - "onExp" - ], - "enum": [ - "electron-fetch", - "node-fetch" - ] - }, - "github.copilot.chat.nesFetcher": { - "type": [ - "string", - "null" - ], - "markdownDescription": "%github.copilot.config.nesFetcher%", - "tags": [ - "experimental", - "onExp" - ], - "enum": [ - "electron-fetch", - "node-fetch" - ] - } - } - }, - { - "id": "advanced", - "properties": { - "github.copilot.chat.debug.overrideChatEngine": { - "type": [ - "string", - "null" - ], - "markdownDescription": "%github.copilot.config.debug.overrideChatEngine%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.edits.gemini3ReplaceStringOnly": { - "type": "boolean", - "default": false, - "markdownDescription": "Use only the modern `replace_string_in_file` edit tool when generating edits with Gemini 3 models.", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.edits.gemini3MultiReplaceString": { - "type": "boolean", - "default": false, - "markdownDescription": "Enable the modern `multi_replace_string_in_file` edit tool when generating edits with Gemini 3 models.", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.projectLabels.expanded": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.projectLabels.expanded%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.projectLabels.chat": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.projectLabels.chat%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.projectLabels.inline": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.projectLabels.inline%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.workspace.maxLocalIndexSize": { - "type": "number", - "default": 100000, - "markdownDescription": "%github.copilot.config.workspace.maxLocalIndexSize%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.workspace.enableFullWorkspace": { - "type": "boolean", - "default": true, - "markdownDescription": "%github.copilot.config.workspace.enableFullWorkspace%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.workspace.enableCodeSearch": { - "type": "boolean", - "default": true, - "markdownDescription": "%github.copilot.config.workspace.enableCodeSearch%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.workspace.enableEmbeddingsSearch": { - "type": "boolean", - "default": true, - "markdownDescription": "%github.copilot.config.workspace.enableEmbeddingsSearch%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.workspace.preferredEmbeddingsModel": { - "type": "string", - "default": "", - "markdownDescription": "%github.copilot.config.workspace.preferredEmbeddingsModel%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.workspace.prototypeAdoCodeSearchEndpointOverride": { - "type": "string", - "default": "", - "markdownDescription": "%github.copilot.config.workspace.prototypeAdoCodeSearchEndpointOverride%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.feedback.onChange": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.feedback.onChange%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.review.intent": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.review.intent%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.notebook.summaryExperimentEnabled": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.notebook.summaryExperimentEnabled%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.notebook.variableFilteringEnabled": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.notebook.variableFilteringEnabled%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.notebook.alternativeFormat": { - "type": "string", - "default": "xml", - "enum": [ - "xml", - "markdown" - ], - "markdownDescription": "%github.copilot.config.notebook.alternativeFormat%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.notebook.alternativeNESFormat.enabled": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.notebook.alternativeNESFormat.enabled%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.debugTerminalCommandPatterns": { - "type": "array", - "default": [], - "items": { - "type": "string" - }, - "markdownDescription": "%github.copilot.config.debugTerminalCommandPatterns%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.localWorkspaceRecording.enabled": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.localWorkspaceRecording.enabled%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.editRecording.enabled": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.editRecording.enabled%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.inlineChat.selectionRatioThreshold": { - "type": "number", - "default": 0, - "markdownDescription": "%github.copilot.config.inlineChat.selectionRatioThreshold%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.temporalContext.maxAge": { - "type": "number", - "default": 100, - "markdownDescription": "%github.copilot.config.temporalContext.maxAge%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.debug.requestLogger.maxEntries": { - "type": "number", - "default": 100, - "markdownDescription": "%github.copilot.config.debug.requestLogger.maxEntries%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.inlineEdits.diagnosticsContextProvider.enabled": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.inlineEdits.diagnosticsContextProvider.enabled%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.temporalContext.preferSameLang": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.temporalContext.preferSameLang%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.codesearch.agent.enabled": { - "type": "boolean", - "default": true, - "markdownDescription": "%github.copilot.config.codesearch.agent.enabled%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.agent.temperature": { - "type": [ - "number", - "null" - ], - "markdownDescription": "%github.copilot.config.agent.temperature%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.instantApply.shortContextModelName": { - "type": "string", - "default": "gpt-4o-instant-apply-full-ft-v66-short", - "markdownDescription": "%github.copilot.config.instantApply.shortContextModelName%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.instantApply.shortContextLimit": { - "type": "number", - "default": 8000, - "markdownDescription": "%github.copilot.config.instantApply.shortContextLimit%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.enableUserPreferences": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.enableUserPreferences%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.summarizeAgentConversationHistoryThreshold": { - "type": [ - "number", - "null" - ], - "markdownDescription": "%github.copilot.config.summarizeAgentConversationHistoryThreshold%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.agentHistorySummarizationMode": { - "type": [ - "string", - "null" - ], - "markdownDescription": "%github.copilot.config.agentHistorySummarizationMode%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.agentHistorySummarizationWithPromptCache": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.agentHistorySummarizationWithPromptCache%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.agentHistorySummarizationForceGpt41": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.agentHistorySummarizationForceGpt41%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.useResponsesApiTruncation": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.useResponsesApiTruncation%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.omitBaseAgentInstructions": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.omitBaseAgentInstructions%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.promptFileContextProvider.enabled": { - "type": "boolean", - "default": true, - "markdownDescription": "%github.copilot.config.promptFileContextProvider.enabled%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.tools.defaultToolsGrouped": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.tools.defaultToolsGrouped%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.claudeCode.enabled": { - "type": [ - "boolean", - "string" - ], - "default": false, - "markdownDescription": "%github.copilot.config.claudeCode.enabled%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.claudeCode.debug": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.claudeCode.debug%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.copilotCLI.enabled": { - "type": "boolean", - "default": true, - "markdownDescription": "%github.copilot.config.copilotCLI.enabled%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.gpt5AlternativePatch": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.gpt5AlternativePatch%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.inlineEdits.triggerOnEditorChangeAfterSeconds": { - "type": [ - "number", - "null" - ], - "markdownDescription": "%github.copilot.config.inlineEdits.triggerOnEditorChangeAfterSeconds%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.inlineEdits.nextCursorPrediction.displayLine": { - "type": "boolean", - "default": true, - "markdownDescription": "%github.copilot.config.inlineEdits.nextCursorPrediction.displayLine%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.inlineEdits.nextCursorPrediction.currentFileMaxTokens": { - "type": "number", - "default": 2000, - "markdownDescription": "%github.copilot.config.inlineEdits.nextCursorPrediction.currentFileMaxTokens%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.inlineEdits.renameSymbolSuggestions": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.inlineEdits.renameSymbolSuggestions%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.suggestRelatedFilesFromGitHistory.useEmbeddings": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.suggestRelatedFilesFromGitHistory.useEmbeddings%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.cli.isolation.enabled": { - "type": "boolean", - "default": true, - "markdownDescription": "%github.copilot.config.cli.isolation.enabled%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.cli.customAgents.enabled": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.cli.customAgents.enabled%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.cli.mcp.enabled": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.cli.mcp.enabled%", - "tags": [ - "advanced", - "experimental" - ] - } - } - } - ], - "submenus": [ - { - "id": "copilot/reviewComment/additionalActions/applyAndNext", - "label": "%github.copilot.submenu.reviewComment.applyAndNext.label%" - }, - { - "id": "copilot/reviewComment/additionalActions/discardAndNext", - "label": "%github.copilot.submenu.reviewComment.discardAndNext.label%" - }, - { - "id": "copilot/reviewComment/additionalActions/discard", - "label": "%github.copilot.submenu.reviewComment.discard.label%" - }, - { - "id": "github.copilot.chat.debug.filter", - "label": "Filter", - "icon": "$(filter)" - }, - { - "id": "github.copilot.chat.debug.exportAllPromptLogsAsJson", - "label": "Export All Logs as JSON", - "icon": "$(file-export)" - } - ], - "menus": { - "editor/title": [ - { - "command": "github.copilot.debug.generateInlineEditTests", - "when": "resourceScheme == 'ccreq'" - }, - { - "command": "github.copilot.chat.notebook.enableFollowCellExecution", - "when": "config.github.copilot.chat.notebook.followCellExecution.enabled && !github.copilot.notebookFollowInSessionEnabled && github.copilot.notebookAgentModeUsage && !config.notebook.globalToolbar", - "group": "navigation@10" - }, - { - "command": "github.copilot.chat.notebook.disableFollowCellExecution", - "when": "config.github.copilot.chat.notebook.followCellExecution.enabled && github.copilot.notebookFollowInSessionEnabled && github.copilot.notebookAgentModeUsage && !config.notebook.globalToolbar", - "group": "navigation@10" - }, - { - "command": "github.copilot.chat.replay", - "group": "navigation@9", - "when": "resourceFilename === 'benchRun.chatReplay.json'" - }, - { - "command": "github.copilot.chat.showAsChatSession", - "group": "navigation@9", - "when": "resourceFilename === 'benchRun.chatReplay.json' || resourceFilename === 'chat-export-logs.json'" - }, - { - "command": "github.copilot.chat.applyCopilotCLIAgentSessionChanges", - "group": "navigation@1", - "when": "resourceScheme == copilotcli-worktree-changes" - } - ], - "explorer/context": [ - { - "command": "github.copilot.chat.showAsChatSession", - "when": "resourceFilename === 'benchRun.chatReplay.json' || resourceFilename === 'chat-export-logs.json'", - "group": "2_copilot@1" - } - ], - "editor/context": [ - { - "command": "github.copilot.chat.explain", - "when": "!github.copilot.interactiveSession.disabled", - "group": "1_chat@4" - } - ], - "editor/context/chat": [ - { - "command": "github.copilot.chat.fix", - "when": "!github.copilot.interactiveSession.disabled && !editorReadonly", - "group": "copilotAction@1" - }, - { - "command": "github.copilot.chat.review", - "when": "config.github.copilot.chat.reviewSelection.enabled && !github.copilot.interactiveSession.disabled && resourceScheme != 'vscode-chat-code-block'", - "group": "copilotAction@2" - }, - { - "command": "github.copilot.chat.generateDocs", - "when": "!github.copilot.interactiveSession.disabled && !editorReadonly", - "group": "copilotGenerate@1" - }, - { - "command": "github.copilot.chat.generateTests", - "when": "!github.copilot.interactiveSession.disabled && !editorReadonly", - "group": "copilotGenerate@2" - } - ], - "testing/item/result": [ - { - "command": "github.copilot.tests.fixTestFailure.fromInline", - "when": "testResultState == failed && !testResultOutdated", - "group": "inline@2" - } - ], - "testing/item/context": [ - { - "command": "github.copilot.tests.fixTestFailure.fromInline", - "when": "testResultState == failed && !testResultOutdated", - "group": "inline@2" - } - ], - "commandPalette": [ - { - "command": "github.copilot.chat.triggerPermissiveSignIn", - "when": "false" - }, - { - "command": "github.copilot.interactiveSession.feedback", - "when": "github.copilot-chat.activated && !github.copilot.interactiveSession.disabled" - }, - { - "command": "github.copilot.debug.workbenchState", - "when": "true" - }, - { - "command": "github.copilot.chat.rerunWithCopilotDebug", - "when": "false" - }, - { - "command": "github.copilot.chat.startCopilotDebugCommand", - "when": "false" - }, - { - "command": "github.copilot.git.generateCommitMessage", - "when": "false" - }, - { - "command": "github.copilot.git.resolveMergeConflicts", - "when": "false" - }, - { - "command": "github.copilot.chat.explain", - "when": "false" - }, - { - "command": "github.copilot.chat.review", - "when": "!github.copilot.interactiveSession.disabled" - }, - { - "command": "github.copilot.chat.review.apply", - "when": "false" - }, - { - "command": "github.copilot.chat.review.applyAndNext", - "when": "false" - }, - { - "command": "github.copilot.chat.review.discard", - "when": "false" - }, - { - "command": "github.copilot.chat.review.discardAndNext", - "when": "false" - }, - { - "command": "github.copilot.chat.review.discardAll", - "when": "false" - }, - { - "command": "github.copilot.chat.review.stagedChanges", - "when": "false" - }, - { - "command": "github.copilot.chat.review.unstagedChanges", - "when": "false" - }, - { - "command": "github.copilot.chat.review.changes", - "when": "false" - }, - { - "command": "github.copilot.chat.review.stagedFileChange", - "when": "false" - }, - { - "command": "github.copilot.chat.review.unstagedFileChange", - "when": "false" - }, - { - "command": "github.copilot.chat.review.previous", - "when": "false" - }, - { - "command": "github.copilot.chat.review.next", - "when": "false" - }, - { - "command": "github.copilot.chat.review.continueInInlineChat", - "when": "false" - }, - { - "command": "github.copilot.chat.review.continueInChat", - "when": "false" - }, - { - "command": "github.copilot.chat.review.markHelpful", - "when": "false" - }, - { - "command": "github.copilot.chat.review.markUnhelpful", - "when": "false" - }, - { - "command": "github.copilot.devcontainer.generateDevContainerConfig", - "when": "false" - }, - { - "command": "github.copilot.tests.fixTestFailure", - "when": "false" - }, - { - "command": "github.copilot.tests.fixTestFailure.fromInline", - "when": "false" - }, - { - "command": "github.copilot.search.markHelpful", - "when": "false" - }, - { - "command": "github.copilot.search.markUnhelpful", - "when": "false" - }, - { - "command": "github.copilot.search.feedback", - "when": "false" - }, - { - "command": "github.copilot.chat.debug.showElements", - "when": "false" - }, - { - "command": "github.copilot.chat.debug.hideElements", - "when": "false" - }, - { - "command": "github.copilot.chat.debug.showTools", - "when": "false" - }, - { - "command": "github.copilot.chat.debug.hideTools", - "when": "false" - }, - { - "command": "github.copilot.chat.debug.showNesRequests", - "when": "false" - }, - { - "command": "github.copilot.chat.debug.hideNesRequests", - "when": "false" - }, - { - "command": "github.copilot.chat.debug.exportLogItem", - "when": "false" - }, - { - "command": "github.copilot.chat.debug.exportPromptArchive", - "when": "false" - }, - { - "command": "github.copilot.chat.debug.exportPromptLogsAsJson", - "when": "false" - }, - { - "command": "github.copilot.chat.debug.exportAllPromptLogsAsJson", - "when": "false" - }, - { - "command": "github.copilot.chat.mcp.setup.check", - "when": "false" - }, - { - "command": "github.copilot.chat.mcp.setup.validatePackage", - "when": "false" - }, - { - "command": "github.copilot.chat.mcp.setup.flow", - "when": "false" - }, - { - "command": "github.copilot.chat.debug.showRawRequestBody", - "when": "false" - }, - { - "command": "github.copilot.debug.showOutputChannel", - "when": "false" - }, - { - "command": "github.copilot.cli.sessions.delete", - "when": "false" - }, - { - "command": "github.copilot.cli.sessions.refresh", - "when": "false" - }, - { - "command": "github.copilot.cli.sessions.resumeInTerminal", - "when": "false" - }, - { - "command": "github.copilot.cli.sessions.newTerminalSession", - "when": "false" - }, - { - "command": "github.copilot.cloud.sessions.refresh", - "when": "false" - }, - { - "command": "github.copilot.cloud.sessions.openInBrowser", - "when": "false" - }, - { - "command": "github.copilot.cloud.sessions.proxy.closeChatSessionPullRequest", - "when": "false" - }, - { - "command": "github.copilot.chat.applyCopilotCLIAgentSessionChanges", - "when": "false" - }, - { - "command": "github.copilot.chat.showAsChatSession", - "when": "false" - } - ], - "view/title": [ - { - "command": "github.copilot.claude.sessions.refresh", - "when": "view == workbench.view.chat.sessions.claude-code", - "group": "navigation@1" - }, - { - "command": "github.copilot.cli.sessions.refresh", - "when": "view == workbench.view.chat.sessions.copilotcli", - "group": "navigation@1" - }, - { - "submenu": "github.copilot.chat.debug.filter", - "when": "view == copilot-chat", - "group": "navigation" - }, - { - "command": "github.copilot.chat.debug.exportAllPromptLogsAsJson", - "when": "view == copilot-chat", - "group": "export@1" - }, - { - "command": "github.copilot.debug.showOutputChannel", - "when": "view == copilot-chat", - "group": "3_show@1" - }, - { - "command": "github.copilot.debug.showChatLogView", - "when": "view == workbench.panel.chat.view.copilot", - "group": "3_show" - }, - { - "command": "github.copilot.cloud.sessions.refresh", - "when": "view == workbench.view.chat.sessions.copilot-cloud-agent", - "group": "navigation@1" - } - ], - "view/item/context": [ - { - "command": "github.copilot.chat.debug.showRawRequestBody", - "when": "view == copilot-chat && viewItem == request", - "group": "export@0" - }, - { - "command": "github.copilot.chat.debug.exportLogItem", - "when": "view == copilot-chat && (viewItem == toolcall || viewItem == request)", - "group": "export@1" - }, - { - "command": "github.copilot.chat.debug.exportPromptArchive", - "when": "view == copilot-chat && viewItem == chatprompt", - "group": "export@2" - }, - { - "command": "github.copilot.chat.debug.exportPromptLogsAsJson", - "when": "view == copilot-chat && viewItem == chatprompt", - "group": "export@3" - } - ], - "searchPanel/aiResults/commands": [ - { - "command": "github.copilot.search.markHelpful", - "group": "inline@0", - "when": "aiResultsTitle && aiResultsRequested" - }, - { - "command": "github.copilot.search.markUnhelpful", - "group": "inline@1", - "when": "aiResultsTitle && aiResultsRequested" - }, - { - "command": "github.copilot.search.feedback", - "group": "inline@2", - "when": "aiResultsTitle && aiResultsRequested && github.copilot.debugReportFeedback" - } - ], - "comments/comment/title": [ - { - "command": "github.copilot.chat.review.markHelpful", - "group": "inline@0", - "when": "commentController == github-copilot-review" - }, - { - "command": "github.copilot.chat.review.markUnhelpful", - "group": "inline@1", - "when": "commentController == github-copilot-review" - } - ], - "commentsView/commentThread/context": [ - { - "command": "github.copilot.chat.review.apply", - "group": "context@1", - "when": "commentController == github-copilot-review" - }, - { - "command": "github.copilot.chat.review.discard", - "group": "context@2", - "when": "commentController == github-copilot-review" - }, - { - "command": "github.copilot.chat.review.discardAll", - "group": "context@3", - "when": "commentController == github-copilot-review" - } - ], - "comments/commentThread/additionalActions": [ - { - "submenu": "copilot/reviewComment/additionalActions/applyAndNext", - "group": "inline@1", - "when": "commentController == github-copilot-review && github.copilot.chat.review.numberOfComments > 1" - }, - { - "command": "github.copilot.chat.review.apply", - "group": "inline@1", - "when": "commentController == github-copilot-review && github.copilot.chat.review.numberOfComments == 1" - }, - { - "submenu": "copilot/reviewComment/additionalActions/discardAndNext", - "group": "inline@2", - "when": "commentController == github-copilot-review && github.copilot.chat.review.numberOfComments > 1" - }, - { - "submenu": "copilot/reviewComment/additionalActions/discard", - "group": "inline@2", - "when": "commentController == github-copilot-review && github.copilot.chat.review.numberOfComments == 1" - } - ], - "copilot/reviewComment/additionalActions/applyAndNext": [ - { - "command": "github.copilot.chat.review.applyAndNext", - "group": "inline@1", - "when": "commentController == github-copilot-review" - }, - { - "command": "github.copilot.chat.review.apply", - "group": "inline@2", - "when": "commentController == github-copilot-review" - } - ], - "copilot/reviewComment/additionalActions/discardAndNext": [ - { - "command": "github.copilot.chat.review.discardAndNext", - "group": "inline@1", - "when": "commentController == github-copilot-review" - }, - { - "command": "github.copilot.chat.review.discard", - "group": "inline@2", - "when": "commentController == github-copilot-review" - }, - { - "command": "github.copilot.chat.review.continueInInlineChat", - "group": "inline@3", - "when": "commentController == github-copilot-review" - } - ], - "copilot/reviewComment/additionalActions/discard": [ - { - "command": "github.copilot.chat.review.discard", - "group": "inline@2", - "when": "commentController == github-copilot-review" - }, - { - "command": "github.copilot.chat.review.continueInInlineChat", - "group": "inline@3", - "when": "commentController == github-copilot-review" - } - ], - "comments/commentThread/title": [ - { - "command": "github.copilot.chat.review.previous", - "group": "inline@1", - "when": "commentController == github-copilot-review" - }, - { - "command": "github.copilot.chat.review.next", - "group": "inline@2", - "when": "commentController == github-copilot-review" - }, - { - "command": "github.copilot.chat.review.continueInChat", - "group": "inline@3", - "when": "commentController == github-copilot-review" - }, - { - "command": "github.copilot.chat.review.discardAll", - "group": "inline@4", - "when": "commentController == github-copilot-review" - } - ], - "scm/title": [ - { - "command": "github.copilot.chat.review.changes", - "group": "navigation", - "when": "config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmProviderRootUri in github.copilot.chat.reviewDiff.enabledRootUris" - } - ], - "scm/resourceGroup/context": [ - { - "command": "github.copilot.chat.review.stagedChanges", - "when": "config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmResourceGroup == index", - "group": "inline@-3" - }, - { - "command": "github.copilot.chat.review.unstagedChanges", - "when": "config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmResourceGroup == workingTree", - "group": "inline@-3" - } - ], - "scm/resourceState/context": [ - { - "command": "github.copilot.git.resolveMergeConflicts", - "when": "scmProvider == git && scmResourceGroup == merge && git.activeResourceHasMergeConflicts", - "group": "z_chat@1" - }, - { - "command": "github.copilot.chat.review.stagedFileChange", - "group": "3_copilot", - "when": "config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmResourceGroup == index" - }, - { - "command": "github.copilot.chat.review.unstagedFileChange", - "group": "3_copilot", - "when": "config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmResourceGroup == workingTree" - } - ], - "scm/inputBox": [ - { - "command": "github.copilot.git.generateCommitMessage", - "when": "scmProvider == git" - } - ], - "testing/message/context": [ - { - "command": "github.copilot.tests.fixTestFailure", - "when": "testing.testItemHasUri", - "group": "inline@1" - } - ], - "issue/reporter": [ - { - "command": "github.copilot.report" - } - ], - "github.copilot.chat.debug.filter": [ - { - "command": "github.copilot.chat.debug.showElements", - "when": "github.copilot.chat.debug.elementsHidden", - "group": "commands@0" - }, - { - "command": "github.copilot.chat.debug.hideElements", - "when": "!github.copilot.chat.debug.elementsHidden", - "group": "commands@0" - }, - { - "command": "github.copilot.chat.debug.showTools", - "when": "github.copilot.chat.debug.toolsHidden", - "group": "commands@1" - }, - { - "command": "github.copilot.chat.debug.hideTools", - "when": "!github.copilot.chat.debug.toolsHidden", - "group": "commands@1" - }, - { - "command": "github.copilot.chat.debug.showNesRequests", - "when": "github.copilot.chat.debug.nesRequestsHidden", - "group": "commands@2" - }, - { - "command": "github.copilot.chat.debug.hideNesRequests", - "when": "!github.copilot.chat.debug.nesRequestsHidden", - "group": "commands@2" - } - ], - "notebook/toolbar": [ - { - "command": "github.copilot.chat.notebook.enableFollowCellExecution", - "when": "config.github.copilot.chat.notebook.followCellExecution.enabled && !github.copilot.notebookFollowInSessionEnabled && github.copilot.notebookAgentModeUsage && config.notebook.globalToolbar", - "group": "navigation/execute@15" - }, - { - "command": "github.copilot.chat.notebook.disableFollowCellExecution", - "when": "config.github.copilot.chat.notebook.followCellExecution.enabled && github.copilot.notebookFollowInSessionEnabled && github.copilot.notebookAgentModeUsage && config.notebook.globalToolbar", - "group": "navigation/execute@15" - } - ], - "editor/content": [ - { - "command": "github.copilot.git.resolveMergeConflicts", - "group": "z_chat@1", - "when": "config.git.enabled && !git.missing && !isInDiffEditor && !isMergeEditor && resource in git.mergeChanges && git.activeResourceHasMergeConflicts" - } - ], - "chat/chatSessions": [ - { - "command": "github.copilot.cli.sessions.resumeInTerminal", - "when": "chatSessionType == copilotcli", - "group": "inline@1" - }, - { - "command": "github.copilot.cli.sessions.delete", - "when": "chatSessionType == copilotcli", - "group": "inline@2" - }, - { - "command": "github.copilot.cli.sessions.newTerminalSession", - "when": "view == workbench.view.chat.sessions.copilotcli", - "group": "submenu" - }, - { - "command": "github.copilot.cli.sessions.refresh", - "when": "view == workbench.view.chat.sessions.copilotcli", - "group": "navigation@1" - }, - { - "command": "github.copilot.cloud.sessions.openInBrowser", - "when": "chatSessionType == copilot-cloud-agent", - "group": "navigation@10" - }, - { - "command": "github.copilot.cloud.sessions.proxy.closeChatSessionPullRequest", - "when": "chatSessionType == copilot-cloud-agent", - "group": "context" - }, - { - "command": "github.copilot.cli.sessions.delete", - "when": "chatSessionType == copilotcli && config.chat.agentSessionsViewLocation == 'single-view'", - "group": "context" - } - ] - }, - "icons": { - "copilot-logo": { - "description": "%github.copilot.icon%", - "default": { - "fontPath": "assets/copilot.woff", - "fontCharacter": "\\0041" - } - }, - "copilot-warning": { - "description": "%github.copilot.icon%", - "default": { - "fontPath": "assets/copilot.woff", - "fontCharacter": "\\0042" - } - }, - "copilot-notconnected": { - "description": "%github.copilot.icon%", - "default": { - "fontPath": "assets/copilot.woff", - "fontCharacter": "\\0043" - } - } - }, - "iconFonts": [ - { - "id": "copilot-font", - "src": [ - { - "path": "assets/copilot.woff", - "format": "woff" - } - ] - } - ], - "terminalQuickFixes": [ - { - "id": "copilot-chat.fixWithCopilot", - "commandLineMatcher": ".+", - "commandExitResult": "error", - "outputMatcher": { - "anchor": "bottom", - "length": 1, - "lineMatcher": ".+", - "offset": 0 - }, - "kind": "explain" - }, - { - "id": "copilot-chat.generateCommitMessage", - "commandLineMatcher": "git add .+", - "commandExitResult": "success", - "kind": "explain", - "outputMatcher": { - "anchor": "bottom", - "length": 1, - "lineMatcher": ".+", - "offset": 0 - } - }, - { - "id": "copilot-chat.terminalToDebugging", - "commandLineMatcher": ".+", - "kind": "explain", - "commandExitResult": "error", - "outputMatcher": { - "anchor": "bottom", - "length": 1, - "lineMatcher": "", - "offset": 0 - } - }, - { - "id": "copilot-chat.terminalToDebuggingSuccess", - "commandLineMatcher": ".+", - "kind": "explain", - "commandExitResult": "success", - "outputMatcher": { - "anchor": "bottom", - "length": 1, - "lineMatcher": "", - "offset": 0 - } - } - ], - "languages": [ - { - "id": "ignore", - "filenamePatterns": [ - ".copilotignore" - ], - "aliases": [] - }, - { - "id": "markdown", - "extensions": [ - ".copilotmd" - ] - } - ], - "views": { - "copilot-chat": [ - { - "id": "copilot-chat", - "name": "Chat Debug", - "icon": "assets/debug-icon.svg", - "when": "github.copilot.chat.showLogView" - } - ], - "context-inspector": [ - { - "id": "context-inspector", - "name": "Language Context Inspector", - "icon": "$(inspect)", - "when": "github.copilot.chat.showContextInspectorView" - } - ], - "agentSessions": [ - { - "id": "codex-placeholder", - "name": "OpenAI Codex", - "when": "github.copilot.chat.codex.showPlaceholder", - "icon": "$(file)" - }, - { - "id": "copilot-agents-placeholder", - "name": "GitHub Copilot Agents", - "when": "chatEntitlementSignedOut || !chatIsEnabled", - "icon": "$(copilot)" - } - ] - }, - "viewsContainers": { - "activitybar": [ - { - "id": "copilot-chat", - "title": "Chat Debug", - "icon": "assets/debug-icon.svg" - }, - { - "id": "context-inspector", - "title": "Language Context Inspector", - "icon": "$(inspect)" - } - ] - }, - "configurationDefaults": { - "workbench.editorAssociations": { - "*.copilotmd": "vscode.markdown.preview.editor" - } - }, - "keybindings": [ - { - "command": "github.copilot.chat.rerunWithCopilotDebug", - "key": "ctrl+alt+.", - "mac": "cmd+alt+.", - "when": "github.copilot-chat.activated && terminalShellIntegrationEnabled && terminalFocus && !terminalAltBufferActive" - } - ], - "walkthroughs": [ - { - "id": "copilotWelcome", - "title": "%github.copilot.walkthrough.title%", - "description": "%github.copilot.walkthrough.description%", - "when": "!isWeb", - "steps": [ - { - "id": "copilot.setup.signIn", - "title": "%github.copilot.walkthrough.setup.signIn.title%", - "description": "%github.copilot.walkthrough.setup.signIn.description%", - "when": "chatEntitlementSignedOut && !view.workbench.panel.chat.view.copilot.visible && !github.copilot-chat.activated && !github.copilot.offline && !github.copilot.interactiveSession.individual.disabled && !github.copilot.interactiveSession.individual.expired && !github.copilot.interactiveSession.enterprise.disabled && !github.copilot.interactiveSession.contactSupport", - "media": { - "video": { - "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4", - "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4", - "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4", - "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4" - }, - "altText": "%github.copilot.walkthrough.panelChat.media.altText%" - } - }, - { - "id": "copilot.setup.signInNoAction", - "title": "%github.copilot.walkthrough.setup.signIn.title%", - "description": "%github.copilot.walkthrough.setup.noAction.description%", - "when": "chatEntitlementSignedOut && view.workbench.panel.chat.view.copilot.visible && !github.copilot-chat.activated && !github.copilot.offline && !github.copilot.interactiveSession.individual.disabled && !github.copilot.interactiveSession.individual.expired && !github.copilot.interactiveSession.enterprise.disabled && !github.copilot.interactiveSession.contactSupport", - "media": { - "video": { - "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4", - "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4", - "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4", - "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4" - }, - "altText": "%github.copilot.walkthrough.panelChat.media.altText%" - } - }, - { - "id": "copilot.setup.signUp", - "title": "%github.copilot.walkthrough.setup.signUp.title%", - "description": "%github.copilot.walkthrough.setup.signUp.description%", - "when": "chatPlanCanSignUp && !view.workbench.panel.chat.view.copilot.visible && !github.copilot-chat.activated && !github.copilot.offline && (github.copilot.interactiveSession.individual.disabled || github.copilot.interactiveSession.individual.expired) && !github.copilot.interactiveSession.enterprise.disabled && !github.copilot.interactiveSession.contactSupport", - "media": { - "video": { - "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4", - "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4", - "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4", - "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4" - }, - "altText": "%github.copilot.walkthrough.panelChat.media.altText%" - } - }, - { - "id": "copilot.setup.signUpNoAction", - "title": "%github.copilot.walkthrough.setup.signUp.title%", - "description": "%github.copilot.walkthrough.setup.noAction.description%", - "when": "chatPlanCanSignUp && view.workbench.panel.chat.view.copilot.visible && !github.copilot-chat.activated && !github.copilot.offline && (github.copilot.interactiveSession.individual.disabled || github.copilot.interactiveSession.individual.expired) && !github.copilot.interactiveSession.enterprise.disabled && !github.copilot.interactiveSession.contactSupport", - "media": { - "video": { - "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4", - "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4", - "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4", - "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4" - }, - "altText": "%github.copilot.walkthrough.panelChat.media.altText%" - } - }, - { - "id": "copilot.panelChat", - "title": "%github.copilot.walkthrough.panelChat.title%", - "description": "%github.copilot.walkthrough.panelChat.description%", - "when": "!chatEntitlementSignedOut || chatIsEnabled ", - "media": { - "video": { - "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4", - "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4", - "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4", - "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4" - }, - "altText": "%github.copilot.walkthrough.panelChat.media.altText%" - } - }, - { - "id": "copilot.edits", - "title": "%github.copilot.walkthrough.edits.title%", - "description": "%github.copilot.walkthrough.edits.description%", - "when": "!chatEntitlementSignedOut || chatIsEnabled ", - "media": { - "video": { - "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/edits.mp4", - "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/edits-light.mp4", - "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/edits-hc.mp4", - "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/edits-hclight.mp4" - }, - "altText": "%github.copilot.walkthrough.edits.media.altText%" - } - }, - { - "id": "copilot.firstSuggest", - "title": "%github.copilot.walkthrough.firstSuggest.title%", - "description": "%github.copilot.walkthrough.firstSuggest.description%", - "when": "!chatEntitlementSignedOut || chatIsEnabled ", - "media": { - "video": { - "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/ghost-text.mp4", - "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/ghost-text-light.mp4", - "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/ghost-text-hc.mp4", - "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/ghost-text-hclight.mp4" - }, - "altText": "%github.copilot.walkthrough.firstSuggest.media.altText%" - } - }, - { - "id": "copilot.inlineChatNotMac", - "title": "%github.copilot.walkthrough.inlineChatNotMac.title%", - "description": "%github.copilot.walkthrough.inlineChatNotMac.description%", - "when": "!isMac && (!chatEntitlementSignedOut || chatIsEnabled )", - "media": { - "video": { - "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline.mp4", - "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-light.mp4", - "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-hc.mp4", - "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-hclight.mp4" - }, - "altText": "%github.copilot.walkthrough.inlineChatNotMac.media.altText%" - } - }, - { - "id": "copilot.inlineChatMac", - "title": "%github.copilot.walkthrough.inlineChatMac.title%", - "description": "%github.copilot.walkthrough.inlineChatMac.description%", - "when": "isMac && (!chatEntitlementSignedOut || chatIsEnabled )", - "media": { - "video": { - "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline.mp4", - "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-light.mp4", - "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-hc.mp4", - "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-hclight.mp4" - }, - "altText": "%github.copilot.walkthrough.inlineChatMac.media.altText%" - } - }, - { - "id": "copilot.sparkle", - "title": "%github.copilot.walkthrough.sparkle.title%", - "description": "%github.copilot.walkthrough.sparkle.description%", - "when": "!chatEntitlementSignedOut || chatIsEnabled", - "media": { - "video": { - "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/git-commit.mp4", - "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/git-commit-light.mp4", - "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/git-commit-hc.mp4", - "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/git-commit-hclight.mp4" - }, - "altText": "%github.copilot.walkthrough.sparkle.media.altText%" - } - } - ] - } - ], - "jsonValidation": [ - { - "fileMatch": "settings.json", - "url": "ccsettings://root/schema.json" - } - ], - "typescriptServerPlugins": [ - { - "name": "@vscode/copilot-typescript-server-plugin", - "enableForWorkspaceTypeScriptVersions": true - } - ], - "chatSessions": [ - { - "type": "claude-code", - "name": "claude", - "displayName": "Claude Code CLI Agent", - "icon": "$(sparkle)", - "welcomeTitle": "Claude Code Agent", - "welcomeMessage": "Run local background tasks", - "inputPlaceholder": "Describe your task, type `#` for adding context", - "order": 3, - "description": "The Claude Code Agent works on your local machine", - "when": "config.github.copilot.chat.advanced.claudeCode.enabled", - "canDelegate": false, - "capabilities": { - "supportsFileAttachments": true - }, - "commands": [ - { - "name": "init", - "description": "Initialize a new CLAUDE.md file with codebase documentation" - }, - { - "name": "compact", - "description": "Clear conversation history but keep a summary in context. Optional: /compact [instructions for summarization]" - }, - { - "name": "pr-comments", - "description": "Get comments from a GitHub pull request" - }, - { - "name": "review", - "description": "Review a pull request" - }, - { - "name": "security-review", - "description": "Complete a security review of the pending changes on the current branch" - } - ] - }, - { - "type": "copilotcli", - "name": "cli", - "displayName": "Background Agent", - "icon": "$(collection)", - "welcomeTitle": "Background Agent", - "welcomeMessage": "Run tasks in the background", - "inputPlaceholder": "Describe your task, type `#` for adding context", - "order": 2, - "canDelegate": true, - "description": "Delegate tasks to a background agent.", - "capabilities": { - "supportsFileAttachments": true, - "supportsProblemAttachments": true, - "supportsToolAttachments": false, - "supportsImageAttachments": true, - "supportsSymbolAttachments": true, - "supportsSearchResultAttachments": true, - "supportsSourceControlAttachments": true - }, - "commands": [ - { - "name": "delegate", - "description": "Delegate chat session to cloud agent and create associated PR" - } - ] - }, - { - "type": "copilot-cloud-agent", - "alternativeIds": [ - "copilot-swe-agent" - ], - "name": "cloud", - "displayName": "Cloud Agent", - "icon": "$(cloud)", - "welcomeTitle": "Cloud Agent", - "welcomeMessage": "Delegate tasks to the cloud", - "inputPlaceholder": "Describe your task, type `#` for adding context", - "order": 1, - "canDelegate": true, - "description": "Delegate tasks to the GitHub Copilot Cloud Agent. The agent works asynchronously in the cloud to implement changes, iterates via chat, and can create or update pull requests as needed.", - "capabilities": { - "supportsFileAttachments": true - } - } - ], - "debuggers": [ - { - "type": "vscode-chat-replay", - "label": "vscode-chat-replay", - "languages": [ - "json" - ], - "when": "resourceFilename === 'benchRun.chatReplay.json'", - "configurationAttributes": { - "launch": { - "properties": { - "program": { - "type": "string", - "description": "Chat replay file to debug (parse for headers)", - "default": "${file}" - }, - "stopOnEntry": { - "type": "boolean", - "default": true, - "description": "Break immediately to step through manually." - } - }, - "required": [ - "program" - ] - } - } - } - ], - "chatAgents": [ - { - "name": "Plan", - "path": "./assets/agents/Plan.agent.md", - "description": "Researches a task to create multi-step plans" - } - ], - "chatPromptFiles": [ - { - "name": "savePrompt", - "path": "./assets/prompts/savePrompt.prompt.md", - "description": "Generalize the current discussion into a reusable prompt and save it as a file" - } - ] - }, - "extensionPack": [ - "GitHub.copilot" - ], - "prettier": { - "useTabs": true, - "tabWidth": 4, - "singleQuote": true - }, - "scripts": { - "postinstall": "tsx ./script/postinstall.ts", - "prepare": "husky", - "vscode-dts:dev": "node node_modules/@vscode/dts/index.js dev && mv vscode.proposed.*.ts src/extension", - "vscode-dts:main": "node node_modules/@vscode/dts/index.js main && mv vscode.d.ts src/extension", - "build": "tsx .esbuild.ts", - "compile": "tsx .esbuild.ts --dev", - "watch": "npm-run-all -p watch:*", - "watch:esbuild": "tsx .esbuild.ts --watch --dev", - "watch:tsc-extension": "tsc --noEmit --watch --project tsconfig.json", - "watch:tsc-extension-web": "tsc --noEmit --watch --project tsconfig.worker.json", - "watch:tsc-simulation-workbench": "tsc --noEmit --watch --project test/simulation/workbench/tsconfig.json", - "typecheck": "tsc --noEmit --project tsconfig.json && tsc --noEmit --project test/simulation/workbench/tsconfig.json && tsc --noEmit --project tsconfig.worker.json && tsc --noEmit --project src/extension/completions-core/vscode-node/extension/src/copilotPanel/webView/tsconfig.json", - "lint": "eslint . --max-warnings=0", - "lint-staged": "eslint --max-warnings=0", - "tsfmt": "npx tsfmt -r --verify", - "test": "npm-run-all test:*", - "test:extension": "vscode-test", - "test:sanity": "vscode-test --sanity", - "test:unit": "vitest --run --pool=forks", - "vitest": "vitest", - "bench": "vitest bench", - "get_env": "tsx script/setup/getEnv.mts", - "get_token": "tsx script/setup/getToken.mts", - "prettier": "prettier --list-different --write --cache .", - "simulate": "node dist/simulationMain.js", - "simulate-require-cache": "node dist/simulationMain.js --require-cache", - "simulate-ci": "node dist/simulationMain.js --ci --require-cache", - "simulate-update-baseline": "node dist/simulationMain.js --update-baseline", - "simulate-gc": "node dist/simulationMain.js --require-cache --gc", - "setup": "npm run get_env && npm run get_token", - "setup:dotnet": "run-script-os", - "setup:dotnet:darwin:linux": "curl -O https://raw.githubusercontent.com/dotnet/install-scripts/main/src/dotnet-install.sh && chmod u+x dotnet-install.sh && ./dotnet-install.sh --channel 10.0 && rm dotnet-install.sh", - "setup:dotnet:win32": "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command \"Invoke-WebRequest -Uri https://raw.githubusercontent.com/dotnet/install-scripts/main/src/dotnet-install.ps1 -OutFile dotnet-install.ps1; ./dotnet-install.ps1 -channel 10.0; Remove-Item dotnet-install.ps1\"", - "analyze-edits": "tsx script/analyzeEdits.ts", - "extract-chat-lib": "tsx script/build/extractChatLib.ts", - "create_venv": "tsx script/setup/createVenv.mts", - "package": "vsce package", - "web": "vscode-test-web --headless --extensionDevelopmentPath=. .", - "test:prompt": "mocha \"src/extension/completions-core/vscode-node/prompt/**/test/**/*.test.{ts,tsx}\"", - "test:completions-core": "tsx src/extension/completions-core/vscode-node/extension/test/runTest.ts" - }, - "devDependencies": { - "@azure/identity": "4.9.1", - "@azure/keyvault-secrets": "^4.10.0", - "@azure/msal-node": "^3.6.3", - "@c4312/scip": "^0.1.0", - "@fluentui/react-components": "^9.66.6", - "@fluentui/react-icons": "^2.0.305", - "@hediet/node-reload": "^0.8.0", - "@keyv/sqlite": "^4.0.5", - "@octokit/types": "^14.1.0", - "@parcel/watcher": "^2.5.1", - "@stylistic/eslint-plugin": "^3.0.1", - "@types/eslint": "^9.0.0", - "@types/google-protobuf": "^3.15.12", - "@types/js-yaml": "^4.0.9", - "@types/markdown-it": "^14.0.0", - "@types/minimist": "^1.2.5", - "@types/mocha": "^10.0.10", - "@types/node": "^22.16.3", - "@types/picomatch": "^4.0.0", - "@types/react": "17.0.44", - "@types/react-dom": "^18.2.17", - "@types/sinon": "^17.0.4", - "@types/source-map-support": "^0.5.10", - "@types/tar": "^6.1.13", - "@types/vinyl": "^2.0.12", - "@types/vscode": "^1.102.0", - "@types/vscode-webview": "^1.57.4", - "@types/yargs": "^17.0.24", - "@typescript-eslint/eslint-plugin": "^8.35.0", - "@typescript-eslint/parser": "^8.32.0", - "@typescript-eslint/typescript-estree": "^8.26.1", - "@vitest/coverage-v8": "^3.2.4", - "@vitest/snapshot": "^1.5.0", - "@vscode/debugadapter": "^1.68.0", - "@vscode/debugprotocol": "^1.68.0", - "@vscode/dts": "^0.4.1", - "@vscode/lsif-language-service": "^0.1.0-pre.4", - "@vscode/test-cli": "^0.0.11", - "@vscode/test-electron": "^2.5.2", - "@vscode/test-web": "^0.0.71", - "@vscode/vsce": "3.6.0", - "copyfiles": "^2.4.1", - "csv-parse": "^6.0.0", - "dotenv": "^17.2.0", - "electron": "^37.2.1", - "esbuild": "^0.25.6", - "eslint": "^9.30.0", - "eslint-import-resolver-typescript": "^4.4.4", - "eslint-plugin-header": "^3.1.1", - "eslint-plugin-import": "^2.32.0", - "eslint-plugin-jsdoc": "^51.3.4", - "eslint-plugin-no-only-tests": "^3.3.0", - "fastq": "^1.19.1", - "glob": "^11.1.0", - "husky": "^9.1.7", - "js-yaml": "^4.1.1", - "keyv": "^5.3.2", - "lint-staged": "15.2.9", - "minimist": "^1.2.8", - "mobx": "^6.13.7", - "mobx-react-lite": "^4.1.0", - "mocha": "^11.7.1", - "mocha-junit-reporter": "^2.2.1", - "mocha-multi-reporters": "^1.5.1", - "monaco-editor": "0.44.0", - "npm-run-all": "^4.1.5", - "open": "^10.1.2", - "openai": "^6.7.0", - "outdent": "^0.8.0", - "picomatch": "^4.0.2", - "playwright": "^1.56.1", - "prettier": "^3.6.2", - "react": "^17.0.2", - "react-dom": "17.0.2", - "rimraf": "^6.0.1", - "run-script-os": "^1.1.6", - "shiki": "~1.15.0", - "sinon": "^21.0.0", - "source-map-support": "^0.5.21", - "tar": "^7.4.3", - "ts-dedent": "^2.2.0", - "tsx": "^4.20.3", - "typescript": "^5.8.3", - "typescript-eslint": "^8.36.0", - "typescript-formatter": "github:jrieken/typescript-formatter#497efb26bc40b5fa59a350e6eab17bce650a7e4b", - "vite-plugin-top-level-await": "^1.5.0", - "vite-plugin-wasm": "^3.5.0", - "vitest": "^3.0.5", - "vscode-languageserver-protocol": "^3.17.5", - "vscode-languageserver-textdocument": "^1.0.12", - "vscode-languageserver-types": "^3.17.5", - "yaml": "^2.8.0", - "yargs": "^17.7.2" - }, - "dependencies": { - "@anthropic-ai/claude-code": "^1.0.120", - "@anthropic-ai/sdk": "^0.68.0", - "@github/copilot": "^0.0.365", - "@google/genai": "^1.22.0", - "@humanwhocodes/gitignore-to-minimatch": "1.0.2", - "@microsoft/tiktokenizer": "^1.0.10", - "@sinclair/typebox": "^0.34.41", - "@vscode/copilot-api": "^0.2.5", - "@vscode/extension-telemetry": "^1.2.0", - "@vscode/l10n": "^0.0.18", - "@vscode/prompt-tsx": "^0.4.0-alpha.5", - "@vscode/tree-sitter-wasm": "0.0.5-php.2", - "@vscode/webview-ui-toolkit": "^1.3.1", - "@xterm/headless": "^5.5.0", - "ajv": "^8.17.1", - "applicationinsights": "^2.9.7", - "diff": "^8.0.2", - "dompurify": "^3.3.0", - "ignore": "^7.0.5", - "isbinaryfile": "^5.0.4", - "jsonc-parser": "^3.3.1", - "lru-cache": "^11.1.0", - "markdown-it": "^14.1.0", - "minimatch": "^10.0.3", - "undici": "^7.11.0", - "vscode-tas-client": "^0.1.84", - "web-tree-sitter": "^0.23.0" - }, - "overrides": { - "@aminya/node-gyp-build": "npm:node-gyp-build@4.8.1", - "string_decoder": "npm:string_decoder@1.2.0", - "node-gyp": "npm:node-gyp@10.3.1" - } -} +{"name":"copilot-chat","displayName":"GitHub Copilot Chat","description":"AI chat features powered by Copilot","version":"0.34.0","build":"1","internalAIKey":"1058ec22-3c95-4951-8443-f26c1f325911","completionsCoreVersion":"1.378.1799","internalLargeStorageAriaKey":"ec712b3202c5462fb6877acae7f1f9d7-c19ad55e-3e3c-4f99-984b-827f6d95bd9e-6917","ariaKey":"0c6ae279ed8443289764825290e4f9e2-1a736e7c-1324-4338-be46-fc2a58ae4d14-7255","buildType":"prod","publisher":"GitHub","homepage":"https://github.com/features/copilot?editor=vscode","license":"SEE LICENSE IN LICENSE.txt","repository":{"type":"git","url":"https://github.com/microsoft/vscode-copilot-chat"},"bugs":{"url":"https://github.com/microsoft/vscode/issues"},"qna":"https://github.com/github-community/community/discussions/categories/copilot","icon":"assets/copilot.png","pricing":"Trial","engines":{"vscode":"^1.107.0-20251119","npm":">=9.0.0","node":">=22.14.0"},"categories":["AI","Chat","Programming Languages","Machine Learning"],"keywords":["ai","openai","codex","pilot","snippets","documentation","autocomplete","intellisense","refactor","javascript","python","typescript","php","go","golang","ruby","c++","c#","java","kotlin","co-pilot"],"badges":[{"url":"https://img.shields.io/badge/GitHub%20Copilot-Subscription%20Required-orange","href":"https://github.com/github-copilot/signup?editor=vscode","description":"%github.copilot.badge.signUp%"},{"url":"https://img.shields.io/github/stars/github/copilot-docs?style=social","href":"https://github.com/github/copilot-docs","description":"%github.copilot.badge.star%"},{"url":"https://img.shields.io/youtube/channel/views/UC7c3Kb6jYCRj4JOHHZTxKsQ?style=social","href":"https://www.youtube.com/@GitHub/search?query=copilot","description":"%github.copilot.badge.youtube%"},{"url":"https://img.shields.io/twitter/follow/github?style=social","href":"https://twitter.com/github","description":"%github.copilot.badge.twitter%"}],"activationEvents":["onStartupFinished","onLanguageModelChat:copilot","onUri","onFileSystem:ccreq","onFileSystem:ccsettings","onCustomAgentsProvider","onInstructionsProvider"],"main":"./dist/extension","l10n":"./l10n","enabledApiProposals":["extensionsAny","newSymbolNamesProvider","interactive","codeActionAI","activeComment","commentReveal","contribCommentThreadAdditionalMenu","contribCommentsViewThreadMenus","documentFiltersExclusive","embeddings","findTextInFiles","findTextInFiles2","findFiles2@2","textSearchProvider","terminalDataWriteEvent","terminalExecuteCommandEvent","terminalSelection","terminalQuickFixProvider","mappedEditsProvider","aiRelatedInformation","aiSettingsSearch","chatParticipantAdditions","chatEditing","defaultChatParticipant@4","contribSourceControlInputBoxMenu","authLearnMore","testObserver","aiTextSearchProvider@2","chatParticipantPrivate@11","chatProvider@4","contribDebugCreateConfiguration","chatReferenceDiagnostic","textSearchProvider2","chatReferenceBinaryData","languageModelSystem","languageModelCapabilities","inlineCompletionsAdditions","chatStatusItem","taskProblemMatcherStatus","contribLanguageModelToolSets","textDocumentChangeReason","resolvers","taskExecutionTerminal","dataChannels","languageModelThinkingPart","chatSessionsProvider@3","devDeviceId","contribEditorContentMenu"],"contributes":{"languageModelTools":[{"name":"copilot_searchCodebase","toolReferenceName":"codebase","displayName":"%copilot.tools.searchCodebase.name%","icon":"$(folder)","userDescription":"%copilot.codebase.tool.description%","modelDescription":"Run a natural language search for relevant code or documentation comments from the user's current workspace. Returns relevant code snippets from the user's current workspace if it is large, or the full contents of the workspace if it is small.","tags":["codesearch","vscode_codesearch"],"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"The query to search the codebase for. Should contain all relevant context. Should ideally be text that might appear in the codebase, such as function names, variable names, or comments."}},"required":["query"]}},{"name":"copilot_searchWorkspaceSymbols","toolReferenceName":"symbols","displayName":"%copilot.tools.searchWorkspaceSymbols.name%","icon":"$(symbol)","userDescription":"%copilot.workspaceSymbols.tool.description%","modelDescription":"Search the user's workspace for code symbols using language services. Use this tool when the user is looking for a specific symbol in their workspace.","tags":["vscode_codesearch"],"inputSchema":{"type":"object","properties":{"symbolName":{"type":"string","description":"The symbol to search for, such as a function name, class name, or variable name."}},"required":["symbolName"]}},{"name":"copilot_listCodeUsages","toolReferenceName":"usages","legacyToolReferenceFullNames":["usages"],"displayName":"%copilot.tools.listCodeUsages.name%","icon":"$(references)","userDescription":"%copilot.listCodeUsages.tool.description%","modelDescription":"Request to list all usages (references, definitions, implementations etc) of a function, class, method, variable etc. Use this tool when \n1. Looking for a sample implementation of an interface or class\n2. Checking how a function is used throughout the codebase.\n3. Including and updating all usages when changing a function, method, or constructor","tags":["vscode_codesearch"],"inputSchema":{"type":"object","properties":{"symbolName":{"type":"string","description":"The name of the symbol, such as a function name, class name, method name, variable name, etc."},"filePaths":{"type":"array","description":"One or more file paths which likely contain the definition of the symbol. For instance the file which declares a class or function. This is optional but will speed up the invocation of this tool and improve the quality of its output.","items":{"type":"string"}}},"required":["symbolName"]}},{"name":"copilot_getVSCodeAPI","toolReferenceName":"vscodeAPI","displayName":"%copilot.tools.getVSCodeAPI.name%","icon":"$(references)","userDescription":"%copilot.vscode.tool.description%","modelDescription":"Get comprehensive VS Code API documentation and references for extension development. This tool provides authoritative documentation for VS Code's extensive API surface, including proposed APIs, contribution points, and best practices. Use this tool for understanding complex VS Code API interactions.\n\nWhen to use this tool:\n- User asks about specific VS Code APIs, interfaces, or extension capabilities\n- Need documentation for VS Code extension contribution points (commands, views, settings, etc.)\n- Questions about proposed APIs and their usage patterns\n- Understanding VS Code extension lifecycle, activation events, and packaging\n- Best practices for VS Code extension development architecture\n- API examples and code patterns for extension features\n- Troubleshooting extension-specific issues or API limitations\n\nWhen NOT to use this tool:\n- Creating simple standalone files or scripts unrelated to VS Code extensions\n- General programming questions not specific to VS Code extension development\n- Questions about using VS Code as an editor (user-facing features)\n- Non-extension related development tasks\n- File creation or editing that doesn't involve VS Code extension APIs\n\nCRITICAL usage guidelines:\n1. Always include specific API names, interfaces, or concepts in your query\n2. Mention the extension feature you're trying to implement\n3. Include context about proposed vs stable APIs when relevant\n4. Reference specific contribution points when asking about extension manifest\n5. Be specific about the VS Code version or API version when known\n\nScope: This tool is for EXTENSION DEVELOPMENT ONLY - building tools that extend VS Code itself, not for general file creation or non-extension programming tasks.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"The query to search vscode documentation for. Should contain all relevant context."}},"required":["query"]},"tags":[]},{"name":"copilot_findFiles","toolReferenceName":"fileSearch","displayName":"%copilot.tools.findFiles.name%","modelDescription":"Search for files in the workspace by glob pattern. This only returns the paths of matching files. Use this tool when you know the exact filename pattern of the files you're searching for. Glob patterns match from the root of the workspace folder. Examples:\n- **/*.{js,ts} to match all js/ts files in the workspace.\n- src/** to match all files under the top-level src folder.\n- **/foo/**/*.js to match all js files under any foo folder in the workspace.","tags":["vscode_codesearch"],"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Search for files with names or paths matching this glob pattern."},"maxResults":{"type":"number","description":"The maximum number of results to return. Do not use this unless necessary, it can slow things down. By default, only some matches are returned. If you use this and don't see what you're looking for, you can try again with a more specific query or a larger maxResults."}},"required":["query"]}},{"name":"copilot_findTextInFiles","toolReferenceName":"textSearch","displayName":"%copilot.tools.findTextInFiles.name%","modelDescription":"Do a fast text search in the workspace. Use this tool when you want to search with an exact string or regex. If you are not sure what words will appear in the workspace, prefer using regex patterns with alternation (|) or character classes to search for multiple potential words at once instead of making separate searches. For example, use 'function|method|procedure' to look for all of those words at once. Use includePattern to search within files matching a specific pattern, or in a specific file, using a relative path. Use 'includeIgnoredFiles' to include files normally ignored by .gitignore, other ignore files, and `files.exclude` and `search.exclude` settings. Warning: using this may cause the search to be slower, only set it when you want to search in ignored folders like node_modules or build outputs. Use this tool when you want to see an overview of a particular file, instead of using read_file many times to look for code within a file.","tags":["vscode_codesearch"],"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"The pattern to search for in files in the workspace. Use regex with alternation (e.g., 'word1|word2|word3') or character classes to find multiple potential words in a single search. Be sure to set the isRegexp property properly to declare whether it's a regex or plain text pattern. Is case-insensitive."},"isRegexp":{"type":"boolean","description":"Whether the pattern is a regex."},"includePattern":{"type":"string","description":"Search files matching this glob pattern. Will be applied to the relative path of files within the workspace. To search recursively inside a folder, use a proper glob pattern like \"src/folder/**\". Do not use | in includePattern."},"maxResults":{"type":"number","description":"The maximum number of results to return. Do not use this unless necessary, it can slow things down. By default, only some matches are returned. If you use this and don't see what you're looking for, you can try again with a more specific query or a larger maxResults."},"includeIgnoredFiles":{"type":"boolean","description":"Whether to include files that would normally be ignored according to .gitignore, other ignore files and `files.exclude` and `search.exclude` settings. Warning: using this may cause the search to be slower. Only set it when you want to search in ignored folders like node_modules or build outputs."}},"required":["query","isRegexp"]}},{"name":"copilot_applyPatch","displayName":"%copilot.tools.applyPatch.name%","toolReferenceName":"applyPatch","userDescription":"%copilot.tools.applyPatch.description%","modelDescription":"Edit text files. Do not use this tool to edit Jupyter notebooks. `apply_patch` allows you to execute a diff/patch against a text file, but the format of the diff specification is unique to this task, so pay careful attention to these instructions. To use the `apply_patch` command, you should pass a message of the following structure as \"input\":\n\n*** Begin Patch\n[YOUR_PATCH]\n*** End Patch\n\nWhere [YOUR_PATCH] is the actual content of your patch, specified in the following V4A diff format.\n\n*** [ACTION] File: [/absolute/path/to/file] -> ACTION can be one of Add, Update, or Delete.\nAn example of a message that you might pass as \"input\" to this function, in order to apply a patch, is shown below.\n\n*** Begin Patch\n*** Update File: /Users/someone/pygorithm/searching/binary_search.py\n@@class BaseClass\n@@ def search():\n- pass\n+ raise NotImplementedError()\n\n@@class Subclass\n@@ def search():\n- pass\n+ raise NotImplementedError()\n\n*** End Patch\nDo not use line numbers in this diff format.","inputSchema":{"type":"object","properties":{"input":{"type":"string","description":"The edit patch to apply."},"explanation":{"type":"string","description":"A short description of what the tool call is aiming to achieve."}},"required":["input","explanation"]}},{"name":"copilot_readFile","toolReferenceName":"readFile","legacyToolReferenceFullNames":["search/readFile"],"displayName":"%copilot.tools.readFile.name%","userDescription":"%copilot.tools.readFile.userDescription%","modelDescription":"Read the contents of a file.\n\nYou must specify the line range you're interested in. Line numbers are 1-indexed. If the file contents returned are insufficient for your task, you may call this tool again to retrieve more content. Prefer reading larger ranges over doing many small reads.","tags":["vscode_codesearch"],"inputSchema":{"type":"object","properties":{"filePath":{"description":"The absolute path of the file to read.","type":"string"},"startLine":{"type":"number","description":"The line number to start reading from, 1-based."},"endLine":{"type":"number","description":"The inclusive line number to end reading at, 1-based."}},"required":["filePath","startLine","endLine"]}},{"name":"copilot_listDirectory","toolReferenceName":"listDirectory","displayName":"%copilot.tools.listDirectory.name%","modelDescription":"List the contents of a directory. Result will have the name of the child. If the name ends in /, it's a folder, otherwise a file","tags":["vscode_codesearch"],"inputSchema":{"type":"object","properties":{"path":{"type":"string","description":"The absolute path to the directory to list."}},"required":["path"]}},{"name":"copilot_getErrors","displayName":"%copilot.tools.getErrors.name%","toolReferenceName":"problems","legacyToolReferenceFullNames":["problems"],"icon":"$(error)","userDescription":"%copilot.tools.errors.description%","modelDescription":"Get any compile or lint errors in a specific file or across all files. If the user mentions errors or problems in a file, they may be referring to these. Use the tool to see the same errors that the user is seeing. If the user asks you to analyze all errors, or does not specify a file, use this tool to gather errors for all files. Also use this tool after editing a file to validate the change.","tags":[],"inputSchema":{"type":"object","properties":{"filePaths":{"description":"The absolute paths to the files or folders to check for errors. Omit 'filePaths' when retrieving all errors.","type":"array","items":{"type":"string"}}}}},{"name":"copilot_readProjectStructure","displayName":"%copilot.tools.readProjectStructure.name%","modelDescription":"Get a file tree representation of the workspace.","tags":[]},{"name":"copilot_getChangedFiles","displayName":"%copilot.tools.getChangedFiles.name%","toolReferenceName":"changes","legacyToolReferenceFullNames":["changes"],"icon":"$(diff)","userDescription":"%copilot.tools.changes.description%","modelDescription":"Get git diffs of current file changes in a git repository. Don't forget that you can use run_in_terminal to run git commands in a terminal as well.","tags":["vscode_codesearch"],"inputSchema":{"type":"object","properties":{"repositoryPath":{"type":"string","description":"The absolute path to the git repository to look for changes in. If not provided, the active git repository will be used."},"sourceControlState":{"type":"array","items":{"type":"string","enum":["staged","unstaged","merge-conflicts"]},"description":"The kinds of git state to filter by. Allowed values are: 'staged', 'unstaged', and 'merge-conflicts'. If not provided, all states will be included."}}}},{"name":"copilot_testFailure","toolReferenceName":"testFailure","legacyToolReferenceFullNames":["testFailure"],"displayName":"%copilot.tools.testFailure.name%","icon":"$(beaker)","userDescription":"%copilot.testFailure.tool.description%","modelDescription":"Includes test failure information in the prompt.","inputSchema":{},"tags":["vscode_editing_with_tests","enable_other_tool_copilot_readFile","enable_other_tool_copilot_listDirectory","enable_other_tool_copilot_findFiles","enable_other_tool_copilot_runTests"]},{"name":"copilot_updateUserPreferences","toolReferenceName":"updateUserPreferences","displayName":"%copilot.tools.updateUserPreferences.name%","modelDescription":"Update the user's preferences file with new information about the user and their coding preferences, based on the current chat history.","canBeReferencedInPrompt":true,"tags":[],"inputSchema":{"type":"object","properties":{"facts":{"type":"array","items":{"type":"string"},"description":"An array of new user preferences to remember."}},"required":["facts"]},"when":"config.github.copilot.chat.enableUserPreferences"},{"name":"copilot_createNewWorkspace","displayName":"%github.copilot.tools.createNewWorkspace.name%","toolReferenceName":"newWorkspace","legacyToolReferenceFullNames":["new/newWorkspace"],"icon":"$(new-folder)","userDescription":"%github.copilot.tools.createNewWorkspace.userDescription%","when":"config.github.copilot.chat.newWorkspaceCreation.enabled","modelDescription":"Get comprehensive setup steps to help the user create complete project structures in a VS Code workspace. This tool is designed for full project initialization and scaffolding, not for creating individual files.\n\nWhen to use this tool:\n- User wants to create a new complete project from scratch\n- Setting up entire project frameworks (TypeScript projects, React apps, Node.js servers, etc.)\n- Initializing Model Context Protocol (MCP) servers with full structure\n- Creating VS Code extensions with proper scaffolding\n- Setting up Next.js, Vite, or other framework-based projects\n- User asks for \"new project\", \"create a workspace\", \"set up a [framework] project\"\n- Need to establish complete development environment with dependencies, config files, and folder structure\n\nWhen NOT to use this tool:\n- Creating single files or small code snippets\n- Adding individual files to existing projects\n- Making modifications to existing codebases\n- User asks to \"create a file\" or \"add a component\"\n- Simple code examples or demonstrations\n- Debugging or fixing existing code\n\nThis tool provides complete project setup including:\n- Folder structure creation\n- Package.json and dependency management\n- Configuration files (tsconfig, eslint, etc.)\n- Initial boilerplate code\n- Development environment setup\n- Build and run instructions\n\nUse other file creation tools for individual files within existing projects.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"The query to use to generate the new workspace. This should be a clear and concise description of the workspace the user wants to create."}},"required":["query"]},"tags":["enable_other_tool_install_extension","enable_other_tool_get_project_setup_info"]},{"name":"copilot_getProjectSetupInfo","displayName":"%github.copilot.tools.getProjectSetupInfo.name%","when":"config.github.copilot.chat.newWorkspaceCreation.enabled","toolReferenceName":"getProjectSetupInfo","legacyToolReferenceFullNames":["new/getProjectSetupInfo"],"modelDescription":"Do not call this tool without first calling the tool to create a workspace. This tool provides a project setup information for a Visual Studio Code workspace based on a project type and programming language.","inputSchema":{"type":"object","properties":{"projectType":{"type":"string","description":"The type of project to create. Supported values are: 'python-script', 'python-project', 'mcp-server', 'model-context-protocol-server', 'vscode-extension', 'next-js', 'vite' and 'other'"}},"required":["projectType"]},"tags":[]},{"name":"copilot_installExtension","displayName":"Install Extension in VS Code","when":"config.github.copilot.chat.newWorkspaceCreation.enabled","toolReferenceName":"installExtension","legacyToolReferenceFullNames":["new/installExtension"],"modelDescription":"Install an extension in VS Code. Use this tool to install an extension in Visual Studio Code as part of a new workspace creation process only.","inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the extension to install. This should be in the format .."},"name":{"type":"string","description":"The name of the extension to install. This should be a clear and concise description of the extension."}},"required":["id","name"]},"tags":[]},{"name":"copilot_runVscodeCommand","displayName":"Run VS Code Command","when":"config.github.copilot.chat.newWorkspaceCreation.enabled","toolReferenceName":"runCommand","legacyToolReferenceFullNames":["new/runVscodeCommand"],"modelDescription":"Run a command in VS Code. Use this tool to run a command in Visual Studio Code as part of a new workspace creation process only.","inputSchema":{"type":"object","properties":{"commandId":{"type":"string","description":"The ID of the command to execute. This should be in the format ."},"name":{"type":"string","description":"The name of the command to execute. This should be a clear and concise description of the command."},"args":{"type":"array","description":"The arguments to pass to the command. This should be an array of strings.","items":{"type":"string"}}},"required":["commandId","name"]},"tags":[]},{"name":"copilot_createNewJupyterNotebook","displayName":"Create New Jupyter Notebook","icon":"$(notebook)","toolReferenceName":"createJupyterNotebook","legacyToolReferenceFullNames":["newJupyterNotebook"],"modelDescription":"Generates a new Jupyter Notebook (.ipynb) in VS Code. Jupyter Notebooks are interactive documents commonly used for data exploration, analysis, visualization, and combining code with narrative text. Prefer creating plain Python files or similar unless a user explicitly requests creating a new Jupyter Notebook or already has a Jupyter Notebook opened or exists in the workspace.","userDescription":"%copilot.tools.newJupyterNotebook.description%","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"The query to use to generate the jupyter notebook. This should be a clear and concise description of the notebook the user wants to create."}},"required":["query"]},"tags":[]},{"name":"copilot_insertEdit","toolReferenceName":"insertEdit","displayName":"%copilot.tools.insertEdit.name%","modelDescription":"Insert new code into an existing file in the workspace. Use this tool once per file that needs to be modified, even if there are multiple changes for a file. Generate the \"explanation\" property first.\nThe system is very smart and can understand how to apply your edits to the files, you just need to provide minimal hints.\nAvoid repeating existing code, instead use comments to represent regions of unchanged code. Be as concise as possible. For example:\n// ...existing code...\n{ changed code }\n// ...existing code...\n{ changed code }\n// ...existing code...\n\nHere is an example of how you should use format an edit to an existing Person class:\nclass Person {\n\t// ...existing code...\n\tage: number;\n\t// ...existing code...\n\tgetAge() {\n\treturn this.age;\n\t}\n}","tags":[],"inputSchema":{"type":"object","properties":{"explanation":{"type":"string","description":"A short explanation of the edit being made."},"filePath":{"type":"string","description":"An absolute path to the file to edit."},"code":{"type":"string","description":"The code change to apply to the file.\nThe system is very smart and can understand how to apply your edits to the files, you just need to provide minimal hints.\nAvoid repeating existing code, instead use comments to represent regions of unchanged code. Be as concise as possible. For example:\n// ...existing code...\n{ changed code }\n// ...existing code...\n{ changed code }\n// ...existing code...\n\nHere is an example of how you should use format an edit to an existing Person class:\nclass Person {\n\t// ...existing code...\n\tage: number;\n\t// ...existing code...\n\tgetAge() {\n\t\treturn this.age;\n\t}\n}"}},"required":["explanation","filePath","code"]}},{"name":"copilot_createFile","toolReferenceName":"createFile","legacyToolReferenceFullNames":["createFile"],"displayName":"%copilot.tools.createFile.name%","userDescription":"%copilot.tools.createFile.description%","modelDescription":"This is a tool for creating a new file in the workspace. The file will be created with the specified content. The directory will be created if it does not already exist. Never use this tool to edit a file that already exists.","tags":[],"inputSchema":{"type":"object","properties":{"filePath":{"type":"string","description":"The absolute path to the file to create."},"content":{"type":"string","description":"The content to write to the file."}},"required":["filePath","content"]}},{"name":"copilot_createDirectory","toolReferenceName":"createDirectory","legacyToolReferenceFullNames":["createDirectory"],"displayName":"%copilot.tools.createDirectory.name%","userDescription":"%copilot.tools.createDirectory.description%","modelDescription":"Create a new directory structure in the workspace. Will recursively create all directories in the path, like mkdir -p. You do not need to use this tool before using create_file, that tool will automatically create the needed directories.","tags":[],"inputSchema":{"type":"object","properties":{"dirPath":{"type":"string","description":"The absolute path to the directory to create."}},"required":["dirPath"]}},{"name":"copilot_openSimpleBrowser","displayName":"%copilot.tools.openSimpleBrowser.name%","modelDescription":"Preview a website or open a URL in the editor's Simple Browser. Useful for quickly viewing locally hosted websites, demos, or resources without leaving the coding environment.","userDescription":"%copilot.tools.openSimpleBrowser.description%","toolReferenceName":"openSimpleBrowser","legacyToolReferenceFullNames":["openSimpleBrowser"],"tags":[],"inputSchema":{"type":"object","properties":{"url":{"type":"string","description":"The website URL to preview or open in the Simple Browser inside the editor. Must be either an http or https URL"}},"required":["url"]}},{"name":"copilot_replaceString","toolReferenceName":"replaceString","displayName":"%copilot.tools.replaceString.name%","modelDescription":"This is a tool for making edits in an existing file in the workspace. For moving or renaming files, use run in terminal tool with the 'mv' command instead. For larger edits, split them into smaller edits and call the edit tool multiple times to ensure accuracy. Before editing, always ensure you have the context to understand the file's contents and context. To edit a file, provide: 1) filePath (absolute path), 2) oldString (MUST be the exact literal text to replace including all whitespace, indentation, newlines, and surrounding code etc), and 3) newString (MUST be the exact literal text to replace \\`oldString\\` with (also including all whitespace, indentation, newlines, and surrounding code etc.). Ensure the resulting code is correct and idiomatic.). Each use of this tool replaces exactly ONE occurrence of oldString.\n\nCRITICAL for \\`oldString\\`: Must uniquely identify the single instance to change. Include at least 3 lines of context BEFORE and AFTER the target text, matching whitespace and indentation precisely. If this string matches multiple locations, or does not match exactly, the tool will fail. Never use 'Lines 123-456 omitted' from summarized documents or ...existing code... comments in the oldString or newString.","when":"!config.github.copilot.chat.disableReplaceTool","inputSchema":{"type":"object","properties":{"filePath":{"type":"string","description":"An absolute path to the file to edit."},"oldString":{"type":"string","description":"The exact literal text to replace, preferably unescaped. For single replacements (default), include at least 3 lines of context BEFORE and AFTER the target text, matching whitespace and indentation precisely. For multiple replacements, specify expected_replacements parameter. If this string is not the exact literal text (i.e. you escaped it) or does not match exactly, the tool will fail."},"newString":{"type":"string","description":"The exact literal text to replace `old_string` with, preferably unescaped. Provide the EXACT text. Ensure the resulting code is correct and idiomatic."}},"required":["filePath","oldString","newString"]}},{"name":"copilot_multiReplaceString","toolReferenceName":"multiReplaceString","displayName":"%copilot.tools.multiReplaceString.name%","modelDescription":"This tool allows you to apply multiple replace_string_in_file operations in a single call, which is more efficient than calling replace_string_in_file multiple times. It takes an array of replacement operations and applies them sequentially. Each replacement operation has the same parameters as replace_string_in_file: filePath, oldString, newString, and explanation. This tool is ideal when you need to make multiple edits across different files or multiple edits in the same file. The tool will provide a summary of successful and failed operations.","when":"!config.github.copilot.chat.disableReplaceTool","inputSchema":{"type":"object","properties":{"explanation":{"type":"string","description":"A brief explanation of what the multi-replace operation will accomplish."},"replacements":{"type":"array","description":"An array of replacement operations to apply sequentially.","items":{"type":"object","properties":{"explanation":{"type":"string","description":"A brief explanation of this specific replacement operation."},"filePath":{"type":"string","description":"An absolute path to the file to edit."},"oldString":{"type":"string","description":"The exact literal text to replace, preferably unescaped. Include at least 3 lines of context BEFORE and AFTER the target text, matching whitespace and indentation precisely. If this string is not the exact literal text or does not match exactly, this replacement will fail."},"newString":{"type":"string","description":"The exact literal text to replace `oldString` with, preferably unescaped. Provide the EXACT text. Ensure the resulting code is correct and idiomatic."}},"required":["explanation","filePath","oldString","newString"]},"minItems":1}},"required":["explanation","replacements"]}},{"name":"copilot_editNotebook","toolReferenceName":"editNotebook","icon":"$(pencil)","displayName":"%copilot.tools.editNotebook.name%","userDescription":"%copilot.tools.editNotebook.userDescription%","modelDescription":"This is a tool for editing an existing Notebook file in the workspace. Generate the \"explanation\" property first.\nThe system is very smart and can understand how to apply your edits to the notebooks.\nWhen updating the content of an existing cell, ensure newCode preserves whitespace and indentation exactly and does NOT include any code markers such as (...existing code...).","tags":["enable_other_tool_copilot_getNotebookSummary"],"inputSchema":{"type":"object","properties":{"filePath":{"type":"string","description":"An absolute path to the notebook file to edit, or the URI of a untitled, not yet named, file, such as `untitled:Untitled-1."},"cellId":{"type":"string","description":"Id of the cell that needs to be deleted or edited. Use the value `TOP`, `BOTTOM` when inserting a cell at the top or bottom of the notebook, else provide the id of the cell after which a new cell is to be inserted. Remember, if a cellId is provided and editType=insert, then a cell will be inserted after the cell with the provided cellId."},"newCode":{"anyOf":[{"type":"string","description":"The code for the new or existing cell to be edited. Code should not be wrapped within tags. Do NOT include code markers such as (...existing code...) to indicate existing code."},{"type":"array","items":{"type":"string","description":"The code for the new or existing cell to be edited. Code should not be wrapped within tags"}}]},"language":{"type":"string","description":"The language of the cell. `markdown`, `python`, `javascript`, `julia`, etc."},"editType":{"type":"string","enum":["insert","delete","edit"],"description":"The operation peformed on the cell, whether `insert`, `delete` or `edit`.\nUse the `editType` field to specify the operation: `insert` to add a new cell, `edit` to modify an existing cell's content, and `delete` to remove a cell."}},"required":["filePath","editType","cellId"]}},{"name":"copilot_runNotebookCell","displayName":"%copilot.tools.runNotebookCell.name%","toolReferenceName":"runNotebookCell","legacyToolReferenceFullNames":["runNotebooks/runCell"],"icon":"$(play)","modelDescription":"This is a tool for running a code cell in a notebook file directly in the notebook editor. The output from the execution will be returned. Code cells should be run as they are added or edited when working through a problem to bring the kernel state up to date and ensure the code executes successfully. Code cells are ready to run and don't require any pre-processing. If asked to run the first cell in a notebook, you should run the first code cell since markdown cells cannot be executed. NOTE: Avoid executing Markdown cells or providing Markdown cell IDs, as Markdown cells cannot be executed.","userDescription":"%copilot.tools.runNotebookCell.description%","tags":["enable_other_tool_copilot_getNotebookSummary"],"inputSchema":{"type":"object","properties":{"filePath":{"type":"string","description":"An absolute path to the notebook file with the cell to run, or the URI of a untitled, not yet named, file, such as `untitled:Untitled-1.ipynb"},"reason":{"type":"string","description":"An optional explanation of why the cell is being run. This will be shown to the user before the tool is run and is not necessary if it's self-explanatory."},"cellId":{"type":"string","description":"The ID for the code cell to execute. Avoid providing markdown cell IDs as nothing will be executed."},"continueOnError":{"type":"boolean","description":"Whether or not execution should continue for remaining cells if an error is encountered. Default to false unless instructed otherwise."}},"required":["filePath","cellId"]}},{"name":"copilot_getNotebookSummary","toolReferenceName":"getNotebookSummary","legacyToolReferenceFullNames":["runNotebooks/getNotebookSummary"],"displayName":"Get the structure of a notebook","modelDescription":"This is a tool returns the list of the Notebook cells along with the id, cell types, line ranges, language, execution information and output mime types for each cell. This is useful to get Cell Ids when executing a notebook or determine what cells have been executed and what order, or what cells have outputs. If required to read contents of a cell use this to determine the line range of a cells, and then use read_file tool to read a specific line range. Requery this tool if the contents of the notebook change.","tags":[],"inputSchema":{"type":"object","properties":{"filePath":{"type":"string","description":"An absolute path to the notebook file with the cell to run, or the URI of a untitled, not yet named, file, such as `untitled:Untitled-1.ipynb"}},"required":["filePath"]}},{"name":"copilot_readNotebookCellOutput","displayName":"%copilot.tools.getNotebookCellOutput.name%","toolReferenceName":"readNotebookCellOutput","legacyToolReferenceFullNames":["runNotebooks/readNotebookCellOutput"],"icon":"$(notebook-render-output)","modelDescription":"This tool will retrieve the output for a notebook cell from its most recent execution or restored from disk. The cell may have output even when it has not been run in the current kernel session. This tool has a higher token limit for output length than the runNotebookCell tool.","userDescription":"%copilot.tools.getNotebookCellOutput.description%","when":"userHasOpenedNotebook","tags":[],"inputSchema":{"type":"object","properties":{"filePath":{"type":"string","description":"An absolute path to the notebook file with the cell to run, or the URI of a untitled, not yet named, file, such as `untitled:Untitled-1.ipynb"},"cellId":{"type":"string","description":"The ID of the cell for which output should be retrieved."}},"required":["filePath","cellId"]}},{"name":"copilot_fetchWebPage","displayName":"%copilot.tools.fetchWebPage.name%","toolReferenceName":"fetch","legacyToolReferenceFullNames":["fetch"],"when":"!isWeb","icon":"$(globe)","userDescription":"%copilot.tools.fetchWebPage.description%","modelDescription":"Fetches the main content from a web page. This tool is useful for summarizing or analyzing the content of a webpage. You should use this tool when you think the user is looking for information from a specific webpage.","tags":[],"inputSchema":{"type":"object","properties":{"urls":{"type":"array","items":{"type":"string"},"description":"An array of URLs to fetch content from."},"query":{"type":"string","description":"The query to search for in the web page's content. This should be a clear and concise description of the content you want to find."}},"required":["urls","query"]}},{"name":"copilot_findTestFiles","displayName":"%copilot.tools.findTestFiles.name%","icon":"$(beaker)","canBeReferencedInPrompt":false,"toolReferenceName":"findTestFiles","userDescription":"%copilot.tools.findTestFiles.description%","modelDescription":"For a source code file, find the file that contains the tests. For a test file find the file that contains the code under test.","tags":[],"inputSchema":{"type":"object","properties":{"filePaths":{"type":"array","items":{"type":"string"}}},"required":["filePaths"]}},{"name":"copilot_getDocInfo","displayName":"%copilot.tools.getDocInfo.name%","icon":"$(beaker)","canBeReferencedInPrompt":false,"toolReferenceName":"docInfo","userDescription":"%copilot.tools.getDocInfo.description%","modelDescription":"Find information about how to document it a symbol like a class or function. This tool is useful for generating documentation comments for code symbols. You should use this tool when you think the user is looking for information about how to document a specific code symbol.","tags":[],"inputSchema":{"type":"object","properties":{"filePaths":{"type":"array","items":{"type":"string"},"description":"The file paths for which documentation information is needed."}},"required":["filePaths"]}},{"name":"copilot_getSearchResults","toolReferenceName":"searchResults","displayName":"%github.copilot.tools.searchResults.name%","icon":"$(search)","userDescription":"%github.copilot.tools.searchResults.description%","modelDescription":"The results from the search view"},{"name":"copilot_githubRepo","toolReferenceName":"githubRepo","legacyToolReferenceFullNames":["githubRepo"],"displayName":"%github.copilot.tools.githubRepo.name%","modelDescription":"Searches a GitHub repository for relevant source code snippets. Only use this tool if the user is very clearly asking for code snippets from a specific GitHub repository. Do not use this tool for Github repos that the user has open in their workspace.","userDescription":"%github.copilot.tools.githubRepo.userDescription%","icon":"$(repo)","when":"!config.github.copilot.chat.githubMcpServer.enabled","inputSchema":{"type":"object","properties":{"repo":{"type":"string","description":"The name of the Github repository to search for code in. Should must be formatted as '/'."},"query":{"type":"string","description":"The query to search for repo. Should contain all relevant context."}},"required":["repo","query"]}},{"name":"copilot_toolReplay","modelDescription":"Replays a tool call from a previous chat session.","displayName":"tool replay","when":"false","inputSchema":{"type":"object","properties":{"toolCallId":{"type":"string","description":"the id of the tool original tool call"},"toolName":{"type":"string","description":"the name of the tool being replayed"},"toolCallArgs":{"type":"object","description":"the arguments of the tool call"}}}},{"name":"copilot_memory","toolReferenceName":"memory","displayName":"%copilot.tools.memory.name%","userDescription":"%copilot.tools.memory.description%","modelDescription":"Manage persistent memory across conversations. This tool allows you to create, view, update, and delete memory files that persist between chat sessions. Use this to remember important information about the user, their preferences, project context, or anything that should be recalled in future conversations. Available commands: view (list/read memories), create (new memory file), str_replace (edit content), insert (add content), delete (remove memory), rename (change filename).","icon":"$(database)","when":"config.github.copilot.chat.tools.memory.enabled","canBeReferencedInPrompt":true,"tags":[],"inputSchema":{"type":"object","properties":{"command":{"type":"string","enum":["view","create","str_replace","insert","delete","rename"],"description":"The memory operation to perform:\n- view: Show directory contents or file contents (optional line ranges)\n- create: Create or overwrite a file\n- str_replace: Replace text in a file\n- insert: Insert text at a specific line\n- delete: Delete a file or directory\n- rename: Rename or move a file or directory"},"path":{"type":"string","description":"Path to the memory file or directory. Must start with /memories.\n- For view: /memories or /memories/file.md\n- For create/str_replace/insert/delete: /memories/file.md\n- Not used for rename (use old_path/new_path instead)"},"view_range":{"type":"array","items":{"type":"number"},"minItems":2,"maxItems":2,"description":"[view only] Optional line range [start, end] to view specific lines. Example: [1, 10]"},"file_text":{"type":"string","description":"[create only] Content to write to the file. Required for create command."},"old_str":{"type":"string","description":"[str_replace only] The exact literal text to find and replace. Must be unique in the file. Required for str_replace command."},"new_str":{"type":"string","description":"[str_replace only] The exact literal text to replace old_str with. Can be empty string. Required for str_replace command."},"insert_line":{"type":"number","description":"[insert only] Line number at which to insert text (0-indexed, 0 = before first line). Required for insert command."},"insert_text":{"type":"string","description":"[insert only] Text to insert at the specified line. Required for insert command."},"old_path":{"type":"string","description":"[rename only] Current path of the file or directory. Must start with /memories. Required for rename command."},"new_path":{"type":"string","description":"[rename only] New path for the file or directory. Must start with /memories. Required for rename command."}},"required":["command"]}},{"name":"copilot_editFiles","modelDescription":"This is a placeholder tool, do not use","userDescription":"Edit files","icon":"$(pencil)","displayName":"Edit Files","toolReferenceName":"editFiles","legacyToolReferenceFullNames":["editFiles"]}],"languageModelToolSets":[{"name":"edit","description":"%copilot.toolSet.editing.description%","icon":"$(pencil)","tools":["createDirectory","createFile","createJupyterNotebook","editFiles","editNotebook"]},{"name":"execute","description":"","tools":["runNotebookCell","testFailure"]},{"name":"read","description":"%copilot.toolSet.read.description%","icon":"$(eye)","tools":["getNotebookSummary","readFile","readNotebookCellOutput"]},{"name":"search","description":"%copilot.toolSet.search.description%","icon":"$(search)","tools":["changes","codebase","fileSearch","listDirectory","problems","searchResults","textSearch","usages"]},{"name":"vscode","description":"","tools":["getProjectSetupInfo","installExtension","newWorkspace","openSimpleBrowser","runCommand","vscodeAPI"]},{"name":"web","description":"%copilot.toolSet.web.description%","icon":"$(globe)","tools":["fetch","githubRepo"]}],"chatParticipants":[{"id":"github.copilot.default","name":"GitHubCopilot","fullName":"GitHub Copilot","description":"%copilot.description%","isDefault":true,"locations":["panel"],"modes":["ask"],"disambiguation":[{"category":"generate_code_sample","description":"The user wants to generate code snippets without referencing the contents of the current workspace. This category does not include generating entire projects.","examples":["Write an example of computing a SHA256 hash."]},{"category":"add_feature_to_file","description":"The user wants to change code in a file that is provided in their request, without referencing the contents of the current workspace. This category does not include generating entire projects.","examples":["Add a refresh button to the table widget."]},{"category":"question_about_specific_files","description":"The user has a question about a specific file or code snippet that they have provided as part of their query, and the question does not require additional workspace context to answer.","examples":["What does this file do?"]}]},{"id":"github.copilot.editingSession","name":"GitHubCopilot","fullName":"GitHub Copilot","description":"%copilot.edits.description%","isDefault":true,"locations":["panel"],"modes":["edit"],"when":"!config.chat.edits2.enabled"},{"id":"github.copilot.editingSessionEditor","name":"GitHubCopilot","fullName":"GitHub Copilot","description":"%copilot.edits.description%","isDefault":true,"locations":["editor"],"commands":[{"name":"generate","when":"!config.chat.edits2.enabled","description":"%copilot.workspace.generate.description%","disambiguation":[{"category":"generate","description":"Generate new code","examples":["Add a function that returns the sum of two numbers"]}]},{"name":"edit","when":"!config.chat.edits2.enabled","description":"%copilot.workspace.edit.inline.description%","disambiguation":[{"category":"edit","description":"Make changes to existing code","examples":["Change this method to use async/await"]}]},{"name":"doc","when":"!config.chat.edits2.enabled","description":"%copilot.workspace.doc.description%","disambiguation":[{"category":"doc","description":"Add documentation comment for this symbol","examples":["Add jsdoc to this method"]}]},{"name":"fix","when":"!config.chat.edits2.enabled","description":"%copilot.workspace.fix.description%","disambiguation":[{"category":"fix","description":"Propose a fix for the problems in the selected code","examples":["There is a problem in this code. Rewrite the code to show it with the bug fixed."]}]},{"name":"tests","when":"!config.chat.edits2.enabled","description":"%copilot.workspace.tests.description%","disambiguation":[{"category":"tests","description":"Generate unit tests for the selected code. The user does not want to fix their existing tests.","examples":["Write a set of detailed unit test functions for the code above."]}]}]},{"id":"github.copilot.editingSession2","name":"GitHubCopilot","fullName":"GitHub Copilot","description":"%copilot.edits.description%","isDefault":true,"locations":["panel"],"modes":["edit"],"when":"config.chat.edits2.enabled"},{"id":"github.copilot.editsAgent","name":"agent","fullName":"GitHub Copilot","description":"%copilot.agent.description%","locations":["panel"],"modes":["agent"],"isEngine":true,"isDefault":true,"isAgent":true,"when":"config.chat.agent.enabled","commands":[{"name":"list"},{"name":"error","description":"Make a model request which will result in an error","when":"github.copilot.chat.debug"}]},{"id":"github.copilot.notebook","name":"GitHubCopilot","fullName":"GitHub Copilot","description":"%copilot.description%","isDefault":true,"locations":["notebook"],"when":"!config.inlineChat.notebookAgent","commands":[{"name":"fix","description":"%copilot.workspace.fix.description%"},{"name":"explain","description":"%copilot.workspace.explain.description%"}]},{"id":"github.copilot.notebookEditorAgent","name":"GitHubCopilot","fullName":"GitHub Copilot","description":"%copilot.description%","isDefault":true,"locations":["notebook"],"when":"config.inlineChat.notebookAgent","commands":[{"name":"fix","description":"%copilot.workspace.fix.description%"},{"name":"explain","description":"%copilot.workspace.explain.description%"}]},{"id":"github.copilot.workspace","name":"workspace","fullName":"Workspace","description":"%copilot.workspace.description%","when":"!github.copilot.interactiveSession.disabled","sampleRequest":"%copilot.workspace.sampleRequest%","locations":["panel"],"disambiguation":[{"category":"workspace_project_questions","description":"The user wants to learn about or update the code or files in their current workspace. Questions in this category may be about understanding what the whole workspace does or locating the implementation of some code. This does not include generating or updating tests.","examples":["What does this project do?"]},{"category":"find_code_in_workspace","description":"The user wants to locate the implementation of some functionality in their current workspace.","examples":["Where is the tree widget implemented?"]},{"category":"generate_with_workspace_context","description":"The user wants to generate code based on multiple files in the workspace and did not specify which files to reference.","examples":["Create a README for this project."]}],"commands":[{"name":"explain","description":"%copilot.workspace.explain.description%"},{"name":"review","description":"%copilot.workspace.review.description%","when":"github.copilot.advanced.review.intent"},{"name":"tests","description":"%copilot.workspace.tests.description%","disambiguation":[{"category":"create_tests","description":"The user wants to generate unit tests.","examples":["Generate tests for my selection using pytest."]}]},{"name":"fix","description":"%copilot.workspace.fix.description%","sampleRequest":"%copilot.workspace.fix.sampleRequest%"},{"name":"new","description":"%copilot.workspace.new.description%","sampleRequest":"%copilot.workspace.new.sampleRequest%","isSticky":true,"disambiguation":[{"category":"create_new_workspace_or_extension","description":"The user wants to create a complete Visual Studio Code workspace from scratch, such as a new application or a Visual Studio Code extension. Use this category only if the question relates to generating or creating new workspaces in Visual Studio Code. Do not use this category for updating existing code or generating sample code snippets","examples":["Scaffold a Node server.","Create a sample project which uses the fileSystemProvider API.","react application"]}]},{"name":"newNotebook","description":"%copilot.workspace.newNotebook.description%","sampleRequest":"%copilot.workspace.newNotebook.sampleRequest%","disambiguation":[{"category":"create_jupyter_notebook","description":"The user wants to create a new Jupyter notebook in Visual Studio Code.","examples":["Create a notebook to analyze this CSV file."]}]},{"name":"semanticSearch","description":"%copilot.workspace.semanticSearch.description%","sampleRequest":"%copilot.workspace.semanticSearch.sampleRequest%","when":"config.github.copilot.semanticSearch.enabled"},{"name":"setupTests","description":"%copilot.vscode.setupTests.description%","sampleRequest":"%copilot.vscode.setupTests.sampleRequest%","when":"config.github.copilot.chat.setupTests.enabled","disambiguation":[{"category":"set_up_tests","description":"The user wants to configure project test setup, framework, or test runner. The user does not want to fix their existing tests.","examples":["Set up tests for this project."]}]}]},{"id":"github.copilot.vscode","name":"vscode","fullName":"VS Code","description":"%copilot.vscode.description%","when":"!github.copilot.interactiveSession.disabled","sampleRequest":"%copilot.vscode.sampleRequest%","locations":["panel"],"disambiguation":[{"category":"vscode_configuration_questions","description":"The user wants to learn about, use, or configure the Visual Studio Code. Use this category if the users question is specifically about commands, settings, keybindings, extensions and other features available in Visual Studio Code. Do not use this category to answer questions about generating code or creating new projects including Visual Studio Code extensions.","examples":["Switch to light mode.","Keyboard shortcut to toggle terminal visibility.","Settings to enable minimap.","Whats new in the latest release?"]},{"category":"configure_python_environment","description":"The user wants to set up their Python environment.","examples":["Create a virtual environment for my project."]}],"commands":[{"name":"search","description":"%copilot.vscode.search.description%","sampleRequest":"%copilot.vscode.search.sampleRequest%"}]},{"id":"github.copilot.terminal","name":"terminal","fullName":"Terminal","description":"%copilot.terminal.description%","when":"!github.copilot.interactiveSession.disabled","sampleRequest":"%copilot.terminal.sampleRequest%","isDefault":true,"locations":["terminal"],"commands":[{"name":"explain","description":"%copilot.terminal.explain.description%","sampleRequest":"%copilot.terminal.explain.sampleRequest%"}]},{"id":"github.copilot.terminalPanel","name":"terminal","fullName":"Terminal","description":"%copilot.terminalPanel.description%","when":"!github.copilot.interactiveSession.disabled","sampleRequest":"%copilot.terminal.sampleRequest%","locations":["panel"],"commands":[{"name":"explain","description":"%copilot.terminal.explain.description%","sampleRequest":"%copilot.terminal.explain.sampleRequest%","disambiguation":[{"category":"terminal_state_questions","description":"The user wants to learn about specific state such as the selection, command, or failed command in the integrated terminal in Visual Studio Code.","examples":["Why did the latest terminal command fail?"]}]}]},{"id":"github.copilot.chatReplay","name":"chatReplay","fullName":"Chat Replay","when":"debugType == 'vscode-chat-replay'","locations":["panel"]}],"languageModelChatProviders":[{"vendor":"copilot","displayName":"Copilot"},{"vendor":"azure","displayName":"Azure","managementCommand":"github.copilot.chat.manageBYOK"},{"vendor":"anthropic","displayName":"Anthropic","managementCommand":"github.copilot.chat.manageBYOK"},{"vendor":"xai","displayName":"xAI","managementCommand":"github.copilot.chat.manageBYOK"},{"vendor":"ollama","displayName":"Ollama"},{"vendor":"openai","displayName":"OpenAI","managementCommand":"github.copilot.chat.manageBYOK"},{"vendor":"gemini","displayName":"Google","managementCommand":"github.copilot.chat.manageBYOK"},{"vendor":"groq","displayName":"Groq","managementCommand":"github.copilot.chat.manageBYOK"},{"vendor":"openrouter","displayName":"OpenRouter","managementCommand":"github.copilot.chat.manageBYOK"},{"vendor":"customoai","when":"productQualityType != 'stable'","displayName":"OpenAI Compatible","managementCommand":"github.copilot.chat.manageBYOK"}],"interactiveSession":[{"label":"GitHub Copilot","id":"copilot","icon":"","when":"!github.copilot.interactiveSession.disabled"}],"mcpServerDefinitionProviders":[{"id":"github","label":"GitHub"}],"viewsWelcome":[{"view":"debug","when":"github.copilot-chat.activated","contents":"%github.copilot.viewsWelcome.debug%"},{"view":"codex-placeholder","when":"true","contents":"%github.copilot.viewsWelcome.codexPlaceholder%"},{"view":"workbench.view.chat.sessions.openai-codex","contents":"%github.copilot.viewsWelcome.codexWelcomeView%"},{"view":"copilot-agents-placeholder","when":"true","contents":"%github.copilot.viewsWelcome.agentsPlaceholder%"},{"view":"workbench.view.chat.sessions.copilot-cloud-agent","when":"github.copilot.auth.missingPermissiveSession","contents":"%github.copilot.viewsWelcome.noPermissiveToken.contents%"},{"view":"workbench.view.chat.sessions.copilot-cloud-agent","when":"workspaceFolderCount == 0","contents":"%github.copilot.viewsWelcome.noFolder.contents%"},{"view":"workbench.view.chat.sessions.copilot-cloud-agent","when":"git.state == initialized && gitOpenRepositoryCount == 0 && workspaceFolderCount > 0 && git.parentRepositoryCount == 0","contents":"%github.copilot.viewsWelcome.noRepo.contents%"},{"view":"workbench.view.chat.sessions.copilot-cloud-agent","when":"git.state == initialized && workspaceFolderCount > 0 && (git.parentRepositoryCount > 0 || gitOpenRepositoryCount > 0) && !github:hasGitHubRemotes","contents":"%github.copilot.viewsWelcome.noGitHub.contents%"},{"view":"workbench.view.chat.sessions.copilot-cloud-agent","when":"github.copilot.chat.cloudSessionsEmpty","contents":"%github.copilot.viewsWelcome.cloudSessionsEmpty.contents%"},{"view":"workbench.view.chat.sessions.copilotcli","when":"github.copilot.chat.cliSessionsEmpty","contents":"%github.copilot.viewsWelcome.cliSessionsEmpty.contents%"}],"chatViewsWelcome":[{"icon":"$(copilot-large)","title":"Ask Copilot","content":"%github.copilot.viewsWelcome.individual.expired%","when":"github.copilot.interactiveSession.individual.expired"},{"icon":"$(copilot-large)","title":"Ask Copilot","content":"%github.copilot.viewsWelcome.enterprise%","when":"github.copilot.interactiveSession.enterprise.disabled"},{"icon":"$(copilot-large)","title":"Ask Copilot","content":"%github.copilot.viewsWelcome.offline%","when":"github.copilot.offline"},{"icon":"$(copilot-large)","title":"Ask Copilot","content":"%github.copilot.viewsWelcome.contactSupport%","when":"github.copilot.interactiveSession.contactSupport"},{"icon":"$(copilot-large)","title":"Ask Copilot","content":"%github.copilot.viewsWelcome.chatDisabled%","when":"github.copilot.interactiveSession.chatDisabled"},{"icon":"$(copilot-large)","title":"Ask Copilot","content":"%github.copilot.viewsWelcome.switchToReleaseChannel%","when":"github.copilot.interactiveSession.switchToReleaseChannel"}],"commands":[{"command":"github.copilot.chat.triggerPermissiveSignIn","title":"%github.copilot.command.triggerPermissiveSignIn%"},{"command":"github.copilot.claude.sessions.refresh","title":"%github.copilot.command.refreshClaudeCodeSessions%","icon":"$(refresh)","category":"Claude Code"},{"command":"github.copilot.cli.sessions.refresh","title":"%github.copilot.command.refreshAgentSessions%","icon":"$(refresh)","category":"Copilot CLI"},{"command":"github.copilot.cli.sessions.delete","title":"%github.copilot.command.deleteAgentSession%","icon":"$(close)","category":"Copilot CLI"},{"command":"github.copilot.cli.sessions.resumeInTerminal","title":"%github.copilot.command.cli.sessions.resumeInTerminal%","icon":"$(terminal)","category":"Copilot CLI"},{"command":"github.copilot.cli.sessions.newTerminalSession","title":"%github.copilot.cli.sessions.newTerminalSession%","icon":"$(terminal)","category":"Copilot CLI"},{"command":"github.copilot.chat.replay","title":"Start Chat Replay","icon":"$(debug-line-by-line)","enablement":"resourceFilename === 'benchRun.chatReplay.json' && !inDebugMode"},{"command":"github.copilot.chat.replay.enableWorkspaceEditTracing","title":"%github.copilot.command.enableEditTracing%","category":"Developer","enablement":"!github.copilot.chat.replay.workspaceEditTracing"},{"command":"github.copilot.chat.replay.disableWorkspaceEditTracing","title":"%github.copilot.command.disableEditTracing%","category":"Developer","enablement":"github.copilot.chat.replay.workspaceEditTracing"},{"command":"github.copilot.chat.explain","title":"%github.copilot.command.explainThis%","enablement":"!github.copilot.interactiveSession.disabled","category":"Chat"},{"command":"github.copilot.chat.explain.palette","title":"%github.copilot.command.explainThis%","enablement":"!github.copilot.interactiveSession.disabled && !editorReadonly","category":"Chat"},{"command":"github.copilot.chat.review","title":"%github.copilot.command.reviewAndComment%","enablement":"config.github.copilot.chat.reviewSelection.enabled && !github.copilot.interactiveSession.disabled","category":"Chat"},{"command":"github.copilot.chat.review.apply","title":"%github.copilot.command.applyReviewSuggestion%","icon":"$(sparkle)","enablement":"commentThread =~ /hasSuggestion/","category":"Chat"},{"command":"github.copilot.chat.review.applyAndNext","title":"%github.copilot.command.applyReviewSuggestionAndNext%","icon":"$(sparkle)","enablement":"commentThread =~ /hasSuggestion/","category":"Chat"},{"command":"github.copilot.chat.review.discard","title":"%github.copilot.command.discardReviewSuggestion%","icon":"$(close)","category":"Chat"},{"command":"github.copilot.chat.review.discardAndNext","title":"%github.copilot.command.discardReviewSuggestionAndNext%","icon":"$(close)","category":"Chat"},{"command":"github.copilot.chat.review.discardAll","title":"%github.copilot.command.discardAllReviewSuggestion%","icon":"$(close-all)","category":"Chat"},{"command":"github.copilot.chat.review.stagedChanges","title":"%github.copilot.command.reviewStagedChanges%","icon":"$(code-review)","enablement":"github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled","category":"Chat"},{"command":"github.copilot.chat.review.unstagedChanges","title":"%github.copilot.command.reviewUnstagedChanges%","icon":"$(code-review)","enablement":"github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled","category":"Chat"},{"command":"github.copilot.chat.review.changes","title":"%github.copilot.command.reviewChanges%","icon":"$(code-review)","enablement":"github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled","category":"Chat"},{"command":"github.copilot.chat.review.stagedFileChange","title":"%github.copilot.command.reviewFileChange%","icon":"$(code-review)","enablement":"github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled","category":"Chat"},{"command":"github.copilot.chat.review.unstagedFileChange","title":"%github.copilot.command.reviewFileChange%","icon":"$(code-review)","enablement":"github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled","category":"Chat"},{"command":"github.copilot.chat.review.previous","title":"%github.copilot.command.gotoPreviousReviewSuggestion%","icon":"$(arrow-up)","category":"Chat"},{"command":"github.copilot.chat.review.next","title":"%github.copilot.command.gotoNextReviewSuggestion%","icon":"$(arrow-down)","category":"Chat"},{"command":"github.copilot.chat.review.continueInInlineChat","title":"%github.copilot.command.continueReviewInInlineChat%","icon":"$(comment-discussion)","category":"Chat"},{"command":"github.copilot.chat.review.continueInChat","title":"%github.copilot.command.continueReviewInChat%","icon":"$(comment-discussion)","category":"Chat"},{"command":"github.copilot.chat.review.markHelpful","title":"%github.copilot.command.helpfulReviewSuggestion%","icon":"$(thumbsup)","enablement":"!(commentThread =~ /markedAsHelpful/)","category":"Chat"},{"command":"github.copilot.chat.openUserPreferences","title":"%github.copilot.command.openUserPreferences%","category":"Chat","enablement":"config.github.copilot.chat.enableUserPreferences"},{"command":"github.copilot.chat.tools.memory.openFolder","title":"%github.copilot.command.openMemoryFolder%","category":"Chat","enablement":"config.github.copilot.chat.tools.memory.enabled"},{"command":"github.copilot.chat.review.markUnhelpful","title":"%github.copilot.command.unhelpfulReviewSuggestion%","icon":"$(thumbsdown)","enablement":"!(commentThread =~ /markedAsUnhelpful/)","category":"Chat"},{"command":"github.copilot.chat.generate","title":"%github.copilot.command.generateThis%","icon":"$(sparkle)","enablement":"!github.copilot.interactiveSession.disabled && !editorReadonly","category":"Chat"},{"command":"github.copilot.chat.generateDocs","title":"%github.copilot.command.generateDocs%","enablement":"!github.copilot.interactiveSession.disabled && !editorReadonly","category":"Chat"},{"command":"github.copilot.chat.generateTests","title":"%github.copilot.command.generateTests%","enablement":"!github.copilot.interactiveSession.disabled && !editorReadonly","category":"Chat"},{"command":"github.copilot.chat.fix","title":"%github.copilot.command.fixThis%","enablement":"!github.copilot.interactiveSession.disabled && !editorReadonly","category":"Chat"},{"command":"github.copilot.interactiveSession.feedback","title":"%github.copilot.command.sendChatFeedback%","enablement":"github.copilot-chat.activated && !github.copilot.interactiveSession.disabled","icon":"$(feedback)","category":"Chat"},{"command":"github.copilot.debug.workbenchState","title":"%github.copilot.command.logWorkbenchState%","category":"Developer"},{"command":"github.copilot.debug.showChatLogView","title":"%github.copilot.command.showChatLogView%","category":"Developer"},{"command":"github.copilot.debug.showOutputChannel","title":"%github.copilot.command.showOutputChannel%","category":"Developer"},{"command":"github.copilot.debug.showContextInspectorView","title":"%github.copilot.command.showContextInspectorView%","icon":"$(inspect)","category":"Developer"},{"command":"github.copilot.debug.validateNesRename","title":"%github.copilot.command.validateNesRename%","category":"Developer"},{"command":"github.copilot.debug.resetVirtualToolGroups","title":"%github.copilot.command.resetVirtualToolGroups%","icon":"$(inspect)","category":"Developer"},{"command":"github.copilot.terminal.explainTerminalLastCommand","title":"%github.copilot.command.explainTerminalLastCommand%","category":"Chat"},{"command":"github.copilot.git.generateCommitMessage","title":"%github.copilot.git.generateCommitMessage%","icon":"$(sparkle)","enablement":"!github.copilot.interactiveSession.disabled","category":"Chat"},{"command":"github.copilot.git.resolveMergeConflicts","title":"%github.copilot.git.resolveMergeConflicts%","icon":"$(chat-sparkle)","enablement":"!github.copilot.interactiveSession.disabled","category":"Chat"},{"command":"github.copilot.devcontainer.generateDevContainerConfig","title":"%github.copilot.devcontainer.generateDevContainerConfig%","category":"Chat"},{"command":"github.copilot.tests.fixTestFailure","icon":"$(sparkle)","title":"%github.copilot.command.fixTestFailure%","category":"Chat"},{"command":"github.copilot.tests.fixTestFailure.fromInline","icon":"$(sparkle)","title":"%github.copilot.command.fixTestFailure%"},{"command":"github.copilot.chat.attachFile","title":"%github.copilot.chat.attachFile%","category":"Chat"},{"command":"github.copilot.chat.attachSelection","title":"%github.copilot.chat.attachSelection%","icon":"$(comment-discussion)","category":"Chat"},{"command":"github.copilot.debug.collectDiagnostics","title":"%github.copilot.command.collectDiagnostics%","category":"Developer"},{"command":"github.copilot.debug.inlineEdit.clearCache","title":"%github.copilot.command.inlineEdit.clearCache%","category":"Developer"},{"command":"github.copilot.debug.inlineEdit.reportNotebookNESIssue","title":"%github.copilot.command.inlineEdit.reportNotebookNESIssue%","enablement":"config.github.copilot.chat.advanced.notebook.alternativeNESFormat.enabled || github.copilot.chat.enableEnhancedNotebookNES","category":"Developer"},{"command":"github.copilot.debug.generateSTest","title":"%github.copilot.command.generateSTest%","enablement":"github.copilot.debugReportFeedback","category":"Developer"},{"command":"github.copilot.open.walkthrough","title":"%github.copilot.command.openWalkthrough%","category":"Chat"},{"command":"github.copilot.debug.generateInlineEditTests","title":"Generate Inline Edit Tests","category":"Chat","enablement":"resourceScheme == 'ccreq'"},{"command":"github.copilot.buildLocalWorkspaceIndex","title":"%github.copilot.command.buildLocalWorkspaceIndex%","category":"Chat","enablement":"github.copilot-chat.activated"},{"command":"github.copilot.buildRemoteWorkspaceIndex","title":"%github.copilot.command.buildRemoteWorkspaceIndex%","category":"Chat","enablement":"github.copilot-chat.activated"},{"command":"github.copilot.report","title":"Report Issue","category":"Chat"},{"command":"github.copilot.chat.rerunWithCopilotDebug","title":"%github.copilot.command.rerunWithCopilotDebug%","category":"Chat"},{"command":"github.copilot.chat.startCopilotDebugCommand","title":"Start Copilot Debug"},{"command":"github.copilot.chat.clearTemporalContext","title":"Clear Temporal Context","category":"Developer"},{"command":"github.copilot.search.markHelpful","title":"Helpful","icon":"$(thumbsup)","enablement":"!github.copilot.search.feedback.sent"},{"command":"github.copilot.search.markUnhelpful","title":"Unhelpful","icon":"$(thumbsdown)","enablement":"!github.copilot.search.feedback.sent"},{"command":"github.copilot.search.feedback","title":"Feedback","icon":"$(feedback)","enablement":"!github.copilot.search.feedback.sent"},{"command":"github.copilot.chat.debug.showElements","title":"Show Rendered Elements"},{"command":"github.copilot.chat.debug.hideElements","title":"Hide Rendered Elements"},{"command":"github.copilot.chat.debug.showTools","title":"Show Tools"},{"command":"github.copilot.chat.debug.hideTools","title":"Hide Tools"},{"command":"github.copilot.chat.debug.showNesRequests","title":"Show NES Requests"},{"command":"github.copilot.chat.debug.hideNesRequests","title":"Hide NES Requests"},{"command":"github.copilot.chat.debug.showRawRequestBody","title":"Show Raw Request Body"},{"command":"github.copilot.chat.debug.exportLogItem","title":"Export as...","icon":"$(export)"},{"command":"github.copilot.chat.debug.exportPromptArchive","title":"Export All as Archive...","icon":"$(archive)"},{"command":"github.copilot.chat.debug.exportPromptLogsAsJson","title":"Export All as JSON...","icon":"$(export)"},{"command":"github.copilot.chat.debug.exportAllPromptLogsAsJson","title":"Export All Prompt Logs as JSON...","icon":"$(export)"},{"command":"github.copilot.chat.showAsChatSession","title":"Show as chat session","icon":"$(chat-sparkle)"},{"command":"github.copilot.debug.collectWorkspaceIndexDiagnostics","title":"%github.copilot.command.collectWorkspaceIndexDiagnostics%","category":"Developer"},{"command":"github.copilot.chat.mcp.setup.check","title":"MCP Check: is supported"},{"command":"github.copilot.chat.mcp.setup.validatePackage","title":"MCP Check: validate package"},{"command":"github.copilot.chat.mcp.setup.flow","title":"MCP Check: do prompts"},{"command":"github.copilot.chat.generateAltText","title":"Generate/Refine Alt Text"},{"command":"github.copilot.chat.notebook.enableFollowCellExecution","title":"Enable Follow Cell Execution from Chat","shortTitle":"Follow","icon":"$(pinned)"},{"command":"github.copilot.chat.notebook.disableFollowCellExecution","title":"Disable Follow Cell Execution from Chat","shortTitle":"Unfollow","icon":"$(pinned-dirty)"},{"command":"github.copilot.chat.manageBYOK","title":"Manage Bring Your Own Key Vendor","enablement":"false"},{"command":"github.copilot.chat.manageBYOKAPIKey","title":"Manage Bring Your Own Key API Key","enablement":"false"},{"command":"github.copilot.cloud.sessions.refresh","title":"%github.copilot.command.refreshAgentSessions%","icon":"$(refresh)"},{"command":"github.copilot.cloud.resetWorkspaceConfirmations","title":"%github.copilot.command.resetCloudAgentWorkspaceConfirmations%"},{"command":"github.copilot.cloud.sessions.openInBrowser","title":"%github.copilot.command.openCopilotAgentSessionsInBrowser%","icon":"$(link-external)"},{"command":"github.copilot.cloud.sessions.proxy.closeChatSessionPullRequest","title":"%github.copilot.command.closeChatSessionPullRequest.title%"},{"command":"github.copilot.chat.openSuggestionsPanel","title":"Open Completions Panel","enablement":"github.copilot.extensionUnification.activated && !isWeb","category":"GitHub Copilot"},{"command":"github.copilot.chat.toggleStatusMenu","title":"Open Status Menu","enablement":"github.copilot.extensionUnification.activated","category":"GitHub Copilot"},{"command":"github.copilot.chat.completions.disable","title":"Disable Inline Suggestions","enablement":"github.copilot.extensionUnification.activated && github.copilot.activated && config.editor.inlineSuggest.enabled && github.copilot.completions.enabled","category":"GitHub Copilot"},{"command":"github.copilot.chat.completions.enable","title":"Enable Inline Suggestions","enablement":"github.copilot.extensionUnification.activated && github.copilot.activated && !(config.editor.inlineSuggest.enabled && github.copilot.completions.enabled)","category":"GitHub Copilot"},{"command":"github.copilot.chat.completions.toggle","title":"Toggle (Enable/Disable) Inline Suggestions","enablement":"github.copilot.extensionUnification.activated && github.copilot.activated","category":"GitHub Copilot"},{"command":"github.copilot.chat.openModelPicker","title":"Change Completions Model","category":"GitHub Copilot","enablement":"github.copilot.extensionUnification.activated && !isWeb"},{"command":"github.copilot.chat.applyCopilotCLIAgentSessionChanges","title":"%github.copilot.command.applyCopilotCLIAgentSessionChanges%","icon":"$(git-stash-pop)","category":"GitHub Copilot"}],"configuration":[{"title":"GitHub Copilot Chat","id":"stable","properties":{"github.copilot.chat.codeGeneration.useInstructionFiles":{"type":"boolean","default":true,"markdownDescription":"%github.copilot.config.codeGeneration.useInstructionFiles%"},"github.copilot.editor.enableCodeActions":{"type":"boolean","default":true,"description":"%github.copilot.config.enableCodeActions%"},"github.copilot.renameSuggestions.triggerAutomatically":{"type":"boolean","default":true,"description":"%github.copilot.config.renameSuggestions.triggerAutomatically%"},"github.copilot.chat.localeOverride":{"type":"string","enum":["auto","en","fr","it","de","es","ru","zh-CN","zh-TW","ja","ko","cs","pt-br","tr","pl"],"enumDescriptions":["Use VS Code's configured display language","English","français","italiano","Deutsch","español","русский","中文(简体)","中文(繁體)","日本語","한국어","čeština","português","Türkçe","polski"],"default":"auto","markdownDescription":"%github.copilot.config.localeOverride%"},"github.copilot.chat.terminalChatLocation":{"type":"string","default":"chatView","markdownDescription":"%github.copilot.config.terminalChatLocation%","markdownEnumDescriptions":["%github.copilot.config.terminalChatLocation.chatView%","%github.copilot.config.terminalChatLocation.quickChat%","%github.copilot.config.terminalChatLocation.terminal%"],"enum":["chatView","quickChat","terminal"]},"github.copilot.chat.scopeSelection":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.scopeSelection%"},"github.copilot.chat.useProjectTemplates":{"type":"boolean","default":true,"markdownDescription":"%github.copilot.config.useProjectTemplates%"},"github.copilot.nextEditSuggestions.enabled":{"type":"boolean","default":false,"tags":["nextEditSuggestions","onExp"],"markdownDescription":"%github.copilot.nextEditSuggestions.enabled%","scope":"language-overridable"},"github.copilot.nextEditSuggestions.fixes":{"type":"boolean","default":true,"tags":["nextEditSuggestions","onExp"],"markdownDescription":"%github.copilot.nextEditSuggestions.fixes%","scope":"language-overridable"},"github.copilot.nextEditSuggestions.allowWhitespaceOnlyChanges":{"type":"boolean","default":true,"tags":["nextEditSuggestions","onExp"],"markdownDescription":"%github.copilot.nextEditSuggestions.allowWhitespaceOnlyChanges%","scope":"language-overridable"},"github.copilot.chat.agent.autoFix":{"type":"boolean","default":true,"description":"%github.copilot.config.autoFix%","tags":["onExp"]},"github.copilot.chat.customInstructionsInSystemMessage":{"type":"boolean","default":true,"description":"%github.copilot.config.customInstructionsInSystemMessage%"},"github.copilot.chat.customAgents.showOrganizationAndEnterpriseAgents":{"type":"boolean","default":true,"description":"%github.copilot.config.customAgents.showOrganizationAndEnterpriseAgents%"},"github.copilot.chat.customInstructions.showOrganizationInstructions":{"type":"boolean","default":true,"description":"%github.copilot.config.customInstructions.showOrganizationInstructions%"},"github.copilot.chat.agent.currentEditorContext.enabled":{"type":"boolean","default":true,"description":"%github.copilot.config.agent.currentEditorContext.enabled%"},"github.copilot.chat.agent.delegate.autoCommitAndPush":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.agent.delegate.autoCommitAndPush%"},"github.copilot.enable":{"type":"object","scope":"window","default":{"*":true,"plaintext":false,"markdown":false,"scminput":false},"additionalProperties":{"type":"boolean"},"markdownDescription":"Enable or disable auto triggering of Copilot completions for specified [languages](https://code.visualstudio.com/docs/languages/identifiers). You can still trigger suggestions manually using `Alt + \\`"},"github.copilot.selectedCompletionModel":{"type":"string","default":"","markdownDescription":"The currently selected completion model ID. To select from a list of available models, use the __\"Change Completions Model\"__ command or open the model picker (from the Copilot menu in the VS Code title bar, select __\"Configure Code Completions\"__ then __\"Change Completions Model\"__. The value must be a valid model ID. An empty value indicates that the default model will be used."}}},{"id":"preview","properties":{"github.copilot.chat.reviewAgent.enabled":{"type":"boolean","default":true,"description":"%github.copilot.config.reviewAgent.enabled%","tags":["preview"]},"github.copilot.chat.reviewSelection.enabled":{"type":"boolean","default":true,"description":"%github.copilot.config.reviewSelection.enabled%","tags":["preview"]},"github.copilot.chat.reviewSelection.instructions":{"type":"array","items":{"oneOf":[{"type":"object","markdownDescription":"%github.copilot.config.reviewSelection.instruction.file%","properties":{"file":{"type":"string","examples":[".copilot-review-instructions.md"]},"language":{"type":"string"}},"examples":[{"file":".copilot-review-instructions.md"}],"required":["file"]},{"type":"object","markdownDescription":"%github.copilot.config.reviewSelection.instruction.text%","properties":{"text":{"type":"string","examples":["Use underscore for field names."]},"language":{"type":"string"}},"required":["text"],"examples":[{"text":"Use underscore for field names."},{"text":"Resolve all TODO tasks."}]}]},"default":[],"markdownDescription":"%github.copilot.config.reviewSelection.instructions%","examples":[[{"file":".copilot-review-instructions.md"},{"text":"Resolve all TODO tasks."}]],"tags":["preview"]},"github.copilot.chat.copilotDebugCommand.enabled":{"type":"boolean","default":true,"tags":["preview"],"description":"%github.copilot.chat.copilotDebugCommand.enabled%"},"github.copilot.chat.codesearch.enabled":{"type":"boolean","default":false,"tags":["preview"],"markdownDescription":"%github.copilot.config.codesearch.enabled%"},"github.copilot.chat.byok.ollamaEndpoint":{"type":"string","default":"http://localhost:11434","tags":["preview"],"markdownDescription":"%github.copilot.config.byok.ollamaEndpoint%"}}},{"id":"experimental","properties":{"github.copilot.chat.githubMcpServer.enabled":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.githubMcpServer.enabled%","tags":["experimental"]},"github.copilot.chat.githubMcpServer.toolsets":{"type":"array","default":["default"],"markdownDescription":"%github.copilot.config.githubMcpServer.toolsets%","items":{"type":"string"},"tags":["experimental"]},"github.copilot.chat.githubMcpServer.readonly":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.githubMcpServer.readonly%","tags":["experimental"]},"github.copilot.chat.githubMcpServer.lockdown":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.githubMcpServer.lockdown%","tags":["experimental"]},"github.copilot.chat.imageUpload.enabled":{"type":"boolean","default":true,"tags":["experimental","onExp"],"markdownDescription":"%github.copilot.config.imageUpload.enabled%"},"github.copilot.chat.edits.suggestRelatedFilesFromGitHistory":{"type":"boolean","default":true,"tags":["experimental"],"markdownDescription":"%github.copilot.config.edits.suggestRelatedFilesFromGitHistory%"},"github.copilot.chat.edits.suggestRelatedFilesForTests":{"type":"boolean","default":true,"tags":["experimental"],"markdownDescription":"%github.copilot.chat.edits.suggestRelatedFilesForTests%"},"github.copilot.chat.codeGeneration.instructions":{"markdownDeprecationMessage":"%github.copilot.config.codeGeneration.instructions.deprecated%","type":"array","items":{"oneOf":[{"type":"object","markdownDescription":"%github.copilot.config.codeGeneration.instruction.file%","properties":{"file":{"type":"string","examples":[".copilot-codeGeneration-instructions.md"]},"language":{"type":"string"}},"examples":[{"file":".copilot-codeGeneration-instructions.md"}],"required":["file"]},{"type":"object","markdownDescription":"%github.copilot.config.codeGeneration.instruction.text%","properties":{"text":{"type":"string","examples":["Use underscore for field names."]},"language":{"type":"string"}},"required":["text"],"examples":[{"text":"Use underscore for field names."},{"text":"Always add a comment: 'Generated by Copilot'."}]}]},"default":[],"markdownDescription":"%github.copilot.config.codeGeneration.instructions%","examples":[[{"file":".copilot-codeGeneration-instructions.md"},{"text":"Always add a comment: 'Generated by Copilot'."}]],"tags":["experimental"]},"github.copilot.chat.testGeneration.instructions":{"markdownDeprecationMessage":"%github.copilot.config.testGeneration.instructions.deprecated%","type":"array","items":{"oneOf":[{"type":"object","markdownDescription":"%github.copilot.config.experimental.testGeneration.instruction.file%","properties":{"file":{"type":"string","examples":[".copilot-test-instructions.md"]},"language":{"type":"string"}},"examples":[{"file":".copilot-test-instructions.md"}],"required":["file"]},{"type":"object","markdownDescription":"%github.copilot.config.experimental.testGeneration.instruction.text%","properties":{"text":{"type":"string","examples":["Use suite and test instead of describe and it."]},"language":{"type":"string"}},"required":["text"],"examples":[{"text":"Always try uniting related tests in a suite."}]}]},"default":[],"markdownDescription":"%github.copilot.config.testGeneration.instructions%","examples":[[{"file":".copilot-test-instructions.md"},{"text":"Always try uniting related tests in a suite."}]],"tags":["experimental"]},"github.copilot.chat.commitMessageGeneration.instructions":{"type":"array","items":{"oneOf":[{"type":"object","markdownDescription":"%github.copilot.config.commitMessageGeneration.instruction.file%","properties":{"file":{"type":"string","examples":[".copilot-commit-message-instructions.md"]}},"examples":[{"file":".copilot-commit-message-instructions.md"}],"required":["file"]},{"type":"object","markdownDescription":"%github.copilot.config.commitMessageGeneration.instruction.text%","properties":{"text":{"type":"string","examples":["Use conventional commit message format."]}},"required":["text"],"examples":[{"text":"Use conventional commit message format."}]}]},"default":[],"markdownDescription":"%github.copilot.config.commitMessageGeneration.instructions%","examples":[[{"file":".copilot-commit-message-instructions.md"},{"text":"Use conventional commit message format."}]],"tags":["experimental"]},"github.copilot.chat.pullRequestDescriptionGeneration.instructions":{"type":"array","items":{"oneOf":[{"type":"object","markdownDescription":"%github.copilot.config.pullRequestDescriptionGeneration.instruction.file%","properties":{"file":{"type":"string","examples":[".copilot-pull-request-description-instructions.md"]}},"examples":[{"file":".copilot-pull-request-description-instructions.md"}],"required":["file"]},{"type":"object","markdownDescription":"%github.copilot.config.pullRequestDescriptionGeneration.instruction.text%","properties":{"text":{"type":"string","examples":["Include every commit message in the pull request description."]}},"required":["text"],"examples":[{"text":"Include every commit message in the pull request description."}]}]},"default":[],"markdownDescription":"%github.copilot.config.pullRequestDescriptionGeneration.instructions%","examples":[[{"file":".copilot-pull-request-description-instructions.md"},{"text":"Use conventional commit message format."}]],"tags":["experimental"]},"github.copilot.chat.generateTests.codeLens":{"type":"boolean","default":false,"description":"%github.copilot.config.generateTests.codeLens%","tags":["experimental"]},"github.copilot.chat.setupTests.enabled":{"type":"boolean","default":true,"markdownDescription":"%github.copilot.config.setupTests.enabled%","tags":["experimental"]},"github.copilot.chat.languageContext.typescript.enabled":{"type":"boolean","default":false,"scope":"resource","tags":["experimental","onExP"],"markdownDescription":"%github.copilot.chat.languageContext.typescript.enabled%"},"github.copilot.chat.languageContext.typescript.items":{"type":"string","enum":["minimal","double","fillHalf","fill"],"default":"double","scope":"resource","tags":["experimental","onExP"],"markdownDescription":"%github.copilot.chat.languageContext.typescript.items%"},"github.copilot.chat.languageContext.typescript.includeDocumentation":{"type":"boolean","default":false,"scope":"resource","tags":["experimental","onExP"],"markdownDescription":"%github.copilot.chat.languageContext.typescript.includeDocumentation%"},"github.copilot.chat.languageContext.typescript.cacheTimeout":{"type":"number","default":500,"scope":"resource","tags":["experimental","onExP"],"markdownDescription":"%github.copilot.chat.languageContext.typescript.cacheTimeout%"},"github.copilot.chat.languageContext.fix.typescript.enabled":{"type":"boolean","default":false,"scope":"resource","tags":["experimental","onExP"],"markdownDescription":"%github.copilot.chat.languageContext.fix.typescript.enabled%"},"github.copilot.chat.languageContext.inline.typescript.enabled":{"type":"boolean","default":false,"scope":"resource","tags":["experimental","onExP"],"markdownDescription":"%github.copilot.chat.languageContext.inline.typescript.enabled%"},"github.copilot.chat.newWorkspaceCreation.enabled":{"type":"boolean","default":true,"tags":["experimental"],"description":"%github.copilot.config.newWorkspaceCreation.enabled%"},"github.copilot.chat.newWorkspace.useContext7":{"type":"boolean","default":false,"tags":["experimental"],"markdownDescription":"%github.copilot.config.newWorkspace.useContext7%"},"github.copilot.chat.notebook.followCellExecution.enabled":{"type":"boolean","default":false,"tags":["experimental"],"description":"%github.copilot.config.notebook.followCellExecution%"},"github.copilot.chat.notebook.enhancedNextEditSuggestions.enabled":{"type":"boolean","default":false,"tags":["experimental","onExp"],"description":"%github.copilot.config.notebook.enhancedNextEditSuggestions%"},"github.copilot.chat.summarizeAgentConversationHistory.enabled":{"type":"boolean","default":true,"tags":["experimental"],"description":"%github.copilot.config.summarizeAgentConversationHistory.enabled%"},"github.copilot.chat.virtualTools.threshold":{"type":"number","minimum":0,"maximum":128,"default":128,"tags":["experimental"],"markdownDescription":"%github.copilot.config.virtualTools.threshold%"},"github.copilot.chat.azureAuthType":{"type":"string","enum":["entraId","apiKey"],"enumDescriptions":["%github.copilot.config.azureAuthType.entraId%","%github.copilot.config.azureAuthType.apiKey%"],"default":"entraId","tags":["experimental"],"markdownDescription":"%github.copilot.config.azureAuthType%"},"github.copilot.chat.azureModels":{"type":"object","default":{},"tags":["experimental"],"additionalProperties":{"type":"object","properties":{"name":{"type":"string","description":"Display name of the Azure model"},"url":{"type":"string","markdownDescription":"URL endpoint for the Azure model.\n\n**Important:** Base URLs default to Chat Completions API. Explicit API paths including `/responses` or `/chat/completions` are respected. Both behaviors are independent of the `#github.copilot.chat.useResponsesApi#` setting."},"toolCalling":{"type":"boolean","description":"Whether the model supports tool calling"},"vision":{"type":"boolean","description":"Whether the model supports vision capabilities"},"maxInputTokens":{"type":"number","description":"Maximum number of input tokens supported by the model"},"maxOutputTokens":{"type":"number","description":"Maximum number of output tokens supported by the model"},"thinking":{"type":"boolean","default":false,"description":"Whether the model supports thinking capabilities"},"zeroDataRetentionEnabled":{"type":"boolean","default":false,"markdownDescription":"Whether Zero Data Retention (ZDR) is enabled for this endpoint. When `true`, `previous_response_id` will not be sent in requests via Responses API."},"requestHeaders":{"type":"object","description":"Additional HTTP headers to include with requests to this model. These reserved headers are not allowed and ignored if present: forbidden request headers (https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_request_header), forwarding headers ('forwarded', 'x-forwarded-for', 'x-forwarded-host', 'x-forwarded-proto'), and others ('api-key', 'authorization', 'content-type', 'openai-intent', 'x-github-api-version', 'x-initiator', 'x-interaction-id', 'x-interaction-type', 'x-onbehalf-extension-id', 'x-request-id', 'x-vscode-user-agent-library-version'). Pattern-based forbidden headers ('proxy-*', 'sec-*', 'x-http-method*' with forbidden methods) are also blocked.","additionalProperties":{"type":"string"}}},"required":["name","url","toolCalling","vision","maxInputTokens","maxOutputTokens"],"additionalProperties":false},"markdownDescription":"Configure custom Azure OpenAI models. Each key should be a unique model ID, and the value should be an object with model configuration including name, url, toolCalling, vision, maxInputTokens, and maxOutputTokens properties."},"github.copilot.chat.customOAIModels":{"type":"object","default":{},"tags":["experimental"],"additionalProperties":{"type":"object","properties":{"name":{"type":"string","description":"Display name of the custom OpenAI model"},"url":{"type":"string","markdownDescription":"URL endpoint for the custom OpenAI-compatible model.\n\n**Important:** Base URLs default to Chat Completions API. Explicit API paths including `/responses` or `/chat/completions` are respected. Both behaviors are independent of the `#github.copilot.chat.useResponsesApi#` setting."},"toolCalling":{"type":"boolean","description":"Whether the model supports tool calling"},"vision":{"type":"boolean","description":"Whether the model supports vision capabilities"},"maxInputTokens":{"type":"number","description":"Maximum number of input tokens supported by the model"},"maxOutputTokens":{"type":"number","description":"Maximum number of output tokens supported by the model"},"requiresAPIKey":{"type":"boolean","description":"Whether the model requires an API key for authentication","default":true},"editTools":{"type":"array","description":"List of edit tools supported by the model. If this is not configured, the editor will try multiple edit tools and pick the best one.\n\n- 'find-replace': Find and replace text in a document.\n- 'multi-find-replace': Find and replace text in a document.\n- 'apply-patch': A file-oriented diff format used by some OpenAI models\n- 'code-rewrite': A general but slower editing tool that allows the model to rewrite and code snippet and provide only the replacement to the editor.","items":{"type":"string","enum":["find-replace","multi-find-replace","apply-patch","code-rewrite"]}},"thinking":{"type":"boolean","default":false,"description":"Whether the model supports thinking capabilities"},"zeroDataRetentionEnabled":{"type":"boolean","default":false,"markdownDescription":"Whether Zero Data Retention (ZDR) is enabled for this endpoint. When `true`, `previous_response_id` will not be sent in requests via Responses API."},"requestHeaders":{"type":"object","description":"Additional HTTP headers to include with requests to this model. These reserved headers are not allowed and ignored if present: forbidden request headers (https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_request_header), forwarding headers ('forwarded', 'x-forwarded-for', 'x-forwarded-host', 'x-forwarded-proto'), and others ('api-key', 'authorization', 'content-type', 'openai-intent', 'x-github-api-version', 'x-initiator', 'x-interaction-id', 'x-interaction-type', 'x-onbehalf-extension-id', 'x-request-id', 'x-vscode-user-agent-library-version'). Pattern-based forbidden headers ('proxy-*', 'sec-*', 'x-http-method*' with forbidden methods) are also blocked.","additionalProperties":{"type":"string"}}},"required":["name","url","toolCalling","vision","maxInputTokens","maxOutputTokens","requiresAPIKey"],"additionalProperties":false},"markdownDescription":"Configure custom OpenAI-compatible models. Each key should be a unique model ID, and the value should be an object with model configuration including name, url, toolCalling, vision, maxInputTokens, and maxOutputTokens properties."},"github.copilot.chat.alternateGptPrompt.enabled":{"type":"boolean","default":false,"tags":["experimental"],"description":"%github.copilot.config.alternateGptPrompt.enabled%"},"github.copilot.chat.useResponsesApi":{"type":"boolean","default":true,"markdownDescription":"%github.copilot.config.useResponsesApi%","tags":["experimental","onExp"]},"github.copilot.chat.responsesApiReasoningEffort":{"type":"string","default":"default","markdownDescription":"%github.copilot.config.responsesApiReasoningEffort%","tags":["experimental","onExp"],"enum":["low","medium","high","default"]},"github.copilot.chat.responsesApiReasoningSummary":{"type":"string","default":"detailed","markdownDescription":"%github.copilot.config.responsesApiReasoningSummary%","tags":["experimental","onExp"],"enum":["off","detailed"]},"github.copilot.chat.anthropic.thinking.budgetTokens":{"type":["number","null"],"markdownDescription":"%github.copilot.config.anthropic.thinking.budgetTokens%","minimum":1024,"maximum":32000,"tags":["experimental","onExp"]},"github.copilot.chat.anthropic.tools.websearch.enabled":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.anthropic.tools.websearch.enabled%","tags":["experimental","onExp"]},"github.copilot.chat.anthropic.tools.websearch.maxUses":{"type":"number","default":5,"markdownDescription":"%github.copilot.config.anthropic.tools.websearch.maxUses%","minimum":1,"maximum":20,"tags":["experimental"]},"github.copilot.chat.anthropic.tools.websearch.allowedDomains":{"type":"array","default":[],"markdownDescription":"%github.copilot.config.anthropic.tools.websearch.allowedDomains%","items":{"type":"string"},"tags":["experimental"]},"github.copilot.chat.anthropic.tools.websearch.blockedDomains":{"type":"array","default":[],"markdownDescription":"%github.copilot.config.anthropic.tools.websearch.blockedDomains%","items":{"type":"string"},"tags":["experimental"]},"github.copilot.chat.anthropic.tools.websearch.userLocation":{"type":["object","null"],"default":null,"markdownDescription":"%github.copilot.config.anthropic.tools.websearch.userLocation%","properties":{"city":{"type":"string","description":"City name (e.g., 'San Francisco')"},"region":{"type":"string","description":"State or region (e.g., 'California')"},"country":{"type":"string","description":"ISO country code (e.g., 'US')"},"timezone":{"type":"string","description":"IANA timezone identifier (e.g., 'America/Los_Angeles')"}},"tags":["experimental"]},"github.copilot.chat.tools.memory.enabled":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.tools.memory.enabled%","tags":["experimental","onExp"]},"github.copilot.chat.completionsFetcher":{"type":["string","null"],"markdownDescription":"%github.copilot.config.completionsFetcher%","tags":["experimental","onExp"],"enum":["electron-fetch","node-fetch"]},"github.copilot.chat.nesFetcher":{"type":["string","null"],"markdownDescription":"%github.copilot.config.nesFetcher%","tags":["experimental","onExp"],"enum":["electron-fetch","node-fetch"]}}},{"id":"advanced","properties":{"github.copilot.chat.debug.overrideChatEngine":{"type":["string","null"],"markdownDescription":"%github.copilot.config.debug.overrideChatEngine%","tags":["advanced","experimental"]},"github.copilot.chat.edits.gemini3ReplaceStringOnly":{"type":"boolean","default":false,"markdownDescription":"Use only the modern `replace_string_in_file` edit tool when generating edits with Gemini 3 models.","tags":["advanced","experimental","onExp"]},"github.copilot.chat.edits.gemini3MultiReplaceString":{"type":"boolean","default":false,"markdownDescription":"Enable the modern `multi_replace_string_in_file` edit tool when generating edits with Gemini 3 models.","tags":["advanced","experimental","onExp"]},"github.copilot.chat.projectLabels.expanded":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.projectLabels.expanded%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.projectLabels.chat":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.projectLabels.chat%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.projectLabels.inline":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.projectLabels.inline%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.workspace.maxLocalIndexSize":{"type":"number","default":100000,"markdownDescription":"%github.copilot.config.workspace.maxLocalIndexSize%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.workspace.enableFullWorkspace":{"type":"boolean","default":true,"markdownDescription":"%github.copilot.config.workspace.enableFullWorkspace%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.workspace.enableCodeSearch":{"type":"boolean","default":true,"markdownDescription":"%github.copilot.config.workspace.enableCodeSearch%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.workspace.enableEmbeddingsSearch":{"type":"boolean","default":true,"markdownDescription":"%github.copilot.config.workspace.enableEmbeddingsSearch%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.workspace.preferredEmbeddingsModel":{"type":"string","default":"","markdownDescription":"%github.copilot.config.workspace.preferredEmbeddingsModel%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.workspace.prototypeAdoCodeSearchEndpointOverride":{"type":"string","default":"","markdownDescription":"%github.copilot.config.workspace.prototypeAdoCodeSearchEndpointOverride%","tags":["advanced","experimental"]},"github.copilot.chat.feedback.onChange":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.feedback.onChange%","tags":["advanced","experimental"]},"github.copilot.chat.review.intent":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.review.intent%","tags":["advanced","experimental"]},"github.copilot.chat.notebook.summaryExperimentEnabled":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.notebook.summaryExperimentEnabled%","tags":["advanced","experimental"]},"github.copilot.chat.notebook.variableFilteringEnabled":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.notebook.variableFilteringEnabled%","tags":["advanced","experimental"]},"github.copilot.chat.notebook.alternativeFormat":{"type":"string","default":"xml","enum":["xml","markdown"],"markdownDescription":"%github.copilot.config.notebook.alternativeFormat%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.notebook.alternativeNESFormat.enabled":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.notebook.alternativeNESFormat.enabled%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.debugTerminalCommandPatterns":{"type":"array","default":[],"items":{"type":"string"},"markdownDescription":"%github.copilot.config.debugTerminalCommandPatterns%","tags":["advanced","experimental"]},"github.copilot.chat.localWorkspaceRecording.enabled":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.localWorkspaceRecording.enabled%","tags":["advanced","experimental"]},"github.copilot.chat.editRecording.enabled":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.editRecording.enabled%","tags":["advanced","experimental"]},"github.copilot.chat.inlineChat.selectionRatioThreshold":{"type":"number","default":0,"markdownDescription":"%github.copilot.config.inlineChat.selectionRatioThreshold%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.temporalContext.maxAge":{"type":"number","default":100,"markdownDescription":"%github.copilot.config.temporalContext.maxAge%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.debug.requestLogger.maxEntries":{"type":"number","default":100,"markdownDescription":"%github.copilot.config.debug.requestLogger.maxEntries%","tags":["advanced","experimental"]},"github.copilot.chat.inlineEdits.diagnosticsContextProvider.enabled":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.inlineEdits.diagnosticsContextProvider.enabled%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.temporalContext.preferSameLang":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.temporalContext.preferSameLang%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.codesearch.agent.enabled":{"type":"boolean","default":true,"markdownDescription":"%github.copilot.config.codesearch.agent.enabled%","tags":["advanced","experimental"]},"github.copilot.chat.agent.temperature":{"type":["number","null"],"markdownDescription":"%github.copilot.config.agent.temperature%","tags":["advanced","experimental"]},"github.copilot.chat.instantApply.shortContextModelName":{"type":"string","default":"gpt-4o-instant-apply-full-ft-v66-short","markdownDescription":"%github.copilot.config.instantApply.shortContextModelName%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.instantApply.shortContextLimit":{"type":"number","default":8000,"markdownDescription":"%github.copilot.config.instantApply.shortContextLimit%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.enableUserPreferences":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.enableUserPreferences%","tags":["advanced","experimental"]},"github.copilot.chat.summarizeAgentConversationHistoryThreshold":{"type":["number","null"],"markdownDescription":"%github.copilot.config.summarizeAgentConversationHistoryThreshold%","tags":["advanced","experimental"]},"github.copilot.chat.agentHistorySummarizationMode":{"type":["string","null"],"markdownDescription":"%github.copilot.config.agentHistorySummarizationMode%","tags":["advanced","experimental"]},"github.copilot.chat.agentHistorySummarizationWithPromptCache":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.agentHistorySummarizationWithPromptCache%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.agentHistorySummarizationForceGpt41":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.agentHistorySummarizationForceGpt41%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.useResponsesApiTruncation":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.useResponsesApiTruncation%","tags":["advanced","experimental"]},"github.copilot.chat.omitBaseAgentInstructions":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.omitBaseAgentInstructions%","tags":["advanced","experimental"]},"github.copilot.chat.promptFileContextProvider.enabled":{"type":"boolean","default":true,"markdownDescription":"%github.copilot.config.promptFileContextProvider.enabled%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.tools.defaultToolsGrouped":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.tools.defaultToolsGrouped%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.claudeCode.enabled":{"type":["boolean","string"],"default":false,"markdownDescription":"%github.copilot.config.claudeCode.enabled%","tags":["advanced","experimental"]},"github.copilot.chat.claudeCode.debug":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.claudeCode.debug%","tags":["advanced","experimental"]},"github.copilot.chat.copilotCLI.enabled":{"type":"boolean","default":true,"markdownDescription":"%github.copilot.config.copilotCLI.enabled%","tags":["advanced","experimental"]},"github.copilot.chat.gpt5AlternativePatch":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.gpt5AlternativePatch%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.inlineEdits.triggerOnEditorChangeAfterSeconds":{"type":["number","null"],"markdownDescription":"%github.copilot.config.inlineEdits.triggerOnEditorChangeAfterSeconds%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.inlineEdits.nextCursorPrediction.displayLine":{"type":"boolean","default":true,"markdownDescription":"%github.copilot.config.inlineEdits.nextCursorPrediction.displayLine%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.inlineEdits.nextCursorPrediction.currentFileMaxTokens":{"type":"number","default":2000,"markdownDescription":"%github.copilot.config.inlineEdits.nextCursorPrediction.currentFileMaxTokens%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.inlineEdits.renameSymbolSuggestions":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.inlineEdits.renameSymbolSuggestions%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.suggestRelatedFilesFromGitHistory.useEmbeddings":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.suggestRelatedFilesFromGitHistory.useEmbeddings%","tags":["advanced","experimental"]},"github.copilot.chat.cli.isolation.enabled":{"type":"boolean","default":true,"markdownDescription":"%github.copilot.config.cli.isolation.enabled%","tags":["advanced","experimental"]},"github.copilot.chat.cli.customAgents.enabled":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.cli.customAgents.enabled%","tags":["advanced","experimental"]},"github.copilot.chat.cli.mcp.enabled":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.cli.mcp.enabled%","tags":["advanced","experimental"]}}}],"submenus":[{"id":"copilot/reviewComment/additionalActions/applyAndNext","label":"%github.copilot.submenu.reviewComment.applyAndNext.label%"},{"id":"copilot/reviewComment/additionalActions/discardAndNext","label":"%github.copilot.submenu.reviewComment.discardAndNext.label%"},{"id":"copilot/reviewComment/additionalActions/discard","label":"%github.copilot.submenu.reviewComment.discard.label%"},{"id":"github.copilot.chat.debug.filter","label":"Filter","icon":"$(filter)"},{"id":"github.copilot.chat.debug.exportAllPromptLogsAsJson","label":"Export All Logs as JSON","icon":"$(file-export)"}],"menus":{"editor/title":[{"command":"github.copilot.debug.generateInlineEditTests","when":"resourceScheme == 'ccreq'"},{"command":"github.copilot.chat.notebook.enableFollowCellExecution","when":"config.github.copilot.chat.notebook.followCellExecution.enabled && !github.copilot.notebookFollowInSessionEnabled && github.copilot.notebookAgentModeUsage && !config.notebook.globalToolbar","group":"navigation@10"},{"command":"github.copilot.chat.notebook.disableFollowCellExecution","when":"config.github.copilot.chat.notebook.followCellExecution.enabled && github.copilot.notebookFollowInSessionEnabled && github.copilot.notebookAgentModeUsage && !config.notebook.globalToolbar","group":"navigation@10"},{"command":"github.copilot.chat.replay","group":"navigation@9","when":"resourceFilename === 'benchRun.chatReplay.json'"},{"command":"github.copilot.chat.showAsChatSession","group":"navigation@9","when":"resourceFilename === 'benchRun.chatReplay.json' || resourceFilename === 'chat-export-logs.json'"},{"command":"github.copilot.chat.applyCopilotCLIAgentSessionChanges","group":"navigation@1","when":"resourceScheme == copilotcli-worktree-changes"}],"explorer/context":[{"command":"github.copilot.chat.showAsChatSession","when":"resourceFilename === 'benchRun.chatReplay.json' || resourceFilename === 'chat-export-logs.json'","group":"2_copilot@1"}],"editor/context":[{"command":"github.copilot.chat.explain","when":"!github.copilot.interactiveSession.disabled","group":"1_chat@4"}],"editor/context/chat":[{"command":"github.copilot.chat.fix","when":"!github.copilot.interactiveSession.disabled && !editorReadonly","group":"copilotAction@1"},{"command":"github.copilot.chat.review","when":"config.github.copilot.chat.reviewSelection.enabled && !github.copilot.interactiveSession.disabled && resourceScheme != 'vscode-chat-code-block'","group":"copilotAction@2"},{"command":"github.copilot.chat.generateDocs","when":"!github.copilot.interactiveSession.disabled && !editorReadonly","group":"copilotGenerate@1"},{"command":"github.copilot.chat.generateTests","when":"!github.copilot.interactiveSession.disabled && !editorReadonly","group":"copilotGenerate@2"}],"testing/item/result":[{"command":"github.copilot.tests.fixTestFailure.fromInline","when":"testResultState == failed && !testResultOutdated","group":"inline@2"}],"testing/item/context":[{"command":"github.copilot.tests.fixTestFailure.fromInline","when":"testResultState == failed && !testResultOutdated","group":"inline@2"}],"commandPalette":[{"command":"github.copilot.chat.triggerPermissiveSignIn","when":"false"},{"command":"github.copilot.interactiveSession.feedback","when":"github.copilot-chat.activated && !github.copilot.interactiveSession.disabled"},{"command":"github.copilot.debug.workbenchState","when":"true"},{"command":"github.copilot.chat.rerunWithCopilotDebug","when":"false"},{"command":"github.copilot.chat.startCopilotDebugCommand","when":"false"},{"command":"github.copilot.git.generateCommitMessage","when":"false"},{"command":"github.copilot.git.resolveMergeConflicts","when":"false"},{"command":"github.copilot.chat.explain","when":"false"},{"command":"github.copilot.chat.review","when":"!github.copilot.interactiveSession.disabled"},{"command":"github.copilot.chat.review.apply","when":"false"},{"command":"github.copilot.chat.review.applyAndNext","when":"false"},{"command":"github.copilot.chat.review.discard","when":"false"},{"command":"github.copilot.chat.review.discardAndNext","when":"false"},{"command":"github.copilot.chat.review.discardAll","when":"false"},{"command":"github.copilot.chat.review.stagedChanges","when":"false"},{"command":"github.copilot.chat.review.unstagedChanges","when":"false"},{"command":"github.copilot.chat.review.changes","when":"false"},{"command":"github.copilot.chat.review.stagedFileChange","when":"false"},{"command":"github.copilot.chat.review.unstagedFileChange","when":"false"},{"command":"github.copilot.chat.review.previous","when":"false"},{"command":"github.copilot.chat.review.next","when":"false"},{"command":"github.copilot.chat.review.continueInInlineChat","when":"false"},{"command":"github.copilot.chat.review.continueInChat","when":"false"},{"command":"github.copilot.chat.review.markHelpful","when":"false"},{"command":"github.copilot.chat.review.markUnhelpful","when":"false"},{"command":"github.copilot.devcontainer.generateDevContainerConfig","when":"false"},{"command":"github.copilot.tests.fixTestFailure","when":"false"},{"command":"github.copilot.tests.fixTestFailure.fromInline","when":"false"},{"command":"github.copilot.search.markHelpful","when":"false"},{"command":"github.copilot.search.markUnhelpful","when":"false"},{"command":"github.copilot.search.feedback","when":"false"},{"command":"github.copilot.chat.debug.showElements","when":"false"},{"command":"github.copilot.chat.debug.hideElements","when":"false"},{"command":"github.copilot.chat.debug.showTools","when":"false"},{"command":"github.copilot.chat.debug.hideTools","when":"false"},{"command":"github.copilot.chat.debug.showNesRequests","when":"false"},{"command":"github.copilot.chat.debug.hideNesRequests","when":"false"},{"command":"github.copilot.chat.debug.exportLogItem","when":"false"},{"command":"github.copilot.chat.debug.exportPromptArchive","when":"false"},{"command":"github.copilot.chat.debug.exportPromptLogsAsJson","when":"false"},{"command":"github.copilot.chat.debug.exportAllPromptLogsAsJson","when":"false"},{"command":"github.copilot.chat.mcp.setup.check","when":"false"},{"command":"github.copilot.chat.mcp.setup.validatePackage","when":"false"},{"command":"github.copilot.chat.mcp.setup.flow","when":"false"},{"command":"github.copilot.chat.debug.showRawRequestBody","when":"false"},{"command":"github.copilot.debug.showOutputChannel","when":"false"},{"command":"github.copilot.cli.sessions.delete","when":"false"},{"command":"github.copilot.cli.sessions.refresh","when":"false"},{"command":"github.copilot.cli.sessions.resumeInTerminal","when":"false"},{"command":"github.copilot.cli.sessions.newTerminalSession","when":"false"},{"command":"github.copilot.cloud.sessions.refresh","when":"false"},{"command":"github.copilot.cloud.sessions.openInBrowser","when":"false"},{"command":"github.copilot.cloud.sessions.proxy.closeChatSessionPullRequest","when":"false"},{"command":"github.copilot.chat.applyCopilotCLIAgentSessionChanges","when":"false"},{"command":"github.copilot.chat.showAsChatSession","when":"false"}],"view/title":[{"command":"github.copilot.claude.sessions.refresh","when":"view == workbench.view.chat.sessions.claude-code","group":"navigation@1"},{"command":"github.copilot.cli.sessions.refresh","when":"view == workbench.view.chat.sessions.copilotcli","group":"navigation@1"},{"submenu":"github.copilot.chat.debug.filter","when":"view == copilot-chat","group":"navigation"},{"command":"github.copilot.chat.debug.exportAllPromptLogsAsJson","when":"view == copilot-chat","group":"export@1"},{"command":"github.copilot.debug.showOutputChannel","when":"view == copilot-chat","group":"3_show@1"},{"command":"github.copilot.debug.showChatLogView","when":"view == workbench.panel.chat.view.copilot","group":"3_show"},{"command":"github.copilot.cloud.sessions.refresh","when":"view == workbench.view.chat.sessions.copilot-cloud-agent","group":"navigation@1"}],"view/item/context":[{"command":"github.copilot.chat.debug.showRawRequestBody","when":"view == copilot-chat && viewItem == request","group":"export@0"},{"command":"github.copilot.chat.debug.exportLogItem","when":"view == copilot-chat && (viewItem == toolcall || viewItem == request)","group":"export@1"},{"command":"github.copilot.chat.debug.exportPromptArchive","when":"view == copilot-chat && viewItem == chatprompt","group":"export@2"},{"command":"github.copilot.chat.debug.exportPromptLogsAsJson","when":"view == copilot-chat && viewItem == chatprompt","group":"export@3"}],"searchPanel/aiResults/commands":[{"command":"github.copilot.search.markHelpful","group":"inline@0","when":"aiResultsTitle && aiResultsRequested"},{"command":"github.copilot.search.markUnhelpful","group":"inline@1","when":"aiResultsTitle && aiResultsRequested"},{"command":"github.copilot.search.feedback","group":"inline@2","when":"aiResultsTitle && aiResultsRequested && github.copilot.debugReportFeedback"}],"comments/comment/title":[{"command":"github.copilot.chat.review.markHelpful","group":"inline@0","when":"commentController == github-copilot-review"},{"command":"github.copilot.chat.review.markUnhelpful","group":"inline@1","when":"commentController == github-copilot-review"}],"commentsView/commentThread/context":[{"command":"github.copilot.chat.review.apply","group":"context@1","when":"commentController == github-copilot-review"},{"command":"github.copilot.chat.review.discard","group":"context@2","when":"commentController == github-copilot-review"},{"command":"github.copilot.chat.review.discardAll","group":"context@3","when":"commentController == github-copilot-review"}],"comments/commentThread/additionalActions":[{"submenu":"copilot/reviewComment/additionalActions/applyAndNext","group":"inline@1","when":"commentController == github-copilot-review && github.copilot.chat.review.numberOfComments > 1"},{"command":"github.copilot.chat.review.apply","group":"inline@1","when":"commentController == github-copilot-review && github.copilot.chat.review.numberOfComments == 1"},{"submenu":"copilot/reviewComment/additionalActions/discardAndNext","group":"inline@2","when":"commentController == github-copilot-review && github.copilot.chat.review.numberOfComments > 1"},{"submenu":"copilot/reviewComment/additionalActions/discard","group":"inline@2","when":"commentController == github-copilot-review && github.copilot.chat.review.numberOfComments == 1"}],"copilot/reviewComment/additionalActions/applyAndNext":[{"command":"github.copilot.chat.review.applyAndNext","group":"inline@1","when":"commentController == github-copilot-review"},{"command":"github.copilot.chat.review.apply","group":"inline@2","when":"commentController == github-copilot-review"}],"copilot/reviewComment/additionalActions/discardAndNext":[{"command":"github.copilot.chat.review.discardAndNext","group":"inline@1","when":"commentController == github-copilot-review"},{"command":"github.copilot.chat.review.discard","group":"inline@2","when":"commentController == github-copilot-review"},{"command":"github.copilot.chat.review.continueInInlineChat","group":"inline@3","when":"commentController == github-copilot-review"}],"copilot/reviewComment/additionalActions/discard":[{"command":"github.copilot.chat.review.discard","group":"inline@2","when":"commentController == github-copilot-review"},{"command":"github.copilot.chat.review.continueInInlineChat","group":"inline@3","when":"commentController == github-copilot-review"}],"comments/commentThread/title":[{"command":"github.copilot.chat.review.previous","group":"inline@1","when":"commentController == github-copilot-review"},{"command":"github.copilot.chat.review.next","group":"inline@2","when":"commentController == github-copilot-review"},{"command":"github.copilot.chat.review.continueInChat","group":"inline@3","when":"commentController == github-copilot-review"},{"command":"github.copilot.chat.review.discardAll","group":"inline@4","when":"commentController == github-copilot-review"}],"scm/title":[{"command":"github.copilot.chat.review.changes","group":"navigation","when":"config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmProviderRootUri in github.copilot.chat.reviewDiff.enabledRootUris"}],"scm/resourceGroup/context":[{"command":"github.copilot.chat.review.stagedChanges","when":"config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmResourceGroup == index","group":"inline@-3"},{"command":"github.copilot.chat.review.unstagedChanges","when":"config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmResourceGroup == workingTree","group":"inline@-3"}],"scm/resourceState/context":[{"command":"github.copilot.git.resolveMergeConflicts","when":"scmProvider == git && scmResourceGroup == merge && git.activeResourceHasMergeConflicts","group":"z_chat@1"},{"command":"github.copilot.chat.review.stagedFileChange","group":"3_copilot","when":"config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmResourceGroup == index"},{"command":"github.copilot.chat.review.unstagedFileChange","group":"3_copilot","when":"config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmResourceGroup == workingTree"}],"scm/inputBox":[{"command":"github.copilot.git.generateCommitMessage","when":"scmProvider == git"}],"testing/message/context":[{"command":"github.copilot.tests.fixTestFailure","when":"testing.testItemHasUri","group":"inline@1"}],"issue/reporter":[{"command":"github.copilot.report"}],"github.copilot.chat.debug.filter":[{"command":"github.copilot.chat.debug.showElements","when":"github.copilot.chat.debug.elementsHidden","group":"commands@0"},{"command":"github.copilot.chat.debug.hideElements","when":"!github.copilot.chat.debug.elementsHidden","group":"commands@0"},{"command":"github.copilot.chat.debug.showTools","when":"github.copilot.chat.debug.toolsHidden","group":"commands@1"},{"command":"github.copilot.chat.debug.hideTools","when":"!github.copilot.chat.debug.toolsHidden","group":"commands@1"},{"command":"github.copilot.chat.debug.showNesRequests","when":"github.copilot.chat.debug.nesRequestsHidden","group":"commands@2"},{"command":"github.copilot.chat.debug.hideNesRequests","when":"!github.copilot.chat.debug.nesRequestsHidden","group":"commands@2"}],"notebook/toolbar":[{"command":"github.copilot.chat.notebook.enableFollowCellExecution","when":"config.github.copilot.chat.notebook.followCellExecution.enabled && !github.copilot.notebookFollowInSessionEnabled && github.copilot.notebookAgentModeUsage && config.notebook.globalToolbar","group":"navigation/execute@15"},{"command":"github.copilot.chat.notebook.disableFollowCellExecution","when":"config.github.copilot.chat.notebook.followCellExecution.enabled && github.copilot.notebookFollowInSessionEnabled && github.copilot.notebookAgentModeUsage && config.notebook.globalToolbar","group":"navigation/execute@15"}],"editor/content":[{"command":"github.copilot.git.resolveMergeConflicts","group":"z_chat@1","when":"config.git.enabled && !git.missing && !isInDiffEditor && !isMergeEditor && resource in git.mergeChanges && git.activeResourceHasMergeConflicts"}],"chat/chatSessions":[{"command":"github.copilot.cli.sessions.resumeInTerminal","when":"chatSessionType == copilotcli","group":"inline@1"},{"command":"github.copilot.cli.sessions.delete","when":"chatSessionType == copilotcli","group":"inline@2"},{"command":"github.copilot.cli.sessions.newTerminalSession","when":"view == workbench.view.chat.sessions.copilotcli","group":"submenu"},{"command":"github.copilot.cli.sessions.refresh","when":"view == workbench.view.chat.sessions.copilotcli","group":"navigation@1"},{"command":"github.copilot.cloud.sessions.openInBrowser","when":"chatSessionType == copilot-cloud-agent","group":"navigation@10"},{"command":"github.copilot.cloud.sessions.proxy.closeChatSessionPullRequest","when":"chatSessionType == copilot-cloud-agent","group":"context"},{"command":"github.copilot.cli.sessions.delete","when":"chatSessionType == copilotcli && config.chat.agentSessionsViewLocation == 'single-view'","group":"context"}]},"icons":{"copilot-logo":{"description":"%github.copilot.icon%","default":{"fontPath":"assets/copilot.woff","fontCharacter":"\\0041"}},"copilot-warning":{"description":"%github.copilot.icon%","default":{"fontPath":"assets/copilot.woff","fontCharacter":"\\0042"}},"copilot-notconnected":{"description":"%github.copilot.icon%","default":{"fontPath":"assets/copilot.woff","fontCharacter":"\\0043"}}},"iconFonts":[{"id":"copilot-font","src":[{"path":"assets/copilot.woff","format":"woff"}]}],"terminalQuickFixes":[{"id":"copilot-chat.fixWithCopilot","commandLineMatcher":".+","commandExitResult":"error","outputMatcher":{"anchor":"bottom","length":1,"lineMatcher":".+","offset":0},"kind":"explain"},{"id":"copilot-chat.generateCommitMessage","commandLineMatcher":"git add .+","commandExitResult":"success","kind":"explain","outputMatcher":{"anchor":"bottom","length":1,"lineMatcher":".+","offset":0}},{"id":"copilot-chat.terminalToDebugging","commandLineMatcher":".+","kind":"explain","commandExitResult":"error","outputMatcher":{"anchor":"bottom","length":1,"lineMatcher":"","offset":0}},{"id":"copilot-chat.terminalToDebuggingSuccess","commandLineMatcher":".+","kind":"explain","commandExitResult":"success","outputMatcher":{"anchor":"bottom","length":1,"lineMatcher":"","offset":0}}],"languages":[{"id":"ignore","filenamePatterns":[".copilotignore"],"aliases":[]},{"id":"markdown","extensions":[".copilotmd"]}],"views":{"copilot-chat":[{"id":"copilot-chat","name":"Chat Debug","icon":"assets/debug-icon.svg","when":"github.copilot.chat.showLogView"}],"context-inspector":[{"id":"context-inspector","name":"Language Context Inspector","icon":"$(inspect)","when":"github.copilot.chat.showContextInspectorView"}],"agentSessions":[{"id":"codex-placeholder","name":"OpenAI Codex","when":"github.copilot.chat.codex.showPlaceholder","icon":"$(file)"},{"id":"copilot-agents-placeholder","name":"GitHub Copilot Agents","when":"chatEntitlementSignedOut || !chatIsEnabled","icon":"$(copilot)"}]},"viewsContainers":{"activitybar":[{"id":"copilot-chat","title":"Chat Debug","icon":"assets/debug-icon.svg"},{"id":"context-inspector","title":"Language Context Inspector","icon":"$(inspect)"}]},"configurationDefaults":{"workbench.editorAssociations":{"*.copilotmd":"vscode.markdown.preview.editor"}},"keybindings":[{"command":"github.copilot.chat.rerunWithCopilotDebug","key":"ctrl+alt+.","mac":"cmd+alt+.","when":"github.copilot-chat.activated && terminalShellIntegrationEnabled && terminalFocus && !terminalAltBufferActive"}],"walkthroughs":[{"id":"copilotWelcome","title":"%github.copilot.walkthrough.title%","description":"%github.copilot.walkthrough.description%","when":"!isWeb","steps":[{"id":"copilot.setup.signIn","title":"%github.copilot.walkthrough.setup.signIn.title%","description":"%github.copilot.walkthrough.setup.signIn.description%","when":"chatEntitlementSignedOut && !view.workbench.panel.chat.view.copilot.visible && !github.copilot-chat.activated && !github.copilot.offline && !github.copilot.interactiveSession.individual.disabled && !github.copilot.interactiveSession.individual.expired && !github.copilot.interactiveSession.enterprise.disabled && !github.copilot.interactiveSession.contactSupport","media":{"video":{"dark":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4","light":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4","hc":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4","hcLight":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4"},"altText":"%github.copilot.walkthrough.panelChat.media.altText%"}},{"id":"copilot.setup.signInNoAction","title":"%github.copilot.walkthrough.setup.signIn.title%","description":"%github.copilot.walkthrough.setup.noAction.description%","when":"chatEntitlementSignedOut && view.workbench.panel.chat.view.copilot.visible && !github.copilot-chat.activated && !github.copilot.offline && !github.copilot.interactiveSession.individual.disabled && !github.copilot.interactiveSession.individual.expired && !github.copilot.interactiveSession.enterprise.disabled && !github.copilot.interactiveSession.contactSupport","media":{"video":{"dark":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4","light":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4","hc":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4","hcLight":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4"},"altText":"%github.copilot.walkthrough.panelChat.media.altText%"}},{"id":"copilot.setup.signUp","title":"%github.copilot.walkthrough.setup.signUp.title%","description":"%github.copilot.walkthrough.setup.signUp.description%","when":"chatPlanCanSignUp && !view.workbench.panel.chat.view.copilot.visible && !github.copilot-chat.activated && !github.copilot.offline && (github.copilot.interactiveSession.individual.disabled || github.copilot.interactiveSession.individual.expired) && !github.copilot.interactiveSession.enterprise.disabled && !github.copilot.interactiveSession.contactSupport","media":{"video":{"dark":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4","light":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4","hc":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4","hcLight":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4"},"altText":"%github.copilot.walkthrough.panelChat.media.altText%"}},{"id":"copilot.setup.signUpNoAction","title":"%github.copilot.walkthrough.setup.signUp.title%","description":"%github.copilot.walkthrough.setup.noAction.description%","when":"chatPlanCanSignUp && view.workbench.panel.chat.view.copilot.visible && !github.copilot-chat.activated && !github.copilot.offline && (github.copilot.interactiveSession.individual.disabled || github.copilot.interactiveSession.individual.expired) && !github.copilot.interactiveSession.enterprise.disabled && !github.copilot.interactiveSession.contactSupport","media":{"video":{"dark":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4","light":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4","hc":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4","hcLight":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4"},"altText":"%github.copilot.walkthrough.panelChat.media.altText%"}},{"id":"copilot.panelChat","title":"%github.copilot.walkthrough.panelChat.title%","description":"%github.copilot.walkthrough.panelChat.description%","when":"!chatEntitlementSignedOut || chatIsEnabled ","media":{"video":{"dark":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4","light":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4","hc":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4","hcLight":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4"},"altText":"%github.copilot.walkthrough.panelChat.media.altText%"}},{"id":"copilot.edits","title":"%github.copilot.walkthrough.edits.title%","description":"%github.copilot.walkthrough.edits.description%","when":"!chatEntitlementSignedOut || chatIsEnabled ","media":{"video":{"dark":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/edits.mp4","light":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/edits-light.mp4","hc":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/edits-hc.mp4","hcLight":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/edits-hclight.mp4"},"altText":"%github.copilot.walkthrough.edits.media.altText%"}},{"id":"copilot.firstSuggest","title":"%github.copilot.walkthrough.firstSuggest.title%","description":"%github.copilot.walkthrough.firstSuggest.description%","when":"!chatEntitlementSignedOut || chatIsEnabled ","media":{"video":{"dark":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/ghost-text.mp4","light":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/ghost-text-light.mp4","hc":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/ghost-text-hc.mp4","hcLight":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/ghost-text-hclight.mp4"},"altText":"%github.copilot.walkthrough.firstSuggest.media.altText%"}},{"id":"copilot.inlineChatNotMac","title":"%github.copilot.walkthrough.inlineChatNotMac.title%","description":"%github.copilot.walkthrough.inlineChatNotMac.description%","when":"!isMac && (!chatEntitlementSignedOut || chatIsEnabled )","media":{"video":{"dark":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline.mp4","light":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-light.mp4","hc":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-hc.mp4","hcLight":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-hclight.mp4"},"altText":"%github.copilot.walkthrough.inlineChatNotMac.media.altText%"}},{"id":"copilot.inlineChatMac","title":"%github.copilot.walkthrough.inlineChatMac.title%","description":"%github.copilot.walkthrough.inlineChatMac.description%","when":"isMac && (!chatEntitlementSignedOut || chatIsEnabled )","media":{"video":{"dark":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline.mp4","light":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-light.mp4","hc":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-hc.mp4","hcLight":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-hclight.mp4"},"altText":"%github.copilot.walkthrough.inlineChatMac.media.altText%"}},{"id":"copilot.sparkle","title":"%github.copilot.walkthrough.sparkle.title%","description":"%github.copilot.walkthrough.sparkle.description%","when":"!chatEntitlementSignedOut || chatIsEnabled","media":{"video":{"dark":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/git-commit.mp4","light":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/git-commit-light.mp4","hc":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/git-commit-hc.mp4","hcLight":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/git-commit-hclight.mp4"},"altText":"%github.copilot.walkthrough.sparkle.media.altText%"}}]}],"jsonValidation":[{"fileMatch":"settings.json","url":"ccsettings://root/schema.json"}],"typescriptServerPlugins":[{"name":"@vscode/copilot-typescript-server-plugin","enableForWorkspaceTypeScriptVersions":true}],"chatSessions":[{"type":"claude-code","name":"claude","displayName":"Claude Code CLI Agent","icon":"$(sparkle)","welcomeTitle":"Claude Code Agent","welcomeMessage":"Run local background tasks","inputPlaceholder":"Describe your task, type `#` for adding context","order":3,"description":"The Claude Code Agent works on your local machine","when":"config.github.copilot.chat.advanced.claudeCode.enabled","canDelegate":false,"capabilities":{"supportsFileAttachments":true},"commands":[{"name":"init","description":"Initialize a new CLAUDE.md file with codebase documentation"},{"name":"compact","description":"Clear conversation history but keep a summary in context. Optional: /compact [instructions for summarization]"},{"name":"pr-comments","description":"Get comments from a GitHub pull request"},{"name":"review","description":"Review a pull request"},{"name":"security-review","description":"Complete a security review of the pending changes on the current branch"}]},{"type":"copilotcli","name":"cli","displayName":"Background Agent","icon":"$(collection)","welcomeTitle":"Background Agent","welcomeMessage":"Run tasks in the background","inputPlaceholder":"Describe your task, type `#` for adding context","order":2,"canDelegate":true,"description":"Delegate tasks to a background agent.","capabilities":{"supportsFileAttachments":true,"supportsProblemAttachments":true,"supportsToolAttachments":false,"supportsImageAttachments":true,"supportsSymbolAttachments":true,"supportsSearchResultAttachments":true,"supportsSourceControlAttachments":true},"commands":[{"name":"delegate","description":"Delegate chat session to cloud agent and create associated PR"}]},{"type":"copilot-cloud-agent","alternativeIds":["copilot-swe-agent"],"name":"cloud","displayName":"Cloud Agent","icon":"$(cloud)","welcomeTitle":"Cloud Agent","welcomeMessage":"Delegate tasks to the cloud","inputPlaceholder":"Describe your task, type `#` for adding context","order":1,"canDelegate":true,"description":"Delegate tasks to the GitHub Copilot Cloud Agent. The agent works asynchronously in the cloud to implement changes, iterates via chat, and can create or update pull requests as needed.","capabilities":{"supportsFileAttachments":true}}],"debuggers":[{"type":"vscode-chat-replay","label":"vscode-chat-replay","languages":["json"],"when":"resourceFilename === 'benchRun.chatReplay.json'","configurationAttributes":{"launch":{"properties":{"program":{"type":"string","description":"Chat replay file to debug (parse for headers)","default":"${file}"},"stopOnEntry":{"type":"boolean","default":true,"description":"Break immediately to step through manually."}},"required":["program"]}}}],"chatAgents":[{"name":"Plan","path":"./assets/agents/Plan.agent.md","description":"Researches a task to create multi-step plans"}],"chatPromptFiles":[{"name":"savePrompt","path":"./assets/prompts/savePrompt.prompt.md","description":"Generalize the current discussion into a reusable prompt and save it as a file"}]},"extensionPack":["GitHub.copilot"],"prettier":{"useTabs":true,"tabWidth":4,"singleQuote":true},"overrides":{"@aminya/node-gyp-build":"npm:node-gyp-build@4.8.1","string_decoder":"npm:string_decoder@1.2.0","node-gyp":"npm:node-gyp@10.3.1"},"isPreRelease":false} \ No newline at end of file From ac46114d05dea530064750567d6a26986937d753 Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Mon, 1 Dec 2025 15:39:23 -0800 Subject: [PATCH 11/33] update setting name --- package.json | 5263 ++++++++++++++++- package.nls.json | 2 +- .../organizationInstructionsContrib.ts | 2 +- .../common/configurationService.ts | 2 +- 4 files changed, 5265 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 56f26e2c4f..d2eeb4f426 100644 --- a/package.json +++ b/package.json @@ -1 +1,5262 @@ -{"name":"copilot-chat","displayName":"GitHub Copilot Chat","description":"AI chat features powered by Copilot","version":"0.34.0","build":"1","internalAIKey":"1058ec22-3c95-4951-8443-f26c1f325911","completionsCoreVersion":"1.378.1799","internalLargeStorageAriaKey":"ec712b3202c5462fb6877acae7f1f9d7-c19ad55e-3e3c-4f99-984b-827f6d95bd9e-6917","ariaKey":"0c6ae279ed8443289764825290e4f9e2-1a736e7c-1324-4338-be46-fc2a58ae4d14-7255","buildType":"prod","publisher":"GitHub","homepage":"https://github.com/features/copilot?editor=vscode","license":"SEE LICENSE IN LICENSE.txt","repository":{"type":"git","url":"https://github.com/microsoft/vscode-copilot-chat"},"bugs":{"url":"https://github.com/microsoft/vscode/issues"},"qna":"https://github.com/github-community/community/discussions/categories/copilot","icon":"assets/copilot.png","pricing":"Trial","engines":{"vscode":"^1.107.0-20251119","npm":">=9.0.0","node":">=22.14.0"},"categories":["AI","Chat","Programming Languages","Machine Learning"],"keywords":["ai","openai","codex","pilot","snippets","documentation","autocomplete","intellisense","refactor","javascript","python","typescript","php","go","golang","ruby","c++","c#","java","kotlin","co-pilot"],"badges":[{"url":"https://img.shields.io/badge/GitHub%20Copilot-Subscription%20Required-orange","href":"https://github.com/github-copilot/signup?editor=vscode","description":"%github.copilot.badge.signUp%"},{"url":"https://img.shields.io/github/stars/github/copilot-docs?style=social","href":"https://github.com/github/copilot-docs","description":"%github.copilot.badge.star%"},{"url":"https://img.shields.io/youtube/channel/views/UC7c3Kb6jYCRj4JOHHZTxKsQ?style=social","href":"https://www.youtube.com/@GitHub/search?query=copilot","description":"%github.copilot.badge.youtube%"},{"url":"https://img.shields.io/twitter/follow/github?style=social","href":"https://twitter.com/github","description":"%github.copilot.badge.twitter%"}],"activationEvents":["onStartupFinished","onLanguageModelChat:copilot","onUri","onFileSystem:ccreq","onFileSystem:ccsettings","onCustomAgentsProvider","onInstructionsProvider"],"main":"./dist/extension","l10n":"./l10n","enabledApiProposals":["extensionsAny","newSymbolNamesProvider","interactive","codeActionAI","activeComment","commentReveal","contribCommentThreadAdditionalMenu","contribCommentsViewThreadMenus","documentFiltersExclusive","embeddings","findTextInFiles","findTextInFiles2","findFiles2@2","textSearchProvider","terminalDataWriteEvent","terminalExecuteCommandEvent","terminalSelection","terminalQuickFixProvider","mappedEditsProvider","aiRelatedInformation","aiSettingsSearch","chatParticipantAdditions","chatEditing","defaultChatParticipant@4","contribSourceControlInputBoxMenu","authLearnMore","testObserver","aiTextSearchProvider@2","chatParticipantPrivate@11","chatProvider@4","contribDebugCreateConfiguration","chatReferenceDiagnostic","textSearchProvider2","chatReferenceBinaryData","languageModelSystem","languageModelCapabilities","inlineCompletionsAdditions","chatStatusItem","taskProblemMatcherStatus","contribLanguageModelToolSets","textDocumentChangeReason","resolvers","taskExecutionTerminal","dataChannels","languageModelThinkingPart","chatSessionsProvider@3","devDeviceId","contribEditorContentMenu"],"contributes":{"languageModelTools":[{"name":"copilot_searchCodebase","toolReferenceName":"codebase","displayName":"%copilot.tools.searchCodebase.name%","icon":"$(folder)","userDescription":"%copilot.codebase.tool.description%","modelDescription":"Run a natural language search for relevant code or documentation comments from the user's current workspace. Returns relevant code snippets from the user's current workspace if it is large, or the full contents of the workspace if it is small.","tags":["codesearch","vscode_codesearch"],"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"The query to search the codebase for. Should contain all relevant context. Should ideally be text that might appear in the codebase, such as function names, variable names, or comments."}},"required":["query"]}},{"name":"copilot_searchWorkspaceSymbols","toolReferenceName":"symbols","displayName":"%copilot.tools.searchWorkspaceSymbols.name%","icon":"$(symbol)","userDescription":"%copilot.workspaceSymbols.tool.description%","modelDescription":"Search the user's workspace for code symbols using language services. Use this tool when the user is looking for a specific symbol in their workspace.","tags":["vscode_codesearch"],"inputSchema":{"type":"object","properties":{"symbolName":{"type":"string","description":"The symbol to search for, such as a function name, class name, or variable name."}},"required":["symbolName"]}},{"name":"copilot_listCodeUsages","toolReferenceName":"usages","legacyToolReferenceFullNames":["usages"],"displayName":"%copilot.tools.listCodeUsages.name%","icon":"$(references)","userDescription":"%copilot.listCodeUsages.tool.description%","modelDescription":"Request to list all usages (references, definitions, implementations etc) of a function, class, method, variable etc. Use this tool when \n1. Looking for a sample implementation of an interface or class\n2. Checking how a function is used throughout the codebase.\n3. Including and updating all usages when changing a function, method, or constructor","tags":["vscode_codesearch"],"inputSchema":{"type":"object","properties":{"symbolName":{"type":"string","description":"The name of the symbol, such as a function name, class name, method name, variable name, etc."},"filePaths":{"type":"array","description":"One or more file paths which likely contain the definition of the symbol. For instance the file which declares a class or function. This is optional but will speed up the invocation of this tool and improve the quality of its output.","items":{"type":"string"}}},"required":["symbolName"]}},{"name":"copilot_getVSCodeAPI","toolReferenceName":"vscodeAPI","displayName":"%copilot.tools.getVSCodeAPI.name%","icon":"$(references)","userDescription":"%copilot.vscode.tool.description%","modelDescription":"Get comprehensive VS Code API documentation and references for extension development. This tool provides authoritative documentation for VS Code's extensive API surface, including proposed APIs, contribution points, and best practices. Use this tool for understanding complex VS Code API interactions.\n\nWhen to use this tool:\n- User asks about specific VS Code APIs, interfaces, or extension capabilities\n- Need documentation for VS Code extension contribution points (commands, views, settings, etc.)\n- Questions about proposed APIs and their usage patterns\n- Understanding VS Code extension lifecycle, activation events, and packaging\n- Best practices for VS Code extension development architecture\n- API examples and code patterns for extension features\n- Troubleshooting extension-specific issues or API limitations\n\nWhen NOT to use this tool:\n- Creating simple standalone files or scripts unrelated to VS Code extensions\n- General programming questions not specific to VS Code extension development\n- Questions about using VS Code as an editor (user-facing features)\n- Non-extension related development tasks\n- File creation or editing that doesn't involve VS Code extension APIs\n\nCRITICAL usage guidelines:\n1. Always include specific API names, interfaces, or concepts in your query\n2. Mention the extension feature you're trying to implement\n3. Include context about proposed vs stable APIs when relevant\n4. Reference specific contribution points when asking about extension manifest\n5. Be specific about the VS Code version or API version when known\n\nScope: This tool is for EXTENSION DEVELOPMENT ONLY - building tools that extend VS Code itself, not for general file creation or non-extension programming tasks.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"The query to search vscode documentation for. Should contain all relevant context."}},"required":["query"]},"tags":[]},{"name":"copilot_findFiles","toolReferenceName":"fileSearch","displayName":"%copilot.tools.findFiles.name%","modelDescription":"Search for files in the workspace by glob pattern. This only returns the paths of matching files. Use this tool when you know the exact filename pattern of the files you're searching for. Glob patterns match from the root of the workspace folder. Examples:\n- **/*.{js,ts} to match all js/ts files in the workspace.\n- src/** to match all files under the top-level src folder.\n- **/foo/**/*.js to match all js files under any foo folder in the workspace.","tags":["vscode_codesearch"],"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Search for files with names or paths matching this glob pattern."},"maxResults":{"type":"number","description":"The maximum number of results to return. Do not use this unless necessary, it can slow things down. By default, only some matches are returned. If you use this and don't see what you're looking for, you can try again with a more specific query or a larger maxResults."}},"required":["query"]}},{"name":"copilot_findTextInFiles","toolReferenceName":"textSearch","displayName":"%copilot.tools.findTextInFiles.name%","modelDescription":"Do a fast text search in the workspace. Use this tool when you want to search with an exact string or regex. If you are not sure what words will appear in the workspace, prefer using regex patterns with alternation (|) or character classes to search for multiple potential words at once instead of making separate searches. For example, use 'function|method|procedure' to look for all of those words at once. Use includePattern to search within files matching a specific pattern, or in a specific file, using a relative path. Use 'includeIgnoredFiles' to include files normally ignored by .gitignore, other ignore files, and `files.exclude` and `search.exclude` settings. Warning: using this may cause the search to be slower, only set it when you want to search in ignored folders like node_modules or build outputs. Use this tool when you want to see an overview of a particular file, instead of using read_file many times to look for code within a file.","tags":["vscode_codesearch"],"inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"The pattern to search for in files in the workspace. Use regex with alternation (e.g., 'word1|word2|word3') or character classes to find multiple potential words in a single search. Be sure to set the isRegexp property properly to declare whether it's a regex or plain text pattern. Is case-insensitive."},"isRegexp":{"type":"boolean","description":"Whether the pattern is a regex."},"includePattern":{"type":"string","description":"Search files matching this glob pattern. Will be applied to the relative path of files within the workspace. To search recursively inside a folder, use a proper glob pattern like \"src/folder/**\". Do not use | in includePattern."},"maxResults":{"type":"number","description":"The maximum number of results to return. Do not use this unless necessary, it can slow things down. By default, only some matches are returned. If you use this and don't see what you're looking for, you can try again with a more specific query or a larger maxResults."},"includeIgnoredFiles":{"type":"boolean","description":"Whether to include files that would normally be ignored according to .gitignore, other ignore files and `files.exclude` and `search.exclude` settings. Warning: using this may cause the search to be slower. Only set it when you want to search in ignored folders like node_modules or build outputs."}},"required":["query","isRegexp"]}},{"name":"copilot_applyPatch","displayName":"%copilot.tools.applyPatch.name%","toolReferenceName":"applyPatch","userDescription":"%copilot.tools.applyPatch.description%","modelDescription":"Edit text files. Do not use this tool to edit Jupyter notebooks. `apply_patch` allows you to execute a diff/patch against a text file, but the format of the diff specification is unique to this task, so pay careful attention to these instructions. To use the `apply_patch` command, you should pass a message of the following structure as \"input\":\n\n*** Begin Patch\n[YOUR_PATCH]\n*** End Patch\n\nWhere [YOUR_PATCH] is the actual content of your patch, specified in the following V4A diff format.\n\n*** [ACTION] File: [/absolute/path/to/file] -> ACTION can be one of Add, Update, or Delete.\nAn example of a message that you might pass as \"input\" to this function, in order to apply a patch, is shown below.\n\n*** Begin Patch\n*** Update File: /Users/someone/pygorithm/searching/binary_search.py\n@@class BaseClass\n@@ def search():\n- pass\n+ raise NotImplementedError()\n\n@@class Subclass\n@@ def search():\n- pass\n+ raise NotImplementedError()\n\n*** End Patch\nDo not use line numbers in this diff format.","inputSchema":{"type":"object","properties":{"input":{"type":"string","description":"The edit patch to apply."},"explanation":{"type":"string","description":"A short description of what the tool call is aiming to achieve."}},"required":["input","explanation"]}},{"name":"copilot_readFile","toolReferenceName":"readFile","legacyToolReferenceFullNames":["search/readFile"],"displayName":"%copilot.tools.readFile.name%","userDescription":"%copilot.tools.readFile.userDescription%","modelDescription":"Read the contents of a file.\n\nYou must specify the line range you're interested in. Line numbers are 1-indexed. If the file contents returned are insufficient for your task, you may call this tool again to retrieve more content. Prefer reading larger ranges over doing many small reads.","tags":["vscode_codesearch"],"inputSchema":{"type":"object","properties":{"filePath":{"description":"The absolute path of the file to read.","type":"string"},"startLine":{"type":"number","description":"The line number to start reading from, 1-based."},"endLine":{"type":"number","description":"The inclusive line number to end reading at, 1-based."}},"required":["filePath","startLine","endLine"]}},{"name":"copilot_listDirectory","toolReferenceName":"listDirectory","displayName":"%copilot.tools.listDirectory.name%","modelDescription":"List the contents of a directory. Result will have the name of the child. If the name ends in /, it's a folder, otherwise a file","tags":["vscode_codesearch"],"inputSchema":{"type":"object","properties":{"path":{"type":"string","description":"The absolute path to the directory to list."}},"required":["path"]}},{"name":"copilot_getErrors","displayName":"%copilot.tools.getErrors.name%","toolReferenceName":"problems","legacyToolReferenceFullNames":["problems"],"icon":"$(error)","userDescription":"%copilot.tools.errors.description%","modelDescription":"Get any compile or lint errors in a specific file or across all files. If the user mentions errors or problems in a file, they may be referring to these. Use the tool to see the same errors that the user is seeing. If the user asks you to analyze all errors, or does not specify a file, use this tool to gather errors for all files. Also use this tool after editing a file to validate the change.","tags":[],"inputSchema":{"type":"object","properties":{"filePaths":{"description":"The absolute paths to the files or folders to check for errors. Omit 'filePaths' when retrieving all errors.","type":"array","items":{"type":"string"}}}}},{"name":"copilot_readProjectStructure","displayName":"%copilot.tools.readProjectStructure.name%","modelDescription":"Get a file tree representation of the workspace.","tags":[]},{"name":"copilot_getChangedFiles","displayName":"%copilot.tools.getChangedFiles.name%","toolReferenceName":"changes","legacyToolReferenceFullNames":["changes"],"icon":"$(diff)","userDescription":"%copilot.tools.changes.description%","modelDescription":"Get git diffs of current file changes in a git repository. Don't forget that you can use run_in_terminal to run git commands in a terminal as well.","tags":["vscode_codesearch"],"inputSchema":{"type":"object","properties":{"repositoryPath":{"type":"string","description":"The absolute path to the git repository to look for changes in. If not provided, the active git repository will be used."},"sourceControlState":{"type":"array","items":{"type":"string","enum":["staged","unstaged","merge-conflicts"]},"description":"The kinds of git state to filter by. Allowed values are: 'staged', 'unstaged', and 'merge-conflicts'. If not provided, all states will be included."}}}},{"name":"copilot_testFailure","toolReferenceName":"testFailure","legacyToolReferenceFullNames":["testFailure"],"displayName":"%copilot.tools.testFailure.name%","icon":"$(beaker)","userDescription":"%copilot.testFailure.tool.description%","modelDescription":"Includes test failure information in the prompt.","inputSchema":{},"tags":["vscode_editing_with_tests","enable_other_tool_copilot_readFile","enable_other_tool_copilot_listDirectory","enable_other_tool_copilot_findFiles","enable_other_tool_copilot_runTests"]},{"name":"copilot_updateUserPreferences","toolReferenceName":"updateUserPreferences","displayName":"%copilot.tools.updateUserPreferences.name%","modelDescription":"Update the user's preferences file with new information about the user and their coding preferences, based on the current chat history.","canBeReferencedInPrompt":true,"tags":[],"inputSchema":{"type":"object","properties":{"facts":{"type":"array","items":{"type":"string"},"description":"An array of new user preferences to remember."}},"required":["facts"]},"when":"config.github.copilot.chat.enableUserPreferences"},{"name":"copilot_createNewWorkspace","displayName":"%github.copilot.tools.createNewWorkspace.name%","toolReferenceName":"newWorkspace","legacyToolReferenceFullNames":["new/newWorkspace"],"icon":"$(new-folder)","userDescription":"%github.copilot.tools.createNewWorkspace.userDescription%","when":"config.github.copilot.chat.newWorkspaceCreation.enabled","modelDescription":"Get comprehensive setup steps to help the user create complete project structures in a VS Code workspace. This tool is designed for full project initialization and scaffolding, not for creating individual files.\n\nWhen to use this tool:\n- User wants to create a new complete project from scratch\n- Setting up entire project frameworks (TypeScript projects, React apps, Node.js servers, etc.)\n- Initializing Model Context Protocol (MCP) servers with full structure\n- Creating VS Code extensions with proper scaffolding\n- Setting up Next.js, Vite, or other framework-based projects\n- User asks for \"new project\", \"create a workspace\", \"set up a [framework] project\"\n- Need to establish complete development environment with dependencies, config files, and folder structure\n\nWhen NOT to use this tool:\n- Creating single files or small code snippets\n- Adding individual files to existing projects\n- Making modifications to existing codebases\n- User asks to \"create a file\" or \"add a component\"\n- Simple code examples or demonstrations\n- Debugging or fixing existing code\n\nThis tool provides complete project setup including:\n- Folder structure creation\n- Package.json and dependency management\n- Configuration files (tsconfig, eslint, etc.)\n- Initial boilerplate code\n- Development environment setup\n- Build and run instructions\n\nUse other file creation tools for individual files within existing projects.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"The query to use to generate the new workspace. This should be a clear and concise description of the workspace the user wants to create."}},"required":["query"]},"tags":["enable_other_tool_install_extension","enable_other_tool_get_project_setup_info"]},{"name":"copilot_getProjectSetupInfo","displayName":"%github.copilot.tools.getProjectSetupInfo.name%","when":"config.github.copilot.chat.newWorkspaceCreation.enabled","toolReferenceName":"getProjectSetupInfo","legacyToolReferenceFullNames":["new/getProjectSetupInfo"],"modelDescription":"Do not call this tool without first calling the tool to create a workspace. This tool provides a project setup information for a Visual Studio Code workspace based on a project type and programming language.","inputSchema":{"type":"object","properties":{"projectType":{"type":"string","description":"The type of project to create. Supported values are: 'python-script', 'python-project', 'mcp-server', 'model-context-protocol-server', 'vscode-extension', 'next-js', 'vite' and 'other'"}},"required":["projectType"]},"tags":[]},{"name":"copilot_installExtension","displayName":"Install Extension in VS Code","when":"config.github.copilot.chat.newWorkspaceCreation.enabled","toolReferenceName":"installExtension","legacyToolReferenceFullNames":["new/installExtension"],"modelDescription":"Install an extension in VS Code. Use this tool to install an extension in Visual Studio Code as part of a new workspace creation process only.","inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"The ID of the extension to install. This should be in the format .."},"name":{"type":"string","description":"The name of the extension to install. This should be a clear and concise description of the extension."}},"required":["id","name"]},"tags":[]},{"name":"copilot_runVscodeCommand","displayName":"Run VS Code Command","when":"config.github.copilot.chat.newWorkspaceCreation.enabled","toolReferenceName":"runCommand","legacyToolReferenceFullNames":["new/runVscodeCommand"],"modelDescription":"Run a command in VS Code. Use this tool to run a command in Visual Studio Code as part of a new workspace creation process only.","inputSchema":{"type":"object","properties":{"commandId":{"type":"string","description":"The ID of the command to execute. This should be in the format ."},"name":{"type":"string","description":"The name of the command to execute. This should be a clear and concise description of the command."},"args":{"type":"array","description":"The arguments to pass to the command. This should be an array of strings.","items":{"type":"string"}}},"required":["commandId","name"]},"tags":[]},{"name":"copilot_createNewJupyterNotebook","displayName":"Create New Jupyter Notebook","icon":"$(notebook)","toolReferenceName":"createJupyterNotebook","legacyToolReferenceFullNames":["newJupyterNotebook"],"modelDescription":"Generates a new Jupyter Notebook (.ipynb) in VS Code. Jupyter Notebooks are interactive documents commonly used for data exploration, analysis, visualization, and combining code with narrative text. Prefer creating plain Python files or similar unless a user explicitly requests creating a new Jupyter Notebook or already has a Jupyter Notebook opened or exists in the workspace.","userDescription":"%copilot.tools.newJupyterNotebook.description%","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"The query to use to generate the jupyter notebook. This should be a clear and concise description of the notebook the user wants to create."}},"required":["query"]},"tags":[]},{"name":"copilot_insertEdit","toolReferenceName":"insertEdit","displayName":"%copilot.tools.insertEdit.name%","modelDescription":"Insert new code into an existing file in the workspace. Use this tool once per file that needs to be modified, even if there are multiple changes for a file. Generate the \"explanation\" property first.\nThe system is very smart and can understand how to apply your edits to the files, you just need to provide minimal hints.\nAvoid repeating existing code, instead use comments to represent regions of unchanged code. Be as concise as possible. For example:\n// ...existing code...\n{ changed code }\n// ...existing code...\n{ changed code }\n// ...existing code...\n\nHere is an example of how you should use format an edit to an existing Person class:\nclass Person {\n\t// ...existing code...\n\tage: number;\n\t// ...existing code...\n\tgetAge() {\n\treturn this.age;\n\t}\n}","tags":[],"inputSchema":{"type":"object","properties":{"explanation":{"type":"string","description":"A short explanation of the edit being made."},"filePath":{"type":"string","description":"An absolute path to the file to edit."},"code":{"type":"string","description":"The code change to apply to the file.\nThe system is very smart and can understand how to apply your edits to the files, you just need to provide minimal hints.\nAvoid repeating existing code, instead use comments to represent regions of unchanged code. Be as concise as possible. For example:\n// ...existing code...\n{ changed code }\n// ...existing code...\n{ changed code }\n// ...existing code...\n\nHere is an example of how you should use format an edit to an existing Person class:\nclass Person {\n\t// ...existing code...\n\tage: number;\n\t// ...existing code...\n\tgetAge() {\n\t\treturn this.age;\n\t}\n}"}},"required":["explanation","filePath","code"]}},{"name":"copilot_createFile","toolReferenceName":"createFile","legacyToolReferenceFullNames":["createFile"],"displayName":"%copilot.tools.createFile.name%","userDescription":"%copilot.tools.createFile.description%","modelDescription":"This is a tool for creating a new file in the workspace. The file will be created with the specified content. The directory will be created if it does not already exist. Never use this tool to edit a file that already exists.","tags":[],"inputSchema":{"type":"object","properties":{"filePath":{"type":"string","description":"The absolute path to the file to create."},"content":{"type":"string","description":"The content to write to the file."}},"required":["filePath","content"]}},{"name":"copilot_createDirectory","toolReferenceName":"createDirectory","legacyToolReferenceFullNames":["createDirectory"],"displayName":"%copilot.tools.createDirectory.name%","userDescription":"%copilot.tools.createDirectory.description%","modelDescription":"Create a new directory structure in the workspace. Will recursively create all directories in the path, like mkdir -p. You do not need to use this tool before using create_file, that tool will automatically create the needed directories.","tags":[],"inputSchema":{"type":"object","properties":{"dirPath":{"type":"string","description":"The absolute path to the directory to create."}},"required":["dirPath"]}},{"name":"copilot_openSimpleBrowser","displayName":"%copilot.tools.openSimpleBrowser.name%","modelDescription":"Preview a website or open a URL in the editor's Simple Browser. Useful for quickly viewing locally hosted websites, demos, or resources without leaving the coding environment.","userDescription":"%copilot.tools.openSimpleBrowser.description%","toolReferenceName":"openSimpleBrowser","legacyToolReferenceFullNames":["openSimpleBrowser"],"tags":[],"inputSchema":{"type":"object","properties":{"url":{"type":"string","description":"The website URL to preview or open in the Simple Browser inside the editor. Must be either an http or https URL"}},"required":["url"]}},{"name":"copilot_replaceString","toolReferenceName":"replaceString","displayName":"%copilot.tools.replaceString.name%","modelDescription":"This is a tool for making edits in an existing file in the workspace. For moving or renaming files, use run in terminal tool with the 'mv' command instead. For larger edits, split them into smaller edits and call the edit tool multiple times to ensure accuracy. Before editing, always ensure you have the context to understand the file's contents and context. To edit a file, provide: 1) filePath (absolute path), 2) oldString (MUST be the exact literal text to replace including all whitespace, indentation, newlines, and surrounding code etc), and 3) newString (MUST be the exact literal text to replace \\`oldString\\` with (also including all whitespace, indentation, newlines, and surrounding code etc.). Ensure the resulting code is correct and idiomatic.). Each use of this tool replaces exactly ONE occurrence of oldString.\n\nCRITICAL for \\`oldString\\`: Must uniquely identify the single instance to change. Include at least 3 lines of context BEFORE and AFTER the target text, matching whitespace and indentation precisely. If this string matches multiple locations, or does not match exactly, the tool will fail. Never use 'Lines 123-456 omitted' from summarized documents or ...existing code... comments in the oldString or newString.","when":"!config.github.copilot.chat.disableReplaceTool","inputSchema":{"type":"object","properties":{"filePath":{"type":"string","description":"An absolute path to the file to edit."},"oldString":{"type":"string","description":"The exact literal text to replace, preferably unescaped. For single replacements (default), include at least 3 lines of context BEFORE and AFTER the target text, matching whitespace and indentation precisely. For multiple replacements, specify expected_replacements parameter. If this string is not the exact literal text (i.e. you escaped it) or does not match exactly, the tool will fail."},"newString":{"type":"string","description":"The exact literal text to replace `old_string` with, preferably unescaped. Provide the EXACT text. Ensure the resulting code is correct and idiomatic."}},"required":["filePath","oldString","newString"]}},{"name":"copilot_multiReplaceString","toolReferenceName":"multiReplaceString","displayName":"%copilot.tools.multiReplaceString.name%","modelDescription":"This tool allows you to apply multiple replace_string_in_file operations in a single call, which is more efficient than calling replace_string_in_file multiple times. It takes an array of replacement operations and applies them sequentially. Each replacement operation has the same parameters as replace_string_in_file: filePath, oldString, newString, and explanation. This tool is ideal when you need to make multiple edits across different files or multiple edits in the same file. The tool will provide a summary of successful and failed operations.","when":"!config.github.copilot.chat.disableReplaceTool","inputSchema":{"type":"object","properties":{"explanation":{"type":"string","description":"A brief explanation of what the multi-replace operation will accomplish."},"replacements":{"type":"array","description":"An array of replacement operations to apply sequentially.","items":{"type":"object","properties":{"explanation":{"type":"string","description":"A brief explanation of this specific replacement operation."},"filePath":{"type":"string","description":"An absolute path to the file to edit."},"oldString":{"type":"string","description":"The exact literal text to replace, preferably unescaped. Include at least 3 lines of context BEFORE and AFTER the target text, matching whitespace and indentation precisely. If this string is not the exact literal text or does not match exactly, this replacement will fail."},"newString":{"type":"string","description":"The exact literal text to replace `oldString` with, preferably unescaped. Provide the EXACT text. Ensure the resulting code is correct and idiomatic."}},"required":["explanation","filePath","oldString","newString"]},"minItems":1}},"required":["explanation","replacements"]}},{"name":"copilot_editNotebook","toolReferenceName":"editNotebook","icon":"$(pencil)","displayName":"%copilot.tools.editNotebook.name%","userDescription":"%copilot.tools.editNotebook.userDescription%","modelDescription":"This is a tool for editing an existing Notebook file in the workspace. Generate the \"explanation\" property first.\nThe system is very smart and can understand how to apply your edits to the notebooks.\nWhen updating the content of an existing cell, ensure newCode preserves whitespace and indentation exactly and does NOT include any code markers such as (...existing code...).","tags":["enable_other_tool_copilot_getNotebookSummary"],"inputSchema":{"type":"object","properties":{"filePath":{"type":"string","description":"An absolute path to the notebook file to edit, or the URI of a untitled, not yet named, file, such as `untitled:Untitled-1."},"cellId":{"type":"string","description":"Id of the cell that needs to be deleted or edited. Use the value `TOP`, `BOTTOM` when inserting a cell at the top or bottom of the notebook, else provide the id of the cell after which a new cell is to be inserted. Remember, if a cellId is provided and editType=insert, then a cell will be inserted after the cell with the provided cellId."},"newCode":{"anyOf":[{"type":"string","description":"The code for the new or existing cell to be edited. Code should not be wrapped within tags. Do NOT include code markers such as (...existing code...) to indicate existing code."},{"type":"array","items":{"type":"string","description":"The code for the new or existing cell to be edited. Code should not be wrapped within tags"}}]},"language":{"type":"string","description":"The language of the cell. `markdown`, `python`, `javascript`, `julia`, etc."},"editType":{"type":"string","enum":["insert","delete","edit"],"description":"The operation peformed on the cell, whether `insert`, `delete` or `edit`.\nUse the `editType` field to specify the operation: `insert` to add a new cell, `edit` to modify an existing cell's content, and `delete` to remove a cell."}},"required":["filePath","editType","cellId"]}},{"name":"copilot_runNotebookCell","displayName":"%copilot.tools.runNotebookCell.name%","toolReferenceName":"runNotebookCell","legacyToolReferenceFullNames":["runNotebooks/runCell"],"icon":"$(play)","modelDescription":"This is a tool for running a code cell in a notebook file directly in the notebook editor. The output from the execution will be returned. Code cells should be run as they are added or edited when working through a problem to bring the kernel state up to date and ensure the code executes successfully. Code cells are ready to run and don't require any pre-processing. If asked to run the first cell in a notebook, you should run the first code cell since markdown cells cannot be executed. NOTE: Avoid executing Markdown cells or providing Markdown cell IDs, as Markdown cells cannot be executed.","userDescription":"%copilot.tools.runNotebookCell.description%","tags":["enable_other_tool_copilot_getNotebookSummary"],"inputSchema":{"type":"object","properties":{"filePath":{"type":"string","description":"An absolute path to the notebook file with the cell to run, or the URI of a untitled, not yet named, file, such as `untitled:Untitled-1.ipynb"},"reason":{"type":"string","description":"An optional explanation of why the cell is being run. This will be shown to the user before the tool is run and is not necessary if it's self-explanatory."},"cellId":{"type":"string","description":"The ID for the code cell to execute. Avoid providing markdown cell IDs as nothing will be executed."},"continueOnError":{"type":"boolean","description":"Whether or not execution should continue for remaining cells if an error is encountered. Default to false unless instructed otherwise."}},"required":["filePath","cellId"]}},{"name":"copilot_getNotebookSummary","toolReferenceName":"getNotebookSummary","legacyToolReferenceFullNames":["runNotebooks/getNotebookSummary"],"displayName":"Get the structure of a notebook","modelDescription":"This is a tool returns the list of the Notebook cells along with the id, cell types, line ranges, language, execution information and output mime types for each cell. This is useful to get Cell Ids when executing a notebook or determine what cells have been executed and what order, or what cells have outputs. If required to read contents of a cell use this to determine the line range of a cells, and then use read_file tool to read a specific line range. Requery this tool if the contents of the notebook change.","tags":[],"inputSchema":{"type":"object","properties":{"filePath":{"type":"string","description":"An absolute path to the notebook file with the cell to run, or the URI of a untitled, not yet named, file, such as `untitled:Untitled-1.ipynb"}},"required":["filePath"]}},{"name":"copilot_readNotebookCellOutput","displayName":"%copilot.tools.getNotebookCellOutput.name%","toolReferenceName":"readNotebookCellOutput","legacyToolReferenceFullNames":["runNotebooks/readNotebookCellOutput"],"icon":"$(notebook-render-output)","modelDescription":"This tool will retrieve the output for a notebook cell from its most recent execution or restored from disk. The cell may have output even when it has not been run in the current kernel session. This tool has a higher token limit for output length than the runNotebookCell tool.","userDescription":"%copilot.tools.getNotebookCellOutput.description%","when":"userHasOpenedNotebook","tags":[],"inputSchema":{"type":"object","properties":{"filePath":{"type":"string","description":"An absolute path to the notebook file with the cell to run, or the URI of a untitled, not yet named, file, such as `untitled:Untitled-1.ipynb"},"cellId":{"type":"string","description":"The ID of the cell for which output should be retrieved."}},"required":["filePath","cellId"]}},{"name":"copilot_fetchWebPage","displayName":"%copilot.tools.fetchWebPage.name%","toolReferenceName":"fetch","legacyToolReferenceFullNames":["fetch"],"when":"!isWeb","icon":"$(globe)","userDescription":"%copilot.tools.fetchWebPage.description%","modelDescription":"Fetches the main content from a web page. This tool is useful for summarizing or analyzing the content of a webpage. You should use this tool when you think the user is looking for information from a specific webpage.","tags":[],"inputSchema":{"type":"object","properties":{"urls":{"type":"array","items":{"type":"string"},"description":"An array of URLs to fetch content from."},"query":{"type":"string","description":"The query to search for in the web page's content. This should be a clear and concise description of the content you want to find."}},"required":["urls","query"]}},{"name":"copilot_findTestFiles","displayName":"%copilot.tools.findTestFiles.name%","icon":"$(beaker)","canBeReferencedInPrompt":false,"toolReferenceName":"findTestFiles","userDescription":"%copilot.tools.findTestFiles.description%","modelDescription":"For a source code file, find the file that contains the tests. For a test file find the file that contains the code under test.","tags":[],"inputSchema":{"type":"object","properties":{"filePaths":{"type":"array","items":{"type":"string"}}},"required":["filePaths"]}},{"name":"copilot_getDocInfo","displayName":"%copilot.tools.getDocInfo.name%","icon":"$(beaker)","canBeReferencedInPrompt":false,"toolReferenceName":"docInfo","userDescription":"%copilot.tools.getDocInfo.description%","modelDescription":"Find information about how to document it a symbol like a class or function. This tool is useful for generating documentation comments for code symbols. You should use this tool when you think the user is looking for information about how to document a specific code symbol.","tags":[],"inputSchema":{"type":"object","properties":{"filePaths":{"type":"array","items":{"type":"string"},"description":"The file paths for which documentation information is needed."}},"required":["filePaths"]}},{"name":"copilot_getSearchResults","toolReferenceName":"searchResults","displayName":"%github.copilot.tools.searchResults.name%","icon":"$(search)","userDescription":"%github.copilot.tools.searchResults.description%","modelDescription":"The results from the search view"},{"name":"copilot_githubRepo","toolReferenceName":"githubRepo","legacyToolReferenceFullNames":["githubRepo"],"displayName":"%github.copilot.tools.githubRepo.name%","modelDescription":"Searches a GitHub repository for relevant source code snippets. Only use this tool if the user is very clearly asking for code snippets from a specific GitHub repository. Do not use this tool for Github repos that the user has open in their workspace.","userDescription":"%github.copilot.tools.githubRepo.userDescription%","icon":"$(repo)","when":"!config.github.copilot.chat.githubMcpServer.enabled","inputSchema":{"type":"object","properties":{"repo":{"type":"string","description":"The name of the Github repository to search for code in. Should must be formatted as '/'."},"query":{"type":"string","description":"The query to search for repo. Should contain all relevant context."}},"required":["repo","query"]}},{"name":"copilot_toolReplay","modelDescription":"Replays a tool call from a previous chat session.","displayName":"tool replay","when":"false","inputSchema":{"type":"object","properties":{"toolCallId":{"type":"string","description":"the id of the tool original tool call"},"toolName":{"type":"string","description":"the name of the tool being replayed"},"toolCallArgs":{"type":"object","description":"the arguments of the tool call"}}}},{"name":"copilot_memory","toolReferenceName":"memory","displayName":"%copilot.tools.memory.name%","userDescription":"%copilot.tools.memory.description%","modelDescription":"Manage persistent memory across conversations. This tool allows you to create, view, update, and delete memory files that persist between chat sessions. Use this to remember important information about the user, their preferences, project context, or anything that should be recalled in future conversations. Available commands: view (list/read memories), create (new memory file), str_replace (edit content), insert (add content), delete (remove memory), rename (change filename).","icon":"$(database)","when":"config.github.copilot.chat.tools.memory.enabled","canBeReferencedInPrompt":true,"tags":[],"inputSchema":{"type":"object","properties":{"command":{"type":"string","enum":["view","create","str_replace","insert","delete","rename"],"description":"The memory operation to perform:\n- view: Show directory contents or file contents (optional line ranges)\n- create: Create or overwrite a file\n- str_replace: Replace text in a file\n- insert: Insert text at a specific line\n- delete: Delete a file or directory\n- rename: Rename or move a file or directory"},"path":{"type":"string","description":"Path to the memory file or directory. Must start with /memories.\n- For view: /memories or /memories/file.md\n- For create/str_replace/insert/delete: /memories/file.md\n- Not used for rename (use old_path/new_path instead)"},"view_range":{"type":"array","items":{"type":"number"},"minItems":2,"maxItems":2,"description":"[view only] Optional line range [start, end] to view specific lines. Example: [1, 10]"},"file_text":{"type":"string","description":"[create only] Content to write to the file. Required for create command."},"old_str":{"type":"string","description":"[str_replace only] The exact literal text to find and replace. Must be unique in the file. Required for str_replace command."},"new_str":{"type":"string","description":"[str_replace only] The exact literal text to replace old_str with. Can be empty string. Required for str_replace command."},"insert_line":{"type":"number","description":"[insert only] Line number at which to insert text (0-indexed, 0 = before first line). Required for insert command."},"insert_text":{"type":"string","description":"[insert only] Text to insert at the specified line. Required for insert command."},"old_path":{"type":"string","description":"[rename only] Current path of the file or directory. Must start with /memories. Required for rename command."},"new_path":{"type":"string","description":"[rename only] New path for the file or directory. Must start with /memories. Required for rename command."}},"required":["command"]}},{"name":"copilot_editFiles","modelDescription":"This is a placeholder tool, do not use","userDescription":"Edit files","icon":"$(pencil)","displayName":"Edit Files","toolReferenceName":"editFiles","legacyToolReferenceFullNames":["editFiles"]}],"languageModelToolSets":[{"name":"edit","description":"%copilot.toolSet.editing.description%","icon":"$(pencil)","tools":["createDirectory","createFile","createJupyterNotebook","editFiles","editNotebook"]},{"name":"execute","description":"","tools":["runNotebookCell","testFailure"]},{"name":"read","description":"%copilot.toolSet.read.description%","icon":"$(eye)","tools":["getNotebookSummary","readFile","readNotebookCellOutput"]},{"name":"search","description":"%copilot.toolSet.search.description%","icon":"$(search)","tools":["changes","codebase","fileSearch","listDirectory","problems","searchResults","textSearch","usages"]},{"name":"vscode","description":"","tools":["getProjectSetupInfo","installExtension","newWorkspace","openSimpleBrowser","runCommand","vscodeAPI"]},{"name":"web","description":"%copilot.toolSet.web.description%","icon":"$(globe)","tools":["fetch","githubRepo"]}],"chatParticipants":[{"id":"github.copilot.default","name":"GitHubCopilot","fullName":"GitHub Copilot","description":"%copilot.description%","isDefault":true,"locations":["panel"],"modes":["ask"],"disambiguation":[{"category":"generate_code_sample","description":"The user wants to generate code snippets without referencing the contents of the current workspace. This category does not include generating entire projects.","examples":["Write an example of computing a SHA256 hash."]},{"category":"add_feature_to_file","description":"The user wants to change code in a file that is provided in their request, without referencing the contents of the current workspace. This category does not include generating entire projects.","examples":["Add a refresh button to the table widget."]},{"category":"question_about_specific_files","description":"The user has a question about a specific file or code snippet that they have provided as part of their query, and the question does not require additional workspace context to answer.","examples":["What does this file do?"]}]},{"id":"github.copilot.editingSession","name":"GitHubCopilot","fullName":"GitHub Copilot","description":"%copilot.edits.description%","isDefault":true,"locations":["panel"],"modes":["edit"],"when":"!config.chat.edits2.enabled"},{"id":"github.copilot.editingSessionEditor","name":"GitHubCopilot","fullName":"GitHub Copilot","description":"%copilot.edits.description%","isDefault":true,"locations":["editor"],"commands":[{"name":"generate","when":"!config.chat.edits2.enabled","description":"%copilot.workspace.generate.description%","disambiguation":[{"category":"generate","description":"Generate new code","examples":["Add a function that returns the sum of two numbers"]}]},{"name":"edit","when":"!config.chat.edits2.enabled","description":"%copilot.workspace.edit.inline.description%","disambiguation":[{"category":"edit","description":"Make changes to existing code","examples":["Change this method to use async/await"]}]},{"name":"doc","when":"!config.chat.edits2.enabled","description":"%copilot.workspace.doc.description%","disambiguation":[{"category":"doc","description":"Add documentation comment for this symbol","examples":["Add jsdoc to this method"]}]},{"name":"fix","when":"!config.chat.edits2.enabled","description":"%copilot.workspace.fix.description%","disambiguation":[{"category":"fix","description":"Propose a fix for the problems in the selected code","examples":["There is a problem in this code. Rewrite the code to show it with the bug fixed."]}]},{"name":"tests","when":"!config.chat.edits2.enabled","description":"%copilot.workspace.tests.description%","disambiguation":[{"category":"tests","description":"Generate unit tests for the selected code. The user does not want to fix their existing tests.","examples":["Write a set of detailed unit test functions for the code above."]}]}]},{"id":"github.copilot.editingSession2","name":"GitHubCopilot","fullName":"GitHub Copilot","description":"%copilot.edits.description%","isDefault":true,"locations":["panel"],"modes":["edit"],"when":"config.chat.edits2.enabled"},{"id":"github.copilot.editsAgent","name":"agent","fullName":"GitHub Copilot","description":"%copilot.agent.description%","locations":["panel"],"modes":["agent"],"isEngine":true,"isDefault":true,"isAgent":true,"when":"config.chat.agent.enabled","commands":[{"name":"list"},{"name":"error","description":"Make a model request which will result in an error","when":"github.copilot.chat.debug"}]},{"id":"github.copilot.notebook","name":"GitHubCopilot","fullName":"GitHub Copilot","description":"%copilot.description%","isDefault":true,"locations":["notebook"],"when":"!config.inlineChat.notebookAgent","commands":[{"name":"fix","description":"%copilot.workspace.fix.description%"},{"name":"explain","description":"%copilot.workspace.explain.description%"}]},{"id":"github.copilot.notebookEditorAgent","name":"GitHubCopilot","fullName":"GitHub Copilot","description":"%copilot.description%","isDefault":true,"locations":["notebook"],"when":"config.inlineChat.notebookAgent","commands":[{"name":"fix","description":"%copilot.workspace.fix.description%"},{"name":"explain","description":"%copilot.workspace.explain.description%"}]},{"id":"github.copilot.workspace","name":"workspace","fullName":"Workspace","description":"%copilot.workspace.description%","when":"!github.copilot.interactiveSession.disabled","sampleRequest":"%copilot.workspace.sampleRequest%","locations":["panel"],"disambiguation":[{"category":"workspace_project_questions","description":"The user wants to learn about or update the code or files in their current workspace. Questions in this category may be about understanding what the whole workspace does or locating the implementation of some code. This does not include generating or updating tests.","examples":["What does this project do?"]},{"category":"find_code_in_workspace","description":"The user wants to locate the implementation of some functionality in their current workspace.","examples":["Where is the tree widget implemented?"]},{"category":"generate_with_workspace_context","description":"The user wants to generate code based on multiple files in the workspace and did not specify which files to reference.","examples":["Create a README for this project."]}],"commands":[{"name":"explain","description":"%copilot.workspace.explain.description%"},{"name":"review","description":"%copilot.workspace.review.description%","when":"github.copilot.advanced.review.intent"},{"name":"tests","description":"%copilot.workspace.tests.description%","disambiguation":[{"category":"create_tests","description":"The user wants to generate unit tests.","examples":["Generate tests for my selection using pytest."]}]},{"name":"fix","description":"%copilot.workspace.fix.description%","sampleRequest":"%copilot.workspace.fix.sampleRequest%"},{"name":"new","description":"%copilot.workspace.new.description%","sampleRequest":"%copilot.workspace.new.sampleRequest%","isSticky":true,"disambiguation":[{"category":"create_new_workspace_or_extension","description":"The user wants to create a complete Visual Studio Code workspace from scratch, such as a new application or a Visual Studio Code extension. Use this category only if the question relates to generating or creating new workspaces in Visual Studio Code. Do not use this category for updating existing code or generating sample code snippets","examples":["Scaffold a Node server.","Create a sample project which uses the fileSystemProvider API.","react application"]}]},{"name":"newNotebook","description":"%copilot.workspace.newNotebook.description%","sampleRequest":"%copilot.workspace.newNotebook.sampleRequest%","disambiguation":[{"category":"create_jupyter_notebook","description":"The user wants to create a new Jupyter notebook in Visual Studio Code.","examples":["Create a notebook to analyze this CSV file."]}]},{"name":"semanticSearch","description":"%copilot.workspace.semanticSearch.description%","sampleRequest":"%copilot.workspace.semanticSearch.sampleRequest%","when":"config.github.copilot.semanticSearch.enabled"},{"name":"setupTests","description":"%copilot.vscode.setupTests.description%","sampleRequest":"%copilot.vscode.setupTests.sampleRequest%","when":"config.github.copilot.chat.setupTests.enabled","disambiguation":[{"category":"set_up_tests","description":"The user wants to configure project test setup, framework, or test runner. The user does not want to fix their existing tests.","examples":["Set up tests for this project."]}]}]},{"id":"github.copilot.vscode","name":"vscode","fullName":"VS Code","description":"%copilot.vscode.description%","when":"!github.copilot.interactiveSession.disabled","sampleRequest":"%copilot.vscode.sampleRequest%","locations":["panel"],"disambiguation":[{"category":"vscode_configuration_questions","description":"The user wants to learn about, use, or configure the Visual Studio Code. Use this category if the users question is specifically about commands, settings, keybindings, extensions and other features available in Visual Studio Code. Do not use this category to answer questions about generating code or creating new projects including Visual Studio Code extensions.","examples":["Switch to light mode.","Keyboard shortcut to toggle terminal visibility.","Settings to enable minimap.","Whats new in the latest release?"]},{"category":"configure_python_environment","description":"The user wants to set up their Python environment.","examples":["Create a virtual environment for my project."]}],"commands":[{"name":"search","description":"%copilot.vscode.search.description%","sampleRequest":"%copilot.vscode.search.sampleRequest%"}]},{"id":"github.copilot.terminal","name":"terminal","fullName":"Terminal","description":"%copilot.terminal.description%","when":"!github.copilot.interactiveSession.disabled","sampleRequest":"%copilot.terminal.sampleRequest%","isDefault":true,"locations":["terminal"],"commands":[{"name":"explain","description":"%copilot.terminal.explain.description%","sampleRequest":"%copilot.terminal.explain.sampleRequest%"}]},{"id":"github.copilot.terminalPanel","name":"terminal","fullName":"Terminal","description":"%copilot.terminalPanel.description%","when":"!github.copilot.interactiveSession.disabled","sampleRequest":"%copilot.terminal.sampleRequest%","locations":["panel"],"commands":[{"name":"explain","description":"%copilot.terminal.explain.description%","sampleRequest":"%copilot.terminal.explain.sampleRequest%","disambiguation":[{"category":"terminal_state_questions","description":"The user wants to learn about specific state such as the selection, command, or failed command in the integrated terminal in Visual Studio Code.","examples":["Why did the latest terminal command fail?"]}]}]},{"id":"github.copilot.chatReplay","name":"chatReplay","fullName":"Chat Replay","when":"debugType == 'vscode-chat-replay'","locations":["panel"]}],"languageModelChatProviders":[{"vendor":"copilot","displayName":"Copilot"},{"vendor":"azure","displayName":"Azure","managementCommand":"github.copilot.chat.manageBYOK"},{"vendor":"anthropic","displayName":"Anthropic","managementCommand":"github.copilot.chat.manageBYOK"},{"vendor":"xai","displayName":"xAI","managementCommand":"github.copilot.chat.manageBYOK"},{"vendor":"ollama","displayName":"Ollama"},{"vendor":"openai","displayName":"OpenAI","managementCommand":"github.copilot.chat.manageBYOK"},{"vendor":"gemini","displayName":"Google","managementCommand":"github.copilot.chat.manageBYOK"},{"vendor":"groq","displayName":"Groq","managementCommand":"github.copilot.chat.manageBYOK"},{"vendor":"openrouter","displayName":"OpenRouter","managementCommand":"github.copilot.chat.manageBYOK"},{"vendor":"customoai","when":"productQualityType != 'stable'","displayName":"OpenAI Compatible","managementCommand":"github.copilot.chat.manageBYOK"}],"interactiveSession":[{"label":"GitHub Copilot","id":"copilot","icon":"","when":"!github.copilot.interactiveSession.disabled"}],"mcpServerDefinitionProviders":[{"id":"github","label":"GitHub"}],"viewsWelcome":[{"view":"debug","when":"github.copilot-chat.activated","contents":"%github.copilot.viewsWelcome.debug%"},{"view":"codex-placeholder","when":"true","contents":"%github.copilot.viewsWelcome.codexPlaceholder%"},{"view":"workbench.view.chat.sessions.openai-codex","contents":"%github.copilot.viewsWelcome.codexWelcomeView%"},{"view":"copilot-agents-placeholder","when":"true","contents":"%github.copilot.viewsWelcome.agentsPlaceholder%"},{"view":"workbench.view.chat.sessions.copilot-cloud-agent","when":"github.copilot.auth.missingPermissiveSession","contents":"%github.copilot.viewsWelcome.noPermissiveToken.contents%"},{"view":"workbench.view.chat.sessions.copilot-cloud-agent","when":"workspaceFolderCount == 0","contents":"%github.copilot.viewsWelcome.noFolder.contents%"},{"view":"workbench.view.chat.sessions.copilot-cloud-agent","when":"git.state == initialized && gitOpenRepositoryCount == 0 && workspaceFolderCount > 0 && git.parentRepositoryCount == 0","contents":"%github.copilot.viewsWelcome.noRepo.contents%"},{"view":"workbench.view.chat.sessions.copilot-cloud-agent","when":"git.state == initialized && workspaceFolderCount > 0 && (git.parentRepositoryCount > 0 || gitOpenRepositoryCount > 0) && !github:hasGitHubRemotes","contents":"%github.copilot.viewsWelcome.noGitHub.contents%"},{"view":"workbench.view.chat.sessions.copilot-cloud-agent","when":"github.copilot.chat.cloudSessionsEmpty","contents":"%github.copilot.viewsWelcome.cloudSessionsEmpty.contents%"},{"view":"workbench.view.chat.sessions.copilotcli","when":"github.copilot.chat.cliSessionsEmpty","contents":"%github.copilot.viewsWelcome.cliSessionsEmpty.contents%"}],"chatViewsWelcome":[{"icon":"$(copilot-large)","title":"Ask Copilot","content":"%github.copilot.viewsWelcome.individual.expired%","when":"github.copilot.interactiveSession.individual.expired"},{"icon":"$(copilot-large)","title":"Ask Copilot","content":"%github.copilot.viewsWelcome.enterprise%","when":"github.copilot.interactiveSession.enterprise.disabled"},{"icon":"$(copilot-large)","title":"Ask Copilot","content":"%github.copilot.viewsWelcome.offline%","when":"github.copilot.offline"},{"icon":"$(copilot-large)","title":"Ask Copilot","content":"%github.copilot.viewsWelcome.contactSupport%","when":"github.copilot.interactiveSession.contactSupport"},{"icon":"$(copilot-large)","title":"Ask Copilot","content":"%github.copilot.viewsWelcome.chatDisabled%","when":"github.copilot.interactiveSession.chatDisabled"},{"icon":"$(copilot-large)","title":"Ask Copilot","content":"%github.copilot.viewsWelcome.switchToReleaseChannel%","when":"github.copilot.interactiveSession.switchToReleaseChannel"}],"commands":[{"command":"github.copilot.chat.triggerPermissiveSignIn","title":"%github.copilot.command.triggerPermissiveSignIn%"},{"command":"github.copilot.claude.sessions.refresh","title":"%github.copilot.command.refreshClaudeCodeSessions%","icon":"$(refresh)","category":"Claude Code"},{"command":"github.copilot.cli.sessions.refresh","title":"%github.copilot.command.refreshAgentSessions%","icon":"$(refresh)","category":"Copilot CLI"},{"command":"github.copilot.cli.sessions.delete","title":"%github.copilot.command.deleteAgentSession%","icon":"$(close)","category":"Copilot CLI"},{"command":"github.copilot.cli.sessions.resumeInTerminal","title":"%github.copilot.command.cli.sessions.resumeInTerminal%","icon":"$(terminal)","category":"Copilot CLI"},{"command":"github.copilot.cli.sessions.newTerminalSession","title":"%github.copilot.cli.sessions.newTerminalSession%","icon":"$(terminal)","category":"Copilot CLI"},{"command":"github.copilot.chat.replay","title":"Start Chat Replay","icon":"$(debug-line-by-line)","enablement":"resourceFilename === 'benchRun.chatReplay.json' && !inDebugMode"},{"command":"github.copilot.chat.replay.enableWorkspaceEditTracing","title":"%github.copilot.command.enableEditTracing%","category":"Developer","enablement":"!github.copilot.chat.replay.workspaceEditTracing"},{"command":"github.copilot.chat.replay.disableWorkspaceEditTracing","title":"%github.copilot.command.disableEditTracing%","category":"Developer","enablement":"github.copilot.chat.replay.workspaceEditTracing"},{"command":"github.copilot.chat.explain","title":"%github.copilot.command.explainThis%","enablement":"!github.copilot.interactiveSession.disabled","category":"Chat"},{"command":"github.copilot.chat.explain.palette","title":"%github.copilot.command.explainThis%","enablement":"!github.copilot.interactiveSession.disabled && !editorReadonly","category":"Chat"},{"command":"github.copilot.chat.review","title":"%github.copilot.command.reviewAndComment%","enablement":"config.github.copilot.chat.reviewSelection.enabled && !github.copilot.interactiveSession.disabled","category":"Chat"},{"command":"github.copilot.chat.review.apply","title":"%github.copilot.command.applyReviewSuggestion%","icon":"$(sparkle)","enablement":"commentThread =~ /hasSuggestion/","category":"Chat"},{"command":"github.copilot.chat.review.applyAndNext","title":"%github.copilot.command.applyReviewSuggestionAndNext%","icon":"$(sparkle)","enablement":"commentThread =~ /hasSuggestion/","category":"Chat"},{"command":"github.copilot.chat.review.discard","title":"%github.copilot.command.discardReviewSuggestion%","icon":"$(close)","category":"Chat"},{"command":"github.copilot.chat.review.discardAndNext","title":"%github.copilot.command.discardReviewSuggestionAndNext%","icon":"$(close)","category":"Chat"},{"command":"github.copilot.chat.review.discardAll","title":"%github.copilot.command.discardAllReviewSuggestion%","icon":"$(close-all)","category":"Chat"},{"command":"github.copilot.chat.review.stagedChanges","title":"%github.copilot.command.reviewStagedChanges%","icon":"$(code-review)","enablement":"github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled","category":"Chat"},{"command":"github.copilot.chat.review.unstagedChanges","title":"%github.copilot.command.reviewUnstagedChanges%","icon":"$(code-review)","enablement":"github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled","category":"Chat"},{"command":"github.copilot.chat.review.changes","title":"%github.copilot.command.reviewChanges%","icon":"$(code-review)","enablement":"github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled","category":"Chat"},{"command":"github.copilot.chat.review.stagedFileChange","title":"%github.copilot.command.reviewFileChange%","icon":"$(code-review)","enablement":"github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled","category":"Chat"},{"command":"github.copilot.chat.review.unstagedFileChange","title":"%github.copilot.command.reviewFileChange%","icon":"$(code-review)","enablement":"github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled","category":"Chat"},{"command":"github.copilot.chat.review.previous","title":"%github.copilot.command.gotoPreviousReviewSuggestion%","icon":"$(arrow-up)","category":"Chat"},{"command":"github.copilot.chat.review.next","title":"%github.copilot.command.gotoNextReviewSuggestion%","icon":"$(arrow-down)","category":"Chat"},{"command":"github.copilot.chat.review.continueInInlineChat","title":"%github.copilot.command.continueReviewInInlineChat%","icon":"$(comment-discussion)","category":"Chat"},{"command":"github.copilot.chat.review.continueInChat","title":"%github.copilot.command.continueReviewInChat%","icon":"$(comment-discussion)","category":"Chat"},{"command":"github.copilot.chat.review.markHelpful","title":"%github.copilot.command.helpfulReviewSuggestion%","icon":"$(thumbsup)","enablement":"!(commentThread =~ /markedAsHelpful/)","category":"Chat"},{"command":"github.copilot.chat.openUserPreferences","title":"%github.copilot.command.openUserPreferences%","category":"Chat","enablement":"config.github.copilot.chat.enableUserPreferences"},{"command":"github.copilot.chat.tools.memory.openFolder","title":"%github.copilot.command.openMemoryFolder%","category":"Chat","enablement":"config.github.copilot.chat.tools.memory.enabled"},{"command":"github.copilot.chat.review.markUnhelpful","title":"%github.copilot.command.unhelpfulReviewSuggestion%","icon":"$(thumbsdown)","enablement":"!(commentThread =~ /markedAsUnhelpful/)","category":"Chat"},{"command":"github.copilot.chat.generate","title":"%github.copilot.command.generateThis%","icon":"$(sparkle)","enablement":"!github.copilot.interactiveSession.disabled && !editorReadonly","category":"Chat"},{"command":"github.copilot.chat.generateDocs","title":"%github.copilot.command.generateDocs%","enablement":"!github.copilot.interactiveSession.disabled && !editorReadonly","category":"Chat"},{"command":"github.copilot.chat.generateTests","title":"%github.copilot.command.generateTests%","enablement":"!github.copilot.interactiveSession.disabled && !editorReadonly","category":"Chat"},{"command":"github.copilot.chat.fix","title":"%github.copilot.command.fixThis%","enablement":"!github.copilot.interactiveSession.disabled && !editorReadonly","category":"Chat"},{"command":"github.copilot.interactiveSession.feedback","title":"%github.copilot.command.sendChatFeedback%","enablement":"github.copilot-chat.activated && !github.copilot.interactiveSession.disabled","icon":"$(feedback)","category":"Chat"},{"command":"github.copilot.debug.workbenchState","title":"%github.copilot.command.logWorkbenchState%","category":"Developer"},{"command":"github.copilot.debug.showChatLogView","title":"%github.copilot.command.showChatLogView%","category":"Developer"},{"command":"github.copilot.debug.showOutputChannel","title":"%github.copilot.command.showOutputChannel%","category":"Developer"},{"command":"github.copilot.debug.showContextInspectorView","title":"%github.copilot.command.showContextInspectorView%","icon":"$(inspect)","category":"Developer"},{"command":"github.copilot.debug.validateNesRename","title":"%github.copilot.command.validateNesRename%","category":"Developer"},{"command":"github.copilot.debug.resetVirtualToolGroups","title":"%github.copilot.command.resetVirtualToolGroups%","icon":"$(inspect)","category":"Developer"},{"command":"github.copilot.terminal.explainTerminalLastCommand","title":"%github.copilot.command.explainTerminalLastCommand%","category":"Chat"},{"command":"github.copilot.git.generateCommitMessage","title":"%github.copilot.git.generateCommitMessage%","icon":"$(sparkle)","enablement":"!github.copilot.interactiveSession.disabled","category":"Chat"},{"command":"github.copilot.git.resolveMergeConflicts","title":"%github.copilot.git.resolveMergeConflicts%","icon":"$(chat-sparkle)","enablement":"!github.copilot.interactiveSession.disabled","category":"Chat"},{"command":"github.copilot.devcontainer.generateDevContainerConfig","title":"%github.copilot.devcontainer.generateDevContainerConfig%","category":"Chat"},{"command":"github.copilot.tests.fixTestFailure","icon":"$(sparkle)","title":"%github.copilot.command.fixTestFailure%","category":"Chat"},{"command":"github.copilot.tests.fixTestFailure.fromInline","icon":"$(sparkle)","title":"%github.copilot.command.fixTestFailure%"},{"command":"github.copilot.chat.attachFile","title":"%github.copilot.chat.attachFile%","category":"Chat"},{"command":"github.copilot.chat.attachSelection","title":"%github.copilot.chat.attachSelection%","icon":"$(comment-discussion)","category":"Chat"},{"command":"github.copilot.debug.collectDiagnostics","title":"%github.copilot.command.collectDiagnostics%","category":"Developer"},{"command":"github.copilot.debug.inlineEdit.clearCache","title":"%github.copilot.command.inlineEdit.clearCache%","category":"Developer"},{"command":"github.copilot.debug.inlineEdit.reportNotebookNESIssue","title":"%github.copilot.command.inlineEdit.reportNotebookNESIssue%","enablement":"config.github.copilot.chat.advanced.notebook.alternativeNESFormat.enabled || github.copilot.chat.enableEnhancedNotebookNES","category":"Developer"},{"command":"github.copilot.debug.generateSTest","title":"%github.copilot.command.generateSTest%","enablement":"github.copilot.debugReportFeedback","category":"Developer"},{"command":"github.copilot.open.walkthrough","title":"%github.copilot.command.openWalkthrough%","category":"Chat"},{"command":"github.copilot.debug.generateInlineEditTests","title":"Generate Inline Edit Tests","category":"Chat","enablement":"resourceScheme == 'ccreq'"},{"command":"github.copilot.buildLocalWorkspaceIndex","title":"%github.copilot.command.buildLocalWorkspaceIndex%","category":"Chat","enablement":"github.copilot-chat.activated"},{"command":"github.copilot.buildRemoteWorkspaceIndex","title":"%github.copilot.command.buildRemoteWorkspaceIndex%","category":"Chat","enablement":"github.copilot-chat.activated"},{"command":"github.copilot.report","title":"Report Issue","category":"Chat"},{"command":"github.copilot.chat.rerunWithCopilotDebug","title":"%github.copilot.command.rerunWithCopilotDebug%","category":"Chat"},{"command":"github.copilot.chat.startCopilotDebugCommand","title":"Start Copilot Debug"},{"command":"github.copilot.chat.clearTemporalContext","title":"Clear Temporal Context","category":"Developer"},{"command":"github.copilot.search.markHelpful","title":"Helpful","icon":"$(thumbsup)","enablement":"!github.copilot.search.feedback.sent"},{"command":"github.copilot.search.markUnhelpful","title":"Unhelpful","icon":"$(thumbsdown)","enablement":"!github.copilot.search.feedback.sent"},{"command":"github.copilot.search.feedback","title":"Feedback","icon":"$(feedback)","enablement":"!github.copilot.search.feedback.sent"},{"command":"github.copilot.chat.debug.showElements","title":"Show Rendered Elements"},{"command":"github.copilot.chat.debug.hideElements","title":"Hide Rendered Elements"},{"command":"github.copilot.chat.debug.showTools","title":"Show Tools"},{"command":"github.copilot.chat.debug.hideTools","title":"Hide Tools"},{"command":"github.copilot.chat.debug.showNesRequests","title":"Show NES Requests"},{"command":"github.copilot.chat.debug.hideNesRequests","title":"Hide NES Requests"},{"command":"github.copilot.chat.debug.showRawRequestBody","title":"Show Raw Request Body"},{"command":"github.copilot.chat.debug.exportLogItem","title":"Export as...","icon":"$(export)"},{"command":"github.copilot.chat.debug.exportPromptArchive","title":"Export All as Archive...","icon":"$(archive)"},{"command":"github.copilot.chat.debug.exportPromptLogsAsJson","title":"Export All as JSON...","icon":"$(export)"},{"command":"github.copilot.chat.debug.exportAllPromptLogsAsJson","title":"Export All Prompt Logs as JSON...","icon":"$(export)"},{"command":"github.copilot.chat.showAsChatSession","title":"Show as chat session","icon":"$(chat-sparkle)"},{"command":"github.copilot.debug.collectWorkspaceIndexDiagnostics","title":"%github.copilot.command.collectWorkspaceIndexDiagnostics%","category":"Developer"},{"command":"github.copilot.chat.mcp.setup.check","title":"MCP Check: is supported"},{"command":"github.copilot.chat.mcp.setup.validatePackage","title":"MCP Check: validate package"},{"command":"github.copilot.chat.mcp.setup.flow","title":"MCP Check: do prompts"},{"command":"github.copilot.chat.generateAltText","title":"Generate/Refine Alt Text"},{"command":"github.copilot.chat.notebook.enableFollowCellExecution","title":"Enable Follow Cell Execution from Chat","shortTitle":"Follow","icon":"$(pinned)"},{"command":"github.copilot.chat.notebook.disableFollowCellExecution","title":"Disable Follow Cell Execution from Chat","shortTitle":"Unfollow","icon":"$(pinned-dirty)"},{"command":"github.copilot.chat.manageBYOK","title":"Manage Bring Your Own Key Vendor","enablement":"false"},{"command":"github.copilot.chat.manageBYOKAPIKey","title":"Manage Bring Your Own Key API Key","enablement":"false"},{"command":"github.copilot.cloud.sessions.refresh","title":"%github.copilot.command.refreshAgentSessions%","icon":"$(refresh)"},{"command":"github.copilot.cloud.resetWorkspaceConfirmations","title":"%github.copilot.command.resetCloudAgentWorkspaceConfirmations%"},{"command":"github.copilot.cloud.sessions.openInBrowser","title":"%github.copilot.command.openCopilotAgentSessionsInBrowser%","icon":"$(link-external)"},{"command":"github.copilot.cloud.sessions.proxy.closeChatSessionPullRequest","title":"%github.copilot.command.closeChatSessionPullRequest.title%"},{"command":"github.copilot.chat.openSuggestionsPanel","title":"Open Completions Panel","enablement":"github.copilot.extensionUnification.activated && !isWeb","category":"GitHub Copilot"},{"command":"github.copilot.chat.toggleStatusMenu","title":"Open Status Menu","enablement":"github.copilot.extensionUnification.activated","category":"GitHub Copilot"},{"command":"github.copilot.chat.completions.disable","title":"Disable Inline Suggestions","enablement":"github.copilot.extensionUnification.activated && github.copilot.activated && config.editor.inlineSuggest.enabled && github.copilot.completions.enabled","category":"GitHub Copilot"},{"command":"github.copilot.chat.completions.enable","title":"Enable Inline Suggestions","enablement":"github.copilot.extensionUnification.activated && github.copilot.activated && !(config.editor.inlineSuggest.enabled && github.copilot.completions.enabled)","category":"GitHub Copilot"},{"command":"github.copilot.chat.completions.toggle","title":"Toggle (Enable/Disable) Inline Suggestions","enablement":"github.copilot.extensionUnification.activated && github.copilot.activated","category":"GitHub Copilot"},{"command":"github.copilot.chat.openModelPicker","title":"Change Completions Model","category":"GitHub Copilot","enablement":"github.copilot.extensionUnification.activated && !isWeb"},{"command":"github.copilot.chat.applyCopilotCLIAgentSessionChanges","title":"%github.copilot.command.applyCopilotCLIAgentSessionChanges%","icon":"$(git-stash-pop)","category":"GitHub Copilot"}],"configuration":[{"title":"GitHub Copilot Chat","id":"stable","properties":{"github.copilot.chat.codeGeneration.useInstructionFiles":{"type":"boolean","default":true,"markdownDescription":"%github.copilot.config.codeGeneration.useInstructionFiles%"},"github.copilot.editor.enableCodeActions":{"type":"boolean","default":true,"description":"%github.copilot.config.enableCodeActions%"},"github.copilot.renameSuggestions.triggerAutomatically":{"type":"boolean","default":true,"description":"%github.copilot.config.renameSuggestions.triggerAutomatically%"},"github.copilot.chat.localeOverride":{"type":"string","enum":["auto","en","fr","it","de","es","ru","zh-CN","zh-TW","ja","ko","cs","pt-br","tr","pl"],"enumDescriptions":["Use VS Code's configured display language","English","français","italiano","Deutsch","español","русский","中文(简体)","中文(繁體)","日本語","한국어","čeština","português","Türkçe","polski"],"default":"auto","markdownDescription":"%github.copilot.config.localeOverride%"},"github.copilot.chat.terminalChatLocation":{"type":"string","default":"chatView","markdownDescription":"%github.copilot.config.terminalChatLocation%","markdownEnumDescriptions":["%github.copilot.config.terminalChatLocation.chatView%","%github.copilot.config.terminalChatLocation.quickChat%","%github.copilot.config.terminalChatLocation.terminal%"],"enum":["chatView","quickChat","terminal"]},"github.copilot.chat.scopeSelection":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.scopeSelection%"},"github.copilot.chat.useProjectTemplates":{"type":"boolean","default":true,"markdownDescription":"%github.copilot.config.useProjectTemplates%"},"github.copilot.nextEditSuggestions.enabled":{"type":"boolean","default":false,"tags":["nextEditSuggestions","onExp"],"markdownDescription":"%github.copilot.nextEditSuggestions.enabled%","scope":"language-overridable"},"github.copilot.nextEditSuggestions.fixes":{"type":"boolean","default":true,"tags":["nextEditSuggestions","onExp"],"markdownDescription":"%github.copilot.nextEditSuggestions.fixes%","scope":"language-overridable"},"github.copilot.nextEditSuggestions.allowWhitespaceOnlyChanges":{"type":"boolean","default":true,"tags":["nextEditSuggestions","onExp"],"markdownDescription":"%github.copilot.nextEditSuggestions.allowWhitespaceOnlyChanges%","scope":"language-overridable"},"github.copilot.chat.agent.autoFix":{"type":"boolean","default":true,"description":"%github.copilot.config.autoFix%","tags":["onExp"]},"github.copilot.chat.customInstructionsInSystemMessage":{"type":"boolean","default":true,"description":"%github.copilot.config.customInstructionsInSystemMessage%"},"github.copilot.chat.customAgents.showOrganizationAndEnterpriseAgents":{"type":"boolean","default":true,"description":"%github.copilot.config.customAgents.showOrganizationAndEnterpriseAgents%"},"github.copilot.chat.customInstructions.showOrganizationInstructions":{"type":"boolean","default":true,"description":"%github.copilot.config.customInstructions.showOrganizationInstructions%"},"github.copilot.chat.agent.currentEditorContext.enabled":{"type":"boolean","default":true,"description":"%github.copilot.config.agent.currentEditorContext.enabled%"},"github.copilot.chat.agent.delegate.autoCommitAndPush":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.agent.delegate.autoCommitAndPush%"},"github.copilot.enable":{"type":"object","scope":"window","default":{"*":true,"plaintext":false,"markdown":false,"scminput":false},"additionalProperties":{"type":"boolean"},"markdownDescription":"Enable or disable auto triggering of Copilot completions for specified [languages](https://code.visualstudio.com/docs/languages/identifiers). You can still trigger suggestions manually using `Alt + \\`"},"github.copilot.selectedCompletionModel":{"type":"string","default":"","markdownDescription":"The currently selected completion model ID. To select from a list of available models, use the __\"Change Completions Model\"__ command or open the model picker (from the Copilot menu in the VS Code title bar, select __\"Configure Code Completions\"__ then __\"Change Completions Model\"__. The value must be a valid model ID. An empty value indicates that the default model will be used."}}},{"id":"preview","properties":{"github.copilot.chat.reviewAgent.enabled":{"type":"boolean","default":true,"description":"%github.copilot.config.reviewAgent.enabled%","tags":["preview"]},"github.copilot.chat.reviewSelection.enabled":{"type":"boolean","default":true,"description":"%github.copilot.config.reviewSelection.enabled%","tags":["preview"]},"github.copilot.chat.reviewSelection.instructions":{"type":"array","items":{"oneOf":[{"type":"object","markdownDescription":"%github.copilot.config.reviewSelection.instruction.file%","properties":{"file":{"type":"string","examples":[".copilot-review-instructions.md"]},"language":{"type":"string"}},"examples":[{"file":".copilot-review-instructions.md"}],"required":["file"]},{"type":"object","markdownDescription":"%github.copilot.config.reviewSelection.instruction.text%","properties":{"text":{"type":"string","examples":["Use underscore for field names."]},"language":{"type":"string"}},"required":["text"],"examples":[{"text":"Use underscore for field names."},{"text":"Resolve all TODO tasks."}]}]},"default":[],"markdownDescription":"%github.copilot.config.reviewSelection.instructions%","examples":[[{"file":".copilot-review-instructions.md"},{"text":"Resolve all TODO tasks."}]],"tags":["preview"]},"github.copilot.chat.copilotDebugCommand.enabled":{"type":"boolean","default":true,"tags":["preview"],"description":"%github.copilot.chat.copilotDebugCommand.enabled%"},"github.copilot.chat.codesearch.enabled":{"type":"boolean","default":false,"tags":["preview"],"markdownDescription":"%github.copilot.config.codesearch.enabled%"},"github.copilot.chat.byok.ollamaEndpoint":{"type":"string","default":"http://localhost:11434","tags":["preview"],"markdownDescription":"%github.copilot.config.byok.ollamaEndpoint%"}}},{"id":"experimental","properties":{"github.copilot.chat.githubMcpServer.enabled":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.githubMcpServer.enabled%","tags":["experimental"]},"github.copilot.chat.githubMcpServer.toolsets":{"type":"array","default":["default"],"markdownDescription":"%github.copilot.config.githubMcpServer.toolsets%","items":{"type":"string"},"tags":["experimental"]},"github.copilot.chat.githubMcpServer.readonly":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.githubMcpServer.readonly%","tags":["experimental"]},"github.copilot.chat.githubMcpServer.lockdown":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.githubMcpServer.lockdown%","tags":["experimental"]},"github.copilot.chat.imageUpload.enabled":{"type":"boolean","default":true,"tags":["experimental","onExp"],"markdownDescription":"%github.copilot.config.imageUpload.enabled%"},"github.copilot.chat.edits.suggestRelatedFilesFromGitHistory":{"type":"boolean","default":true,"tags":["experimental"],"markdownDescription":"%github.copilot.config.edits.suggestRelatedFilesFromGitHistory%"},"github.copilot.chat.edits.suggestRelatedFilesForTests":{"type":"boolean","default":true,"tags":["experimental"],"markdownDescription":"%github.copilot.chat.edits.suggestRelatedFilesForTests%"},"github.copilot.chat.codeGeneration.instructions":{"markdownDeprecationMessage":"%github.copilot.config.codeGeneration.instructions.deprecated%","type":"array","items":{"oneOf":[{"type":"object","markdownDescription":"%github.copilot.config.codeGeneration.instruction.file%","properties":{"file":{"type":"string","examples":[".copilot-codeGeneration-instructions.md"]},"language":{"type":"string"}},"examples":[{"file":".copilot-codeGeneration-instructions.md"}],"required":["file"]},{"type":"object","markdownDescription":"%github.copilot.config.codeGeneration.instruction.text%","properties":{"text":{"type":"string","examples":["Use underscore for field names."]},"language":{"type":"string"}},"required":["text"],"examples":[{"text":"Use underscore for field names."},{"text":"Always add a comment: 'Generated by Copilot'."}]}]},"default":[],"markdownDescription":"%github.copilot.config.codeGeneration.instructions%","examples":[[{"file":".copilot-codeGeneration-instructions.md"},{"text":"Always add a comment: 'Generated by Copilot'."}]],"tags":["experimental"]},"github.copilot.chat.testGeneration.instructions":{"markdownDeprecationMessage":"%github.copilot.config.testGeneration.instructions.deprecated%","type":"array","items":{"oneOf":[{"type":"object","markdownDescription":"%github.copilot.config.experimental.testGeneration.instruction.file%","properties":{"file":{"type":"string","examples":[".copilot-test-instructions.md"]},"language":{"type":"string"}},"examples":[{"file":".copilot-test-instructions.md"}],"required":["file"]},{"type":"object","markdownDescription":"%github.copilot.config.experimental.testGeneration.instruction.text%","properties":{"text":{"type":"string","examples":["Use suite and test instead of describe and it."]},"language":{"type":"string"}},"required":["text"],"examples":[{"text":"Always try uniting related tests in a suite."}]}]},"default":[],"markdownDescription":"%github.copilot.config.testGeneration.instructions%","examples":[[{"file":".copilot-test-instructions.md"},{"text":"Always try uniting related tests in a suite."}]],"tags":["experimental"]},"github.copilot.chat.commitMessageGeneration.instructions":{"type":"array","items":{"oneOf":[{"type":"object","markdownDescription":"%github.copilot.config.commitMessageGeneration.instruction.file%","properties":{"file":{"type":"string","examples":[".copilot-commit-message-instructions.md"]}},"examples":[{"file":".copilot-commit-message-instructions.md"}],"required":["file"]},{"type":"object","markdownDescription":"%github.copilot.config.commitMessageGeneration.instruction.text%","properties":{"text":{"type":"string","examples":["Use conventional commit message format."]}},"required":["text"],"examples":[{"text":"Use conventional commit message format."}]}]},"default":[],"markdownDescription":"%github.copilot.config.commitMessageGeneration.instructions%","examples":[[{"file":".copilot-commit-message-instructions.md"},{"text":"Use conventional commit message format."}]],"tags":["experimental"]},"github.copilot.chat.pullRequestDescriptionGeneration.instructions":{"type":"array","items":{"oneOf":[{"type":"object","markdownDescription":"%github.copilot.config.pullRequestDescriptionGeneration.instruction.file%","properties":{"file":{"type":"string","examples":[".copilot-pull-request-description-instructions.md"]}},"examples":[{"file":".copilot-pull-request-description-instructions.md"}],"required":["file"]},{"type":"object","markdownDescription":"%github.copilot.config.pullRequestDescriptionGeneration.instruction.text%","properties":{"text":{"type":"string","examples":["Include every commit message in the pull request description."]}},"required":["text"],"examples":[{"text":"Include every commit message in the pull request description."}]}]},"default":[],"markdownDescription":"%github.copilot.config.pullRequestDescriptionGeneration.instructions%","examples":[[{"file":".copilot-pull-request-description-instructions.md"},{"text":"Use conventional commit message format."}]],"tags":["experimental"]},"github.copilot.chat.generateTests.codeLens":{"type":"boolean","default":false,"description":"%github.copilot.config.generateTests.codeLens%","tags":["experimental"]},"github.copilot.chat.setupTests.enabled":{"type":"boolean","default":true,"markdownDescription":"%github.copilot.config.setupTests.enabled%","tags":["experimental"]},"github.copilot.chat.languageContext.typescript.enabled":{"type":"boolean","default":false,"scope":"resource","tags":["experimental","onExP"],"markdownDescription":"%github.copilot.chat.languageContext.typescript.enabled%"},"github.copilot.chat.languageContext.typescript.items":{"type":"string","enum":["minimal","double","fillHalf","fill"],"default":"double","scope":"resource","tags":["experimental","onExP"],"markdownDescription":"%github.copilot.chat.languageContext.typescript.items%"},"github.copilot.chat.languageContext.typescript.includeDocumentation":{"type":"boolean","default":false,"scope":"resource","tags":["experimental","onExP"],"markdownDescription":"%github.copilot.chat.languageContext.typescript.includeDocumentation%"},"github.copilot.chat.languageContext.typescript.cacheTimeout":{"type":"number","default":500,"scope":"resource","tags":["experimental","onExP"],"markdownDescription":"%github.copilot.chat.languageContext.typescript.cacheTimeout%"},"github.copilot.chat.languageContext.fix.typescript.enabled":{"type":"boolean","default":false,"scope":"resource","tags":["experimental","onExP"],"markdownDescription":"%github.copilot.chat.languageContext.fix.typescript.enabled%"},"github.copilot.chat.languageContext.inline.typescript.enabled":{"type":"boolean","default":false,"scope":"resource","tags":["experimental","onExP"],"markdownDescription":"%github.copilot.chat.languageContext.inline.typescript.enabled%"},"github.copilot.chat.newWorkspaceCreation.enabled":{"type":"boolean","default":true,"tags":["experimental"],"description":"%github.copilot.config.newWorkspaceCreation.enabled%"},"github.copilot.chat.newWorkspace.useContext7":{"type":"boolean","default":false,"tags":["experimental"],"markdownDescription":"%github.copilot.config.newWorkspace.useContext7%"},"github.copilot.chat.notebook.followCellExecution.enabled":{"type":"boolean","default":false,"tags":["experimental"],"description":"%github.copilot.config.notebook.followCellExecution%"},"github.copilot.chat.notebook.enhancedNextEditSuggestions.enabled":{"type":"boolean","default":false,"tags":["experimental","onExp"],"description":"%github.copilot.config.notebook.enhancedNextEditSuggestions%"},"github.copilot.chat.summarizeAgentConversationHistory.enabled":{"type":"boolean","default":true,"tags":["experimental"],"description":"%github.copilot.config.summarizeAgentConversationHistory.enabled%"},"github.copilot.chat.virtualTools.threshold":{"type":"number","minimum":0,"maximum":128,"default":128,"tags":["experimental"],"markdownDescription":"%github.copilot.config.virtualTools.threshold%"},"github.copilot.chat.azureAuthType":{"type":"string","enum":["entraId","apiKey"],"enumDescriptions":["%github.copilot.config.azureAuthType.entraId%","%github.copilot.config.azureAuthType.apiKey%"],"default":"entraId","tags":["experimental"],"markdownDescription":"%github.copilot.config.azureAuthType%"},"github.copilot.chat.azureModels":{"type":"object","default":{},"tags":["experimental"],"additionalProperties":{"type":"object","properties":{"name":{"type":"string","description":"Display name of the Azure model"},"url":{"type":"string","markdownDescription":"URL endpoint for the Azure model.\n\n**Important:** Base URLs default to Chat Completions API. Explicit API paths including `/responses` or `/chat/completions` are respected. Both behaviors are independent of the `#github.copilot.chat.useResponsesApi#` setting."},"toolCalling":{"type":"boolean","description":"Whether the model supports tool calling"},"vision":{"type":"boolean","description":"Whether the model supports vision capabilities"},"maxInputTokens":{"type":"number","description":"Maximum number of input tokens supported by the model"},"maxOutputTokens":{"type":"number","description":"Maximum number of output tokens supported by the model"},"thinking":{"type":"boolean","default":false,"description":"Whether the model supports thinking capabilities"},"zeroDataRetentionEnabled":{"type":"boolean","default":false,"markdownDescription":"Whether Zero Data Retention (ZDR) is enabled for this endpoint. When `true`, `previous_response_id` will not be sent in requests via Responses API."},"requestHeaders":{"type":"object","description":"Additional HTTP headers to include with requests to this model. These reserved headers are not allowed and ignored if present: forbidden request headers (https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_request_header), forwarding headers ('forwarded', 'x-forwarded-for', 'x-forwarded-host', 'x-forwarded-proto'), and others ('api-key', 'authorization', 'content-type', 'openai-intent', 'x-github-api-version', 'x-initiator', 'x-interaction-id', 'x-interaction-type', 'x-onbehalf-extension-id', 'x-request-id', 'x-vscode-user-agent-library-version'). Pattern-based forbidden headers ('proxy-*', 'sec-*', 'x-http-method*' with forbidden methods) are also blocked.","additionalProperties":{"type":"string"}}},"required":["name","url","toolCalling","vision","maxInputTokens","maxOutputTokens"],"additionalProperties":false},"markdownDescription":"Configure custom Azure OpenAI models. Each key should be a unique model ID, and the value should be an object with model configuration including name, url, toolCalling, vision, maxInputTokens, and maxOutputTokens properties."},"github.copilot.chat.customOAIModels":{"type":"object","default":{},"tags":["experimental"],"additionalProperties":{"type":"object","properties":{"name":{"type":"string","description":"Display name of the custom OpenAI model"},"url":{"type":"string","markdownDescription":"URL endpoint for the custom OpenAI-compatible model.\n\n**Important:** Base URLs default to Chat Completions API. Explicit API paths including `/responses` or `/chat/completions` are respected. Both behaviors are independent of the `#github.copilot.chat.useResponsesApi#` setting."},"toolCalling":{"type":"boolean","description":"Whether the model supports tool calling"},"vision":{"type":"boolean","description":"Whether the model supports vision capabilities"},"maxInputTokens":{"type":"number","description":"Maximum number of input tokens supported by the model"},"maxOutputTokens":{"type":"number","description":"Maximum number of output tokens supported by the model"},"requiresAPIKey":{"type":"boolean","description":"Whether the model requires an API key for authentication","default":true},"editTools":{"type":"array","description":"List of edit tools supported by the model. If this is not configured, the editor will try multiple edit tools and pick the best one.\n\n- 'find-replace': Find and replace text in a document.\n- 'multi-find-replace': Find and replace text in a document.\n- 'apply-patch': A file-oriented diff format used by some OpenAI models\n- 'code-rewrite': A general but slower editing tool that allows the model to rewrite and code snippet and provide only the replacement to the editor.","items":{"type":"string","enum":["find-replace","multi-find-replace","apply-patch","code-rewrite"]}},"thinking":{"type":"boolean","default":false,"description":"Whether the model supports thinking capabilities"},"zeroDataRetentionEnabled":{"type":"boolean","default":false,"markdownDescription":"Whether Zero Data Retention (ZDR) is enabled for this endpoint. When `true`, `previous_response_id` will not be sent in requests via Responses API."},"requestHeaders":{"type":"object","description":"Additional HTTP headers to include with requests to this model. These reserved headers are not allowed and ignored if present: forbidden request headers (https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_request_header), forwarding headers ('forwarded', 'x-forwarded-for', 'x-forwarded-host', 'x-forwarded-proto'), and others ('api-key', 'authorization', 'content-type', 'openai-intent', 'x-github-api-version', 'x-initiator', 'x-interaction-id', 'x-interaction-type', 'x-onbehalf-extension-id', 'x-request-id', 'x-vscode-user-agent-library-version'). Pattern-based forbidden headers ('proxy-*', 'sec-*', 'x-http-method*' with forbidden methods) are also blocked.","additionalProperties":{"type":"string"}}},"required":["name","url","toolCalling","vision","maxInputTokens","maxOutputTokens","requiresAPIKey"],"additionalProperties":false},"markdownDescription":"Configure custom OpenAI-compatible models. Each key should be a unique model ID, and the value should be an object with model configuration including name, url, toolCalling, vision, maxInputTokens, and maxOutputTokens properties."},"github.copilot.chat.alternateGptPrompt.enabled":{"type":"boolean","default":false,"tags":["experimental"],"description":"%github.copilot.config.alternateGptPrompt.enabled%"},"github.copilot.chat.useResponsesApi":{"type":"boolean","default":true,"markdownDescription":"%github.copilot.config.useResponsesApi%","tags":["experimental","onExp"]},"github.copilot.chat.responsesApiReasoningEffort":{"type":"string","default":"default","markdownDescription":"%github.copilot.config.responsesApiReasoningEffort%","tags":["experimental","onExp"],"enum":["low","medium","high","default"]},"github.copilot.chat.responsesApiReasoningSummary":{"type":"string","default":"detailed","markdownDescription":"%github.copilot.config.responsesApiReasoningSummary%","tags":["experimental","onExp"],"enum":["off","detailed"]},"github.copilot.chat.anthropic.thinking.budgetTokens":{"type":["number","null"],"markdownDescription":"%github.copilot.config.anthropic.thinking.budgetTokens%","minimum":1024,"maximum":32000,"tags":["experimental","onExp"]},"github.copilot.chat.anthropic.tools.websearch.enabled":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.anthropic.tools.websearch.enabled%","tags":["experimental","onExp"]},"github.copilot.chat.anthropic.tools.websearch.maxUses":{"type":"number","default":5,"markdownDescription":"%github.copilot.config.anthropic.tools.websearch.maxUses%","minimum":1,"maximum":20,"tags":["experimental"]},"github.copilot.chat.anthropic.tools.websearch.allowedDomains":{"type":"array","default":[],"markdownDescription":"%github.copilot.config.anthropic.tools.websearch.allowedDomains%","items":{"type":"string"},"tags":["experimental"]},"github.copilot.chat.anthropic.tools.websearch.blockedDomains":{"type":"array","default":[],"markdownDescription":"%github.copilot.config.anthropic.tools.websearch.blockedDomains%","items":{"type":"string"},"tags":["experimental"]},"github.copilot.chat.anthropic.tools.websearch.userLocation":{"type":["object","null"],"default":null,"markdownDescription":"%github.copilot.config.anthropic.tools.websearch.userLocation%","properties":{"city":{"type":"string","description":"City name (e.g., 'San Francisco')"},"region":{"type":"string","description":"State or region (e.g., 'California')"},"country":{"type":"string","description":"ISO country code (e.g., 'US')"},"timezone":{"type":"string","description":"IANA timezone identifier (e.g., 'America/Los_Angeles')"}},"tags":["experimental"]},"github.copilot.chat.tools.memory.enabled":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.tools.memory.enabled%","tags":["experimental","onExp"]},"github.copilot.chat.completionsFetcher":{"type":["string","null"],"markdownDescription":"%github.copilot.config.completionsFetcher%","tags":["experimental","onExp"],"enum":["electron-fetch","node-fetch"]},"github.copilot.chat.nesFetcher":{"type":["string","null"],"markdownDescription":"%github.copilot.config.nesFetcher%","tags":["experimental","onExp"],"enum":["electron-fetch","node-fetch"]}}},{"id":"advanced","properties":{"github.copilot.chat.debug.overrideChatEngine":{"type":["string","null"],"markdownDescription":"%github.copilot.config.debug.overrideChatEngine%","tags":["advanced","experimental"]},"github.copilot.chat.edits.gemini3ReplaceStringOnly":{"type":"boolean","default":false,"markdownDescription":"Use only the modern `replace_string_in_file` edit tool when generating edits with Gemini 3 models.","tags":["advanced","experimental","onExp"]},"github.copilot.chat.edits.gemini3MultiReplaceString":{"type":"boolean","default":false,"markdownDescription":"Enable the modern `multi_replace_string_in_file` edit tool when generating edits with Gemini 3 models.","tags":["advanced","experimental","onExp"]},"github.copilot.chat.projectLabels.expanded":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.projectLabels.expanded%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.projectLabels.chat":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.projectLabels.chat%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.projectLabels.inline":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.projectLabels.inline%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.workspace.maxLocalIndexSize":{"type":"number","default":100000,"markdownDescription":"%github.copilot.config.workspace.maxLocalIndexSize%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.workspace.enableFullWorkspace":{"type":"boolean","default":true,"markdownDescription":"%github.copilot.config.workspace.enableFullWorkspace%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.workspace.enableCodeSearch":{"type":"boolean","default":true,"markdownDescription":"%github.copilot.config.workspace.enableCodeSearch%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.workspace.enableEmbeddingsSearch":{"type":"boolean","default":true,"markdownDescription":"%github.copilot.config.workspace.enableEmbeddingsSearch%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.workspace.preferredEmbeddingsModel":{"type":"string","default":"","markdownDescription":"%github.copilot.config.workspace.preferredEmbeddingsModel%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.workspace.prototypeAdoCodeSearchEndpointOverride":{"type":"string","default":"","markdownDescription":"%github.copilot.config.workspace.prototypeAdoCodeSearchEndpointOverride%","tags":["advanced","experimental"]},"github.copilot.chat.feedback.onChange":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.feedback.onChange%","tags":["advanced","experimental"]},"github.copilot.chat.review.intent":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.review.intent%","tags":["advanced","experimental"]},"github.copilot.chat.notebook.summaryExperimentEnabled":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.notebook.summaryExperimentEnabled%","tags":["advanced","experimental"]},"github.copilot.chat.notebook.variableFilteringEnabled":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.notebook.variableFilteringEnabled%","tags":["advanced","experimental"]},"github.copilot.chat.notebook.alternativeFormat":{"type":"string","default":"xml","enum":["xml","markdown"],"markdownDescription":"%github.copilot.config.notebook.alternativeFormat%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.notebook.alternativeNESFormat.enabled":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.notebook.alternativeNESFormat.enabled%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.debugTerminalCommandPatterns":{"type":"array","default":[],"items":{"type":"string"},"markdownDescription":"%github.copilot.config.debugTerminalCommandPatterns%","tags":["advanced","experimental"]},"github.copilot.chat.localWorkspaceRecording.enabled":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.localWorkspaceRecording.enabled%","tags":["advanced","experimental"]},"github.copilot.chat.editRecording.enabled":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.editRecording.enabled%","tags":["advanced","experimental"]},"github.copilot.chat.inlineChat.selectionRatioThreshold":{"type":"number","default":0,"markdownDescription":"%github.copilot.config.inlineChat.selectionRatioThreshold%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.temporalContext.maxAge":{"type":"number","default":100,"markdownDescription":"%github.copilot.config.temporalContext.maxAge%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.debug.requestLogger.maxEntries":{"type":"number","default":100,"markdownDescription":"%github.copilot.config.debug.requestLogger.maxEntries%","tags":["advanced","experimental"]},"github.copilot.chat.inlineEdits.diagnosticsContextProvider.enabled":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.inlineEdits.diagnosticsContextProvider.enabled%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.temporalContext.preferSameLang":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.temporalContext.preferSameLang%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.codesearch.agent.enabled":{"type":"boolean","default":true,"markdownDescription":"%github.copilot.config.codesearch.agent.enabled%","tags":["advanced","experimental"]},"github.copilot.chat.agent.temperature":{"type":["number","null"],"markdownDescription":"%github.copilot.config.agent.temperature%","tags":["advanced","experimental"]},"github.copilot.chat.instantApply.shortContextModelName":{"type":"string","default":"gpt-4o-instant-apply-full-ft-v66-short","markdownDescription":"%github.copilot.config.instantApply.shortContextModelName%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.instantApply.shortContextLimit":{"type":"number","default":8000,"markdownDescription":"%github.copilot.config.instantApply.shortContextLimit%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.enableUserPreferences":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.enableUserPreferences%","tags":["advanced","experimental"]},"github.copilot.chat.summarizeAgentConversationHistoryThreshold":{"type":["number","null"],"markdownDescription":"%github.copilot.config.summarizeAgentConversationHistoryThreshold%","tags":["advanced","experimental"]},"github.copilot.chat.agentHistorySummarizationMode":{"type":["string","null"],"markdownDescription":"%github.copilot.config.agentHistorySummarizationMode%","tags":["advanced","experimental"]},"github.copilot.chat.agentHistorySummarizationWithPromptCache":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.agentHistorySummarizationWithPromptCache%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.agentHistorySummarizationForceGpt41":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.agentHistorySummarizationForceGpt41%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.useResponsesApiTruncation":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.useResponsesApiTruncation%","tags":["advanced","experimental"]},"github.copilot.chat.omitBaseAgentInstructions":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.omitBaseAgentInstructions%","tags":["advanced","experimental"]},"github.copilot.chat.promptFileContextProvider.enabled":{"type":"boolean","default":true,"markdownDescription":"%github.copilot.config.promptFileContextProvider.enabled%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.tools.defaultToolsGrouped":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.tools.defaultToolsGrouped%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.claudeCode.enabled":{"type":["boolean","string"],"default":false,"markdownDescription":"%github.copilot.config.claudeCode.enabled%","tags":["advanced","experimental"]},"github.copilot.chat.claudeCode.debug":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.claudeCode.debug%","tags":["advanced","experimental"]},"github.copilot.chat.copilotCLI.enabled":{"type":"boolean","default":true,"markdownDescription":"%github.copilot.config.copilotCLI.enabled%","tags":["advanced","experimental"]},"github.copilot.chat.gpt5AlternativePatch":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.gpt5AlternativePatch%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.inlineEdits.triggerOnEditorChangeAfterSeconds":{"type":["number","null"],"markdownDescription":"%github.copilot.config.inlineEdits.triggerOnEditorChangeAfterSeconds%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.inlineEdits.nextCursorPrediction.displayLine":{"type":"boolean","default":true,"markdownDescription":"%github.copilot.config.inlineEdits.nextCursorPrediction.displayLine%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.inlineEdits.nextCursorPrediction.currentFileMaxTokens":{"type":"number","default":2000,"markdownDescription":"%github.copilot.config.inlineEdits.nextCursorPrediction.currentFileMaxTokens%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.inlineEdits.renameSymbolSuggestions":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.inlineEdits.renameSymbolSuggestions%","tags":["advanced","experimental","onExp"]},"github.copilot.chat.suggestRelatedFilesFromGitHistory.useEmbeddings":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.suggestRelatedFilesFromGitHistory.useEmbeddings%","tags":["advanced","experimental"]},"github.copilot.chat.cli.isolation.enabled":{"type":"boolean","default":true,"markdownDescription":"%github.copilot.config.cli.isolation.enabled%","tags":["advanced","experimental"]},"github.copilot.chat.cli.customAgents.enabled":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.cli.customAgents.enabled%","tags":["advanced","experimental"]},"github.copilot.chat.cli.mcp.enabled":{"type":"boolean","default":false,"markdownDescription":"%github.copilot.config.cli.mcp.enabled%","tags":["advanced","experimental"]}}}],"submenus":[{"id":"copilot/reviewComment/additionalActions/applyAndNext","label":"%github.copilot.submenu.reviewComment.applyAndNext.label%"},{"id":"copilot/reviewComment/additionalActions/discardAndNext","label":"%github.copilot.submenu.reviewComment.discardAndNext.label%"},{"id":"copilot/reviewComment/additionalActions/discard","label":"%github.copilot.submenu.reviewComment.discard.label%"},{"id":"github.copilot.chat.debug.filter","label":"Filter","icon":"$(filter)"},{"id":"github.copilot.chat.debug.exportAllPromptLogsAsJson","label":"Export All Logs as JSON","icon":"$(file-export)"}],"menus":{"editor/title":[{"command":"github.copilot.debug.generateInlineEditTests","when":"resourceScheme == 'ccreq'"},{"command":"github.copilot.chat.notebook.enableFollowCellExecution","when":"config.github.copilot.chat.notebook.followCellExecution.enabled && !github.copilot.notebookFollowInSessionEnabled && github.copilot.notebookAgentModeUsage && !config.notebook.globalToolbar","group":"navigation@10"},{"command":"github.copilot.chat.notebook.disableFollowCellExecution","when":"config.github.copilot.chat.notebook.followCellExecution.enabled && github.copilot.notebookFollowInSessionEnabled && github.copilot.notebookAgentModeUsage && !config.notebook.globalToolbar","group":"navigation@10"},{"command":"github.copilot.chat.replay","group":"navigation@9","when":"resourceFilename === 'benchRun.chatReplay.json'"},{"command":"github.copilot.chat.showAsChatSession","group":"navigation@9","when":"resourceFilename === 'benchRun.chatReplay.json' || resourceFilename === 'chat-export-logs.json'"},{"command":"github.copilot.chat.applyCopilotCLIAgentSessionChanges","group":"navigation@1","when":"resourceScheme == copilotcli-worktree-changes"}],"explorer/context":[{"command":"github.copilot.chat.showAsChatSession","when":"resourceFilename === 'benchRun.chatReplay.json' || resourceFilename === 'chat-export-logs.json'","group":"2_copilot@1"}],"editor/context":[{"command":"github.copilot.chat.explain","when":"!github.copilot.interactiveSession.disabled","group":"1_chat@4"}],"editor/context/chat":[{"command":"github.copilot.chat.fix","when":"!github.copilot.interactiveSession.disabled && !editorReadonly","group":"copilotAction@1"},{"command":"github.copilot.chat.review","when":"config.github.copilot.chat.reviewSelection.enabled && !github.copilot.interactiveSession.disabled && resourceScheme != 'vscode-chat-code-block'","group":"copilotAction@2"},{"command":"github.copilot.chat.generateDocs","when":"!github.copilot.interactiveSession.disabled && !editorReadonly","group":"copilotGenerate@1"},{"command":"github.copilot.chat.generateTests","when":"!github.copilot.interactiveSession.disabled && !editorReadonly","group":"copilotGenerate@2"}],"testing/item/result":[{"command":"github.copilot.tests.fixTestFailure.fromInline","when":"testResultState == failed && !testResultOutdated","group":"inline@2"}],"testing/item/context":[{"command":"github.copilot.tests.fixTestFailure.fromInline","when":"testResultState == failed && !testResultOutdated","group":"inline@2"}],"commandPalette":[{"command":"github.copilot.chat.triggerPermissiveSignIn","when":"false"},{"command":"github.copilot.interactiveSession.feedback","when":"github.copilot-chat.activated && !github.copilot.interactiveSession.disabled"},{"command":"github.copilot.debug.workbenchState","when":"true"},{"command":"github.copilot.chat.rerunWithCopilotDebug","when":"false"},{"command":"github.copilot.chat.startCopilotDebugCommand","when":"false"},{"command":"github.copilot.git.generateCommitMessage","when":"false"},{"command":"github.copilot.git.resolveMergeConflicts","when":"false"},{"command":"github.copilot.chat.explain","when":"false"},{"command":"github.copilot.chat.review","when":"!github.copilot.interactiveSession.disabled"},{"command":"github.copilot.chat.review.apply","when":"false"},{"command":"github.copilot.chat.review.applyAndNext","when":"false"},{"command":"github.copilot.chat.review.discard","when":"false"},{"command":"github.copilot.chat.review.discardAndNext","when":"false"},{"command":"github.copilot.chat.review.discardAll","when":"false"},{"command":"github.copilot.chat.review.stagedChanges","when":"false"},{"command":"github.copilot.chat.review.unstagedChanges","when":"false"},{"command":"github.copilot.chat.review.changes","when":"false"},{"command":"github.copilot.chat.review.stagedFileChange","when":"false"},{"command":"github.copilot.chat.review.unstagedFileChange","when":"false"},{"command":"github.copilot.chat.review.previous","when":"false"},{"command":"github.copilot.chat.review.next","when":"false"},{"command":"github.copilot.chat.review.continueInInlineChat","when":"false"},{"command":"github.copilot.chat.review.continueInChat","when":"false"},{"command":"github.copilot.chat.review.markHelpful","when":"false"},{"command":"github.copilot.chat.review.markUnhelpful","when":"false"},{"command":"github.copilot.devcontainer.generateDevContainerConfig","when":"false"},{"command":"github.copilot.tests.fixTestFailure","when":"false"},{"command":"github.copilot.tests.fixTestFailure.fromInline","when":"false"},{"command":"github.copilot.search.markHelpful","when":"false"},{"command":"github.copilot.search.markUnhelpful","when":"false"},{"command":"github.copilot.search.feedback","when":"false"},{"command":"github.copilot.chat.debug.showElements","when":"false"},{"command":"github.copilot.chat.debug.hideElements","when":"false"},{"command":"github.copilot.chat.debug.showTools","when":"false"},{"command":"github.copilot.chat.debug.hideTools","when":"false"},{"command":"github.copilot.chat.debug.showNesRequests","when":"false"},{"command":"github.copilot.chat.debug.hideNesRequests","when":"false"},{"command":"github.copilot.chat.debug.exportLogItem","when":"false"},{"command":"github.copilot.chat.debug.exportPromptArchive","when":"false"},{"command":"github.copilot.chat.debug.exportPromptLogsAsJson","when":"false"},{"command":"github.copilot.chat.debug.exportAllPromptLogsAsJson","when":"false"},{"command":"github.copilot.chat.mcp.setup.check","when":"false"},{"command":"github.copilot.chat.mcp.setup.validatePackage","when":"false"},{"command":"github.copilot.chat.mcp.setup.flow","when":"false"},{"command":"github.copilot.chat.debug.showRawRequestBody","when":"false"},{"command":"github.copilot.debug.showOutputChannel","when":"false"},{"command":"github.copilot.cli.sessions.delete","when":"false"},{"command":"github.copilot.cli.sessions.refresh","when":"false"},{"command":"github.copilot.cli.sessions.resumeInTerminal","when":"false"},{"command":"github.copilot.cli.sessions.newTerminalSession","when":"false"},{"command":"github.copilot.cloud.sessions.refresh","when":"false"},{"command":"github.copilot.cloud.sessions.openInBrowser","when":"false"},{"command":"github.copilot.cloud.sessions.proxy.closeChatSessionPullRequest","when":"false"},{"command":"github.copilot.chat.applyCopilotCLIAgentSessionChanges","when":"false"},{"command":"github.copilot.chat.showAsChatSession","when":"false"}],"view/title":[{"command":"github.copilot.claude.sessions.refresh","when":"view == workbench.view.chat.sessions.claude-code","group":"navigation@1"},{"command":"github.copilot.cli.sessions.refresh","when":"view == workbench.view.chat.sessions.copilotcli","group":"navigation@1"},{"submenu":"github.copilot.chat.debug.filter","when":"view == copilot-chat","group":"navigation"},{"command":"github.copilot.chat.debug.exportAllPromptLogsAsJson","when":"view == copilot-chat","group":"export@1"},{"command":"github.copilot.debug.showOutputChannel","when":"view == copilot-chat","group":"3_show@1"},{"command":"github.copilot.debug.showChatLogView","when":"view == workbench.panel.chat.view.copilot","group":"3_show"},{"command":"github.copilot.cloud.sessions.refresh","when":"view == workbench.view.chat.sessions.copilot-cloud-agent","group":"navigation@1"}],"view/item/context":[{"command":"github.copilot.chat.debug.showRawRequestBody","when":"view == copilot-chat && viewItem == request","group":"export@0"},{"command":"github.copilot.chat.debug.exportLogItem","when":"view == copilot-chat && (viewItem == toolcall || viewItem == request)","group":"export@1"},{"command":"github.copilot.chat.debug.exportPromptArchive","when":"view == copilot-chat && viewItem == chatprompt","group":"export@2"},{"command":"github.copilot.chat.debug.exportPromptLogsAsJson","when":"view == copilot-chat && viewItem == chatprompt","group":"export@3"}],"searchPanel/aiResults/commands":[{"command":"github.copilot.search.markHelpful","group":"inline@0","when":"aiResultsTitle && aiResultsRequested"},{"command":"github.copilot.search.markUnhelpful","group":"inline@1","when":"aiResultsTitle && aiResultsRequested"},{"command":"github.copilot.search.feedback","group":"inline@2","when":"aiResultsTitle && aiResultsRequested && github.copilot.debugReportFeedback"}],"comments/comment/title":[{"command":"github.copilot.chat.review.markHelpful","group":"inline@0","when":"commentController == github-copilot-review"},{"command":"github.copilot.chat.review.markUnhelpful","group":"inline@1","when":"commentController == github-copilot-review"}],"commentsView/commentThread/context":[{"command":"github.copilot.chat.review.apply","group":"context@1","when":"commentController == github-copilot-review"},{"command":"github.copilot.chat.review.discard","group":"context@2","when":"commentController == github-copilot-review"},{"command":"github.copilot.chat.review.discardAll","group":"context@3","when":"commentController == github-copilot-review"}],"comments/commentThread/additionalActions":[{"submenu":"copilot/reviewComment/additionalActions/applyAndNext","group":"inline@1","when":"commentController == github-copilot-review && github.copilot.chat.review.numberOfComments > 1"},{"command":"github.copilot.chat.review.apply","group":"inline@1","when":"commentController == github-copilot-review && github.copilot.chat.review.numberOfComments == 1"},{"submenu":"copilot/reviewComment/additionalActions/discardAndNext","group":"inline@2","when":"commentController == github-copilot-review && github.copilot.chat.review.numberOfComments > 1"},{"submenu":"copilot/reviewComment/additionalActions/discard","group":"inline@2","when":"commentController == github-copilot-review && github.copilot.chat.review.numberOfComments == 1"}],"copilot/reviewComment/additionalActions/applyAndNext":[{"command":"github.copilot.chat.review.applyAndNext","group":"inline@1","when":"commentController == github-copilot-review"},{"command":"github.copilot.chat.review.apply","group":"inline@2","when":"commentController == github-copilot-review"}],"copilot/reviewComment/additionalActions/discardAndNext":[{"command":"github.copilot.chat.review.discardAndNext","group":"inline@1","when":"commentController == github-copilot-review"},{"command":"github.copilot.chat.review.discard","group":"inline@2","when":"commentController == github-copilot-review"},{"command":"github.copilot.chat.review.continueInInlineChat","group":"inline@3","when":"commentController == github-copilot-review"}],"copilot/reviewComment/additionalActions/discard":[{"command":"github.copilot.chat.review.discard","group":"inline@2","when":"commentController == github-copilot-review"},{"command":"github.copilot.chat.review.continueInInlineChat","group":"inline@3","when":"commentController == github-copilot-review"}],"comments/commentThread/title":[{"command":"github.copilot.chat.review.previous","group":"inline@1","when":"commentController == github-copilot-review"},{"command":"github.copilot.chat.review.next","group":"inline@2","when":"commentController == github-copilot-review"},{"command":"github.copilot.chat.review.continueInChat","group":"inline@3","when":"commentController == github-copilot-review"},{"command":"github.copilot.chat.review.discardAll","group":"inline@4","when":"commentController == github-copilot-review"}],"scm/title":[{"command":"github.copilot.chat.review.changes","group":"navigation","when":"config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmProviderRootUri in github.copilot.chat.reviewDiff.enabledRootUris"}],"scm/resourceGroup/context":[{"command":"github.copilot.chat.review.stagedChanges","when":"config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmResourceGroup == index","group":"inline@-3"},{"command":"github.copilot.chat.review.unstagedChanges","when":"config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmResourceGroup == workingTree","group":"inline@-3"}],"scm/resourceState/context":[{"command":"github.copilot.git.resolveMergeConflicts","when":"scmProvider == git && scmResourceGroup == merge && git.activeResourceHasMergeConflicts","group":"z_chat@1"},{"command":"github.copilot.chat.review.stagedFileChange","group":"3_copilot","when":"config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmResourceGroup == index"},{"command":"github.copilot.chat.review.unstagedFileChange","group":"3_copilot","when":"config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmResourceGroup == workingTree"}],"scm/inputBox":[{"command":"github.copilot.git.generateCommitMessage","when":"scmProvider == git"}],"testing/message/context":[{"command":"github.copilot.tests.fixTestFailure","when":"testing.testItemHasUri","group":"inline@1"}],"issue/reporter":[{"command":"github.copilot.report"}],"github.copilot.chat.debug.filter":[{"command":"github.copilot.chat.debug.showElements","when":"github.copilot.chat.debug.elementsHidden","group":"commands@0"},{"command":"github.copilot.chat.debug.hideElements","when":"!github.copilot.chat.debug.elementsHidden","group":"commands@0"},{"command":"github.copilot.chat.debug.showTools","when":"github.copilot.chat.debug.toolsHidden","group":"commands@1"},{"command":"github.copilot.chat.debug.hideTools","when":"!github.copilot.chat.debug.toolsHidden","group":"commands@1"},{"command":"github.copilot.chat.debug.showNesRequests","when":"github.copilot.chat.debug.nesRequestsHidden","group":"commands@2"},{"command":"github.copilot.chat.debug.hideNesRequests","when":"!github.copilot.chat.debug.nesRequestsHidden","group":"commands@2"}],"notebook/toolbar":[{"command":"github.copilot.chat.notebook.enableFollowCellExecution","when":"config.github.copilot.chat.notebook.followCellExecution.enabled && !github.copilot.notebookFollowInSessionEnabled && github.copilot.notebookAgentModeUsage && config.notebook.globalToolbar","group":"navigation/execute@15"},{"command":"github.copilot.chat.notebook.disableFollowCellExecution","when":"config.github.copilot.chat.notebook.followCellExecution.enabled && github.copilot.notebookFollowInSessionEnabled && github.copilot.notebookAgentModeUsage && config.notebook.globalToolbar","group":"navigation/execute@15"}],"editor/content":[{"command":"github.copilot.git.resolveMergeConflicts","group":"z_chat@1","when":"config.git.enabled && !git.missing && !isInDiffEditor && !isMergeEditor && resource in git.mergeChanges && git.activeResourceHasMergeConflicts"}],"chat/chatSessions":[{"command":"github.copilot.cli.sessions.resumeInTerminal","when":"chatSessionType == copilotcli","group":"inline@1"},{"command":"github.copilot.cli.sessions.delete","when":"chatSessionType == copilotcli","group":"inline@2"},{"command":"github.copilot.cli.sessions.newTerminalSession","when":"view == workbench.view.chat.sessions.copilotcli","group":"submenu"},{"command":"github.copilot.cli.sessions.refresh","when":"view == workbench.view.chat.sessions.copilotcli","group":"navigation@1"},{"command":"github.copilot.cloud.sessions.openInBrowser","when":"chatSessionType == copilot-cloud-agent","group":"navigation@10"},{"command":"github.copilot.cloud.sessions.proxy.closeChatSessionPullRequest","when":"chatSessionType == copilot-cloud-agent","group":"context"},{"command":"github.copilot.cli.sessions.delete","when":"chatSessionType == copilotcli && config.chat.agentSessionsViewLocation == 'single-view'","group":"context"}]},"icons":{"copilot-logo":{"description":"%github.copilot.icon%","default":{"fontPath":"assets/copilot.woff","fontCharacter":"\\0041"}},"copilot-warning":{"description":"%github.copilot.icon%","default":{"fontPath":"assets/copilot.woff","fontCharacter":"\\0042"}},"copilot-notconnected":{"description":"%github.copilot.icon%","default":{"fontPath":"assets/copilot.woff","fontCharacter":"\\0043"}}},"iconFonts":[{"id":"copilot-font","src":[{"path":"assets/copilot.woff","format":"woff"}]}],"terminalQuickFixes":[{"id":"copilot-chat.fixWithCopilot","commandLineMatcher":".+","commandExitResult":"error","outputMatcher":{"anchor":"bottom","length":1,"lineMatcher":".+","offset":0},"kind":"explain"},{"id":"copilot-chat.generateCommitMessage","commandLineMatcher":"git add .+","commandExitResult":"success","kind":"explain","outputMatcher":{"anchor":"bottom","length":1,"lineMatcher":".+","offset":0}},{"id":"copilot-chat.terminalToDebugging","commandLineMatcher":".+","kind":"explain","commandExitResult":"error","outputMatcher":{"anchor":"bottom","length":1,"lineMatcher":"","offset":0}},{"id":"copilot-chat.terminalToDebuggingSuccess","commandLineMatcher":".+","kind":"explain","commandExitResult":"success","outputMatcher":{"anchor":"bottom","length":1,"lineMatcher":"","offset":0}}],"languages":[{"id":"ignore","filenamePatterns":[".copilotignore"],"aliases":[]},{"id":"markdown","extensions":[".copilotmd"]}],"views":{"copilot-chat":[{"id":"copilot-chat","name":"Chat Debug","icon":"assets/debug-icon.svg","when":"github.copilot.chat.showLogView"}],"context-inspector":[{"id":"context-inspector","name":"Language Context Inspector","icon":"$(inspect)","when":"github.copilot.chat.showContextInspectorView"}],"agentSessions":[{"id":"codex-placeholder","name":"OpenAI Codex","when":"github.copilot.chat.codex.showPlaceholder","icon":"$(file)"},{"id":"copilot-agents-placeholder","name":"GitHub Copilot Agents","when":"chatEntitlementSignedOut || !chatIsEnabled","icon":"$(copilot)"}]},"viewsContainers":{"activitybar":[{"id":"copilot-chat","title":"Chat Debug","icon":"assets/debug-icon.svg"},{"id":"context-inspector","title":"Language Context Inspector","icon":"$(inspect)"}]},"configurationDefaults":{"workbench.editorAssociations":{"*.copilotmd":"vscode.markdown.preview.editor"}},"keybindings":[{"command":"github.copilot.chat.rerunWithCopilotDebug","key":"ctrl+alt+.","mac":"cmd+alt+.","when":"github.copilot-chat.activated && terminalShellIntegrationEnabled && terminalFocus && !terminalAltBufferActive"}],"walkthroughs":[{"id":"copilotWelcome","title":"%github.copilot.walkthrough.title%","description":"%github.copilot.walkthrough.description%","when":"!isWeb","steps":[{"id":"copilot.setup.signIn","title":"%github.copilot.walkthrough.setup.signIn.title%","description":"%github.copilot.walkthrough.setup.signIn.description%","when":"chatEntitlementSignedOut && !view.workbench.panel.chat.view.copilot.visible && !github.copilot-chat.activated && !github.copilot.offline && !github.copilot.interactiveSession.individual.disabled && !github.copilot.interactiveSession.individual.expired && !github.copilot.interactiveSession.enterprise.disabled && !github.copilot.interactiveSession.contactSupport","media":{"video":{"dark":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4","light":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4","hc":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4","hcLight":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4"},"altText":"%github.copilot.walkthrough.panelChat.media.altText%"}},{"id":"copilot.setup.signInNoAction","title":"%github.copilot.walkthrough.setup.signIn.title%","description":"%github.copilot.walkthrough.setup.noAction.description%","when":"chatEntitlementSignedOut && view.workbench.panel.chat.view.copilot.visible && !github.copilot-chat.activated && !github.copilot.offline && !github.copilot.interactiveSession.individual.disabled && !github.copilot.interactiveSession.individual.expired && !github.copilot.interactiveSession.enterprise.disabled && !github.copilot.interactiveSession.contactSupport","media":{"video":{"dark":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4","light":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4","hc":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4","hcLight":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4"},"altText":"%github.copilot.walkthrough.panelChat.media.altText%"}},{"id":"copilot.setup.signUp","title":"%github.copilot.walkthrough.setup.signUp.title%","description":"%github.copilot.walkthrough.setup.signUp.description%","when":"chatPlanCanSignUp && !view.workbench.panel.chat.view.copilot.visible && !github.copilot-chat.activated && !github.copilot.offline && (github.copilot.interactiveSession.individual.disabled || github.copilot.interactiveSession.individual.expired) && !github.copilot.interactiveSession.enterprise.disabled && !github.copilot.interactiveSession.contactSupport","media":{"video":{"dark":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4","light":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4","hc":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4","hcLight":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4"},"altText":"%github.copilot.walkthrough.panelChat.media.altText%"}},{"id":"copilot.setup.signUpNoAction","title":"%github.copilot.walkthrough.setup.signUp.title%","description":"%github.copilot.walkthrough.setup.noAction.description%","when":"chatPlanCanSignUp && view.workbench.panel.chat.view.copilot.visible && !github.copilot-chat.activated && !github.copilot.offline && (github.copilot.interactiveSession.individual.disabled || github.copilot.interactiveSession.individual.expired) && !github.copilot.interactiveSession.enterprise.disabled && !github.copilot.interactiveSession.contactSupport","media":{"video":{"dark":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4","light":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4","hc":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4","hcLight":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4"},"altText":"%github.copilot.walkthrough.panelChat.media.altText%"}},{"id":"copilot.panelChat","title":"%github.copilot.walkthrough.panelChat.title%","description":"%github.copilot.walkthrough.panelChat.description%","when":"!chatEntitlementSignedOut || chatIsEnabled ","media":{"video":{"dark":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4","light":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4","hc":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4","hcLight":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4"},"altText":"%github.copilot.walkthrough.panelChat.media.altText%"}},{"id":"copilot.edits","title":"%github.copilot.walkthrough.edits.title%","description":"%github.copilot.walkthrough.edits.description%","when":"!chatEntitlementSignedOut || chatIsEnabled ","media":{"video":{"dark":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/edits.mp4","light":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/edits-light.mp4","hc":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/edits-hc.mp4","hcLight":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/edits-hclight.mp4"},"altText":"%github.copilot.walkthrough.edits.media.altText%"}},{"id":"copilot.firstSuggest","title":"%github.copilot.walkthrough.firstSuggest.title%","description":"%github.copilot.walkthrough.firstSuggest.description%","when":"!chatEntitlementSignedOut || chatIsEnabled ","media":{"video":{"dark":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/ghost-text.mp4","light":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/ghost-text-light.mp4","hc":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/ghost-text-hc.mp4","hcLight":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/ghost-text-hclight.mp4"},"altText":"%github.copilot.walkthrough.firstSuggest.media.altText%"}},{"id":"copilot.inlineChatNotMac","title":"%github.copilot.walkthrough.inlineChatNotMac.title%","description":"%github.copilot.walkthrough.inlineChatNotMac.description%","when":"!isMac && (!chatEntitlementSignedOut || chatIsEnabled )","media":{"video":{"dark":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline.mp4","light":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-light.mp4","hc":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-hc.mp4","hcLight":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-hclight.mp4"},"altText":"%github.copilot.walkthrough.inlineChatNotMac.media.altText%"}},{"id":"copilot.inlineChatMac","title":"%github.copilot.walkthrough.inlineChatMac.title%","description":"%github.copilot.walkthrough.inlineChatMac.description%","when":"isMac && (!chatEntitlementSignedOut || chatIsEnabled )","media":{"video":{"dark":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline.mp4","light":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-light.mp4","hc":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-hc.mp4","hcLight":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-hclight.mp4"},"altText":"%github.copilot.walkthrough.inlineChatMac.media.altText%"}},{"id":"copilot.sparkle","title":"%github.copilot.walkthrough.sparkle.title%","description":"%github.copilot.walkthrough.sparkle.description%","when":"!chatEntitlementSignedOut || chatIsEnabled","media":{"video":{"dark":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/git-commit.mp4","light":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/git-commit-light.mp4","hc":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/git-commit-hc.mp4","hcLight":"https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/git-commit-hclight.mp4"},"altText":"%github.copilot.walkthrough.sparkle.media.altText%"}}]}],"jsonValidation":[{"fileMatch":"settings.json","url":"ccsettings://root/schema.json"}],"typescriptServerPlugins":[{"name":"@vscode/copilot-typescript-server-plugin","enableForWorkspaceTypeScriptVersions":true}],"chatSessions":[{"type":"claude-code","name":"claude","displayName":"Claude Code CLI Agent","icon":"$(sparkle)","welcomeTitle":"Claude Code Agent","welcomeMessage":"Run local background tasks","inputPlaceholder":"Describe your task, type `#` for adding context","order":3,"description":"The Claude Code Agent works on your local machine","when":"config.github.copilot.chat.advanced.claudeCode.enabled","canDelegate":false,"capabilities":{"supportsFileAttachments":true},"commands":[{"name":"init","description":"Initialize a new CLAUDE.md file with codebase documentation"},{"name":"compact","description":"Clear conversation history but keep a summary in context. Optional: /compact [instructions for summarization]"},{"name":"pr-comments","description":"Get comments from a GitHub pull request"},{"name":"review","description":"Review a pull request"},{"name":"security-review","description":"Complete a security review of the pending changes on the current branch"}]},{"type":"copilotcli","name":"cli","displayName":"Background Agent","icon":"$(collection)","welcomeTitle":"Background Agent","welcomeMessage":"Run tasks in the background","inputPlaceholder":"Describe your task, type `#` for adding context","order":2,"canDelegate":true,"description":"Delegate tasks to a background agent.","capabilities":{"supportsFileAttachments":true,"supportsProblemAttachments":true,"supportsToolAttachments":false,"supportsImageAttachments":true,"supportsSymbolAttachments":true,"supportsSearchResultAttachments":true,"supportsSourceControlAttachments":true},"commands":[{"name":"delegate","description":"Delegate chat session to cloud agent and create associated PR"}]},{"type":"copilot-cloud-agent","alternativeIds":["copilot-swe-agent"],"name":"cloud","displayName":"Cloud Agent","icon":"$(cloud)","welcomeTitle":"Cloud Agent","welcomeMessage":"Delegate tasks to the cloud","inputPlaceholder":"Describe your task, type `#` for adding context","order":1,"canDelegate":true,"description":"Delegate tasks to the GitHub Copilot Cloud Agent. The agent works asynchronously in the cloud to implement changes, iterates via chat, and can create or update pull requests as needed.","capabilities":{"supportsFileAttachments":true}}],"debuggers":[{"type":"vscode-chat-replay","label":"vscode-chat-replay","languages":["json"],"when":"resourceFilename === 'benchRun.chatReplay.json'","configurationAttributes":{"launch":{"properties":{"program":{"type":"string","description":"Chat replay file to debug (parse for headers)","default":"${file}"},"stopOnEntry":{"type":"boolean","default":true,"description":"Break immediately to step through manually."}},"required":["program"]}}}],"chatAgents":[{"name":"Plan","path":"./assets/agents/Plan.agent.md","description":"Researches a task to create multi-step plans"}],"chatPromptFiles":[{"name":"savePrompt","path":"./assets/prompts/savePrompt.prompt.md","description":"Generalize the current discussion into a reusable prompt and save it as a file"}]},"extensionPack":["GitHub.copilot"],"prettier":{"useTabs":true,"tabWidth":4,"singleQuote":true},"overrides":{"@aminya/node-gyp-build":"npm:node-gyp-build@4.8.1","string_decoder":"npm:string_decoder@1.2.0","node-gyp":"npm:node-gyp@10.3.1"},"isPreRelease":false} \ No newline at end of file +{ + "name": "copilot-chat", + "displayName": "GitHub Copilot Chat", + "description": "AI chat features powered by Copilot", + "version": "0.34.0", + "build": "1", + "internalAIKey": "1058ec22-3c95-4951-8443-f26c1f325911", + "completionsCoreVersion": "1.378.1799", + "internalLargeStorageAriaKey": "ec712b3202c5462fb6877acae7f1f9d7-c19ad55e-3e3c-4f99-984b-827f6d95bd9e-6917", + "ariaKey": "0c6ae279ed8443289764825290e4f9e2-1a736e7c-1324-4338-be46-fc2a58ae4d14-7255", + "buildType": "dev", + "publisher": "GitHub", + "homepage": "https://github.com/features/copilot?editor=vscode", + "license": "SEE LICENSE IN LICENSE.txt", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/vscode-copilot-chat" + }, + "bugs": { + "url": "https://github.com/microsoft/vscode/issues" + }, + "qna": "https://github.com/github-community/community/discussions/categories/copilot", + "icon": "assets/copilot.png", + "pricing": "Trial", + "engines": { + "vscode": "^1.107.0-20251119", + "npm": ">=9.0.0", + "node": ">=22.14.0" + }, + "categories": [ + "AI", + "Chat", + "Programming Languages", + "Machine Learning" + ], + "keywords": [ + "ai", + "openai", + "codex", + "pilot", + "snippets", + "documentation", + "autocomplete", + "intellisense", + "refactor", + "javascript", + "python", + "typescript", + "php", + "go", + "golang", + "ruby", + "c++", + "c#", + "java", + "kotlin", + "co-pilot" + ], + "badges": [ + { + "url": "https://img.shields.io/badge/GitHub%20Copilot-Subscription%20Required-orange", + "href": "https://github.com/github-copilot/signup?editor=vscode", + "description": "%github.copilot.badge.signUp%" + }, + { + "url": "https://img.shields.io/github/stars/github/copilot-docs?style=social", + "href": "https://github.com/github/copilot-docs", + "description": "%github.copilot.badge.star%" + }, + { + "url": "https://img.shields.io/youtube/channel/views/UC7c3Kb6jYCRj4JOHHZTxKsQ?style=social", + "href": "https://www.youtube.com/@GitHub/search?query=copilot", + "description": "%github.copilot.badge.youtube%" + }, + { + "url": "https://img.shields.io/twitter/follow/github?style=social", + "href": "https://twitter.com/github", + "description": "%github.copilot.badge.twitter%" + } + ], + "activationEvents": [ + "onStartupFinished", + "onLanguageModelChat:copilot", + "onUri", + "onFileSystem:ccreq", + "onFileSystem:ccsettings", + "onCustomAgentsProvider", + "onInstructionsProvider" + ], + "main": "./dist/extension", + "l10n": "./l10n", + "enabledApiProposals": [ + "extensionsAny", + "newSymbolNamesProvider", + "interactive", + "codeActionAI", + "activeComment", + "commentReveal", + "contribCommentThreadAdditionalMenu", + "contribCommentsViewThreadMenus", + "documentFiltersExclusive", + "embeddings", + "findTextInFiles", + "findTextInFiles2", + "findFiles2@2", + "textSearchProvider", + "terminalDataWriteEvent", + "terminalExecuteCommandEvent", + "terminalSelection", + "terminalQuickFixProvider", + "mappedEditsProvider", + "aiRelatedInformation", + "aiSettingsSearch", + "chatParticipantAdditions", + "chatEditing", + "defaultChatParticipant@4", + "contribSourceControlInputBoxMenu", + "authLearnMore", + "testObserver", + "aiTextSearchProvider@2", + "chatParticipantPrivate@11", + "chatProvider@4", + "contribDebugCreateConfiguration", + "chatReferenceDiagnostic", + "textSearchProvider2", + "chatReferenceBinaryData", + "languageModelSystem", + "languageModelCapabilities", + "inlineCompletionsAdditions", + "chatStatusItem", + "taskProblemMatcherStatus", + "contribLanguageModelToolSets", + "textDocumentChangeReason", + "resolvers", + "taskExecutionTerminal", + "dataChannels", + "languageModelThinkingPart", + "chatSessionsProvider@3", + "devDeviceId", + "contribEditorContentMenu" + ], + "contributes": { + "languageModelTools": [ + { + "name": "copilot_searchCodebase", + "toolReferenceName": "codebase", + "displayName": "%copilot.tools.searchCodebase.name%", + "icon": "$(folder)", + "userDescription": "%copilot.codebase.tool.description%", + "modelDescription": "Run a natural language search for relevant code or documentation comments from the user's current workspace. Returns relevant code snippets from the user's current workspace if it is large, or the full contents of the workspace if it is small.", + "tags": [ + "codesearch", + "vscode_codesearch" + ], + "inputSchema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "The query to search the codebase for. Should contain all relevant context. Should ideally be text that might appear in the codebase, such as function names, variable names, or comments." + } + }, + "required": [ + "query" + ] + } + }, + { + "name": "copilot_searchWorkspaceSymbols", + "toolReferenceName": "symbols", + "displayName": "%copilot.tools.searchWorkspaceSymbols.name%", + "icon": "$(symbol)", + "userDescription": "%copilot.workspaceSymbols.tool.description%", + "modelDescription": "Search the user's workspace for code symbols using language services. Use this tool when the user is looking for a specific symbol in their workspace.", + "tags": [ + "vscode_codesearch" + ], + "inputSchema": { + "type": "object", + "properties": { + "symbolName": { + "type": "string", + "description": "The symbol to search for, such as a function name, class name, or variable name." + } + }, + "required": [ + "symbolName" + ] + } + }, + { + "name": "copilot_listCodeUsages", + "toolReferenceName": "usages", + "legacyToolReferenceFullNames": [ + "usages" + ], + "displayName": "%copilot.tools.listCodeUsages.name%", + "icon": "$(references)", + "userDescription": "%copilot.listCodeUsages.tool.description%", + "modelDescription": "Request to list all usages (references, definitions, implementations etc) of a function, class, method, variable etc. Use this tool when \n1. Looking for a sample implementation of an interface or class\n2. Checking how a function is used throughout the codebase.\n3. Including and updating all usages when changing a function, method, or constructor", + "tags": [ + "vscode_codesearch" + ], + "inputSchema": { + "type": "object", + "properties": { + "symbolName": { + "type": "string", + "description": "The name of the symbol, such as a function name, class name, method name, variable name, etc." + }, + "filePaths": { + "type": "array", + "description": "One or more file paths which likely contain the definition of the symbol. For instance the file which declares a class or function. This is optional but will speed up the invocation of this tool and improve the quality of its output.", + "items": { + "type": "string" + } + } + }, + "required": [ + "symbolName" + ] + } + }, + { + "name": "copilot_getVSCodeAPI", + "toolReferenceName": "vscodeAPI", + "displayName": "%copilot.tools.getVSCodeAPI.name%", + "icon": "$(references)", + "userDescription": "%copilot.vscode.tool.description%", + "modelDescription": "Get comprehensive VS Code API documentation and references for extension development. This tool provides authoritative documentation for VS Code's extensive API surface, including proposed APIs, contribution points, and best practices. Use this tool for understanding complex VS Code API interactions.\n\nWhen to use this tool:\n- User asks about specific VS Code APIs, interfaces, or extension capabilities\n- Need documentation for VS Code extension contribution points (commands, views, settings, etc.)\n- Questions about proposed APIs and their usage patterns\n- Understanding VS Code extension lifecycle, activation events, and packaging\n- Best practices for VS Code extension development architecture\n- API examples and code patterns for extension features\n- Troubleshooting extension-specific issues or API limitations\n\nWhen NOT to use this tool:\n- Creating simple standalone files or scripts unrelated to VS Code extensions\n- General programming questions not specific to VS Code extension development\n- Questions about using VS Code as an editor (user-facing features)\n- Non-extension related development tasks\n- File creation or editing that doesn't involve VS Code extension APIs\n\nCRITICAL usage guidelines:\n1. Always include specific API names, interfaces, or concepts in your query\n2. Mention the extension feature you're trying to implement\n3. Include context about proposed vs stable APIs when relevant\n4. Reference specific contribution points when asking about extension manifest\n5. Be specific about the VS Code version or API version when known\n\nScope: This tool is for EXTENSION DEVELOPMENT ONLY - building tools that extend VS Code itself, not for general file creation or non-extension programming tasks.", + "inputSchema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "The query to search vscode documentation for. Should contain all relevant context." + } + }, + "required": [ + "query" + ] + }, + "tags": [] + }, + { + "name": "copilot_findFiles", + "toolReferenceName": "fileSearch", + "displayName": "%copilot.tools.findFiles.name%", + "modelDescription": "Search for files in the workspace by glob pattern. This only returns the paths of matching files. Use this tool when you know the exact filename pattern of the files you're searching for. Glob patterns match from the root of the workspace folder. Examples:\n- **/*.{js,ts} to match all js/ts files in the workspace.\n- src/** to match all files under the top-level src folder.\n- **/foo/**/*.js to match all js files under any foo folder in the workspace.", + "tags": [ + "vscode_codesearch" + ], + "inputSchema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "Search for files with names or paths matching this glob pattern." + }, + "maxResults": { + "type": "number", + "description": "The maximum number of results to return. Do not use this unless necessary, it can slow things down. By default, only some matches are returned. If you use this and don't see what you're looking for, you can try again with a more specific query or a larger maxResults." + } + }, + "required": [ + "query" + ] + } + }, + { + "name": "copilot_findTextInFiles", + "toolReferenceName": "textSearch", + "displayName": "%copilot.tools.findTextInFiles.name%", + "modelDescription": "Do a fast text search in the workspace. Use this tool when you want to search with an exact string or regex. If you are not sure what words will appear in the workspace, prefer using regex patterns with alternation (|) or character classes to search for multiple potential words at once instead of making separate searches. For example, use 'function|method|procedure' to look for all of those words at once. Use includePattern to search within files matching a specific pattern, or in a specific file, using a relative path. Use 'includeIgnoredFiles' to include files normally ignored by .gitignore, other ignore files, and `files.exclude` and `search.exclude` settings. Warning: using this may cause the search to be slower, only set it when you want to search in ignored folders like node_modules or build outputs. Use this tool when you want to see an overview of a particular file, instead of using read_file many times to look for code within a file.", + "tags": [ + "vscode_codesearch" + ], + "inputSchema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "The pattern to search for in files in the workspace. Use regex with alternation (e.g., 'word1|word2|word3') or character classes to find multiple potential words in a single search. Be sure to set the isRegexp property properly to declare whether it's a regex or plain text pattern. Is case-insensitive." + }, + "isRegexp": { + "type": "boolean", + "description": "Whether the pattern is a regex." + }, + "includePattern": { + "type": "string", + "description": "Search files matching this glob pattern. Will be applied to the relative path of files within the workspace. To search recursively inside a folder, use a proper glob pattern like \"src/folder/**\". Do not use | in includePattern." + }, + "maxResults": { + "type": "number", + "description": "The maximum number of results to return. Do not use this unless necessary, it can slow things down. By default, only some matches are returned. If you use this and don't see what you're looking for, you can try again with a more specific query or a larger maxResults." + }, + "includeIgnoredFiles": { + "type": "boolean", + "description": "Whether to include files that would normally be ignored according to .gitignore, other ignore files and `files.exclude` and `search.exclude` settings. Warning: using this may cause the search to be slower. Only set it when you want to search in ignored folders like node_modules or build outputs." + } + }, + "required": [ + "query", + "isRegexp" + ] + } + }, + { + "name": "copilot_applyPatch", + "displayName": "%copilot.tools.applyPatch.name%", + "toolReferenceName": "applyPatch", + "userDescription": "%copilot.tools.applyPatch.description%", + "modelDescription": "Edit text files. Do not use this tool to edit Jupyter notebooks. `apply_patch` allows you to execute a diff/patch against a text file, but the format of the diff specification is unique to this task, so pay careful attention to these instructions. To use the `apply_patch` command, you should pass a message of the following structure as \"input\":\n\n*** Begin Patch\n[YOUR_PATCH]\n*** End Patch\n\nWhere [YOUR_PATCH] is the actual content of your patch, specified in the following V4A diff format.\n\n*** [ACTION] File: [/absolute/path/to/file] -> ACTION can be one of Add, Update, or Delete.\nAn example of a message that you might pass as \"input\" to this function, in order to apply a patch, is shown below.\n\n*** Begin Patch\n*** Update File: /Users/someone/pygorithm/searching/binary_search.py\n@@class BaseClass\n@@ def search():\n- pass\n+ raise NotImplementedError()\n\n@@class Subclass\n@@ def search():\n- pass\n+ raise NotImplementedError()\n\n*** End Patch\nDo not use line numbers in this diff format.", + "inputSchema": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "The edit patch to apply." + }, + "explanation": { + "type": "string", + "description": "A short description of what the tool call is aiming to achieve." + } + }, + "required": [ + "input", + "explanation" + ] + } + }, + { + "name": "copilot_readFile", + "toolReferenceName": "readFile", + "legacyToolReferenceFullNames": [ + "search/readFile" + ], + "displayName": "%copilot.tools.readFile.name%", + "userDescription": "%copilot.tools.readFile.userDescription%", + "modelDescription": "Read the contents of a file.\n\nYou must specify the line range you're interested in. Line numbers are 1-indexed. If the file contents returned are insufficient for your task, you may call this tool again to retrieve more content. Prefer reading larger ranges over doing many small reads.", + "tags": [ + "vscode_codesearch" + ], + "inputSchema": { + "type": "object", + "properties": { + "filePath": { + "description": "The absolute path of the file to read.", + "type": "string" + }, + "startLine": { + "type": "number", + "description": "The line number to start reading from, 1-based." + }, + "endLine": { + "type": "number", + "description": "The inclusive line number to end reading at, 1-based." + } + }, + "required": [ + "filePath", + "startLine", + "endLine" + ] + } + }, + { + "name": "copilot_listDirectory", + "toolReferenceName": "listDirectory", + "displayName": "%copilot.tools.listDirectory.name%", + "modelDescription": "List the contents of a directory. Result will have the name of the child. If the name ends in /, it's a folder, otherwise a file", + "tags": [ + "vscode_codesearch" + ], + "inputSchema": { + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "The absolute path to the directory to list." + } + }, + "required": [ + "path" + ] + } + }, + { + "name": "copilot_getErrors", + "displayName": "%copilot.tools.getErrors.name%", + "toolReferenceName": "problems", + "legacyToolReferenceFullNames": [ + "problems" + ], + "icon": "$(error)", + "userDescription": "%copilot.tools.errors.description%", + "modelDescription": "Get any compile or lint errors in a specific file or across all files. If the user mentions errors or problems in a file, they may be referring to these. Use the tool to see the same errors that the user is seeing. If the user asks you to analyze all errors, or does not specify a file, use this tool to gather errors for all files. Also use this tool after editing a file to validate the change.", + "tags": [], + "inputSchema": { + "type": "object", + "properties": { + "filePaths": { + "description": "The absolute paths to the files or folders to check for errors. Omit 'filePaths' when retrieving all errors.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + { + "name": "copilot_readProjectStructure", + "displayName": "%copilot.tools.readProjectStructure.name%", + "modelDescription": "Get a file tree representation of the workspace.", + "tags": [] + }, + { + "name": "copilot_getChangedFiles", + "displayName": "%copilot.tools.getChangedFiles.name%", + "toolReferenceName": "changes", + "legacyToolReferenceFullNames": [ + "changes" + ], + "icon": "$(diff)", + "userDescription": "%copilot.tools.changes.description%", + "modelDescription": "Get git diffs of current file changes in a git repository. Don't forget that you can use run_in_terminal to run git commands in a terminal as well.", + "tags": [ + "vscode_codesearch" + ], + "inputSchema": { + "type": "object", + "properties": { + "repositoryPath": { + "type": "string", + "description": "The absolute path to the git repository to look for changes in. If not provided, the active git repository will be used." + }, + "sourceControlState": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "staged", + "unstaged", + "merge-conflicts" + ] + }, + "description": "The kinds of git state to filter by. Allowed values are: 'staged', 'unstaged', and 'merge-conflicts'. If not provided, all states will be included." + } + } + } + }, + { + "name": "copilot_testFailure", + "toolReferenceName": "testFailure", + "legacyToolReferenceFullNames": [ + "testFailure" + ], + "displayName": "%copilot.tools.testFailure.name%", + "icon": "$(beaker)", + "userDescription": "%copilot.testFailure.tool.description%", + "modelDescription": "Includes test failure information in the prompt.", + "inputSchema": {}, + "tags": [ + "vscode_editing_with_tests", + "enable_other_tool_copilot_readFile", + "enable_other_tool_copilot_listDirectory", + "enable_other_tool_copilot_findFiles", + "enable_other_tool_copilot_runTests" + ] + }, + { + "name": "copilot_updateUserPreferences", + "toolReferenceName": "updateUserPreferences", + "displayName": "%copilot.tools.updateUserPreferences.name%", + "modelDescription": "Update the user's preferences file with new information about the user and their coding preferences, based on the current chat history.", + "canBeReferencedInPrompt": true, + "tags": [], + "inputSchema": { + "type": "object", + "properties": { + "facts": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of new user preferences to remember." + } + }, + "required": [ + "facts" + ] + }, + "when": "config.github.copilot.chat.enableUserPreferences" + }, + { + "name": "copilot_createNewWorkspace", + "displayName": "%github.copilot.tools.createNewWorkspace.name%", + "toolReferenceName": "newWorkspace", + "legacyToolReferenceFullNames": [ + "new/newWorkspace" + ], + "icon": "$(new-folder)", + "userDescription": "%github.copilot.tools.createNewWorkspace.userDescription%", + "when": "config.github.copilot.chat.newWorkspaceCreation.enabled", + "modelDescription": "Get comprehensive setup steps to help the user create complete project structures in a VS Code workspace. This tool is designed for full project initialization and scaffolding, not for creating individual files.\n\nWhen to use this tool:\n- User wants to create a new complete project from scratch\n- Setting up entire project frameworks (TypeScript projects, React apps, Node.js servers, etc.)\n- Initializing Model Context Protocol (MCP) servers with full structure\n- Creating VS Code extensions with proper scaffolding\n- Setting up Next.js, Vite, or other framework-based projects\n- User asks for \"new project\", \"create a workspace\", \"set up a [framework] project\"\n- Need to establish complete development environment with dependencies, config files, and folder structure\n\nWhen NOT to use this tool:\n- Creating single files or small code snippets\n- Adding individual files to existing projects\n- Making modifications to existing codebases\n- User asks to \"create a file\" or \"add a component\"\n- Simple code examples or demonstrations\n- Debugging or fixing existing code\n\nThis tool provides complete project setup including:\n- Folder structure creation\n- Package.json and dependency management\n- Configuration files (tsconfig, eslint, etc.)\n- Initial boilerplate code\n- Development environment setup\n- Build and run instructions\n\nUse other file creation tools for individual files within existing projects.", + "inputSchema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "The query to use to generate the new workspace. This should be a clear and concise description of the workspace the user wants to create." + } + }, + "required": [ + "query" + ] + }, + "tags": [ + "enable_other_tool_install_extension", + "enable_other_tool_get_project_setup_info" + ] + }, + { + "name": "copilot_getProjectSetupInfo", + "displayName": "%github.copilot.tools.getProjectSetupInfo.name%", + "when": "config.github.copilot.chat.newWorkspaceCreation.enabled", + "toolReferenceName": "getProjectSetupInfo", + "legacyToolReferenceFullNames": [ + "new/getProjectSetupInfo" + ], + "modelDescription": "Do not call this tool without first calling the tool to create a workspace. This tool provides a project setup information for a Visual Studio Code workspace based on a project type and programming language.", + "inputSchema": { + "type": "object", + "properties": { + "projectType": { + "type": "string", + "description": "The type of project to create. Supported values are: 'python-script', 'python-project', 'mcp-server', 'model-context-protocol-server', 'vscode-extension', 'next-js', 'vite' and 'other'" + } + }, + "required": [ + "projectType" + ] + }, + "tags": [] + }, + { + "name": "copilot_installExtension", + "displayName": "Install Extension in VS Code", + "when": "config.github.copilot.chat.newWorkspaceCreation.enabled", + "toolReferenceName": "installExtension", + "legacyToolReferenceFullNames": [ + "new/installExtension" + ], + "modelDescription": "Install an extension in VS Code. Use this tool to install an extension in Visual Studio Code as part of a new workspace creation process only.", + "inputSchema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The ID of the extension to install. This should be in the format .." + }, + "name": { + "type": "string", + "description": "The name of the extension to install. This should be a clear and concise description of the extension." + } + }, + "required": [ + "id", + "name" + ] + }, + "tags": [] + }, + { + "name": "copilot_runVscodeCommand", + "displayName": "Run VS Code Command", + "when": "config.github.copilot.chat.newWorkspaceCreation.enabled", + "toolReferenceName": "runCommand", + "legacyToolReferenceFullNames": [ + "new/runVscodeCommand" + ], + "modelDescription": "Run a command in VS Code. Use this tool to run a command in Visual Studio Code as part of a new workspace creation process only.", + "inputSchema": { + "type": "object", + "properties": { + "commandId": { + "type": "string", + "description": "The ID of the command to execute. This should be in the format ." + }, + "name": { + "type": "string", + "description": "The name of the command to execute. This should be a clear and concise description of the command." + }, + "args": { + "type": "array", + "description": "The arguments to pass to the command. This should be an array of strings.", + "items": { + "type": "string" + } + } + }, + "required": [ + "commandId", + "name" + ] + }, + "tags": [] + }, + { + "name": "copilot_createNewJupyterNotebook", + "displayName": "Create New Jupyter Notebook", + "icon": "$(notebook)", + "toolReferenceName": "createJupyterNotebook", + "legacyToolReferenceFullNames": [ + "newJupyterNotebook" + ], + "modelDescription": "Generates a new Jupyter Notebook (.ipynb) in VS Code. Jupyter Notebooks are interactive documents commonly used for data exploration, analysis, visualization, and combining code with narrative text. Prefer creating plain Python files or similar unless a user explicitly requests creating a new Jupyter Notebook or already has a Jupyter Notebook opened or exists in the workspace.", + "userDescription": "%copilot.tools.newJupyterNotebook.description%", + "inputSchema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "The query to use to generate the jupyter notebook. This should be a clear and concise description of the notebook the user wants to create." + } + }, + "required": [ + "query" + ] + }, + "tags": [] + }, + { + "name": "copilot_insertEdit", + "toolReferenceName": "insertEdit", + "displayName": "%copilot.tools.insertEdit.name%", + "modelDescription": "Insert new code into an existing file in the workspace. Use this tool once per file that needs to be modified, even if there are multiple changes for a file. Generate the \"explanation\" property first.\nThe system is very smart and can understand how to apply your edits to the files, you just need to provide minimal hints.\nAvoid repeating existing code, instead use comments to represent regions of unchanged code. Be as concise as possible. For example:\n// ...existing code...\n{ changed code }\n// ...existing code...\n{ changed code }\n// ...existing code...\n\nHere is an example of how you should use format an edit to an existing Person class:\nclass Person {\n\t// ...existing code...\n\tage: number;\n\t// ...existing code...\n\tgetAge() {\n\treturn this.age;\n\t}\n}", + "tags": [], + "inputSchema": { + "type": "object", + "properties": { + "explanation": { + "type": "string", + "description": "A short explanation of the edit being made." + }, + "filePath": { + "type": "string", + "description": "An absolute path to the file to edit." + }, + "code": { + "type": "string", + "description": "The code change to apply to the file.\nThe system is very smart and can understand how to apply your edits to the files, you just need to provide minimal hints.\nAvoid repeating existing code, instead use comments to represent regions of unchanged code. Be as concise as possible. For example:\n// ...existing code...\n{ changed code }\n// ...existing code...\n{ changed code }\n// ...existing code...\n\nHere is an example of how you should use format an edit to an existing Person class:\nclass Person {\n\t// ...existing code...\n\tage: number;\n\t// ...existing code...\n\tgetAge() {\n\t\treturn this.age;\n\t}\n}" + } + }, + "required": [ + "explanation", + "filePath", + "code" + ] + } + }, + { + "name": "copilot_createFile", + "toolReferenceName": "createFile", + "legacyToolReferenceFullNames": [ + "createFile" + ], + "displayName": "%copilot.tools.createFile.name%", + "userDescription": "%copilot.tools.createFile.description%", + "modelDescription": "This is a tool for creating a new file in the workspace. The file will be created with the specified content. The directory will be created if it does not already exist. Never use this tool to edit a file that already exists.", + "tags": [], + "inputSchema": { + "type": "object", + "properties": { + "filePath": { + "type": "string", + "description": "The absolute path to the file to create." + }, + "content": { + "type": "string", + "description": "The content to write to the file." + } + }, + "required": [ + "filePath", + "content" + ] + } + }, + { + "name": "copilot_createDirectory", + "toolReferenceName": "createDirectory", + "legacyToolReferenceFullNames": [ + "createDirectory" + ], + "displayName": "%copilot.tools.createDirectory.name%", + "userDescription": "%copilot.tools.createDirectory.description%", + "modelDescription": "Create a new directory structure in the workspace. Will recursively create all directories in the path, like mkdir -p. You do not need to use this tool before using create_file, that tool will automatically create the needed directories.", + "tags": [], + "inputSchema": { + "type": "object", + "properties": { + "dirPath": { + "type": "string", + "description": "The absolute path to the directory to create." + } + }, + "required": [ + "dirPath" + ] + } + }, + { + "name": "copilot_openSimpleBrowser", + "displayName": "%copilot.tools.openSimpleBrowser.name%", + "modelDescription": "Preview a website or open a URL in the editor's Simple Browser. Useful for quickly viewing locally hosted websites, demos, or resources without leaving the coding environment.", + "userDescription": "%copilot.tools.openSimpleBrowser.description%", + "toolReferenceName": "openSimpleBrowser", + "legacyToolReferenceFullNames": [ + "openSimpleBrowser" + ], + "tags": [], + "inputSchema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "description": "The website URL to preview or open in the Simple Browser inside the editor. Must be either an http or https URL" + } + }, + "required": [ + "url" + ] + } + }, + { + "name": "copilot_replaceString", + "toolReferenceName": "replaceString", + "displayName": "%copilot.tools.replaceString.name%", + "modelDescription": "This is a tool for making edits in an existing file in the workspace. For moving or renaming files, use run in terminal tool with the 'mv' command instead. For larger edits, split them into smaller edits and call the edit tool multiple times to ensure accuracy. Before editing, always ensure you have the context to understand the file's contents and context. To edit a file, provide: 1) filePath (absolute path), 2) oldString (MUST be the exact literal text to replace including all whitespace, indentation, newlines, and surrounding code etc), and 3) newString (MUST be the exact literal text to replace \\`oldString\\` with (also including all whitespace, indentation, newlines, and surrounding code etc.). Ensure the resulting code is correct and idiomatic.). Each use of this tool replaces exactly ONE occurrence of oldString.\n\nCRITICAL for \\`oldString\\`: Must uniquely identify the single instance to change. Include at least 3 lines of context BEFORE and AFTER the target text, matching whitespace and indentation precisely. If this string matches multiple locations, or does not match exactly, the tool will fail. Never use 'Lines 123-456 omitted' from summarized documents or ...existing code... comments in the oldString or newString.", + "when": "!config.github.copilot.chat.disableReplaceTool", + "inputSchema": { + "type": "object", + "properties": { + "filePath": { + "type": "string", + "description": "An absolute path to the file to edit." + }, + "oldString": { + "type": "string", + "description": "The exact literal text to replace, preferably unescaped. For single replacements (default), include at least 3 lines of context BEFORE and AFTER the target text, matching whitespace and indentation precisely. For multiple replacements, specify expected_replacements parameter. If this string is not the exact literal text (i.e. you escaped it) or does not match exactly, the tool will fail." + }, + "newString": { + "type": "string", + "description": "The exact literal text to replace `old_string` with, preferably unescaped. Provide the EXACT text. Ensure the resulting code is correct and idiomatic." + } + }, + "required": [ + "filePath", + "oldString", + "newString" + ] + } + }, + { + "name": "copilot_multiReplaceString", + "toolReferenceName": "multiReplaceString", + "displayName": "%copilot.tools.multiReplaceString.name%", + "modelDescription": "This tool allows you to apply multiple replace_string_in_file operations in a single call, which is more efficient than calling replace_string_in_file multiple times. It takes an array of replacement operations and applies them sequentially. Each replacement operation has the same parameters as replace_string_in_file: filePath, oldString, newString, and explanation. This tool is ideal when you need to make multiple edits across different files or multiple edits in the same file. The tool will provide a summary of successful and failed operations.", + "when": "!config.github.copilot.chat.disableReplaceTool", + "inputSchema": { + "type": "object", + "properties": { + "explanation": { + "type": "string", + "description": "A brief explanation of what the multi-replace operation will accomplish." + }, + "replacements": { + "type": "array", + "description": "An array of replacement operations to apply sequentially.", + "items": { + "type": "object", + "properties": { + "explanation": { + "type": "string", + "description": "A brief explanation of this specific replacement operation." + }, + "filePath": { + "type": "string", + "description": "An absolute path to the file to edit." + }, + "oldString": { + "type": "string", + "description": "The exact literal text to replace, preferably unescaped. Include at least 3 lines of context BEFORE and AFTER the target text, matching whitespace and indentation precisely. If this string is not the exact literal text or does not match exactly, this replacement will fail." + }, + "newString": { + "type": "string", + "description": "The exact literal text to replace `oldString` with, preferably unescaped. Provide the EXACT text. Ensure the resulting code is correct and idiomatic." + } + }, + "required": [ + "explanation", + "filePath", + "oldString", + "newString" + ] + }, + "minItems": 1 + } + }, + "required": [ + "explanation", + "replacements" + ] + } + }, + { + "name": "copilot_editNotebook", + "toolReferenceName": "editNotebook", + "icon": "$(pencil)", + "displayName": "%copilot.tools.editNotebook.name%", + "userDescription": "%copilot.tools.editNotebook.userDescription%", + "modelDescription": "This is a tool for editing an existing Notebook file in the workspace. Generate the \"explanation\" property first.\nThe system is very smart and can understand how to apply your edits to the notebooks.\nWhen updating the content of an existing cell, ensure newCode preserves whitespace and indentation exactly and does NOT include any code markers such as (...existing code...).", + "tags": [ + "enable_other_tool_copilot_getNotebookSummary" + ], + "inputSchema": { + "type": "object", + "properties": { + "filePath": { + "type": "string", + "description": "An absolute path to the notebook file to edit, or the URI of a untitled, not yet named, file, such as `untitled:Untitled-1." + }, + "cellId": { + "type": "string", + "description": "Id of the cell that needs to be deleted or edited. Use the value `TOP`, `BOTTOM` when inserting a cell at the top or bottom of the notebook, else provide the id of the cell after which a new cell is to be inserted. Remember, if a cellId is provided and editType=insert, then a cell will be inserted after the cell with the provided cellId." + }, + "newCode": { + "anyOf": [ + { + "type": "string", + "description": "The code for the new or existing cell to be edited. Code should not be wrapped within tags. Do NOT include code markers such as (...existing code...) to indicate existing code." + }, + { + "type": "array", + "items": { + "type": "string", + "description": "The code for the new or existing cell to be edited. Code should not be wrapped within tags" + } + } + ] + }, + "language": { + "type": "string", + "description": "The language of the cell. `markdown`, `python`, `javascript`, `julia`, etc." + }, + "editType": { + "type": "string", + "enum": [ + "insert", + "delete", + "edit" + ], + "description": "The operation peformed on the cell, whether `insert`, `delete` or `edit`.\nUse the `editType` field to specify the operation: `insert` to add a new cell, `edit` to modify an existing cell's content, and `delete` to remove a cell." + } + }, + "required": [ + "filePath", + "editType", + "cellId" + ] + } + }, + { + "name": "copilot_runNotebookCell", + "displayName": "%copilot.tools.runNotebookCell.name%", + "toolReferenceName": "runNotebookCell", + "legacyToolReferenceFullNames": [ + "runNotebooks/runCell" + ], + "icon": "$(play)", + "modelDescription": "This is a tool for running a code cell in a notebook file directly in the notebook editor. The output from the execution will be returned. Code cells should be run as they are added or edited when working through a problem to bring the kernel state up to date and ensure the code executes successfully. Code cells are ready to run and don't require any pre-processing. If asked to run the first cell in a notebook, you should run the first code cell since markdown cells cannot be executed. NOTE: Avoid executing Markdown cells or providing Markdown cell IDs, as Markdown cells cannot be executed.", + "userDescription": "%copilot.tools.runNotebookCell.description%", + "tags": [ + "enable_other_tool_copilot_getNotebookSummary" + ], + "inputSchema": { + "type": "object", + "properties": { + "filePath": { + "type": "string", + "description": "An absolute path to the notebook file with the cell to run, or the URI of a untitled, not yet named, file, such as `untitled:Untitled-1.ipynb" + }, + "reason": { + "type": "string", + "description": "An optional explanation of why the cell is being run. This will be shown to the user before the tool is run and is not necessary if it's self-explanatory." + }, + "cellId": { + "type": "string", + "description": "The ID for the code cell to execute. Avoid providing markdown cell IDs as nothing will be executed." + }, + "continueOnError": { + "type": "boolean", + "description": "Whether or not execution should continue for remaining cells if an error is encountered. Default to false unless instructed otherwise." + } + }, + "required": [ + "filePath", + "cellId" + ] + } + }, + { + "name": "copilot_getNotebookSummary", + "toolReferenceName": "getNotebookSummary", + "legacyToolReferenceFullNames": [ + "runNotebooks/getNotebookSummary" + ], + "displayName": "Get the structure of a notebook", + "modelDescription": "This is a tool returns the list of the Notebook cells along with the id, cell types, line ranges, language, execution information and output mime types for each cell. This is useful to get Cell Ids when executing a notebook or determine what cells have been executed and what order, or what cells have outputs. If required to read contents of a cell use this to determine the line range of a cells, and then use read_file tool to read a specific line range. Requery this tool if the contents of the notebook change.", + "tags": [], + "inputSchema": { + "type": "object", + "properties": { + "filePath": { + "type": "string", + "description": "An absolute path to the notebook file with the cell to run, or the URI of a untitled, not yet named, file, such as `untitled:Untitled-1.ipynb" + } + }, + "required": [ + "filePath" + ] + } + }, + { + "name": "copilot_readNotebookCellOutput", + "displayName": "%copilot.tools.getNotebookCellOutput.name%", + "toolReferenceName": "readNotebookCellOutput", + "legacyToolReferenceFullNames": [ + "runNotebooks/readNotebookCellOutput" + ], + "icon": "$(notebook-render-output)", + "modelDescription": "This tool will retrieve the output for a notebook cell from its most recent execution or restored from disk. The cell may have output even when it has not been run in the current kernel session. This tool has a higher token limit for output length than the runNotebookCell tool.", + "userDescription": "%copilot.tools.getNotebookCellOutput.description%", + "when": "userHasOpenedNotebook", + "tags": [], + "inputSchema": { + "type": "object", + "properties": { + "filePath": { + "type": "string", + "description": "An absolute path to the notebook file with the cell to run, or the URI of a untitled, not yet named, file, such as `untitled:Untitled-1.ipynb" + }, + "cellId": { + "type": "string", + "description": "The ID of the cell for which output should be retrieved." + } + }, + "required": [ + "filePath", + "cellId" + ] + } + }, + { + "name": "copilot_fetchWebPage", + "displayName": "%copilot.tools.fetchWebPage.name%", + "toolReferenceName": "fetch", + "legacyToolReferenceFullNames": [ + "fetch" + ], + "when": "!isWeb", + "icon": "$(globe)", + "userDescription": "%copilot.tools.fetchWebPage.description%", + "modelDescription": "Fetches the main content from a web page. This tool is useful for summarizing or analyzing the content of a webpage. You should use this tool when you think the user is looking for information from a specific webpage.", + "tags": [], + "inputSchema": { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of URLs to fetch content from." + }, + "query": { + "type": "string", + "description": "The query to search for in the web page's content. This should be a clear and concise description of the content you want to find." + } + }, + "required": [ + "urls", + "query" + ] + } + }, + { + "name": "copilot_findTestFiles", + "displayName": "%copilot.tools.findTestFiles.name%", + "icon": "$(beaker)", + "canBeReferencedInPrompt": false, + "toolReferenceName": "findTestFiles", + "userDescription": "%copilot.tools.findTestFiles.description%", + "modelDescription": "For a source code file, find the file that contains the tests. For a test file find the file that contains the code under test.", + "tags": [], + "inputSchema": { + "type": "object", + "properties": { + "filePaths": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "filePaths" + ] + } + }, + { + "name": "copilot_getDocInfo", + "displayName": "%copilot.tools.getDocInfo.name%", + "icon": "$(beaker)", + "canBeReferencedInPrompt": false, + "toolReferenceName": "docInfo", + "userDescription": "%copilot.tools.getDocInfo.description%", + "modelDescription": "Find information about how to document it a symbol like a class or function. This tool is useful for generating documentation comments for code symbols. You should use this tool when you think the user is looking for information about how to document a specific code symbol.", + "tags": [], + "inputSchema": { + "type": "object", + "properties": { + "filePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The file paths for which documentation information is needed." + } + }, + "required": [ + "filePaths" + ] + } + }, + { + "name": "copilot_getSearchResults", + "toolReferenceName": "searchResults", + "displayName": "%github.copilot.tools.searchResults.name%", + "icon": "$(search)", + "userDescription": "%github.copilot.tools.searchResults.description%", + "modelDescription": "The results from the search view" + }, + { + "name": "copilot_githubRepo", + "toolReferenceName": "githubRepo", + "legacyToolReferenceFullNames": [ + "githubRepo" + ], + "displayName": "%github.copilot.tools.githubRepo.name%", + "modelDescription": "Searches a GitHub repository for relevant source code snippets. Only use this tool if the user is very clearly asking for code snippets from a specific GitHub repository. Do not use this tool for Github repos that the user has open in their workspace.", + "userDescription": "%github.copilot.tools.githubRepo.userDescription%", + "icon": "$(repo)", + "when": "!config.github.copilot.chat.githubMcpServer.enabled", + "inputSchema": { + "type": "object", + "properties": { + "repo": { + "type": "string", + "description": "The name of the Github repository to search for code in. Should must be formatted as '/'." + }, + "query": { + "type": "string", + "description": "The query to search for repo. Should contain all relevant context." + } + }, + "required": [ + "repo", + "query" + ] + } + }, + { + "name": "copilot_toolReplay", + "modelDescription": "Replays a tool call from a previous chat session.", + "displayName": "tool replay", + "when": "false", + "inputSchema": { + "type": "object", + "properties": { + "toolCallId": { + "type": "string", + "description": "the id of the tool original tool call" + }, + "toolName": { + "type": "string", + "description": "the name of the tool being replayed" + }, + "toolCallArgs": { + "type": "object", + "description": "the arguments of the tool call" + } + } + } + }, + { + "name": "copilot_memory", + "toolReferenceName": "memory", + "displayName": "%copilot.tools.memory.name%", + "userDescription": "%copilot.tools.memory.description%", + "modelDescription": "Manage persistent memory across conversations. This tool allows you to create, view, update, and delete memory files that persist between chat sessions. Use this to remember important information about the user, their preferences, project context, or anything that should be recalled in future conversations. Available commands: view (list/read memories), create (new memory file), str_replace (edit content), insert (add content), delete (remove memory), rename (change filename).", + "icon": "$(database)", + "when": "config.github.copilot.chat.tools.memory.enabled", + "canBeReferencedInPrompt": true, + "tags": [], + "inputSchema": { + "type": "object", + "properties": { + "command": { + "type": "string", + "enum": [ + "view", + "create", + "str_replace", + "insert", + "delete", + "rename" + ], + "description": "The memory operation to perform:\n- view: Show directory contents or file contents (optional line ranges)\n- create: Create or overwrite a file\n- str_replace: Replace text in a file\n- insert: Insert text at a specific line\n- delete: Delete a file or directory\n- rename: Rename or move a file or directory" + }, + "path": { + "type": "string", + "description": "Path to the memory file or directory. Must start with /memories.\n- For view: /memories or /memories/file.md\n- For create/str_replace/insert/delete: /memories/file.md\n- Not used for rename (use old_path/new_path instead)" + }, + "view_range": { + "type": "array", + "items": { + "type": "number" + }, + "minItems": 2, + "maxItems": 2, + "description": "[view only] Optional line range [start, end] to view specific lines. Example: [1, 10]" + }, + "file_text": { + "type": "string", + "description": "[create only] Content to write to the file. Required for create command." + }, + "old_str": { + "type": "string", + "description": "[str_replace only] The exact literal text to find and replace. Must be unique in the file. Required for str_replace command." + }, + "new_str": { + "type": "string", + "description": "[str_replace only] The exact literal text to replace old_str with. Can be empty string. Required for str_replace command." + }, + "insert_line": { + "type": "number", + "description": "[insert only] Line number at which to insert text (0-indexed, 0 = before first line). Required for insert command." + }, + "insert_text": { + "type": "string", + "description": "[insert only] Text to insert at the specified line. Required for insert command." + }, + "old_path": { + "type": "string", + "description": "[rename only] Current path of the file or directory. Must start with /memories. Required for rename command." + }, + "new_path": { + "type": "string", + "description": "[rename only] New path for the file or directory. Must start with /memories. Required for rename command." + } + }, + "required": [ + "command" + ] + } + }, + { + "name": "copilot_editFiles", + "modelDescription": "This is a placeholder tool, do not use", + "userDescription": "Edit files", + "icon": "$(pencil)", + "displayName": "Edit Files", + "toolReferenceName": "editFiles", + "legacyToolReferenceFullNames": [ + "editFiles" + ] + } + ], + "languageModelToolSets": [ + { + "name": "edit", + "description": "%copilot.toolSet.editing.description%", + "icon": "$(pencil)", + "tools": [ + "createDirectory", + "createFile", + "createJupyterNotebook", + "editFiles", + "editNotebook" + ] + }, + { + "name": "execute", + "description": "", + "tools": [ + "runNotebookCell", + "testFailure" + ] + }, + { + "name": "read", + "description": "%copilot.toolSet.read.description%", + "icon": "$(eye)", + "tools": [ + "getNotebookSummary", + "readFile", + "readNotebookCellOutput" + ] + }, + { + "name": "search", + "description": "%copilot.toolSet.search.description%", + "icon": "$(search)", + "tools": [ + "changes", + "codebase", + "fileSearch", + "listDirectory", + "problems", + "searchResults", + "textSearch", + "usages" + ] + }, + { + "name": "vscode", + "description": "", + "tools": [ + "getProjectSetupInfo", + "installExtension", + "newWorkspace", + "openSimpleBrowser", + "runCommand", + "vscodeAPI" + ] + }, + { + "name": "web", + "description": "%copilot.toolSet.web.description%", + "icon": "$(globe)", + "tools": [ + "fetch", + "githubRepo" + ] + } + ], + "chatParticipants": [ + { + "id": "github.copilot.default", + "name": "GitHubCopilot", + "fullName": "GitHub Copilot", + "description": "%copilot.description%", + "isDefault": true, + "locations": [ + "panel" + ], + "modes": [ + "ask" + ], + "disambiguation": [ + { + "category": "generate_code_sample", + "description": "The user wants to generate code snippets without referencing the contents of the current workspace. This category does not include generating entire projects.", + "examples": [ + "Write an example of computing a SHA256 hash." + ] + }, + { + "category": "add_feature_to_file", + "description": "The user wants to change code in a file that is provided in their request, without referencing the contents of the current workspace. This category does not include generating entire projects.", + "examples": [ + "Add a refresh button to the table widget." + ] + }, + { + "category": "question_about_specific_files", + "description": "The user has a question about a specific file or code snippet that they have provided as part of their query, and the question does not require additional workspace context to answer.", + "examples": [ + "What does this file do?" + ] + } + ] + }, + { + "id": "github.copilot.editingSession", + "name": "GitHubCopilot", + "fullName": "GitHub Copilot", + "description": "%copilot.edits.description%", + "isDefault": true, + "locations": [ + "panel" + ], + "modes": [ + "edit" + ], + "when": "!config.chat.edits2.enabled" + }, + { + "id": "github.copilot.editingSessionEditor", + "name": "GitHubCopilot", + "fullName": "GitHub Copilot", + "description": "%copilot.edits.description%", + "isDefault": true, + "locations": [ + "editor" + ], + "commands": [ + { + "name": "generate", + "when": "!config.chat.edits2.enabled", + "description": "%copilot.workspace.generate.description%", + "disambiguation": [ + { + "category": "generate", + "description": "Generate new code", + "examples": [ + "Add a function that returns the sum of two numbers" + ] + } + ] + }, + { + "name": "edit", + "when": "!config.chat.edits2.enabled", + "description": "%copilot.workspace.edit.inline.description%", + "disambiguation": [ + { + "category": "edit", + "description": "Make changes to existing code", + "examples": [ + "Change this method to use async/await" + ] + } + ] + }, + { + "name": "doc", + "when": "!config.chat.edits2.enabled", + "description": "%copilot.workspace.doc.description%", + "disambiguation": [ + { + "category": "doc", + "description": "Add documentation comment for this symbol", + "examples": [ + "Add jsdoc to this method" + ] + } + ] + }, + { + "name": "fix", + "when": "!config.chat.edits2.enabled", + "description": "%copilot.workspace.fix.description%", + "disambiguation": [ + { + "category": "fix", + "description": "Propose a fix for the problems in the selected code", + "examples": [ + "There is a problem in this code. Rewrite the code to show it with the bug fixed." + ] + } + ] + }, + { + "name": "tests", + "when": "!config.chat.edits2.enabled", + "description": "%copilot.workspace.tests.description%", + "disambiguation": [ + { + "category": "tests", + "description": "Generate unit tests for the selected code. The user does not want to fix their existing tests.", + "examples": [ + "Write a set of detailed unit test functions for the code above." + ] + } + ] + } + ] + }, + { + "id": "github.copilot.editingSession2", + "name": "GitHubCopilot", + "fullName": "GitHub Copilot", + "description": "%copilot.edits.description%", + "isDefault": true, + "locations": [ + "panel" + ], + "modes": [ + "edit" + ], + "when": "config.chat.edits2.enabled" + }, + { + "id": "github.copilot.editsAgent", + "name": "agent", + "fullName": "GitHub Copilot", + "description": "%copilot.agent.description%", + "locations": [ + "panel" + ], + "modes": [ + "agent" + ], + "isEngine": true, + "isDefault": true, + "isAgent": true, + "when": "config.chat.agent.enabled", + "commands": [ + { + "name": "list" + }, + { + "name": "error", + "description": "Make a model request which will result in an error", + "when": "github.copilot.chat.debug" + } + ] + }, + { + "id": "github.copilot.notebook", + "name": "GitHubCopilot", + "fullName": "GitHub Copilot", + "description": "%copilot.description%", + "isDefault": true, + "locations": [ + "notebook" + ], + "when": "!config.inlineChat.notebookAgent", + "commands": [ + { + "name": "fix", + "description": "%copilot.workspace.fix.description%" + }, + { + "name": "explain", + "description": "%copilot.workspace.explain.description%" + } + ] + }, + { + "id": "github.copilot.notebookEditorAgent", + "name": "GitHubCopilot", + "fullName": "GitHub Copilot", + "description": "%copilot.description%", + "isDefault": true, + "locations": [ + "notebook" + ], + "when": "config.inlineChat.notebookAgent", + "commands": [ + { + "name": "fix", + "description": "%copilot.workspace.fix.description%" + }, + { + "name": "explain", + "description": "%copilot.workspace.explain.description%" + } + ] + }, + { + "id": "github.copilot.workspace", + "name": "workspace", + "fullName": "Workspace", + "description": "%copilot.workspace.description%", + "when": "!github.copilot.interactiveSession.disabled", + "sampleRequest": "%copilot.workspace.sampleRequest%", + "locations": [ + "panel" + ], + "disambiguation": [ + { + "category": "workspace_project_questions", + "description": "The user wants to learn about or update the code or files in their current workspace. Questions in this category may be about understanding what the whole workspace does or locating the implementation of some code. This does not include generating or updating tests.", + "examples": [ + "What does this project do?" + ] + }, + { + "category": "find_code_in_workspace", + "description": "The user wants to locate the implementation of some functionality in their current workspace.", + "examples": [ + "Where is the tree widget implemented?" + ] + }, + { + "category": "generate_with_workspace_context", + "description": "The user wants to generate code based on multiple files in the workspace and did not specify which files to reference.", + "examples": [ + "Create a README for this project." + ] + } + ], + "commands": [ + { + "name": "explain", + "description": "%copilot.workspace.explain.description%" + }, + { + "name": "review", + "description": "%copilot.workspace.review.description%", + "when": "github.copilot.advanced.review.intent" + }, + { + "name": "tests", + "description": "%copilot.workspace.tests.description%", + "disambiguation": [ + { + "category": "create_tests", + "description": "The user wants to generate unit tests.", + "examples": [ + "Generate tests for my selection using pytest." + ] + } + ] + }, + { + "name": "fix", + "description": "%copilot.workspace.fix.description%", + "sampleRequest": "%copilot.workspace.fix.sampleRequest%" + }, + { + "name": "new", + "description": "%copilot.workspace.new.description%", + "sampleRequest": "%copilot.workspace.new.sampleRequest%", + "isSticky": true, + "disambiguation": [ + { + "category": "create_new_workspace_or_extension", + "description": "The user wants to create a complete Visual Studio Code workspace from scratch, such as a new application or a Visual Studio Code extension. Use this category only if the question relates to generating or creating new workspaces in Visual Studio Code. Do not use this category for updating existing code or generating sample code snippets", + "examples": [ + "Scaffold a Node server.", + "Create a sample project which uses the fileSystemProvider API.", + "react application" + ] + } + ] + }, + { + "name": "newNotebook", + "description": "%copilot.workspace.newNotebook.description%", + "sampleRequest": "%copilot.workspace.newNotebook.sampleRequest%", + "disambiguation": [ + { + "category": "create_jupyter_notebook", + "description": "The user wants to create a new Jupyter notebook in Visual Studio Code.", + "examples": [ + "Create a notebook to analyze this CSV file." + ] + } + ] + }, + { + "name": "semanticSearch", + "description": "%copilot.workspace.semanticSearch.description%", + "sampleRequest": "%copilot.workspace.semanticSearch.sampleRequest%", + "when": "config.github.copilot.semanticSearch.enabled" + }, + { + "name": "setupTests", + "description": "%copilot.vscode.setupTests.description%", + "sampleRequest": "%copilot.vscode.setupTests.sampleRequest%", + "when": "config.github.copilot.chat.setupTests.enabled", + "disambiguation": [ + { + "category": "set_up_tests", + "description": "The user wants to configure project test setup, framework, or test runner. The user does not want to fix their existing tests.", + "examples": [ + "Set up tests for this project." + ] + } + ] + } + ] + }, + { + "id": "github.copilot.vscode", + "name": "vscode", + "fullName": "VS Code", + "description": "%copilot.vscode.description%", + "when": "!github.copilot.interactiveSession.disabled", + "sampleRequest": "%copilot.vscode.sampleRequest%", + "locations": [ + "panel" + ], + "disambiguation": [ + { + "category": "vscode_configuration_questions", + "description": "The user wants to learn about, use, or configure the Visual Studio Code. Use this category if the users question is specifically about commands, settings, keybindings, extensions and other features available in Visual Studio Code. Do not use this category to answer questions about generating code or creating new projects including Visual Studio Code extensions.", + "examples": [ + "Switch to light mode.", + "Keyboard shortcut to toggle terminal visibility.", + "Settings to enable minimap.", + "Whats new in the latest release?" + ] + }, + { + "category": "configure_python_environment", + "description": "The user wants to set up their Python environment.", + "examples": [ + "Create a virtual environment for my project." + ] + } + ], + "commands": [ + { + "name": "search", + "description": "%copilot.vscode.search.description%", + "sampleRequest": "%copilot.vscode.search.sampleRequest%" + } + ] + }, + { + "id": "github.copilot.terminal", + "name": "terminal", + "fullName": "Terminal", + "description": "%copilot.terminal.description%", + "when": "!github.copilot.interactiveSession.disabled", + "sampleRequest": "%copilot.terminal.sampleRequest%", + "isDefault": true, + "locations": [ + "terminal" + ], + "commands": [ + { + "name": "explain", + "description": "%copilot.terminal.explain.description%", + "sampleRequest": "%copilot.terminal.explain.sampleRequest%" + } + ] + }, + { + "id": "github.copilot.terminalPanel", + "name": "terminal", + "fullName": "Terminal", + "description": "%copilot.terminalPanel.description%", + "when": "!github.copilot.interactiveSession.disabled", + "sampleRequest": "%copilot.terminal.sampleRequest%", + "locations": [ + "panel" + ], + "commands": [ + { + "name": "explain", + "description": "%copilot.terminal.explain.description%", + "sampleRequest": "%copilot.terminal.explain.sampleRequest%", + "disambiguation": [ + { + "category": "terminal_state_questions", + "description": "The user wants to learn about specific state such as the selection, command, or failed command in the integrated terminal in Visual Studio Code.", + "examples": [ + "Why did the latest terminal command fail?" + ] + } + ] + } + ] + }, + { + "id": "github.copilot.chatReplay", + "name": "chatReplay", + "fullName": "Chat Replay", + "when": "debugType == 'vscode-chat-replay'", + "locations": [ + "panel" + ] + } + ], + "languageModelChatProviders": [ + { + "vendor": "copilot", + "displayName": "Copilot" + }, + { + "vendor": "azure", + "displayName": "Azure", + "managementCommand": "github.copilot.chat.manageBYOK" + }, + { + "vendor": "anthropic", + "displayName": "Anthropic", + "managementCommand": "github.copilot.chat.manageBYOK" + }, + { + "vendor": "xai", + "displayName": "xAI", + "managementCommand": "github.copilot.chat.manageBYOK" + }, + { + "vendor": "ollama", + "displayName": "Ollama" + }, + { + "vendor": "openai", + "displayName": "OpenAI", + "managementCommand": "github.copilot.chat.manageBYOK" + }, + { + "vendor": "gemini", + "displayName": "Google", + "managementCommand": "github.copilot.chat.manageBYOK" + }, + { + "vendor": "groq", + "displayName": "Groq", + "managementCommand": "github.copilot.chat.manageBYOK" + }, + { + "vendor": "openrouter", + "displayName": "OpenRouter", + "managementCommand": "github.copilot.chat.manageBYOK" + }, + { + "vendor": "customoai", + "when": "productQualityType != 'stable'", + "displayName": "OpenAI Compatible", + "managementCommand": "github.copilot.chat.manageBYOK" + } + ], + "interactiveSession": [ + { + "label": "GitHub Copilot", + "id": "copilot", + "icon": "", + "when": "!github.copilot.interactiveSession.disabled" + } + ], + "mcpServerDefinitionProviders": [ + { + "id": "github", + "label": "GitHub" + } + ], + "viewsWelcome": [ + { + "view": "debug", + "when": "github.copilot-chat.activated", + "contents": "%github.copilot.viewsWelcome.debug%" + }, + { + "view": "codex-placeholder", + "when": "true", + "contents": "%github.copilot.viewsWelcome.codexPlaceholder%" + }, + { + "view": "workbench.view.chat.sessions.openai-codex", + "contents": "%github.copilot.viewsWelcome.codexWelcomeView%" + }, + { + "view": "copilot-agents-placeholder", + "when": "true", + "contents": "%github.copilot.viewsWelcome.agentsPlaceholder%" + }, + { + "view": "workbench.view.chat.sessions.copilot-cloud-agent", + "when": "github.copilot.auth.missingPermissiveSession", + "contents": "%github.copilot.viewsWelcome.noPermissiveToken.contents%" + }, + { + "view": "workbench.view.chat.sessions.copilot-cloud-agent", + "when": "workspaceFolderCount == 0", + "contents": "%github.copilot.viewsWelcome.noFolder.contents%" + }, + { + "view": "workbench.view.chat.sessions.copilot-cloud-agent", + "when": "git.state == initialized && gitOpenRepositoryCount == 0 && workspaceFolderCount > 0 && git.parentRepositoryCount == 0", + "contents": "%github.copilot.viewsWelcome.noRepo.contents%" + }, + { + "view": "workbench.view.chat.sessions.copilot-cloud-agent", + "when": "git.state == initialized && workspaceFolderCount > 0 && (git.parentRepositoryCount > 0 || gitOpenRepositoryCount > 0) && !github:hasGitHubRemotes", + "contents": "%github.copilot.viewsWelcome.noGitHub.contents%" + }, + { + "view": "workbench.view.chat.sessions.copilot-cloud-agent", + "when": "github.copilot.chat.cloudSessionsEmpty", + "contents": "%github.copilot.viewsWelcome.cloudSessionsEmpty.contents%" + }, + { + "view": "workbench.view.chat.sessions.copilotcli", + "when": "github.copilot.chat.cliSessionsEmpty", + "contents": "%github.copilot.viewsWelcome.cliSessionsEmpty.contents%" + } + ], + "chatViewsWelcome": [ + { + "icon": "$(copilot-large)", + "title": "Ask Copilot", + "content": "%github.copilot.viewsWelcome.individual.expired%", + "when": "github.copilot.interactiveSession.individual.expired" + }, + { + "icon": "$(copilot-large)", + "title": "Ask Copilot", + "content": "%github.copilot.viewsWelcome.enterprise%", + "when": "github.copilot.interactiveSession.enterprise.disabled" + }, + { + "icon": "$(copilot-large)", + "title": "Ask Copilot", + "content": "%github.copilot.viewsWelcome.offline%", + "when": "github.copilot.offline" + }, + { + "icon": "$(copilot-large)", + "title": "Ask Copilot", + "content": "%github.copilot.viewsWelcome.contactSupport%", + "when": "github.copilot.interactiveSession.contactSupport" + }, + { + "icon": "$(copilot-large)", + "title": "Ask Copilot", + "content": "%github.copilot.viewsWelcome.chatDisabled%", + "when": "github.copilot.interactiveSession.chatDisabled" + }, + { + "icon": "$(copilot-large)", + "title": "Ask Copilot", + "content": "%github.copilot.viewsWelcome.switchToReleaseChannel%", + "when": "github.copilot.interactiveSession.switchToReleaseChannel" + } + ], + "commands": [ + { + "command": "github.copilot.chat.triggerPermissiveSignIn", + "title": "%github.copilot.command.triggerPermissiveSignIn%" + }, + { + "command": "github.copilot.claude.sessions.refresh", + "title": "%github.copilot.command.refreshClaudeCodeSessions%", + "icon": "$(refresh)", + "category": "Claude Code" + }, + { + "command": "github.copilot.cli.sessions.refresh", + "title": "%github.copilot.command.refreshAgentSessions%", + "icon": "$(refresh)", + "category": "Copilot CLI" + }, + { + "command": "github.copilot.cli.sessions.delete", + "title": "%github.copilot.command.deleteAgentSession%", + "icon": "$(close)", + "category": "Copilot CLI" + }, + { + "command": "github.copilot.cli.sessions.resumeInTerminal", + "title": "%github.copilot.command.cli.sessions.resumeInTerminal%", + "icon": "$(terminal)", + "category": "Copilot CLI" + }, + { + "command": "github.copilot.cli.sessions.newTerminalSession", + "title": "%github.copilot.cli.sessions.newTerminalSession%", + "icon": "$(terminal)", + "category": "Copilot CLI" + }, + { + "command": "github.copilot.chat.replay", + "title": "Start Chat Replay", + "icon": "$(debug-line-by-line)", + "enablement": "resourceFilename === 'benchRun.chatReplay.json' && !inDebugMode" + }, + { + "command": "github.copilot.chat.replay.enableWorkspaceEditTracing", + "title": "%github.copilot.command.enableEditTracing%", + "category": "Developer", + "enablement": "!github.copilot.chat.replay.workspaceEditTracing" + }, + { + "command": "github.copilot.chat.replay.disableWorkspaceEditTracing", + "title": "%github.copilot.command.disableEditTracing%", + "category": "Developer", + "enablement": "github.copilot.chat.replay.workspaceEditTracing" + }, + { + "command": "github.copilot.chat.explain", + "title": "%github.copilot.command.explainThis%", + "enablement": "!github.copilot.interactiveSession.disabled", + "category": "Chat" + }, + { + "command": "github.copilot.chat.explain.palette", + "title": "%github.copilot.command.explainThis%", + "enablement": "!github.copilot.interactiveSession.disabled && !editorReadonly", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review", + "title": "%github.copilot.command.reviewAndComment%", + "enablement": "config.github.copilot.chat.reviewSelection.enabled && !github.copilot.interactiveSession.disabled", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.apply", + "title": "%github.copilot.command.applyReviewSuggestion%", + "icon": "$(sparkle)", + "enablement": "commentThread =~ /hasSuggestion/", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.applyAndNext", + "title": "%github.copilot.command.applyReviewSuggestionAndNext%", + "icon": "$(sparkle)", + "enablement": "commentThread =~ /hasSuggestion/", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.discard", + "title": "%github.copilot.command.discardReviewSuggestion%", + "icon": "$(close)", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.discardAndNext", + "title": "%github.copilot.command.discardReviewSuggestionAndNext%", + "icon": "$(close)", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.discardAll", + "title": "%github.copilot.command.discardAllReviewSuggestion%", + "icon": "$(close-all)", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.stagedChanges", + "title": "%github.copilot.command.reviewStagedChanges%", + "icon": "$(code-review)", + "enablement": "github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.unstagedChanges", + "title": "%github.copilot.command.reviewUnstagedChanges%", + "icon": "$(code-review)", + "enablement": "github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.changes", + "title": "%github.copilot.command.reviewChanges%", + "icon": "$(code-review)", + "enablement": "github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.stagedFileChange", + "title": "%github.copilot.command.reviewFileChange%", + "icon": "$(code-review)", + "enablement": "github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.unstagedFileChange", + "title": "%github.copilot.command.reviewFileChange%", + "icon": "$(code-review)", + "enablement": "github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.previous", + "title": "%github.copilot.command.gotoPreviousReviewSuggestion%", + "icon": "$(arrow-up)", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.next", + "title": "%github.copilot.command.gotoNextReviewSuggestion%", + "icon": "$(arrow-down)", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.continueInInlineChat", + "title": "%github.copilot.command.continueReviewInInlineChat%", + "icon": "$(comment-discussion)", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.continueInChat", + "title": "%github.copilot.command.continueReviewInChat%", + "icon": "$(comment-discussion)", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.markHelpful", + "title": "%github.copilot.command.helpfulReviewSuggestion%", + "icon": "$(thumbsup)", + "enablement": "!(commentThread =~ /markedAsHelpful/)", + "category": "Chat" + }, + { + "command": "github.copilot.chat.openUserPreferences", + "title": "%github.copilot.command.openUserPreferences%", + "category": "Chat", + "enablement": "config.github.copilot.chat.enableUserPreferences" + }, + { + "command": "github.copilot.chat.tools.memory.openFolder", + "title": "%github.copilot.command.openMemoryFolder%", + "category": "Chat", + "enablement": "config.github.copilot.chat.tools.memory.enabled" + }, + { + "command": "github.copilot.chat.review.markUnhelpful", + "title": "%github.copilot.command.unhelpfulReviewSuggestion%", + "icon": "$(thumbsdown)", + "enablement": "!(commentThread =~ /markedAsUnhelpful/)", + "category": "Chat" + }, + { + "command": "github.copilot.chat.generate", + "title": "%github.copilot.command.generateThis%", + "icon": "$(sparkle)", + "enablement": "!github.copilot.interactiveSession.disabled && !editorReadonly", + "category": "Chat" + }, + { + "command": "github.copilot.chat.generateDocs", + "title": "%github.copilot.command.generateDocs%", + "enablement": "!github.copilot.interactiveSession.disabled && !editorReadonly", + "category": "Chat" + }, + { + "command": "github.copilot.chat.generateTests", + "title": "%github.copilot.command.generateTests%", + "enablement": "!github.copilot.interactiveSession.disabled && !editorReadonly", + "category": "Chat" + }, + { + "command": "github.copilot.chat.fix", + "title": "%github.copilot.command.fixThis%", + "enablement": "!github.copilot.interactiveSession.disabled && !editorReadonly", + "category": "Chat" + }, + { + "command": "github.copilot.interactiveSession.feedback", + "title": "%github.copilot.command.sendChatFeedback%", + "enablement": "github.copilot-chat.activated && !github.copilot.interactiveSession.disabled", + "icon": "$(feedback)", + "category": "Chat" + }, + { + "command": "github.copilot.debug.workbenchState", + "title": "%github.copilot.command.logWorkbenchState%", + "category": "Developer" + }, + { + "command": "github.copilot.debug.showChatLogView", + "title": "%github.copilot.command.showChatLogView%", + "category": "Developer" + }, + { + "command": "github.copilot.debug.showOutputChannel", + "title": "%github.copilot.command.showOutputChannel%", + "category": "Developer" + }, + { + "command": "github.copilot.debug.showContextInspectorView", + "title": "%github.copilot.command.showContextInspectorView%", + "icon": "$(inspect)", + "category": "Developer" + }, + { + "command": "github.copilot.debug.validateNesRename", + "title": "%github.copilot.command.validateNesRename%", + "category": "Developer" + }, + { + "command": "github.copilot.debug.resetVirtualToolGroups", + "title": "%github.copilot.command.resetVirtualToolGroups%", + "icon": "$(inspect)", + "category": "Developer" + }, + { + "command": "github.copilot.terminal.explainTerminalLastCommand", + "title": "%github.copilot.command.explainTerminalLastCommand%", + "category": "Chat" + }, + { + "command": "github.copilot.git.generateCommitMessage", + "title": "%github.copilot.git.generateCommitMessage%", + "icon": "$(sparkle)", + "enablement": "!github.copilot.interactiveSession.disabled", + "category": "Chat" + }, + { + "command": "github.copilot.git.resolveMergeConflicts", + "title": "%github.copilot.git.resolveMergeConflicts%", + "icon": "$(chat-sparkle)", + "enablement": "!github.copilot.interactiveSession.disabled", + "category": "Chat" + }, + { + "command": "github.copilot.devcontainer.generateDevContainerConfig", + "title": "%github.copilot.devcontainer.generateDevContainerConfig%", + "category": "Chat" + }, + { + "command": "github.copilot.tests.fixTestFailure", + "icon": "$(sparkle)", + "title": "%github.copilot.command.fixTestFailure%", + "category": "Chat" + }, + { + "command": "github.copilot.tests.fixTestFailure.fromInline", + "icon": "$(sparkle)", + "title": "%github.copilot.command.fixTestFailure%" + }, + { + "command": "github.copilot.chat.attachFile", + "title": "%github.copilot.chat.attachFile%", + "category": "Chat" + }, + { + "command": "github.copilot.chat.attachSelection", + "title": "%github.copilot.chat.attachSelection%", + "icon": "$(comment-discussion)", + "category": "Chat" + }, + { + "command": "github.copilot.debug.collectDiagnostics", + "title": "%github.copilot.command.collectDiagnostics%", + "category": "Developer" + }, + { + "command": "github.copilot.debug.inlineEdit.clearCache", + "title": "%github.copilot.command.inlineEdit.clearCache%", + "category": "Developer" + }, + { + "command": "github.copilot.debug.inlineEdit.reportNotebookNESIssue", + "title": "%github.copilot.command.inlineEdit.reportNotebookNESIssue%", + "enablement": "config.github.copilot.chat.advanced.notebook.alternativeNESFormat.enabled || github.copilot.chat.enableEnhancedNotebookNES", + "category": "Developer" + }, + { + "command": "github.copilot.debug.generateSTest", + "title": "%github.copilot.command.generateSTest%", + "enablement": "github.copilot.debugReportFeedback", + "category": "Developer" + }, + { + "command": "github.copilot.open.walkthrough", + "title": "%github.copilot.command.openWalkthrough%", + "category": "Chat" + }, + { + "command": "github.copilot.debug.generateInlineEditTests", + "title": "Generate Inline Edit Tests", + "category": "Chat", + "enablement": "resourceScheme == 'ccreq'" + }, + { + "command": "github.copilot.buildLocalWorkspaceIndex", + "title": "%github.copilot.command.buildLocalWorkspaceIndex%", + "category": "Chat", + "enablement": "github.copilot-chat.activated" + }, + { + "command": "github.copilot.buildRemoteWorkspaceIndex", + "title": "%github.copilot.command.buildRemoteWorkspaceIndex%", + "category": "Chat", + "enablement": "github.copilot-chat.activated" + }, + { + "command": "github.copilot.report", + "title": "Report Issue", + "category": "Chat" + }, + { + "command": "github.copilot.chat.rerunWithCopilotDebug", + "title": "%github.copilot.command.rerunWithCopilotDebug%", + "category": "Chat" + }, + { + "command": "github.copilot.chat.startCopilotDebugCommand", + "title": "Start Copilot Debug" + }, + { + "command": "github.copilot.chat.clearTemporalContext", + "title": "Clear Temporal Context", + "category": "Developer" + }, + { + "command": "github.copilot.search.markHelpful", + "title": "Helpful", + "icon": "$(thumbsup)", + "enablement": "!github.copilot.search.feedback.sent" + }, + { + "command": "github.copilot.search.markUnhelpful", + "title": "Unhelpful", + "icon": "$(thumbsdown)", + "enablement": "!github.copilot.search.feedback.sent" + }, + { + "command": "github.copilot.search.feedback", + "title": "Feedback", + "icon": "$(feedback)", + "enablement": "!github.copilot.search.feedback.sent" + }, + { + "command": "github.copilot.chat.debug.showElements", + "title": "Show Rendered Elements" + }, + { + "command": "github.copilot.chat.debug.hideElements", + "title": "Hide Rendered Elements" + }, + { + "command": "github.copilot.chat.debug.showTools", + "title": "Show Tools" + }, + { + "command": "github.copilot.chat.debug.hideTools", + "title": "Hide Tools" + }, + { + "command": "github.copilot.chat.debug.showNesRequests", + "title": "Show NES Requests" + }, + { + "command": "github.copilot.chat.debug.hideNesRequests", + "title": "Hide NES Requests" + }, + { + "command": "github.copilot.chat.debug.showRawRequestBody", + "title": "Show Raw Request Body" + }, + { + "command": "github.copilot.chat.debug.exportLogItem", + "title": "Export as...", + "icon": "$(export)" + }, + { + "command": "github.copilot.chat.debug.exportPromptArchive", + "title": "Export All as Archive...", + "icon": "$(archive)" + }, + { + "command": "github.copilot.chat.debug.exportPromptLogsAsJson", + "title": "Export All as JSON...", + "icon": "$(export)" + }, + { + "command": "github.copilot.chat.debug.exportAllPromptLogsAsJson", + "title": "Export All Prompt Logs as JSON...", + "icon": "$(export)" + }, + { + "command": "github.copilot.chat.showAsChatSession", + "title": "Show as chat session", + "icon": "$(chat-sparkle)" + }, + { + "command": "github.copilot.debug.collectWorkspaceIndexDiagnostics", + "title": "%github.copilot.command.collectWorkspaceIndexDiagnostics%", + "category": "Developer" + }, + { + "command": "github.copilot.chat.mcp.setup.check", + "title": "MCP Check: is supported" + }, + { + "command": "github.copilot.chat.mcp.setup.validatePackage", + "title": "MCP Check: validate package" + }, + { + "command": "github.copilot.chat.mcp.setup.flow", + "title": "MCP Check: do prompts" + }, + { + "command": "github.copilot.chat.generateAltText", + "title": "Generate/Refine Alt Text" + }, + { + "command": "github.copilot.chat.notebook.enableFollowCellExecution", + "title": "Enable Follow Cell Execution from Chat", + "shortTitle": "Follow", + "icon": "$(pinned)" + }, + { + "command": "github.copilot.chat.notebook.disableFollowCellExecution", + "title": "Disable Follow Cell Execution from Chat", + "shortTitle": "Unfollow", + "icon": "$(pinned-dirty)" + }, + { + "command": "github.copilot.chat.manageBYOK", + "title": "Manage Bring Your Own Key Vendor", + "enablement": "false" + }, + { + "command": "github.copilot.chat.manageBYOKAPIKey", + "title": "Manage Bring Your Own Key API Key", + "enablement": "false" + }, + { + "command": "github.copilot.cloud.sessions.refresh", + "title": "%github.copilot.command.refreshAgentSessions%", + "icon": "$(refresh)" + }, + { + "command": "github.copilot.cloud.resetWorkspaceConfirmations", + "title": "%github.copilot.command.resetCloudAgentWorkspaceConfirmations%" + }, + { + "command": "github.copilot.cloud.sessions.openInBrowser", + "title": "%github.copilot.command.openCopilotAgentSessionsInBrowser%", + "icon": "$(link-external)" + }, + { + "command": "github.copilot.cloud.sessions.proxy.closeChatSessionPullRequest", + "title": "%github.copilot.command.closeChatSessionPullRequest.title%" + }, + { + "command": "github.copilot.chat.openSuggestionsPanel", + "title": "Open Completions Panel", + "enablement": "github.copilot.extensionUnification.activated && !isWeb", + "category": "GitHub Copilot" + }, + { + "command": "github.copilot.chat.toggleStatusMenu", + "title": "Open Status Menu", + "enablement": "github.copilot.extensionUnification.activated", + "category": "GitHub Copilot" + }, + { + "command": "github.copilot.chat.completions.disable", + "title": "Disable Inline Suggestions", + "enablement": "github.copilot.extensionUnification.activated && github.copilot.activated && config.editor.inlineSuggest.enabled && github.copilot.completions.enabled", + "category": "GitHub Copilot" + }, + { + "command": "github.copilot.chat.completions.enable", + "title": "Enable Inline Suggestions", + "enablement": "github.copilot.extensionUnification.activated && github.copilot.activated && !(config.editor.inlineSuggest.enabled && github.copilot.completions.enabled)", + "category": "GitHub Copilot" + }, + { + "command": "github.copilot.chat.completions.toggle", + "title": "Toggle (Enable/Disable) Inline Suggestions", + "enablement": "github.copilot.extensionUnification.activated && github.copilot.activated", + "category": "GitHub Copilot" + }, + { + "command": "github.copilot.chat.openModelPicker", + "title": "Change Completions Model", + "category": "GitHub Copilot", + "enablement": "github.copilot.extensionUnification.activated && !isWeb" + }, + { + "command": "github.copilot.chat.applyCopilotCLIAgentSessionChanges", + "title": "%github.copilot.command.applyCopilotCLIAgentSessionChanges%", + "icon": "$(git-stash-pop)", + "category": "GitHub Copilot" + } + ], + "configuration": [ + { + "title": "GitHub Copilot Chat", + "id": "stable", + "properties": { + "github.copilot.chat.codeGeneration.useInstructionFiles": { + "type": "boolean", + "default": true, + "markdownDescription": "%github.copilot.config.codeGeneration.useInstructionFiles%" + }, + "github.copilot.editor.enableCodeActions": { + "type": "boolean", + "default": true, + "description": "%github.copilot.config.enableCodeActions%" + }, + "github.copilot.renameSuggestions.triggerAutomatically": { + "type": "boolean", + "default": true, + "description": "%github.copilot.config.renameSuggestions.triggerAutomatically%" + }, + "github.copilot.chat.localeOverride": { + "type": "string", + "enum": [ + "auto", + "en", + "fr", + "it", + "de", + "es", + "ru", + "zh-CN", + "zh-TW", + "ja", + "ko", + "cs", + "pt-br", + "tr", + "pl" + ], + "enumDescriptions": [ + "Use VS Code's configured display language", + "English", + "français", + "italiano", + "Deutsch", + "español", + "русский", + "中文(简体)", + "中文(繁體)", + "日本語", + "한국어", + "čeština", + "português", + "Türkçe", + "polski" + ], + "default": "auto", + "markdownDescription": "%github.copilot.config.localeOverride%" + }, + "github.copilot.chat.terminalChatLocation": { + "type": "string", + "default": "chatView", + "markdownDescription": "%github.copilot.config.terminalChatLocation%", + "markdownEnumDescriptions": [ + "%github.copilot.config.terminalChatLocation.chatView%", + "%github.copilot.config.terminalChatLocation.quickChat%", + "%github.copilot.config.terminalChatLocation.terminal%" + ], + "enum": [ + "chatView", + "quickChat", + "terminal" + ] + }, + "github.copilot.chat.scopeSelection": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.scopeSelection%" + }, + "github.copilot.chat.useProjectTemplates": { + "type": "boolean", + "default": true, + "markdownDescription": "%github.copilot.config.useProjectTemplates%" + }, + "github.copilot.nextEditSuggestions.enabled": { + "type": "boolean", + "default": false, + "tags": [ + "nextEditSuggestions", + "onExp" + ], + "markdownDescription": "%github.copilot.nextEditSuggestions.enabled%", + "scope": "language-overridable" + }, + "github.copilot.nextEditSuggestions.fixes": { + "type": "boolean", + "default": true, + "tags": [ + "nextEditSuggestions", + "onExp" + ], + "markdownDescription": "%github.copilot.nextEditSuggestions.fixes%", + "scope": "language-overridable" + }, + "github.copilot.nextEditSuggestions.allowWhitespaceOnlyChanges": { + "type": "boolean", + "default": true, + "tags": [ + "nextEditSuggestions", + "onExp" + ], + "markdownDescription": "%github.copilot.nextEditSuggestions.allowWhitespaceOnlyChanges%", + "scope": "language-overridable" + }, + "github.copilot.chat.agent.autoFix": { + "type": "boolean", + "default": true, + "description": "%github.copilot.config.autoFix%", + "tags": [ + "onExp" + ] + }, + "github.copilot.chat.customInstructionsInSystemMessage": { + "type": "boolean", + "default": true, + "description": "%github.copilot.config.customInstructionsInSystemMessage%" + }, + "github.copilot.chat.customAgents.showOrganizationAndEnterpriseAgents": { + "type": "boolean", + "default": true, + "description": "%github.copilot.config.customAgents.showOrganizationAndEnterpriseAgents%" + }, + "github.copilot.chat.customInstructions.useOrganizationInstructions": { + "type": "boolean", + "default": true, + "description": "%github.copilot.config.customInstructions.useOrganizationInstructions%" + }, + "github.copilot.chat.agent.currentEditorContext.enabled": { + "type": "boolean", + "default": true, + "description": "%github.copilot.config.agent.currentEditorContext.enabled%" + }, + "github.copilot.chat.agent.delegate.autoCommitAndPush": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.agent.delegate.autoCommitAndPush%" + }, + "github.copilot.enable": { + "type": "object", + "scope": "window", + "default": { + "*": true, + "plaintext": false, + "markdown": false, + "scminput": false + }, + "additionalProperties": { + "type": "boolean" + }, + "markdownDescription": "Enable or disable auto triggering of Copilot completions for specified [languages](https://code.visualstudio.com/docs/languages/identifiers). You can still trigger suggestions manually using `Alt + \\`" + }, + "github.copilot.selectedCompletionModel": { + "type": "string", + "default": "", + "markdownDescription": "The currently selected completion model ID. To select from a list of available models, use the __\"Change Completions Model\"__ command or open the model picker (from the Copilot menu in the VS Code title bar, select __\"Configure Code Completions\"__ then __\"Change Completions Model\"__. The value must be a valid model ID. An empty value indicates that the default model will be used." + } + } + }, + { + "id": "preview", + "properties": { + "github.copilot.chat.reviewAgent.enabled": { + "type": "boolean", + "default": true, + "description": "%github.copilot.config.reviewAgent.enabled%", + "tags": [ + "preview" + ] + }, + "github.copilot.chat.reviewSelection.enabled": { + "type": "boolean", + "default": true, + "description": "%github.copilot.config.reviewSelection.enabled%", + "tags": [ + "preview" + ] + }, + "github.copilot.chat.reviewSelection.instructions": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "markdownDescription": "%github.copilot.config.reviewSelection.instruction.file%", + "properties": { + "file": { + "type": "string", + "examples": [ + ".copilot-review-instructions.md" + ] + }, + "language": { + "type": "string" + } + }, + "examples": [ + { + "file": ".copilot-review-instructions.md" + } + ], + "required": [ + "file" + ] + }, + { + "type": "object", + "markdownDescription": "%github.copilot.config.reviewSelection.instruction.text%", + "properties": { + "text": { + "type": "string", + "examples": [ + "Use underscore for field names." + ] + }, + "language": { + "type": "string" + } + }, + "required": [ + "text" + ], + "examples": [ + { + "text": "Use underscore for field names." + }, + { + "text": "Resolve all TODO tasks." + } + ] + } + ] + }, + "default": [], + "markdownDescription": "%github.copilot.config.reviewSelection.instructions%", + "examples": [ + [ + { + "file": ".copilot-review-instructions.md" + }, + { + "text": "Resolve all TODO tasks." + } + ] + ], + "tags": [ + "preview" + ] + }, + "github.copilot.chat.copilotDebugCommand.enabled": { + "type": "boolean", + "default": true, + "tags": [ + "preview" + ], + "description": "%github.copilot.chat.copilotDebugCommand.enabled%" + }, + "github.copilot.chat.codesearch.enabled": { + "type": "boolean", + "default": false, + "tags": [ + "preview" + ], + "markdownDescription": "%github.copilot.config.codesearch.enabled%" + }, + "github.copilot.chat.byok.ollamaEndpoint": { + "type": "string", + "default": "http://localhost:11434", + "tags": [ + "preview" + ], + "markdownDescription": "%github.copilot.config.byok.ollamaEndpoint%" + } + } + }, + { + "id": "experimental", + "properties": { + "github.copilot.chat.githubMcpServer.enabled": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.githubMcpServer.enabled%", + "tags": [ + "experimental" + ] + }, + "github.copilot.chat.githubMcpServer.toolsets": { + "type": "array", + "default": [ + "default" + ], + "markdownDescription": "%github.copilot.config.githubMcpServer.toolsets%", + "items": { + "type": "string" + }, + "tags": [ + "experimental" + ] + }, + "github.copilot.chat.githubMcpServer.readonly": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.githubMcpServer.readonly%", + "tags": [ + "experimental" + ] + }, + "github.copilot.chat.githubMcpServer.lockdown": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.githubMcpServer.lockdown%", + "tags": [ + "experimental" + ] + }, + "github.copilot.chat.imageUpload.enabled": { + "type": "boolean", + "default": true, + "tags": [ + "experimental", + "onExp" + ], + "markdownDescription": "%github.copilot.config.imageUpload.enabled%" + }, + "github.copilot.chat.edits.suggestRelatedFilesFromGitHistory": { + "type": "boolean", + "default": true, + "tags": [ + "experimental" + ], + "markdownDescription": "%github.copilot.config.edits.suggestRelatedFilesFromGitHistory%" + }, + "github.copilot.chat.edits.suggestRelatedFilesForTests": { + "type": "boolean", + "default": true, + "tags": [ + "experimental" + ], + "markdownDescription": "%github.copilot.chat.edits.suggestRelatedFilesForTests%" + }, + "github.copilot.chat.codeGeneration.instructions": { + "markdownDeprecationMessage": "%github.copilot.config.codeGeneration.instructions.deprecated%", + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "markdownDescription": "%github.copilot.config.codeGeneration.instruction.file%", + "properties": { + "file": { + "type": "string", + "examples": [ + ".copilot-codeGeneration-instructions.md" + ] + }, + "language": { + "type": "string" + } + }, + "examples": [ + { + "file": ".copilot-codeGeneration-instructions.md" + } + ], + "required": [ + "file" + ] + }, + { + "type": "object", + "markdownDescription": "%github.copilot.config.codeGeneration.instruction.text%", + "properties": { + "text": { + "type": "string", + "examples": [ + "Use underscore for field names." + ] + }, + "language": { + "type": "string" + } + }, + "required": [ + "text" + ], + "examples": [ + { + "text": "Use underscore for field names." + }, + { + "text": "Always add a comment: 'Generated by Copilot'." + } + ] + } + ] + }, + "default": [], + "markdownDescription": "%github.copilot.config.codeGeneration.instructions%", + "examples": [ + [ + { + "file": ".copilot-codeGeneration-instructions.md" + }, + { + "text": "Always add a comment: 'Generated by Copilot'." + } + ] + ], + "tags": [ + "experimental" + ] + }, + "github.copilot.chat.testGeneration.instructions": { + "markdownDeprecationMessage": "%github.copilot.config.testGeneration.instructions.deprecated%", + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "markdownDescription": "%github.copilot.config.experimental.testGeneration.instruction.file%", + "properties": { + "file": { + "type": "string", + "examples": [ + ".copilot-test-instructions.md" + ] + }, + "language": { + "type": "string" + } + }, + "examples": [ + { + "file": ".copilot-test-instructions.md" + } + ], + "required": [ + "file" + ] + }, + { + "type": "object", + "markdownDescription": "%github.copilot.config.experimental.testGeneration.instruction.text%", + "properties": { + "text": { + "type": "string", + "examples": [ + "Use suite and test instead of describe and it." + ] + }, + "language": { + "type": "string" + } + }, + "required": [ + "text" + ], + "examples": [ + { + "text": "Always try uniting related tests in a suite." + } + ] + } + ] + }, + "default": [], + "markdownDescription": "%github.copilot.config.testGeneration.instructions%", + "examples": [ + [ + { + "file": ".copilot-test-instructions.md" + }, + { + "text": "Always try uniting related tests in a suite." + } + ] + ], + "tags": [ + "experimental" + ] + }, + "github.copilot.chat.commitMessageGeneration.instructions": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "markdownDescription": "%github.copilot.config.commitMessageGeneration.instruction.file%", + "properties": { + "file": { + "type": "string", + "examples": [ + ".copilot-commit-message-instructions.md" + ] + } + }, + "examples": [ + { + "file": ".copilot-commit-message-instructions.md" + } + ], + "required": [ + "file" + ] + }, + { + "type": "object", + "markdownDescription": "%github.copilot.config.commitMessageGeneration.instruction.text%", + "properties": { + "text": { + "type": "string", + "examples": [ + "Use conventional commit message format." + ] + } + }, + "required": [ + "text" + ], + "examples": [ + { + "text": "Use conventional commit message format." + } + ] + } + ] + }, + "default": [], + "markdownDescription": "%github.copilot.config.commitMessageGeneration.instructions%", + "examples": [ + [ + { + "file": ".copilot-commit-message-instructions.md" + }, + { + "text": "Use conventional commit message format." + } + ] + ], + "tags": [ + "experimental" + ] + }, + "github.copilot.chat.pullRequestDescriptionGeneration.instructions": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "markdownDescription": "%github.copilot.config.pullRequestDescriptionGeneration.instruction.file%", + "properties": { + "file": { + "type": "string", + "examples": [ + ".copilot-pull-request-description-instructions.md" + ] + } + }, + "examples": [ + { + "file": ".copilot-pull-request-description-instructions.md" + } + ], + "required": [ + "file" + ] + }, + { + "type": "object", + "markdownDescription": "%github.copilot.config.pullRequestDescriptionGeneration.instruction.text%", + "properties": { + "text": { + "type": "string", + "examples": [ + "Include every commit message in the pull request description." + ] + } + }, + "required": [ + "text" + ], + "examples": [ + { + "text": "Include every commit message in the pull request description." + } + ] + } + ] + }, + "default": [], + "markdownDescription": "%github.copilot.config.pullRequestDescriptionGeneration.instructions%", + "examples": [ + [ + { + "file": ".copilot-pull-request-description-instructions.md" + }, + { + "text": "Use conventional commit message format." + } + ] + ], + "tags": [ + "experimental" + ] + }, + "github.copilot.chat.generateTests.codeLens": { + "type": "boolean", + "default": false, + "description": "%github.copilot.config.generateTests.codeLens%", + "tags": [ + "experimental" + ] + }, + "github.copilot.chat.setupTests.enabled": { + "type": "boolean", + "default": true, + "markdownDescription": "%github.copilot.config.setupTests.enabled%", + "tags": [ + "experimental" + ] + }, + "github.copilot.chat.languageContext.typescript.enabled": { + "type": "boolean", + "default": false, + "scope": "resource", + "tags": [ + "experimental", + "onExP" + ], + "markdownDescription": "%github.copilot.chat.languageContext.typescript.enabled%" + }, + "github.copilot.chat.languageContext.typescript.items": { + "type": "string", + "enum": [ + "minimal", + "double", + "fillHalf", + "fill" + ], + "default": "double", + "scope": "resource", + "tags": [ + "experimental", + "onExP" + ], + "markdownDescription": "%github.copilot.chat.languageContext.typescript.items%" + }, + "github.copilot.chat.languageContext.typescript.includeDocumentation": { + "type": "boolean", + "default": false, + "scope": "resource", + "tags": [ + "experimental", + "onExP" + ], + "markdownDescription": "%github.copilot.chat.languageContext.typescript.includeDocumentation%" + }, + "github.copilot.chat.languageContext.typescript.cacheTimeout": { + "type": "number", + "default": 500, + "scope": "resource", + "tags": [ + "experimental", + "onExP" + ], + "markdownDescription": "%github.copilot.chat.languageContext.typescript.cacheTimeout%" + }, + "github.copilot.chat.languageContext.fix.typescript.enabled": { + "type": "boolean", + "default": false, + "scope": "resource", + "tags": [ + "experimental", + "onExP" + ], + "markdownDescription": "%github.copilot.chat.languageContext.fix.typescript.enabled%" + }, + "github.copilot.chat.languageContext.inline.typescript.enabled": { + "type": "boolean", + "default": false, + "scope": "resource", + "tags": [ + "experimental", + "onExP" + ], + "markdownDescription": "%github.copilot.chat.languageContext.inline.typescript.enabled%" + }, + "github.copilot.chat.newWorkspaceCreation.enabled": { + "type": "boolean", + "default": true, + "tags": [ + "experimental" + ], + "description": "%github.copilot.config.newWorkspaceCreation.enabled%" + }, + "github.copilot.chat.newWorkspace.useContext7": { + "type": "boolean", + "default": false, + "tags": [ + "experimental" + ], + "markdownDescription": "%github.copilot.config.newWorkspace.useContext7%" + }, + "github.copilot.chat.notebook.followCellExecution.enabled": { + "type": "boolean", + "default": false, + "tags": [ + "experimental" + ], + "description": "%github.copilot.config.notebook.followCellExecution%" + }, + "github.copilot.chat.notebook.enhancedNextEditSuggestions.enabled": { + "type": "boolean", + "default": false, + "tags": [ + "experimental", + "onExp" + ], + "description": "%github.copilot.config.notebook.enhancedNextEditSuggestions%" + }, + "github.copilot.chat.summarizeAgentConversationHistory.enabled": { + "type": "boolean", + "default": true, + "tags": [ + "experimental" + ], + "description": "%github.copilot.config.summarizeAgentConversationHistory.enabled%" + }, + "github.copilot.chat.virtualTools.threshold": { + "type": "number", + "minimum": 0, + "maximum": 128, + "default": 128, + "tags": [ + "experimental" + ], + "markdownDescription": "%github.copilot.config.virtualTools.threshold%" + }, + "github.copilot.chat.azureAuthType": { + "type": "string", + "enum": [ + "entraId", + "apiKey" + ], + "enumDescriptions": [ + "%github.copilot.config.azureAuthType.entraId%", + "%github.copilot.config.azureAuthType.apiKey%" + ], + "default": "entraId", + "tags": [ + "experimental" + ], + "markdownDescription": "%github.copilot.config.azureAuthType%" + }, + "github.copilot.chat.azureModels": { + "type": "object", + "default": {}, + "tags": [ + "experimental" + ], + "additionalProperties": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Display name of the Azure model" + }, + "url": { + "type": "string", + "markdownDescription": "URL endpoint for the Azure model.\n\n**Important:** Base URLs default to Chat Completions API. Explicit API paths including `/responses` or `/chat/completions` are respected. Both behaviors are independent of the `#github.copilot.chat.useResponsesApi#` setting." + }, + "toolCalling": { + "type": "boolean", + "description": "Whether the model supports tool calling" + }, + "vision": { + "type": "boolean", + "description": "Whether the model supports vision capabilities" + }, + "maxInputTokens": { + "type": "number", + "description": "Maximum number of input tokens supported by the model" + }, + "maxOutputTokens": { + "type": "number", + "description": "Maximum number of output tokens supported by the model" + }, + "thinking": { + "type": "boolean", + "default": false, + "description": "Whether the model supports thinking capabilities" + }, + "zeroDataRetentionEnabled": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether Zero Data Retention (ZDR) is enabled for this endpoint. When `true`, `previous_response_id` will not be sent in requests via Responses API." + }, + "requestHeaders": { + "type": "object", + "description": "Additional HTTP headers to include with requests to this model. These reserved headers are not allowed and ignored if present: forbidden request headers (https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_request_header), forwarding headers ('forwarded', 'x-forwarded-for', 'x-forwarded-host', 'x-forwarded-proto'), and others ('api-key', 'authorization', 'content-type', 'openai-intent', 'x-github-api-version', 'x-initiator', 'x-interaction-id', 'x-interaction-type', 'x-onbehalf-extension-id', 'x-request-id', 'x-vscode-user-agent-library-version'). Pattern-based forbidden headers ('proxy-*', 'sec-*', 'x-http-method*' with forbidden methods) are also blocked.", + "additionalProperties": { + "type": "string" + } + } + }, + "required": [ + "name", + "url", + "toolCalling", + "vision", + "maxInputTokens", + "maxOutputTokens" + ], + "additionalProperties": false + }, + "markdownDescription": "Configure custom Azure OpenAI models. Each key should be a unique model ID, and the value should be an object with model configuration including name, url, toolCalling, vision, maxInputTokens, and maxOutputTokens properties." + }, + "github.copilot.chat.customOAIModels": { + "type": "object", + "default": {}, + "tags": [ + "experimental" + ], + "additionalProperties": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Display name of the custom OpenAI model" + }, + "url": { + "type": "string", + "markdownDescription": "URL endpoint for the custom OpenAI-compatible model.\n\n**Important:** Base URLs default to Chat Completions API. Explicit API paths including `/responses` or `/chat/completions` are respected. Both behaviors are independent of the `#github.copilot.chat.useResponsesApi#` setting." + }, + "toolCalling": { + "type": "boolean", + "description": "Whether the model supports tool calling" + }, + "vision": { + "type": "boolean", + "description": "Whether the model supports vision capabilities" + }, + "maxInputTokens": { + "type": "number", + "description": "Maximum number of input tokens supported by the model" + }, + "maxOutputTokens": { + "type": "number", + "description": "Maximum number of output tokens supported by the model" + }, + "requiresAPIKey": { + "type": "boolean", + "description": "Whether the model requires an API key for authentication", + "default": true + }, + "editTools": { + "type": "array", + "description": "List of edit tools supported by the model. If this is not configured, the editor will try multiple edit tools and pick the best one.\n\n- 'find-replace': Find and replace text in a document.\n- 'multi-find-replace': Find and replace text in a document.\n- 'apply-patch': A file-oriented diff format used by some OpenAI models\n- 'code-rewrite': A general but slower editing tool that allows the model to rewrite and code snippet and provide only the replacement to the editor.", + "items": { + "type": "string", + "enum": [ + "find-replace", + "multi-find-replace", + "apply-patch", + "code-rewrite" + ] + } + }, + "thinking": { + "type": "boolean", + "default": false, + "description": "Whether the model supports thinking capabilities" + }, + "zeroDataRetentionEnabled": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether Zero Data Retention (ZDR) is enabled for this endpoint. When `true`, `previous_response_id` will not be sent in requests via Responses API." + }, + "requestHeaders": { + "type": "object", + "description": "Additional HTTP headers to include with requests to this model. These reserved headers are not allowed and ignored if present: forbidden request headers (https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_request_header), forwarding headers ('forwarded', 'x-forwarded-for', 'x-forwarded-host', 'x-forwarded-proto'), and others ('api-key', 'authorization', 'content-type', 'openai-intent', 'x-github-api-version', 'x-initiator', 'x-interaction-id', 'x-interaction-type', 'x-onbehalf-extension-id', 'x-request-id', 'x-vscode-user-agent-library-version'). Pattern-based forbidden headers ('proxy-*', 'sec-*', 'x-http-method*' with forbidden methods) are also blocked.", + "additionalProperties": { + "type": "string" + } + } + }, + "required": [ + "name", + "url", + "toolCalling", + "vision", + "maxInputTokens", + "maxOutputTokens", + "requiresAPIKey" + ], + "additionalProperties": false + }, + "markdownDescription": "Configure custom OpenAI-compatible models. Each key should be a unique model ID, and the value should be an object with model configuration including name, url, toolCalling, vision, maxInputTokens, and maxOutputTokens properties." + }, + "github.copilot.chat.alternateGptPrompt.enabled": { + "type": "boolean", + "default": false, + "tags": [ + "experimental" + ], + "description": "%github.copilot.config.alternateGptPrompt.enabled%" + }, + "github.copilot.chat.useResponsesApi": { + "type": "boolean", + "default": true, + "markdownDescription": "%github.copilot.config.useResponsesApi%", + "tags": [ + "experimental", + "onExp" + ] + }, + "github.copilot.chat.responsesApiReasoningEffort": { + "type": "string", + "default": "default", + "markdownDescription": "%github.copilot.config.responsesApiReasoningEffort%", + "tags": [ + "experimental", + "onExp" + ], + "enum": [ + "low", + "medium", + "high", + "default" + ] + }, + "github.copilot.chat.responsesApiReasoningSummary": { + "type": "string", + "default": "detailed", + "markdownDescription": "%github.copilot.config.responsesApiReasoningSummary%", + "tags": [ + "experimental", + "onExp" + ], + "enum": [ + "off", + "detailed" + ] + }, + "github.copilot.chat.anthropic.thinking.budgetTokens": { + "type": [ + "number", + "null" + ], + "markdownDescription": "%github.copilot.config.anthropic.thinking.budgetTokens%", + "minimum": 1024, + "maximum": 32000, + "tags": [ + "experimental", + "onExp" + ] + }, + "github.copilot.chat.anthropic.tools.websearch.enabled": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.anthropic.tools.websearch.enabled%", + "tags": [ + "experimental", + "onExp" + ] + }, + "github.copilot.chat.anthropic.tools.websearch.maxUses": { + "type": "number", + "default": 5, + "markdownDescription": "%github.copilot.config.anthropic.tools.websearch.maxUses%", + "minimum": 1, + "maximum": 20, + "tags": [ + "experimental" + ] + }, + "github.copilot.chat.anthropic.tools.websearch.allowedDomains": { + "type": "array", + "default": [], + "markdownDescription": "%github.copilot.config.anthropic.tools.websearch.allowedDomains%", + "items": { + "type": "string" + }, + "tags": [ + "experimental" + ] + }, + "github.copilot.chat.anthropic.tools.websearch.blockedDomains": { + "type": "array", + "default": [], + "markdownDescription": "%github.copilot.config.anthropic.tools.websearch.blockedDomains%", + "items": { + "type": "string" + }, + "tags": [ + "experimental" + ] + }, + "github.copilot.chat.anthropic.tools.websearch.userLocation": { + "type": [ + "object", + "null" + ], + "default": null, + "markdownDescription": "%github.copilot.config.anthropic.tools.websearch.userLocation%", + "properties": { + "city": { + "type": "string", + "description": "City name (e.g., 'San Francisco')" + }, + "region": { + "type": "string", + "description": "State or region (e.g., 'California')" + }, + "country": { + "type": "string", + "description": "ISO country code (e.g., 'US')" + }, + "timezone": { + "type": "string", + "description": "IANA timezone identifier (e.g., 'America/Los_Angeles')" + } + }, + "tags": [ + "experimental" + ] + }, + "github.copilot.chat.tools.memory.enabled": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.tools.memory.enabled%", + "tags": [ + "experimental", + "onExp" + ] + }, + "github.copilot.chat.completionsFetcher": { + "type": [ + "string", + "null" + ], + "markdownDescription": "%github.copilot.config.completionsFetcher%", + "tags": [ + "experimental", + "onExp" + ], + "enum": [ + "electron-fetch", + "node-fetch" + ] + }, + "github.copilot.chat.nesFetcher": { + "type": [ + "string", + "null" + ], + "markdownDescription": "%github.copilot.config.nesFetcher%", + "tags": [ + "experimental", + "onExp" + ], + "enum": [ + "electron-fetch", + "node-fetch" + ] + } + } + }, + { + "id": "advanced", + "properties": { + "github.copilot.chat.debug.overrideChatEngine": { + "type": [ + "string", + "null" + ], + "markdownDescription": "%github.copilot.config.debug.overrideChatEngine%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.edits.gemini3ReplaceStringOnly": { + "type": "boolean", + "default": false, + "markdownDescription": "Use only the modern `replace_string_in_file` edit tool when generating edits with Gemini 3 models.", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.edits.gemini3MultiReplaceString": { + "type": "boolean", + "default": false, + "markdownDescription": "Enable the modern `multi_replace_string_in_file` edit tool when generating edits with Gemini 3 models.", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.projectLabels.expanded": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.projectLabels.expanded%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.projectLabels.chat": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.projectLabels.chat%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.projectLabels.inline": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.projectLabels.inline%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.workspace.maxLocalIndexSize": { + "type": "number", + "default": 100000, + "markdownDescription": "%github.copilot.config.workspace.maxLocalIndexSize%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.workspace.enableFullWorkspace": { + "type": "boolean", + "default": true, + "markdownDescription": "%github.copilot.config.workspace.enableFullWorkspace%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.workspace.enableCodeSearch": { + "type": "boolean", + "default": true, + "markdownDescription": "%github.copilot.config.workspace.enableCodeSearch%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.workspace.enableEmbeddingsSearch": { + "type": "boolean", + "default": true, + "markdownDescription": "%github.copilot.config.workspace.enableEmbeddingsSearch%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.workspace.preferredEmbeddingsModel": { + "type": "string", + "default": "", + "markdownDescription": "%github.copilot.config.workspace.preferredEmbeddingsModel%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.workspace.prototypeAdoCodeSearchEndpointOverride": { + "type": "string", + "default": "", + "markdownDescription": "%github.copilot.config.workspace.prototypeAdoCodeSearchEndpointOverride%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.feedback.onChange": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.feedback.onChange%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.review.intent": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.review.intent%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.notebook.summaryExperimentEnabled": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.notebook.summaryExperimentEnabled%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.notebook.variableFilteringEnabled": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.notebook.variableFilteringEnabled%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.notebook.alternativeFormat": { + "type": "string", + "default": "xml", + "enum": [ + "xml", + "markdown" + ], + "markdownDescription": "%github.copilot.config.notebook.alternativeFormat%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.notebook.alternativeNESFormat.enabled": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.notebook.alternativeNESFormat.enabled%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.debugTerminalCommandPatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "%github.copilot.config.debugTerminalCommandPatterns%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.localWorkspaceRecording.enabled": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.localWorkspaceRecording.enabled%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.editRecording.enabled": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.editRecording.enabled%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.inlineChat.selectionRatioThreshold": { + "type": "number", + "default": 0, + "markdownDescription": "%github.copilot.config.inlineChat.selectionRatioThreshold%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.temporalContext.maxAge": { + "type": "number", + "default": 100, + "markdownDescription": "%github.copilot.config.temporalContext.maxAge%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.debug.requestLogger.maxEntries": { + "type": "number", + "default": 100, + "markdownDescription": "%github.copilot.config.debug.requestLogger.maxEntries%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.inlineEdits.diagnosticsContextProvider.enabled": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.inlineEdits.diagnosticsContextProvider.enabled%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.temporalContext.preferSameLang": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.temporalContext.preferSameLang%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.codesearch.agent.enabled": { + "type": "boolean", + "default": true, + "markdownDescription": "%github.copilot.config.codesearch.agent.enabled%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.agent.temperature": { + "type": [ + "number", + "null" + ], + "markdownDescription": "%github.copilot.config.agent.temperature%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.instantApply.shortContextModelName": { + "type": "string", + "default": "gpt-4o-instant-apply-full-ft-v66-short", + "markdownDescription": "%github.copilot.config.instantApply.shortContextModelName%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.instantApply.shortContextLimit": { + "type": "number", + "default": 8000, + "markdownDescription": "%github.copilot.config.instantApply.shortContextLimit%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.enableUserPreferences": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.enableUserPreferences%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.summarizeAgentConversationHistoryThreshold": { + "type": [ + "number", + "null" + ], + "markdownDescription": "%github.copilot.config.summarizeAgentConversationHistoryThreshold%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.agentHistorySummarizationMode": { + "type": [ + "string", + "null" + ], + "markdownDescription": "%github.copilot.config.agentHistorySummarizationMode%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.agentHistorySummarizationWithPromptCache": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.agentHistorySummarizationWithPromptCache%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.agentHistorySummarizationForceGpt41": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.agentHistorySummarizationForceGpt41%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.useResponsesApiTruncation": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.useResponsesApiTruncation%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.omitBaseAgentInstructions": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.omitBaseAgentInstructions%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.promptFileContextProvider.enabled": { + "type": "boolean", + "default": true, + "markdownDescription": "%github.copilot.config.promptFileContextProvider.enabled%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.tools.defaultToolsGrouped": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.tools.defaultToolsGrouped%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.claudeCode.enabled": { + "type": [ + "boolean", + "string" + ], + "default": false, + "markdownDescription": "%github.copilot.config.claudeCode.enabled%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.claudeCode.debug": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.claudeCode.debug%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.copilotCLI.enabled": { + "type": "boolean", + "default": true, + "markdownDescription": "%github.copilot.config.copilotCLI.enabled%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.gpt5AlternativePatch": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.gpt5AlternativePatch%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.inlineEdits.triggerOnEditorChangeAfterSeconds": { + "type": [ + "number", + "null" + ], + "markdownDescription": "%github.copilot.config.inlineEdits.triggerOnEditorChangeAfterSeconds%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.inlineEdits.nextCursorPrediction.displayLine": { + "type": "boolean", + "default": true, + "markdownDescription": "%github.copilot.config.inlineEdits.nextCursorPrediction.displayLine%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.inlineEdits.nextCursorPrediction.currentFileMaxTokens": { + "type": "number", + "default": 2000, + "markdownDescription": "%github.copilot.config.inlineEdits.nextCursorPrediction.currentFileMaxTokens%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.inlineEdits.renameSymbolSuggestions": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.inlineEdits.renameSymbolSuggestions%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.suggestRelatedFilesFromGitHistory.useEmbeddings": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.suggestRelatedFilesFromGitHistory.useEmbeddings%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.cli.isolation.enabled": { + "type": "boolean", + "default": true, + "markdownDescription": "%github.copilot.config.cli.isolation.enabled%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.cli.customAgents.enabled": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.cli.customAgents.enabled%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.cli.mcp.enabled": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.cli.mcp.enabled%", + "tags": [ + "advanced", + "experimental" + ] + } + } + } + ], + "submenus": [ + { + "id": "copilot/reviewComment/additionalActions/applyAndNext", + "label": "%github.copilot.submenu.reviewComment.applyAndNext.label%" + }, + { + "id": "copilot/reviewComment/additionalActions/discardAndNext", + "label": "%github.copilot.submenu.reviewComment.discardAndNext.label%" + }, + { + "id": "copilot/reviewComment/additionalActions/discard", + "label": "%github.copilot.submenu.reviewComment.discard.label%" + }, + { + "id": "github.copilot.chat.debug.filter", + "label": "Filter", + "icon": "$(filter)" + }, + { + "id": "github.copilot.chat.debug.exportAllPromptLogsAsJson", + "label": "Export All Logs as JSON", + "icon": "$(file-export)" + } + ], + "menus": { + "editor/title": [ + { + "command": "github.copilot.debug.generateInlineEditTests", + "when": "resourceScheme == 'ccreq'" + }, + { + "command": "github.copilot.chat.notebook.enableFollowCellExecution", + "when": "config.github.copilot.chat.notebook.followCellExecution.enabled && !github.copilot.notebookFollowInSessionEnabled && github.copilot.notebookAgentModeUsage && !config.notebook.globalToolbar", + "group": "navigation@10" + }, + { + "command": "github.copilot.chat.notebook.disableFollowCellExecution", + "when": "config.github.copilot.chat.notebook.followCellExecution.enabled && github.copilot.notebookFollowInSessionEnabled && github.copilot.notebookAgentModeUsage && !config.notebook.globalToolbar", + "group": "navigation@10" + }, + { + "command": "github.copilot.chat.replay", + "group": "navigation@9", + "when": "resourceFilename === 'benchRun.chatReplay.json'" + }, + { + "command": "github.copilot.chat.showAsChatSession", + "group": "navigation@9", + "when": "resourceFilename === 'benchRun.chatReplay.json' || resourceFilename === 'chat-export-logs.json'" + }, + { + "command": "github.copilot.chat.applyCopilotCLIAgentSessionChanges", + "group": "navigation@1", + "when": "resourceScheme == copilotcli-worktree-changes" + } + ], + "explorer/context": [ + { + "command": "github.copilot.chat.showAsChatSession", + "when": "resourceFilename === 'benchRun.chatReplay.json' || resourceFilename === 'chat-export-logs.json'", + "group": "2_copilot@1" + } + ], + "editor/context": [ + { + "command": "github.copilot.chat.explain", + "when": "!github.copilot.interactiveSession.disabled", + "group": "1_chat@4" + } + ], + "editor/context/chat": [ + { + "command": "github.copilot.chat.fix", + "when": "!github.copilot.interactiveSession.disabled && !editorReadonly", + "group": "copilotAction@1" + }, + { + "command": "github.copilot.chat.review", + "when": "config.github.copilot.chat.reviewSelection.enabled && !github.copilot.interactiveSession.disabled && resourceScheme != 'vscode-chat-code-block'", + "group": "copilotAction@2" + }, + { + "command": "github.copilot.chat.generateDocs", + "when": "!github.copilot.interactiveSession.disabled && !editorReadonly", + "group": "copilotGenerate@1" + }, + { + "command": "github.copilot.chat.generateTests", + "when": "!github.copilot.interactiveSession.disabled && !editorReadonly", + "group": "copilotGenerate@2" + } + ], + "testing/item/result": [ + { + "command": "github.copilot.tests.fixTestFailure.fromInline", + "when": "testResultState == failed && !testResultOutdated", + "group": "inline@2" + } + ], + "testing/item/context": [ + { + "command": "github.copilot.tests.fixTestFailure.fromInline", + "when": "testResultState == failed && !testResultOutdated", + "group": "inline@2" + } + ], + "commandPalette": [ + { + "command": "github.copilot.chat.triggerPermissiveSignIn", + "when": "false" + }, + { + "command": "github.copilot.interactiveSession.feedback", + "when": "github.copilot-chat.activated && !github.copilot.interactiveSession.disabled" + }, + { + "command": "github.copilot.debug.workbenchState", + "when": "true" + }, + { + "command": "github.copilot.chat.rerunWithCopilotDebug", + "when": "false" + }, + { + "command": "github.copilot.chat.startCopilotDebugCommand", + "when": "false" + }, + { + "command": "github.copilot.git.generateCommitMessage", + "when": "false" + }, + { + "command": "github.copilot.git.resolveMergeConflicts", + "when": "false" + }, + { + "command": "github.copilot.chat.explain", + "when": "false" + }, + { + "command": "github.copilot.chat.review", + "when": "!github.copilot.interactiveSession.disabled" + }, + { + "command": "github.copilot.chat.review.apply", + "when": "false" + }, + { + "command": "github.copilot.chat.review.applyAndNext", + "when": "false" + }, + { + "command": "github.copilot.chat.review.discard", + "when": "false" + }, + { + "command": "github.copilot.chat.review.discardAndNext", + "when": "false" + }, + { + "command": "github.copilot.chat.review.discardAll", + "when": "false" + }, + { + "command": "github.copilot.chat.review.stagedChanges", + "when": "false" + }, + { + "command": "github.copilot.chat.review.unstagedChanges", + "when": "false" + }, + { + "command": "github.copilot.chat.review.changes", + "when": "false" + }, + { + "command": "github.copilot.chat.review.stagedFileChange", + "when": "false" + }, + { + "command": "github.copilot.chat.review.unstagedFileChange", + "when": "false" + }, + { + "command": "github.copilot.chat.review.previous", + "when": "false" + }, + { + "command": "github.copilot.chat.review.next", + "when": "false" + }, + { + "command": "github.copilot.chat.review.continueInInlineChat", + "when": "false" + }, + { + "command": "github.copilot.chat.review.continueInChat", + "when": "false" + }, + { + "command": "github.copilot.chat.review.markHelpful", + "when": "false" + }, + { + "command": "github.copilot.chat.review.markUnhelpful", + "when": "false" + }, + { + "command": "github.copilot.devcontainer.generateDevContainerConfig", + "when": "false" + }, + { + "command": "github.copilot.tests.fixTestFailure", + "when": "false" + }, + { + "command": "github.copilot.tests.fixTestFailure.fromInline", + "when": "false" + }, + { + "command": "github.copilot.search.markHelpful", + "when": "false" + }, + { + "command": "github.copilot.search.markUnhelpful", + "when": "false" + }, + { + "command": "github.copilot.search.feedback", + "when": "false" + }, + { + "command": "github.copilot.chat.debug.showElements", + "when": "false" + }, + { + "command": "github.copilot.chat.debug.hideElements", + "when": "false" + }, + { + "command": "github.copilot.chat.debug.showTools", + "when": "false" + }, + { + "command": "github.copilot.chat.debug.hideTools", + "when": "false" + }, + { + "command": "github.copilot.chat.debug.showNesRequests", + "when": "false" + }, + { + "command": "github.copilot.chat.debug.hideNesRequests", + "when": "false" + }, + { + "command": "github.copilot.chat.debug.exportLogItem", + "when": "false" + }, + { + "command": "github.copilot.chat.debug.exportPromptArchive", + "when": "false" + }, + { + "command": "github.copilot.chat.debug.exportPromptLogsAsJson", + "when": "false" + }, + { + "command": "github.copilot.chat.debug.exportAllPromptLogsAsJson", + "when": "false" + }, + { + "command": "github.copilot.chat.mcp.setup.check", + "when": "false" + }, + { + "command": "github.copilot.chat.mcp.setup.validatePackage", + "when": "false" + }, + { + "command": "github.copilot.chat.mcp.setup.flow", + "when": "false" + }, + { + "command": "github.copilot.chat.debug.showRawRequestBody", + "when": "false" + }, + { + "command": "github.copilot.debug.showOutputChannel", + "when": "false" + }, + { + "command": "github.copilot.cli.sessions.delete", + "when": "false" + }, + { + "command": "github.copilot.cli.sessions.refresh", + "when": "false" + }, + { + "command": "github.copilot.cli.sessions.resumeInTerminal", + "when": "false" + }, + { + "command": "github.copilot.cli.sessions.newTerminalSession", + "when": "false" + }, + { + "command": "github.copilot.cloud.sessions.refresh", + "when": "false" + }, + { + "command": "github.copilot.cloud.sessions.openInBrowser", + "when": "false" + }, + { + "command": "github.copilot.cloud.sessions.proxy.closeChatSessionPullRequest", + "when": "false" + }, + { + "command": "github.copilot.chat.applyCopilotCLIAgentSessionChanges", + "when": "false" + }, + { + "command": "github.copilot.chat.showAsChatSession", + "when": "false" + } + ], + "view/title": [ + { + "command": "github.copilot.claude.sessions.refresh", + "when": "view == workbench.view.chat.sessions.claude-code", + "group": "navigation@1" + }, + { + "command": "github.copilot.cli.sessions.refresh", + "when": "view == workbench.view.chat.sessions.copilotcli", + "group": "navigation@1" + }, + { + "submenu": "github.copilot.chat.debug.filter", + "when": "view == copilot-chat", + "group": "navigation" + }, + { + "command": "github.copilot.chat.debug.exportAllPromptLogsAsJson", + "when": "view == copilot-chat", + "group": "export@1" + }, + { + "command": "github.copilot.debug.showOutputChannel", + "when": "view == copilot-chat", + "group": "3_show@1" + }, + { + "command": "github.copilot.debug.showChatLogView", + "when": "view == workbench.panel.chat.view.copilot", + "group": "3_show" + }, + { + "command": "github.copilot.cloud.sessions.refresh", + "when": "view == workbench.view.chat.sessions.copilot-cloud-agent", + "group": "navigation@1" + } + ], + "view/item/context": [ + { + "command": "github.copilot.chat.debug.showRawRequestBody", + "when": "view == copilot-chat && viewItem == request", + "group": "export@0" + }, + { + "command": "github.copilot.chat.debug.exportLogItem", + "when": "view == copilot-chat && (viewItem == toolcall || viewItem == request)", + "group": "export@1" + }, + { + "command": "github.copilot.chat.debug.exportPromptArchive", + "when": "view == copilot-chat && viewItem == chatprompt", + "group": "export@2" + }, + { + "command": "github.copilot.chat.debug.exportPromptLogsAsJson", + "when": "view == copilot-chat && viewItem == chatprompt", + "group": "export@3" + } + ], + "searchPanel/aiResults/commands": [ + { + "command": "github.copilot.search.markHelpful", + "group": "inline@0", + "when": "aiResultsTitle && aiResultsRequested" + }, + { + "command": "github.copilot.search.markUnhelpful", + "group": "inline@1", + "when": "aiResultsTitle && aiResultsRequested" + }, + { + "command": "github.copilot.search.feedback", + "group": "inline@2", + "when": "aiResultsTitle && aiResultsRequested && github.copilot.debugReportFeedback" + } + ], + "comments/comment/title": [ + { + "command": "github.copilot.chat.review.markHelpful", + "group": "inline@0", + "when": "commentController == github-copilot-review" + }, + { + "command": "github.copilot.chat.review.markUnhelpful", + "group": "inline@1", + "when": "commentController == github-copilot-review" + } + ], + "commentsView/commentThread/context": [ + { + "command": "github.copilot.chat.review.apply", + "group": "context@1", + "when": "commentController == github-copilot-review" + }, + { + "command": "github.copilot.chat.review.discard", + "group": "context@2", + "when": "commentController == github-copilot-review" + }, + { + "command": "github.copilot.chat.review.discardAll", + "group": "context@3", + "when": "commentController == github-copilot-review" + } + ], + "comments/commentThread/additionalActions": [ + { + "submenu": "copilot/reviewComment/additionalActions/applyAndNext", + "group": "inline@1", + "when": "commentController == github-copilot-review && github.copilot.chat.review.numberOfComments > 1" + }, + { + "command": "github.copilot.chat.review.apply", + "group": "inline@1", + "when": "commentController == github-copilot-review && github.copilot.chat.review.numberOfComments == 1" + }, + { + "submenu": "copilot/reviewComment/additionalActions/discardAndNext", + "group": "inline@2", + "when": "commentController == github-copilot-review && github.copilot.chat.review.numberOfComments > 1" + }, + { + "submenu": "copilot/reviewComment/additionalActions/discard", + "group": "inline@2", + "when": "commentController == github-copilot-review && github.copilot.chat.review.numberOfComments == 1" + } + ], + "copilot/reviewComment/additionalActions/applyAndNext": [ + { + "command": "github.copilot.chat.review.applyAndNext", + "group": "inline@1", + "when": "commentController == github-copilot-review" + }, + { + "command": "github.copilot.chat.review.apply", + "group": "inline@2", + "when": "commentController == github-copilot-review" + } + ], + "copilot/reviewComment/additionalActions/discardAndNext": [ + { + "command": "github.copilot.chat.review.discardAndNext", + "group": "inline@1", + "when": "commentController == github-copilot-review" + }, + { + "command": "github.copilot.chat.review.discard", + "group": "inline@2", + "when": "commentController == github-copilot-review" + }, + { + "command": "github.copilot.chat.review.continueInInlineChat", + "group": "inline@3", + "when": "commentController == github-copilot-review" + } + ], + "copilot/reviewComment/additionalActions/discard": [ + { + "command": "github.copilot.chat.review.discard", + "group": "inline@2", + "when": "commentController == github-copilot-review" + }, + { + "command": "github.copilot.chat.review.continueInInlineChat", + "group": "inline@3", + "when": "commentController == github-copilot-review" + } + ], + "comments/commentThread/title": [ + { + "command": "github.copilot.chat.review.previous", + "group": "inline@1", + "when": "commentController == github-copilot-review" + }, + { + "command": "github.copilot.chat.review.next", + "group": "inline@2", + "when": "commentController == github-copilot-review" + }, + { + "command": "github.copilot.chat.review.continueInChat", + "group": "inline@3", + "when": "commentController == github-copilot-review" + }, + { + "command": "github.copilot.chat.review.discardAll", + "group": "inline@4", + "when": "commentController == github-copilot-review" + } + ], + "scm/title": [ + { + "command": "github.copilot.chat.review.changes", + "group": "navigation", + "when": "config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmProviderRootUri in github.copilot.chat.reviewDiff.enabledRootUris" + } + ], + "scm/resourceGroup/context": [ + { + "command": "github.copilot.chat.review.stagedChanges", + "when": "config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmResourceGroup == index", + "group": "inline@-3" + }, + { + "command": "github.copilot.chat.review.unstagedChanges", + "when": "config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmResourceGroup == workingTree", + "group": "inline@-3" + } + ], + "scm/resourceState/context": [ + { + "command": "github.copilot.git.resolveMergeConflicts", + "when": "scmProvider == git && scmResourceGroup == merge && git.activeResourceHasMergeConflicts", + "group": "z_chat@1" + }, + { + "command": "github.copilot.chat.review.stagedFileChange", + "group": "3_copilot", + "when": "config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmResourceGroup == index" + }, + { + "command": "github.copilot.chat.review.unstagedFileChange", + "group": "3_copilot", + "when": "config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmResourceGroup == workingTree" + } + ], + "scm/inputBox": [ + { + "command": "github.copilot.git.generateCommitMessage", + "when": "scmProvider == git" + } + ], + "testing/message/context": [ + { + "command": "github.copilot.tests.fixTestFailure", + "when": "testing.testItemHasUri", + "group": "inline@1" + } + ], + "issue/reporter": [ + { + "command": "github.copilot.report" + } + ], + "github.copilot.chat.debug.filter": [ + { + "command": "github.copilot.chat.debug.showElements", + "when": "github.copilot.chat.debug.elementsHidden", + "group": "commands@0" + }, + { + "command": "github.copilot.chat.debug.hideElements", + "when": "!github.copilot.chat.debug.elementsHidden", + "group": "commands@0" + }, + { + "command": "github.copilot.chat.debug.showTools", + "when": "github.copilot.chat.debug.toolsHidden", + "group": "commands@1" + }, + { + "command": "github.copilot.chat.debug.hideTools", + "when": "!github.copilot.chat.debug.toolsHidden", + "group": "commands@1" + }, + { + "command": "github.copilot.chat.debug.showNesRequests", + "when": "github.copilot.chat.debug.nesRequestsHidden", + "group": "commands@2" + }, + { + "command": "github.copilot.chat.debug.hideNesRequests", + "when": "!github.copilot.chat.debug.nesRequestsHidden", + "group": "commands@2" + } + ], + "notebook/toolbar": [ + { + "command": "github.copilot.chat.notebook.enableFollowCellExecution", + "when": "config.github.copilot.chat.notebook.followCellExecution.enabled && !github.copilot.notebookFollowInSessionEnabled && github.copilot.notebookAgentModeUsage && config.notebook.globalToolbar", + "group": "navigation/execute@15" + }, + { + "command": "github.copilot.chat.notebook.disableFollowCellExecution", + "when": "config.github.copilot.chat.notebook.followCellExecution.enabled && github.copilot.notebookFollowInSessionEnabled && github.copilot.notebookAgentModeUsage && config.notebook.globalToolbar", + "group": "navigation/execute@15" + } + ], + "editor/content": [ + { + "command": "github.copilot.git.resolveMergeConflicts", + "group": "z_chat@1", + "when": "config.git.enabled && !git.missing && !isInDiffEditor && !isMergeEditor && resource in git.mergeChanges && git.activeResourceHasMergeConflicts" + } + ], + "chat/chatSessions": [ + { + "command": "github.copilot.cli.sessions.resumeInTerminal", + "when": "chatSessionType == copilotcli", + "group": "inline@1" + }, + { + "command": "github.copilot.cli.sessions.delete", + "when": "chatSessionType == copilotcli", + "group": "inline@2" + }, + { + "command": "github.copilot.cli.sessions.newTerminalSession", + "when": "view == workbench.view.chat.sessions.copilotcli", + "group": "submenu" + }, + { + "command": "github.copilot.cli.sessions.refresh", + "when": "view == workbench.view.chat.sessions.copilotcli", + "group": "navigation@1" + }, + { + "command": "github.copilot.cloud.sessions.openInBrowser", + "when": "chatSessionType == copilot-cloud-agent", + "group": "navigation@10" + }, + { + "command": "github.copilot.cloud.sessions.proxy.closeChatSessionPullRequest", + "when": "chatSessionType == copilot-cloud-agent", + "group": "context" + }, + { + "command": "github.copilot.cli.sessions.delete", + "when": "chatSessionType == copilotcli && config.chat.agentSessionsViewLocation == 'single-view'", + "group": "context" + } + ] + }, + "icons": { + "copilot-logo": { + "description": "%github.copilot.icon%", + "default": { + "fontPath": "assets/copilot.woff", + "fontCharacter": "\\0041" + } + }, + "copilot-warning": { + "description": "%github.copilot.icon%", + "default": { + "fontPath": "assets/copilot.woff", + "fontCharacter": "\\0042" + } + }, + "copilot-notconnected": { + "description": "%github.copilot.icon%", + "default": { + "fontPath": "assets/copilot.woff", + "fontCharacter": "\\0043" + } + } + }, + "iconFonts": [ + { + "id": "copilot-font", + "src": [ + { + "path": "assets/copilot.woff", + "format": "woff" + } + ] + } + ], + "terminalQuickFixes": [ + { + "id": "copilot-chat.fixWithCopilot", + "commandLineMatcher": ".+", + "commandExitResult": "error", + "outputMatcher": { + "anchor": "bottom", + "length": 1, + "lineMatcher": ".+", + "offset": 0 + }, + "kind": "explain" + }, + { + "id": "copilot-chat.generateCommitMessage", + "commandLineMatcher": "git add .+", + "commandExitResult": "success", + "kind": "explain", + "outputMatcher": { + "anchor": "bottom", + "length": 1, + "lineMatcher": ".+", + "offset": 0 + } + }, + { + "id": "copilot-chat.terminalToDebugging", + "commandLineMatcher": ".+", + "kind": "explain", + "commandExitResult": "error", + "outputMatcher": { + "anchor": "bottom", + "length": 1, + "lineMatcher": "", + "offset": 0 + } + }, + { + "id": "copilot-chat.terminalToDebuggingSuccess", + "commandLineMatcher": ".+", + "kind": "explain", + "commandExitResult": "success", + "outputMatcher": { + "anchor": "bottom", + "length": 1, + "lineMatcher": "", + "offset": 0 + } + } + ], + "languages": [ + { + "id": "ignore", + "filenamePatterns": [ + ".copilotignore" + ], + "aliases": [] + }, + { + "id": "markdown", + "extensions": [ + ".copilotmd" + ] + } + ], + "views": { + "copilot-chat": [ + { + "id": "copilot-chat", + "name": "Chat Debug", + "icon": "assets/debug-icon.svg", + "when": "github.copilot.chat.showLogView" + } + ], + "context-inspector": [ + { + "id": "context-inspector", + "name": "Language Context Inspector", + "icon": "$(inspect)", + "when": "github.copilot.chat.showContextInspectorView" + } + ], + "agentSessions": [ + { + "id": "codex-placeholder", + "name": "OpenAI Codex", + "when": "github.copilot.chat.codex.showPlaceholder", + "icon": "$(file)" + }, + { + "id": "copilot-agents-placeholder", + "name": "GitHub Copilot Agents", + "when": "chatEntitlementSignedOut || !chatIsEnabled", + "icon": "$(copilot)" + } + ] + }, + "viewsContainers": { + "activitybar": [ + { + "id": "copilot-chat", + "title": "Chat Debug", + "icon": "assets/debug-icon.svg" + }, + { + "id": "context-inspector", + "title": "Language Context Inspector", + "icon": "$(inspect)" + } + ] + }, + "configurationDefaults": { + "workbench.editorAssociations": { + "*.copilotmd": "vscode.markdown.preview.editor" + } + }, + "keybindings": [ + { + "command": "github.copilot.chat.rerunWithCopilotDebug", + "key": "ctrl+alt+.", + "mac": "cmd+alt+.", + "when": "github.copilot-chat.activated && terminalShellIntegrationEnabled && terminalFocus && !terminalAltBufferActive" + } + ], + "walkthroughs": [ + { + "id": "copilotWelcome", + "title": "%github.copilot.walkthrough.title%", + "description": "%github.copilot.walkthrough.description%", + "when": "!isWeb", + "steps": [ + { + "id": "copilot.setup.signIn", + "title": "%github.copilot.walkthrough.setup.signIn.title%", + "description": "%github.copilot.walkthrough.setup.signIn.description%", + "when": "chatEntitlementSignedOut && !view.workbench.panel.chat.view.copilot.visible && !github.copilot-chat.activated && !github.copilot.offline && !github.copilot.interactiveSession.individual.disabled && !github.copilot.interactiveSession.individual.expired && !github.copilot.interactiveSession.enterprise.disabled && !github.copilot.interactiveSession.contactSupport", + "media": { + "video": { + "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4", + "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4", + "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4", + "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4" + }, + "altText": "%github.copilot.walkthrough.panelChat.media.altText%" + } + }, + { + "id": "copilot.setup.signInNoAction", + "title": "%github.copilot.walkthrough.setup.signIn.title%", + "description": "%github.copilot.walkthrough.setup.noAction.description%", + "when": "chatEntitlementSignedOut && view.workbench.panel.chat.view.copilot.visible && !github.copilot-chat.activated && !github.copilot.offline && !github.copilot.interactiveSession.individual.disabled && !github.copilot.interactiveSession.individual.expired && !github.copilot.interactiveSession.enterprise.disabled && !github.copilot.interactiveSession.contactSupport", + "media": { + "video": { + "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4", + "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4", + "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4", + "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4" + }, + "altText": "%github.copilot.walkthrough.panelChat.media.altText%" + } + }, + { + "id": "copilot.setup.signUp", + "title": "%github.copilot.walkthrough.setup.signUp.title%", + "description": "%github.copilot.walkthrough.setup.signUp.description%", + "when": "chatPlanCanSignUp && !view.workbench.panel.chat.view.copilot.visible && !github.copilot-chat.activated && !github.copilot.offline && (github.copilot.interactiveSession.individual.disabled || github.copilot.interactiveSession.individual.expired) && !github.copilot.interactiveSession.enterprise.disabled && !github.copilot.interactiveSession.contactSupport", + "media": { + "video": { + "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4", + "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4", + "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4", + "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4" + }, + "altText": "%github.copilot.walkthrough.panelChat.media.altText%" + } + }, + { + "id": "copilot.setup.signUpNoAction", + "title": "%github.copilot.walkthrough.setup.signUp.title%", + "description": "%github.copilot.walkthrough.setup.noAction.description%", + "when": "chatPlanCanSignUp && view.workbench.panel.chat.view.copilot.visible && !github.copilot-chat.activated && !github.copilot.offline && (github.copilot.interactiveSession.individual.disabled || github.copilot.interactiveSession.individual.expired) && !github.copilot.interactiveSession.enterprise.disabled && !github.copilot.interactiveSession.contactSupport", + "media": { + "video": { + "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4", + "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4", + "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4", + "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4" + }, + "altText": "%github.copilot.walkthrough.panelChat.media.altText%" + } + }, + { + "id": "copilot.panelChat", + "title": "%github.copilot.walkthrough.panelChat.title%", + "description": "%github.copilot.walkthrough.panelChat.description%", + "when": "!chatEntitlementSignedOut || chatIsEnabled ", + "media": { + "video": { + "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4", + "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4", + "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4", + "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4" + }, + "altText": "%github.copilot.walkthrough.panelChat.media.altText%" + } + }, + { + "id": "copilot.edits", + "title": "%github.copilot.walkthrough.edits.title%", + "description": "%github.copilot.walkthrough.edits.description%", + "when": "!chatEntitlementSignedOut || chatIsEnabled ", + "media": { + "video": { + "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/edits.mp4", + "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/edits-light.mp4", + "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/edits-hc.mp4", + "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/edits-hclight.mp4" + }, + "altText": "%github.copilot.walkthrough.edits.media.altText%" + } + }, + { + "id": "copilot.firstSuggest", + "title": "%github.copilot.walkthrough.firstSuggest.title%", + "description": "%github.copilot.walkthrough.firstSuggest.description%", + "when": "!chatEntitlementSignedOut || chatIsEnabled ", + "media": { + "video": { + "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/ghost-text.mp4", + "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/ghost-text-light.mp4", + "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/ghost-text-hc.mp4", + "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/ghost-text-hclight.mp4" + }, + "altText": "%github.copilot.walkthrough.firstSuggest.media.altText%" + } + }, + { + "id": "copilot.inlineChatNotMac", + "title": "%github.copilot.walkthrough.inlineChatNotMac.title%", + "description": "%github.copilot.walkthrough.inlineChatNotMac.description%", + "when": "!isMac && (!chatEntitlementSignedOut || chatIsEnabled )", + "media": { + "video": { + "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline.mp4", + "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-light.mp4", + "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-hc.mp4", + "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-hclight.mp4" + }, + "altText": "%github.copilot.walkthrough.inlineChatNotMac.media.altText%" + } + }, + { + "id": "copilot.inlineChatMac", + "title": "%github.copilot.walkthrough.inlineChatMac.title%", + "description": "%github.copilot.walkthrough.inlineChatMac.description%", + "when": "isMac && (!chatEntitlementSignedOut || chatIsEnabled )", + "media": { + "video": { + "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline.mp4", + "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-light.mp4", + "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-hc.mp4", + "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-hclight.mp4" + }, + "altText": "%github.copilot.walkthrough.inlineChatMac.media.altText%" + } + }, + { + "id": "copilot.sparkle", + "title": "%github.copilot.walkthrough.sparkle.title%", + "description": "%github.copilot.walkthrough.sparkle.description%", + "when": "!chatEntitlementSignedOut || chatIsEnabled", + "media": { + "video": { + "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/git-commit.mp4", + "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/git-commit-light.mp4", + "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/git-commit-hc.mp4", + "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/git-commit-hclight.mp4" + }, + "altText": "%github.copilot.walkthrough.sparkle.media.altText%" + } + } + ] + } + ], + "jsonValidation": [ + { + "fileMatch": "settings.json", + "url": "ccsettings://root/schema.json" + } + ], + "typescriptServerPlugins": [ + { + "name": "@vscode/copilot-typescript-server-plugin", + "enableForWorkspaceTypeScriptVersions": true + } + ], + "chatSessions": [ + { + "type": "claude-code", + "name": "claude", + "displayName": "Claude Code CLI Agent", + "icon": "$(sparkle)", + "welcomeTitle": "Claude Code Agent", + "welcomeMessage": "Run local background tasks", + "inputPlaceholder": "Describe your task, type `#` for adding context", + "order": 3, + "description": "The Claude Code Agent works on your local machine", + "when": "config.github.copilot.chat.advanced.claudeCode.enabled", + "canDelegate": false, + "capabilities": { + "supportsFileAttachments": true + }, + "commands": [ + { + "name": "init", + "description": "Initialize a new CLAUDE.md file with codebase documentation" + }, + { + "name": "compact", + "description": "Clear conversation history but keep a summary in context. Optional: /compact [instructions for summarization]" + }, + { + "name": "pr-comments", + "description": "Get comments from a GitHub pull request" + }, + { + "name": "review", + "description": "Review a pull request" + }, + { + "name": "security-review", + "description": "Complete a security review of the pending changes on the current branch" + } + ] + }, + { + "type": "copilotcli", + "name": "cli", + "displayName": "Background Agent", + "icon": "$(collection)", + "welcomeTitle": "Background Agent", + "welcomeMessage": "Run tasks in the background", + "inputPlaceholder": "Describe your task, type `#` for adding context", + "order": 2, + "canDelegate": true, + "description": "Delegate tasks to a background agent.", + "capabilities": { + "supportsFileAttachments": true, + "supportsProblemAttachments": true, + "supportsToolAttachments": false, + "supportsImageAttachments": true, + "supportsSymbolAttachments": true, + "supportsSearchResultAttachments": true, + "supportsSourceControlAttachments": true + }, + "commands": [ + { + "name": "delegate", + "description": "Delegate chat session to cloud agent and create associated PR" + } + ] + }, + { + "type": "copilot-cloud-agent", + "alternativeIds": [ + "copilot-swe-agent" + ], + "name": "cloud", + "displayName": "Cloud Agent", + "icon": "$(cloud)", + "welcomeTitle": "Cloud Agent", + "welcomeMessage": "Delegate tasks to the cloud", + "inputPlaceholder": "Describe your task, type `#` for adding context", + "order": 1, + "canDelegate": true, + "description": "Delegate tasks to the GitHub Copilot Cloud Agent. The agent works asynchronously in the cloud to implement changes, iterates via chat, and can create or update pull requests as needed.", + "capabilities": { + "supportsFileAttachments": true + } + } + ], + "debuggers": [ + { + "type": "vscode-chat-replay", + "label": "vscode-chat-replay", + "languages": [ + "json" + ], + "when": "resourceFilename === 'benchRun.chatReplay.json'", + "configurationAttributes": { + "launch": { + "properties": { + "program": { + "type": "string", + "description": "Chat replay file to debug (parse for headers)", + "default": "${file}" + }, + "stopOnEntry": { + "type": "boolean", + "default": true, + "description": "Break immediately to step through manually." + } + }, + "required": [ + "program" + ] + } + } + } + ], + "chatAgents": [ + { + "name": "Plan", + "path": "./assets/agents/Plan.agent.md", + "description": "Researches a task to create multi-step plans" + } + ], + "chatPromptFiles": [ + { + "name": "savePrompt", + "path": "./assets/prompts/savePrompt.prompt.md", + "description": "Generalize the current discussion into a reusable prompt and save it as a file" + } + ] + }, + "extensionPack": [ + "GitHub.copilot" + ], + "prettier": { + "useTabs": true, + "tabWidth": 4, + "singleQuote": true + }, + "scripts": { + "postinstall": "tsx ./script/postinstall.ts", + "prepare": "husky", + "vscode-dts:dev": "node node_modules/@vscode/dts/index.js dev && mv vscode.proposed.*.ts src/extension", + "vscode-dts:main": "node node_modules/@vscode/dts/index.js main && mv vscode.d.ts src/extension", + "build": "tsx .esbuild.ts", + "compile": "tsx .esbuild.ts --dev", + "watch": "npm-run-all -p watch:*", + "watch:esbuild": "tsx .esbuild.ts --watch --dev", + "watch:tsc-extension": "tsc --noEmit --watch --project tsconfig.json", + "watch:tsc-extension-web": "tsc --noEmit --watch --project tsconfig.worker.json", + "watch:tsc-simulation-workbench": "tsc --noEmit --watch --project test/simulation/workbench/tsconfig.json", + "typecheck": "tsc --noEmit --project tsconfig.json && tsc --noEmit --project test/simulation/workbench/tsconfig.json && tsc --noEmit --project tsconfig.worker.json && tsc --noEmit --project src/extension/completions-core/vscode-node/extension/src/copilotPanel/webView/tsconfig.json", + "lint": "eslint . --max-warnings=0", + "lint-staged": "eslint --max-warnings=0", + "tsfmt": "npx tsfmt -r --verify", + "test": "npm-run-all test:*", + "test:extension": "vscode-test", + "test:sanity": "vscode-test --sanity", + "test:unit": "vitest --run --pool=forks", + "vitest": "vitest", + "bench": "vitest bench", + "get_env": "tsx script/setup/getEnv.mts", + "get_token": "tsx script/setup/getToken.mts", + "prettier": "prettier --list-different --write --cache .", + "simulate": "node dist/simulationMain.js", + "simulate-require-cache": "node dist/simulationMain.js --require-cache", + "simulate-ci": "node dist/simulationMain.js --ci --require-cache", + "simulate-update-baseline": "node dist/simulationMain.js --update-baseline", + "simulate-gc": "node dist/simulationMain.js --require-cache --gc", + "setup": "npm run get_env && npm run get_token", + "setup:dotnet": "run-script-os", + "setup:dotnet:darwin:linux": "curl -O https://raw.githubusercontent.com/dotnet/install-scripts/main/src/dotnet-install.sh && chmod u+x dotnet-install.sh && ./dotnet-install.sh --channel 10.0 && rm dotnet-install.sh", + "setup:dotnet:win32": "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command \"Invoke-WebRequest -Uri https://raw.githubusercontent.com/dotnet/install-scripts/main/src/dotnet-install.ps1 -OutFile dotnet-install.ps1; ./dotnet-install.ps1 -channel 10.0; Remove-Item dotnet-install.ps1\"", + "analyze-edits": "tsx script/analyzeEdits.ts", + "extract-chat-lib": "tsx script/build/extractChatLib.ts", + "create_venv": "tsx script/setup/createVenv.mts", + "package": "vsce package", + "web": "vscode-test-web --headless --extensionDevelopmentPath=. .", + "test:prompt": "mocha \"src/extension/completions-core/vscode-node/prompt/**/test/**/*.test.{ts,tsx}\"", + "test:completions-core": "tsx src/extension/completions-core/vscode-node/extension/test/runTest.ts" + }, + "devDependencies": { + "@azure/identity": "4.9.1", + "@azure/keyvault-secrets": "^4.10.0", + "@azure/msal-node": "^3.6.3", + "@c4312/scip": "^0.1.0", + "@fluentui/react-components": "^9.66.6", + "@fluentui/react-icons": "^2.0.305", + "@hediet/node-reload": "^0.8.0", + "@keyv/sqlite": "^4.0.5", + "@octokit/types": "^14.1.0", + "@parcel/watcher": "^2.5.1", + "@stylistic/eslint-plugin": "^3.0.1", + "@types/eslint": "^9.0.0", + "@types/google-protobuf": "^3.15.12", + "@types/js-yaml": "^4.0.9", + "@types/markdown-it": "^14.0.0", + "@types/minimist": "^1.2.5", + "@types/mocha": "^10.0.10", + "@types/node": "^22.16.3", + "@types/picomatch": "^4.0.0", + "@types/react": "17.0.44", + "@types/react-dom": "^18.2.17", + "@types/sinon": "^17.0.4", + "@types/source-map-support": "^0.5.10", + "@types/tar": "^6.1.13", + "@types/vinyl": "^2.0.12", + "@types/vscode": "^1.102.0", + "@types/vscode-webview": "^1.57.4", + "@types/yargs": "^17.0.24", + "@typescript-eslint/eslint-plugin": "^8.35.0", + "@typescript-eslint/parser": "^8.32.0", + "@typescript-eslint/typescript-estree": "^8.26.1", + "@vitest/coverage-v8": "^3.2.4", + "@vitest/snapshot": "^1.5.0", + "@vscode/debugadapter": "^1.68.0", + "@vscode/debugprotocol": "^1.68.0", + "@vscode/dts": "^0.4.1", + "@vscode/lsif-language-service": "^0.1.0-pre.4", + "@vscode/test-cli": "^0.0.11", + "@vscode/test-electron": "^2.5.2", + "@vscode/test-web": "^0.0.71", + "@vscode/vsce": "3.6.0", + "copyfiles": "^2.4.1", + "csv-parse": "^6.0.0", + "dotenv": "^17.2.0", + "electron": "^37.2.1", + "esbuild": "^0.25.6", + "eslint": "^9.30.0", + "eslint-import-resolver-typescript": "^4.4.4", + "eslint-plugin-header": "^3.1.1", + "eslint-plugin-import": "^2.32.0", + "eslint-plugin-jsdoc": "^51.3.4", + "eslint-plugin-no-only-tests": "^3.3.0", + "fastq": "^1.19.1", + "glob": "^11.1.0", + "husky": "^9.1.7", + "js-yaml": "^4.1.1", + "keyv": "^5.3.2", + "lint-staged": "15.2.9", + "minimist": "^1.2.8", + "mobx": "^6.13.7", + "mobx-react-lite": "^4.1.0", + "mocha": "^11.7.1", + "mocha-junit-reporter": "^2.2.1", + "mocha-multi-reporters": "^1.5.1", + "monaco-editor": "0.44.0", + "npm-run-all": "^4.1.5", + "open": "^10.1.2", + "openai": "^6.7.0", + "outdent": "^0.8.0", + "picomatch": "^4.0.2", + "playwright": "^1.56.1", + "prettier": "^3.6.2", + "react": "^17.0.2", + "react-dom": "17.0.2", + "rimraf": "^6.0.1", + "run-script-os": "^1.1.6", + "shiki": "~1.15.0", + "sinon": "^21.0.0", + "source-map-support": "^0.5.21", + "tar": "^7.4.3", + "ts-dedent": "^2.2.0", + "tsx": "^4.20.3", + "typescript": "^5.8.3", + "typescript-eslint": "^8.36.0", + "typescript-formatter": "github:jrieken/typescript-formatter#497efb26bc40b5fa59a350e6eab17bce650a7e4b", + "vite-plugin-top-level-await": "^1.5.0", + "vite-plugin-wasm": "^3.5.0", + "vitest": "^3.0.5", + "vscode-languageserver-protocol": "^3.17.5", + "vscode-languageserver-textdocument": "^1.0.12", + "vscode-languageserver-types": "^3.17.5", + "yaml": "^2.8.0", + "yargs": "^17.7.2" + }, + "dependencies": { + "@anthropic-ai/claude-code": "^1.0.120", + "@anthropic-ai/sdk": "^0.68.0", + "@github/copilot": "^0.0.365", + "@google/genai": "^1.22.0", + "@humanwhocodes/gitignore-to-minimatch": "1.0.2", + "@microsoft/tiktokenizer": "^1.0.10", + "@sinclair/typebox": "^0.34.41", + "@vscode/copilot-api": "^0.2.6", + "@vscode/extension-telemetry": "^1.2.0", + "@vscode/l10n": "^0.0.18", + "@vscode/prompt-tsx": "^0.4.0-alpha.5", + "@vscode/tree-sitter-wasm": "0.0.5-php.2", + "@vscode/webview-ui-toolkit": "^1.3.1", + "@xterm/headless": "^5.5.0", + "ajv": "^8.17.1", + "applicationinsights": "^2.9.7", + "diff": "^8.0.2", + "dompurify": "^3.3.0", + "ignore": "^7.0.5", + "isbinaryfile": "^5.0.4", + "jsonc-parser": "^3.3.1", + "lru-cache": "^11.1.0", + "markdown-it": "^14.1.0", + "minimatch": "^10.0.3", + "undici": "^7.11.0", + "vscode-tas-client": "^0.1.84", + "web-tree-sitter": "^0.23.0" + }, + "overrides": { + "@aminya/node-gyp-build": "npm:node-gyp-build@4.8.1", + "string_decoder": "npm:string_decoder@1.2.0", + "node-gyp": "npm:node-gyp@10.3.1" + } +} diff --git a/package.nls.json b/package.nls.json index 2e156976a5..6571dd546f 100644 --- a/package.nls.json +++ b/package.nls.json @@ -346,7 +346,7 @@ "github.copilot.config.agent.currentEditorContext.enabled": "When enabled, Copilot will include the name of the current active editor in the context for agent mode.", "github.copilot.config.customInstructionsInSystemMessage": "When enabled, custom instructions and mode instructions will be appended to the system message instead of a user message.", "github.copilot.config.customAgents.showOrganizationAndEnterpriseAgents": "Enable custom agents from GitHub Enterprise and Organizations. When disabled, custom agents from your organization or enterprise will not be available in Copilot.", - "github.copilot.config.customInstructions.showOrganizationInstructions": "Enable custom instructions from GitHub Organizations. When disabled, custom instructions from your organization will not be available in Copilot.", + "github.copilot.config.customInstructions.useOrganizationInstructions": "Enable custom instructions from GitHub Organizations. When disabled, custom instructions from your organization will not be available in Copilot.", "copilot.toolSet.editing.description": "Edit files in your workspace", "copilot.toolSet.read.description": "Read files in your workspace", "copilot.toolSet.search.description": "Search files in your workspace", diff --git a/src/extension/agents/vscode-node/organizationInstructionsContrib.ts b/src/extension/agents/vscode-node/organizationInstructionsContrib.ts index b2c79b8f0b..d3b9bd3e76 100644 --- a/src/extension/agents/vscode-node/organizationInstructionsContrib.ts +++ b/src/extension/agents/vscode-node/organizationInstructionsContrib.ts @@ -21,7 +21,7 @@ export class OrganizationInstructionsContribution extends Disposable implements if ('registerInstructionsProvider' in vscode.chat) { // Only register the provider if the setting is enabled - if (configurationService.getConfig(ConfigKey.ShowOrganizationInstructions)) { + if (configurationService.getConfig(ConfigKey.UseOrganizationInstructions)) { const provider = instantiationService.createInstance(OrganizationInstructionsProvider); this._register(vscode.chat.registerInstructionsProvider(provider)); } diff --git a/src/platform/configuration/common/configurationService.ts b/src/platform/configuration/common/configurationService.ts index 8467d30649..b23e616dac 100644 --- a/src/platform/configuration/common/configurationService.ts +++ b/src/platform/configuration/common/configurationService.ts @@ -870,7 +870,7 @@ export namespace ConfigKey { export const ShowOrganizationAndEnterpriseAgents = defineSetting('chat.customAgents.showOrganizationAndEnterpriseAgents', ConfigType.Simple, true); /** Enable custom instructions from GitHub Organizations */ - export const ShowOrganizationInstructions = defineSetting('chat.customInstructions.showOrganizationInstructions', ConfigType.Simple, true); + export const UseOrganizationInstructions = defineSetting('chat.customInstructions.useOrganizationInstructions', ConfigType.Simple, true); export const CompletionsFetcher = defineSetting('chat.completionsFetcher', ConfigType.ExperimentBased, undefined); export const NextEditSuggestionsFetcher = defineSetting('chat.nesFetcher', ConfigType.ExperimentBased, undefined); From 1def2e7bd670b179ff2f1d8aba07e6bb1e6adcb6 Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Wed, 31 Dec 2025 12:44:27 -0800 Subject: [PATCH 12/33] wip --- package.json | 10391 ++++++++-------- .../organizationAndEnterpriseAgentContrib.ts | 4 +- .../organizationAndEnterpriseAgentProvider.ts | 22 +- .../organizationInstructionsContrib.ts | 4 +- .../organizationInstructionsProvider.ts | 22 +- ...nizationAndEnterpriseAgentProvider.spec.ts | 96 +- .../organizationInstructionsProvider.spec.ts | 74 +- ...scode.proposed.chatParticipantPrivate.d.ts | 48 +- 8 files changed, 5313 insertions(+), 5348 deletions(-) diff --git a/package.json b/package.json index 57a59874c9..397d00022d 100644 --- a/package.json +++ b/package.json @@ -1,5198 +1,5197 @@ { - "name": "copilot-chat", - "displayName": "GitHub Copilot Chat", - "description": "AI chat features powered by Copilot", - "version": "0.36.0", - "build": "1", - "internalAIKey": "1058ec22-3c95-4951-8443-f26c1f325911", - "completionsCoreVersion": "1.378.1799", - "internalLargeStorageAriaKey": "ec712b3202c5462fb6877acae7f1f9d7-c19ad55e-3e3c-4f99-984b-827f6d95bd9e-6917", - "ariaKey": "0c6ae279ed8443289764825290e4f9e2-1a736e7c-1324-4338-be46-fc2a58ae4d14-7255", - "buildType": "dev", - "publisher": "GitHub", - "homepage": "https://github.com/features/copilot?editor=vscode", - "license": "SEE LICENSE IN LICENSE.txt", - "repository": { - "type": "git", - "url": "https://github.com/microsoft/vscode-copilot-chat" - }, - "bugs": { - "url": "https://github.com/microsoft/vscode/issues" - }, - "qna": "https://github.com/github-community/community/discussions/categories/copilot", - "icon": "assets/copilot.png", - "pricing": "Trial", - "engines": { - "vscode": "^1.108.0", - "npm": ">=9.0.0", - "node": ">=22.14.0" - }, - "categories": [ - "AI", - "Chat", - "Programming Languages", - "Machine Learning" - ], - "keywords": [ - "ai", - "openai", - "codex", - "pilot", - "snippets", - "documentation", - "autocomplete", - "intellisense", - "refactor", - "javascript", - "python", - "typescript", - "php", - "go", - "golang", - "ruby", - "c++", - "c#", - "java", - "kotlin", - "co-pilot" - ], - "badges": [ - { - "url": "https://img.shields.io/badge/GitHub%20Copilot-Subscription%20Required-orange", - "href": "https://github.com/github-copilot/signup?editor=vscode", - "description": "%github.copilot.badge.signUp%" - }, - { - "url": "https://img.shields.io/github/stars/github/copilot-docs?style=social", - "href": "https://github.com/github/copilot-docs", - "description": "%github.copilot.badge.star%" - }, - { - "url": "https://img.shields.io/youtube/channel/views/UC7c3Kb6jYCRj4JOHHZTxKsQ?style=social", - "href": "https://www.youtube.com/@GitHub/search?query=copilot", - "description": "%github.copilot.badge.youtube%" - }, - { - "url": "https://img.shields.io/twitter/follow/github?style=social", - "href": "https://twitter.com/github", - "description": "%github.copilot.badge.twitter%" - } - ], - "activationEvents": [ - "onStartupFinished", - "onLanguageModelChat:copilot", - "onUri", - "onFileSystem:ccreq", - "onFileSystem:ccsettings", - "onCustomAgentsProvider", - "onInstructionsProvider" - ], - "main": "./dist/extension", - "l10n": "./l10n", - "enabledApiProposals": [ - "extensionsAny", - "newSymbolNamesProvider", - "interactive", - "codeActionAI", - "activeComment", - "commentReveal", - "contribCommentThreadAdditionalMenu", - "contribCommentsViewThreadMenus", - "documentFiltersExclusive", - "embeddings", - "findTextInFiles", - "findTextInFiles2", - "findFiles2@2", - "textSearchProvider", - "terminalDataWriteEvent", - "terminalExecuteCommandEvent", - "terminalSelection", - "terminalQuickFixProvider", - "mappedEditsProvider", - "aiRelatedInformation", - "aiSettingsSearch", - "chatParticipantAdditions", - "chatEditing", - "defaultChatParticipant@4", - "contribSourceControlInputBoxMenu", - "authLearnMore", - "testObserver", - "aiTextSearchProvider@2", - "chatParticipantPrivate@11", - "chatProvider@4", - "contribDebugCreateConfiguration", - "chatReferenceDiagnostic", - "textSearchProvider2", - "chatReferenceBinaryData", - "languageModelSystem", - "languageModelCapabilities", - "inlineCompletionsAdditions", - "chatStatusItem", - "taskProblemMatcherStatus", - "contribLanguageModelToolSets", - "textDocumentChangeReason", - "resolvers", - "taskExecutionTerminal", - "dataChannels", - "languageModelThinkingPart", - "chatSessionsProvider@3", - "devDeviceId", - "contribEditorContentMenu" - ], - "contributes": { - "languageModelTools": [ - { - "name": "copilot_searchCodebase", - "toolReferenceName": "codebase", - "displayName": "%copilot.tools.searchCodebase.name%", - "icon": "$(folder)", - "userDescription": "%copilot.codebase.tool.description%", - "modelDescription": "Run a natural language search for relevant code or documentation comments from the user's current workspace. Returns relevant code snippets from the user's current workspace if it is large, or the full contents of the workspace if it is small.", - "tags": [ - "codesearch", - "vscode_codesearch" - ], - "inputSchema": { - "type": "object", - "properties": { - "query": { - "type": "string", - "description": "The query to search the codebase for. Should contain all relevant context. Should ideally be text that might appear in the codebase, such as function names, variable names, or comments." - } - }, - "required": [ - "query" - ] - } - }, - { - "name": "copilot_searchWorkspaceSymbols", - "toolReferenceName": "symbols", - "displayName": "%copilot.tools.searchWorkspaceSymbols.name%", - "icon": "$(symbol)", - "userDescription": "%copilot.workspaceSymbols.tool.description%", - "modelDescription": "Search the user's workspace for code symbols using language services. Use this tool when the user is looking for a specific symbol in their workspace.", - "tags": [ - "vscode_codesearch" - ], - "inputSchema": { - "type": "object", - "properties": { - "symbolName": { - "type": "string", - "description": "The symbol to search for, such as a function name, class name, or variable name." - } - }, - "required": [ - "symbolName" - ] - } - }, - { - "name": "copilot_listCodeUsages", - "toolReferenceName": "usages", - "legacyToolReferenceFullNames": [ - "usages" - ], - "displayName": "%copilot.tools.listCodeUsages.name%", - "icon": "$(references)", - "userDescription": "%copilot.listCodeUsages.tool.description%", - "modelDescription": "Request to list all usages (references, definitions, implementations etc) of a function, class, method, variable etc. Use this tool when \n1. Looking for a sample implementation of an interface or class\n2. Checking how a function is used throughout the codebase.\n3. Including and updating all usages when changing a function, method, or constructor", - "tags": [ - "vscode_codesearch" - ], - "inputSchema": { - "type": "object", - "properties": { - "symbolName": { - "type": "string", - "description": "The name of the symbol, such as a function name, class name, method name, variable name, etc." - }, - "filePaths": { - "type": "array", - "description": "One or more file paths which likely contain the definition of the symbol. For instance the file which declares a class or function. This is optional but will speed up the invocation of this tool and improve the quality of its output.", - "items": { - "type": "string" - } - } - }, - "required": [ - "symbolName" - ] - } - }, - { - "name": "copilot_getVSCodeAPI", - "toolReferenceName": "vscodeAPI", - "displayName": "%copilot.tools.getVSCodeAPI.name%", - "icon": "$(references)", - "userDescription": "%copilot.vscode.tool.description%", - "modelDescription": "Get comprehensive VS Code API documentation and references for extension development. This tool provides authoritative documentation for VS Code's extensive API surface, including proposed APIs, contribution points, and best practices. Use this tool for understanding complex VS Code API interactions.\n\nWhen to use this tool:\n- User asks about specific VS Code APIs, interfaces, or extension capabilities\n- Need documentation for VS Code extension contribution points (commands, views, settings, etc.)\n- Questions about proposed APIs and their usage patterns\n- Understanding VS Code extension lifecycle, activation events, and packaging\n- Best practices for VS Code extension development architecture\n- API examples and code patterns for extension features\n- Troubleshooting extension-specific issues or API limitations\n\nWhen NOT to use this tool:\n- Creating simple standalone files or scripts unrelated to VS Code extensions\n- General programming questions not specific to VS Code extension development\n- Questions about using VS Code as an editor (user-facing features)\n- Non-extension related development tasks\n- File creation or editing that doesn't involve VS Code extension APIs\n\nCRITICAL usage guidelines:\n1. Always include specific API names, interfaces, or concepts in your query\n2. Mention the extension feature you're trying to implement\n3. Include context about proposed vs stable APIs when relevant\n4. Reference specific contribution points when asking about extension manifest\n5. Be specific about the VS Code version or API version when known\n\nScope: This tool is for EXTENSION DEVELOPMENT ONLY - building tools that extend VS Code itself, not for general file creation or non-extension programming tasks.", - "inputSchema": { - "type": "object", - "properties": { - "query": { - "type": "string", - "description": "The query to search vscode documentation for. Should contain all relevant context." - } - }, - "required": [ - "query" - ] - }, - "tags": [] - }, - { - "name": "copilot_findFiles", - "toolReferenceName": "fileSearch", - "displayName": "%copilot.tools.findFiles.name%", - "userDescription": "%copilot.tools.findFiles.userDescription%", - "modelDescription": "Search for files in the workspace by glob pattern. This only returns the paths of matching files. Use this tool when you know the exact filename pattern of the files you're searching for. Glob patterns match from the root of the workspace folder. Examples:\n- **/*.{js,ts} to match all js/ts files in the workspace.\n- src/** to match all files under the top-level src folder.\n- **/foo/**/*.js to match all js files under any foo folder in the workspace.", - "tags": [ - "vscode_codesearch" - ], - "inputSchema": { - "type": "object", - "properties": { - "query": { - "type": "string", - "description": "Search for files with names or paths matching this glob pattern." - }, - "maxResults": { - "type": "number", - "description": "The maximum number of results to return. Do not use this unless necessary, it can slow things down. By default, only some matches are returned. If you use this and don't see what you're looking for, you can try again with a more specific query or a larger maxResults." - } - }, - "required": [ - "query" - ] - } - }, - { - "name": "copilot_findTextInFiles", - "toolReferenceName": "textSearch", - "displayName": "%copilot.tools.findTextInFiles.name%", - "userDescription": "%copilot.tools.findTextInFiles.userDescription%", - "modelDescription": "Do a fast text search in the workspace. Use this tool when you want to search with an exact string or regex. If you are not sure what words will appear in the workspace, prefer using regex patterns with alternation (|) or character classes to search for multiple potential words at once instead of making separate searches. For example, use 'function|method|procedure' to look for all of those words at once. Use includePattern to search within files matching a specific pattern, or in a specific file, using a relative path. Use 'includeIgnoredFiles' to include files normally ignored by .gitignore, other ignore files, and `files.exclude` and `search.exclude` settings. Warning: using this may cause the search to be slower, only set it when you want to search in ignored folders like node_modules or build outputs. Use this tool when you want to see an overview of a particular file, instead of using read_file many times to look for code within a file.", - "tags": [ - "vscode_codesearch" - ], - "inputSchema": { - "type": "object", - "properties": { - "query": { - "type": "string", - "description": "The pattern to search for in files in the workspace. Use regex with alternation (e.g., 'word1|word2|word3') or character classes to find multiple potential words in a single search. Be sure to set the isRegexp property properly to declare whether it's a regex or plain text pattern. Is case-insensitive." - }, - "isRegexp": { - "type": "boolean", - "description": "Whether the pattern is a regex." - }, - "includePattern": { - "type": "string", - "description": "Search files matching this glob pattern. Will be applied to the relative path of files within the workspace. To search recursively inside a folder, use a proper glob pattern like \"src/folder/**\". Do not use | in includePattern." - }, - "maxResults": { - "type": "number", - "description": "The maximum number of results to return. Do not use this unless necessary, it can slow things down. By default, only some matches are returned. If you use this and don't see what you're looking for, you can try again with a more specific query or a larger maxResults." - }, - "includeIgnoredFiles": { - "type": "boolean", - "description": "Whether to include files that would normally be ignored according to .gitignore, other ignore files and `files.exclude` and `search.exclude` settings. Warning: using this may cause the search to be slower. Only set it when you want to search in ignored folders like node_modules or build outputs." - } - }, - "required": [ - "query", - "isRegexp" - ] - } - }, - { - "name": "copilot_applyPatch", - "displayName": "%copilot.tools.applyPatch.name%", - "toolReferenceName": "applyPatch", - "userDescription": "%copilot.tools.applyPatch.description%", - "modelDescription": "Edit text files. Do not use this tool to edit Jupyter notebooks. `apply_patch` allows you to execute a diff/patch against a text file, but the format of the diff specification is unique to this task, so pay careful attention to these instructions. To use the `apply_patch` command, you should pass a message of the following structure as \"input\":\n\n*** Begin Patch\n[YOUR_PATCH]\n*** End Patch\n\nWhere [YOUR_PATCH] is the actual content of your patch, specified in the following V4A diff format.\n\n*** [ACTION] File: [/absolute/path/to/file] -> ACTION can be one of Add, Update, or Delete.\nAn example of a message that you might pass as \"input\" to this function, in order to apply a patch, is shown below.\n\n*** Begin Patch\n*** Update File: /Users/someone/pygorithm/searching/binary_search.py\n@@class BaseClass\n@@ def search():\n- pass\n+ raise NotImplementedError()\n\n@@class Subclass\n@@ def search():\n- pass\n+ raise NotImplementedError()\n\n*** End Patch\nDo not use line numbers in this diff format.", - "inputSchema": { - "type": "object", - "properties": { - "input": { - "type": "string", - "description": "The edit patch to apply." - }, - "explanation": { - "type": "string", - "description": "A short description of what the tool call is aiming to achieve." - } - }, - "required": [ - "input", - "explanation" - ] - } - }, - { - "name": "copilot_readFile", - "toolReferenceName": "readFile", - "legacyToolReferenceFullNames": [ - "search/readFile" - ], - "displayName": "%copilot.tools.readFile.name%", - "userDescription": "%copilot.tools.readFile.userDescription%", - "modelDescription": "Read the contents of a file.\n\nYou must specify the line range you're interested in. Line numbers are 1-indexed. If the file contents returned are insufficient for your task, you may call this tool again to retrieve more content. Prefer reading larger ranges over doing many small reads.", - "tags": [ - "vscode_codesearch" - ], - "inputSchema": { - "type": "object", - "properties": { - "filePath": { - "description": "The absolute path of the file to read.", - "type": "string" - }, - "startLine": { - "type": "number", - "description": "The line number to start reading from, 1-based." - }, - "endLine": { - "type": "number", - "description": "The inclusive line number to end reading at, 1-based." - } - }, - "required": [ - "filePath", - "startLine", - "endLine" - ] - } - }, - { - "name": "copilot_listDirectory", - "toolReferenceName": "listDirectory", - "displayName": "%copilot.tools.listDirectory.name%", - "userDescription": "%copilot.tools.listDirectory.userDescription%", - "modelDescription": "List the contents of a directory. Result will have the name of the child. If the name ends in /, it's a folder, otherwise a file", - "tags": [ - "vscode_codesearch" - ], - "inputSchema": { - "type": "object", - "properties": { - "path": { - "type": "string", - "description": "The absolute path to the directory to list." - } - }, - "required": [ - "path" - ] - } - }, - { - "name": "copilot_getErrors", - "displayName": "%copilot.tools.getErrors.name%", - "toolReferenceName": "problems", - "legacyToolReferenceFullNames": [ - "problems" - ], - "icon": "$(error)", - "userDescription": "%copilot.tools.errors.description%", - "modelDescription": "Get any compile or lint errors in a specific file or across all files. If the user mentions errors or problems in a file, they may be referring to these. Use the tool to see the same errors that the user is seeing. If the user asks you to analyze all errors, or does not specify a file, use this tool to gather errors for all files. Also use this tool after editing a file to validate the change.", - "tags": [], - "inputSchema": { - "type": "object", - "properties": { - "filePaths": { - "description": "The absolute paths to the files or folders to check for errors. Omit 'filePaths' when retrieving all errors.", - "type": "array", - "items": { - "type": "string" - } - } - } - } - }, - { - "name": "copilot_readProjectStructure", - "displayName": "%copilot.tools.readProjectStructure.name%", - "modelDescription": "Get a file tree representation of the workspace.", - "tags": [] - }, - { - "name": "copilot_getChangedFiles", - "displayName": "%copilot.tools.getChangedFiles.name%", - "toolReferenceName": "changes", - "legacyToolReferenceFullNames": [ - "changes" - ], - "icon": "$(diff)", - "userDescription": "%copilot.tools.changes.description%", - "modelDescription": "Get git diffs of current file changes in a git repository. Don't forget that you can use run_in_terminal to run git commands in a terminal as well.", - "tags": [ - "vscode_codesearch" - ], - "inputSchema": { - "type": "object", - "properties": { - "repositoryPath": { - "type": "string", - "description": "The absolute path to the git repository to look for changes in. If not provided, the active git repository will be used." - }, - "sourceControlState": { - "type": "array", - "items": { - "type": "string", - "enum": [ - "staged", - "unstaged", - "merge-conflicts" - ] - }, - "description": "The kinds of git state to filter by. Allowed values are: 'staged', 'unstaged', and 'merge-conflicts'. If not provided, all states will be included." - } - } - } - }, - { - "name": "copilot_testFailure", - "toolReferenceName": "testFailure", - "legacyToolReferenceFullNames": [ - "testFailure" - ], - "displayName": "%copilot.tools.testFailure.name%", - "icon": "$(beaker)", - "userDescription": "%copilot.testFailure.tool.description%", - "modelDescription": "Includes test failure information in the prompt.", - "inputSchema": {}, - "tags": [ - "vscode_editing_with_tests", - "enable_other_tool_copilot_readFile", - "enable_other_tool_copilot_listDirectory", - "enable_other_tool_copilot_findFiles", - "enable_other_tool_copilot_runTests" - ] - }, - { - "name": "copilot_updateUserPreferences", - "toolReferenceName": "updateUserPreferences", - "displayName": "%copilot.tools.updateUserPreferences.name%", - "modelDescription": "Update the user's preferences file with new information about the user and their coding preferences, based on the current chat history.", - "canBeReferencedInPrompt": true, - "tags": [], - "inputSchema": { - "type": "object", - "properties": { - "facts": { - "type": "array", - "items": { - "type": "string" - }, - "description": "An array of new user preferences to remember." - } - }, - "required": [ - "facts" - ] - }, - "when": "config.github.copilot.chat.enableUserPreferences" - }, - { - "name": "copilot_createNewWorkspace", - "displayName": "%github.copilot.tools.createNewWorkspace.name%", - "toolReferenceName": "newWorkspace", - "legacyToolReferenceFullNames": [ - "new/newWorkspace" - ], - "icon": "$(new-folder)", - "userDescription": "%github.copilot.tools.createNewWorkspace.userDescription%", - "when": "config.github.copilot.chat.newWorkspaceCreation.enabled", - "modelDescription": "Get comprehensive setup steps to help the user create complete project structures in a VS Code workspace. This tool is designed for full project initialization and scaffolding, not for creating individual files.\n\nWhen to use this tool:\n- User wants to create a new complete project from scratch\n- Setting up entire project frameworks (TypeScript projects, React apps, Node.js servers, etc.)\n- Initializing Model Context Protocol (MCP) servers with full structure\n- Creating VS Code extensions with proper scaffolding\n- Setting up Next.js, Vite, or other framework-based projects\n- User asks for \"new project\", \"create a workspace\", \"set up a [framework] project\"\n- Need to establish complete development environment with dependencies, config files, and folder structure\n\nWhen NOT to use this tool:\n- Creating single files or small code snippets\n- Adding individual files to existing projects\n- Making modifications to existing codebases\n- User asks to \"create a file\" or \"add a component\"\n- Simple code examples or demonstrations\n- Debugging or fixing existing code\n\nThis tool provides complete project setup including:\n- Folder structure creation\n- Package.json and dependency management\n- Configuration files (tsconfig, eslint, etc.)\n- Initial boilerplate code\n- Development environment setup\n- Build and run instructions\n\nUse other file creation tools for individual files within existing projects.", - "inputSchema": { - "type": "object", - "properties": { - "query": { - "type": "string", - "description": "The query to use to generate the new workspace. This should be a clear and concise description of the workspace the user wants to create." - } - }, - "required": [ - "query" - ] - }, - "tags": [ - "enable_other_tool_install_extension", - "enable_other_tool_get_project_setup_info" - ] - }, - { - "name": "copilot_getProjectSetupInfo", - "displayName": "%github.copilot.tools.getProjectSetupInfo.name%", - "when": "config.github.copilot.chat.newWorkspaceCreation.enabled", - "toolReferenceName": "getProjectSetupInfo", - "legacyToolReferenceFullNames": [ - "new/getProjectSetupInfo" - ], - "modelDescription": "Do not call this tool without first calling the tool to create a workspace. This tool provides a project setup information for a Visual Studio Code workspace based on a project type and programming language.", - "inputSchema": { - "type": "object", - "properties": { - "projectType": { - "type": "string", - "description": "The type of project to create. Supported values are: 'python-script', 'python-project', 'mcp-server', 'model-context-protocol-server', 'vscode-extension', 'next-js', 'vite' and 'other'" - } - }, - "required": [ - "projectType" - ] - }, - "tags": [] - }, - { - "name": "copilot_installExtension", - "displayName": "Install Extension in VS Code", - "when": "config.github.copilot.chat.newWorkspaceCreation.enabled", - "toolReferenceName": "installExtension", - "legacyToolReferenceFullNames": [ - "new/installExtension" - ], - "modelDescription": "Install an extension in VS Code. Use this tool to install an extension in Visual Studio Code as part of a new workspace creation process only.", - "inputSchema": { - "type": "object", - "properties": { - "id": { - "type": "string", - "description": "The ID of the extension to install. This should be in the format .." - }, - "name": { - "type": "string", - "description": "The name of the extension to install. This should be a clear and concise description of the extension." - } - }, - "required": [ - "id", - "name" - ] - }, - "tags": [] - }, - { - "name": "copilot_runVscodeCommand", - "displayName": "Run VS Code Command", - "when": "config.github.copilot.chat.newWorkspaceCreation.enabled", - "toolReferenceName": "runCommand", - "legacyToolReferenceFullNames": [ - "new/runVscodeCommand" - ], - "modelDescription": "Run a command in VS Code. Use this tool to run a command in Visual Studio Code as part of a new workspace creation process only.", - "inputSchema": { - "type": "object", - "properties": { - "commandId": { - "type": "string", - "description": "The ID of the command to execute. This should be in the format ." - }, - "name": { - "type": "string", - "description": "The name of the command to execute. This should be a clear and concise description of the command." - }, - "args": { - "type": "array", - "description": "The arguments to pass to the command. This should be an array of strings.", - "items": { - "type": "string" - } - } - }, - "required": [ - "commandId", - "name" - ] - }, - "tags": [] - }, - { - "name": "copilot_createNewJupyterNotebook", - "displayName": "Create New Jupyter Notebook", - "icon": "$(notebook)", - "toolReferenceName": "createJupyterNotebook", - "legacyToolReferenceFullNames": [ - "newJupyterNotebook" - ], - "modelDescription": "Generates a new Jupyter Notebook (.ipynb) in VS Code. Jupyter Notebooks are interactive documents commonly used for data exploration, analysis, visualization, and combining code with narrative text. Prefer creating plain Python files or similar unless a user explicitly requests creating a new Jupyter Notebook or already has a Jupyter Notebook opened or exists in the workspace.", - "userDescription": "%copilot.tools.newJupyterNotebook.description%", - "inputSchema": { - "type": "object", - "properties": { - "query": { - "type": "string", - "description": "The query to use to generate the jupyter notebook. This should be a clear and concise description of the notebook the user wants to create." - } - }, - "required": [ - "query" - ] - }, - "tags": [] - }, - { - "name": "copilot_insertEdit", - "toolReferenceName": "insertEdit", - "displayName": "%copilot.tools.insertEdit.name%", - "modelDescription": "Insert new code into an existing file in the workspace. Use this tool once per file that needs to be modified, even if there are multiple changes for a file. Generate the \"explanation\" property first.\nThe system is very smart and can understand how to apply your edits to the files, you just need to provide minimal hints.\nAvoid repeating existing code, instead use comments to represent regions of unchanged code. Be as concise as possible. For example:\n// ...existing code...\n{ changed code }\n// ...existing code...\n{ changed code }\n// ...existing code...\n\nHere is an example of how you should use format an edit to an existing Person class:\nclass Person {\n\t// ...existing code...\n\tage: number;\n\t// ...existing code...\n\tgetAge() {\n\treturn this.age;\n\t}\n}", - "tags": [], - "inputSchema": { - "type": "object", - "properties": { - "explanation": { - "type": "string", - "description": "A short explanation of the edit being made." - }, - "filePath": { - "type": "string", - "description": "An absolute path to the file to edit." - }, - "code": { - "type": "string", - "description": "The code change to apply to the file.\nThe system is very smart and can understand how to apply your edits to the files, you just need to provide minimal hints.\nAvoid repeating existing code, instead use comments to represent regions of unchanged code. Be as concise as possible. For example:\n// ...existing code...\n{ changed code }\n// ...existing code...\n{ changed code }\n// ...existing code...\n\nHere is an example of how you should use format an edit to an existing Person class:\nclass Person {\n\t// ...existing code...\n\tage: number;\n\t// ...existing code...\n\tgetAge() {\n\t\treturn this.age;\n\t}\n}" - } - }, - "required": [ - "explanation", - "filePath", - "code" - ] - } - }, - { - "name": "copilot_createFile", - "toolReferenceName": "createFile", - "legacyToolReferenceFullNames": [ - "createFile" - ], - "displayName": "%copilot.tools.createFile.name%", - "userDescription": "%copilot.tools.createFile.description%", - "modelDescription": "This is a tool for creating a new file in the workspace. The file will be created with the specified content. The directory will be created if it does not already exist. Never use this tool to edit a file that already exists.", - "tags": [], - "inputSchema": { - "type": "object", - "properties": { - "filePath": { - "type": "string", - "description": "The absolute path to the file to create." - }, - "content": { - "type": "string", - "description": "The content to write to the file." - } - }, - "required": [ - "filePath", - "content" - ] - } - }, - { - "name": "copilot_createDirectory", - "toolReferenceName": "createDirectory", - "legacyToolReferenceFullNames": [ - "createDirectory" - ], - "displayName": "%copilot.tools.createDirectory.name%", - "userDescription": "%copilot.tools.createDirectory.description%", - "modelDescription": "Create a new directory structure in the workspace. Will recursively create all directories in the path, like mkdir -p. You do not need to use this tool before using create_file, that tool will automatically create the needed directories.", - "tags": [], - "inputSchema": { - "type": "object", - "properties": { - "dirPath": { - "type": "string", - "description": "The absolute path to the directory to create." - } - }, - "required": [ - "dirPath" - ] - } - }, - { - "name": "copilot_openSimpleBrowser", - "displayName": "%copilot.tools.openSimpleBrowser.name%", - "modelDescription": "Preview a website or open a URL in the editor's Simple Browser. Useful for quickly viewing locally hosted websites, demos, or resources without leaving the coding environment.", - "userDescription": "%copilot.tools.openSimpleBrowser.description%", - "toolReferenceName": "openSimpleBrowser", - "legacyToolReferenceFullNames": [ - "openSimpleBrowser" - ], - "tags": [], - "inputSchema": { - "type": "object", - "properties": { - "url": { - "type": "string", - "description": "The website URL to preview or open in the Simple Browser inside the editor. Must be either an http or https URL" - } - }, - "required": [ - "url" - ] - } - }, - { - "name": "copilot_replaceString", - "toolReferenceName": "replaceString", - "displayName": "%copilot.tools.replaceString.name%", - "modelDescription": "This is a tool for making edits in an existing file in the workspace. For moving or renaming files, use run in terminal tool with the 'mv' command instead. For larger edits, split them into smaller edits and call the edit tool multiple times to ensure accuracy. Before editing, always ensure you have the context to understand the file's contents and context. To edit a file, provide: 1) filePath (absolute path), 2) oldString (MUST be the exact literal text to replace including all whitespace, indentation, newlines, and surrounding code etc), and 3) newString (MUST be the exact literal text to replace \\`oldString\\` with (also including all whitespace, indentation, newlines, and surrounding code etc.). Ensure the resulting code is correct and idiomatic.). Each use of this tool replaces exactly ONE occurrence of oldString.\n\nCRITICAL for \\`oldString\\`: Must uniquely identify the single instance to change. Include at least 3 lines of context BEFORE and AFTER the target text, matching whitespace and indentation precisely. If this string matches multiple locations, or does not match exactly, the tool will fail. Never use 'Lines 123-456 omitted' from summarized documents or ...existing code... comments in the oldString or newString.", - "when": "!config.github.copilot.chat.disableReplaceTool", - "inputSchema": { - "type": "object", - "properties": { - "filePath": { - "type": "string", - "description": "An absolute path to the file to edit." - }, - "oldString": { - "type": "string", - "description": "The exact literal text to replace, preferably unescaped. For single replacements (default), include at least 3 lines of context BEFORE and AFTER the target text, matching whitespace and indentation precisely. For multiple replacements, specify expected_replacements parameter. If this string is not the exact literal text (i.e. you escaped it) or does not match exactly, the tool will fail." - }, - "newString": { - "type": "string", - "description": "The exact literal text to replace `old_string` with, preferably unescaped. Provide the EXACT text. Ensure the resulting code is correct and idiomatic." - } - }, - "required": [ - "filePath", - "oldString", - "newString" - ] - } - }, - { - "name": "copilot_multiReplaceString", - "toolReferenceName": "multiReplaceString", - "displayName": "%copilot.tools.multiReplaceString.name%", - "modelDescription": "This tool allows you to apply multiple replace_string_in_file operations in a single call, which is more efficient than calling replace_string_in_file multiple times. It takes an array of replacement operations and applies them sequentially. Each replacement operation has the same parameters as replace_string_in_file: filePath, oldString, newString, and explanation. This tool is ideal when you need to make multiple edits across different files or multiple edits in the same file. The tool will provide a summary of successful and failed operations.", - "when": "!config.github.copilot.chat.disableReplaceTool", - "inputSchema": { - "type": "object", - "properties": { - "explanation": { - "type": "string", - "description": "A brief explanation of what the multi-replace operation will accomplish." - }, - "replacements": { - "type": "array", - "description": "An array of replacement operations to apply sequentially.", - "items": { - "type": "object", - "properties": { - "explanation": { - "type": "string", - "description": "A brief explanation of this specific replacement operation." - }, - "filePath": { - "type": "string", - "description": "An absolute path to the file to edit." - }, - "oldString": { - "type": "string", - "description": "The exact literal text to replace, preferably unescaped. Include at least 3 lines of context BEFORE and AFTER the target text, matching whitespace and indentation precisely. If this string is not the exact literal text or does not match exactly, this replacement will fail." - }, - "newString": { - "type": "string", - "description": "The exact literal text to replace `oldString` with, preferably unescaped. Provide the EXACT text. Ensure the resulting code is correct and idiomatic." - } - }, - "required": [ - "explanation", - "filePath", - "oldString", - "newString" - ] - }, - "minItems": 1 - } - }, - "required": [ - "explanation", - "replacements" - ] - } - }, - { - "name": "copilot_editNotebook", - "toolReferenceName": "editNotebook", - "icon": "$(pencil)", - "displayName": "%copilot.tools.editNotebook.name%", - "userDescription": "%copilot.tools.editNotebook.userDescription%", - "modelDescription": "This is a tool for editing an existing Notebook file in the workspace. Generate the \"explanation\" property first.\nThe system is very smart and can understand how to apply your edits to the notebooks.\nWhen updating the content of an existing cell, ensure newCode preserves whitespace and indentation exactly and does NOT include any code markers such as (...existing code...).", - "tags": [ - "enable_other_tool_copilot_getNotebookSummary" - ], - "inputSchema": { - "type": "object", - "properties": { - "filePath": { - "type": "string", - "description": "An absolute path to the notebook file to edit, or the URI of a untitled, not yet named, file, such as `untitled:Untitled-1." - }, - "cellId": { - "type": "string", - "description": "Id of the cell that needs to be deleted or edited. Use the value `TOP`, `BOTTOM` when inserting a cell at the top or bottom of the notebook, else provide the id of the cell after which a new cell is to be inserted. Remember, if a cellId is provided and editType=insert, then a cell will be inserted after the cell with the provided cellId." - }, - "newCode": { - "anyOf": [ - { - "type": "string", - "description": "The code for the new or existing cell to be edited. Code should not be wrapped within tags. Do NOT include code markers such as (...existing code...) to indicate existing code." - }, - { - "type": "array", - "items": { - "type": "string", - "description": "The code for the new or existing cell to be edited. Code should not be wrapped within tags" - } - } - ] - }, - "language": { - "type": "string", - "description": "The language of the cell. `markdown`, `python`, `javascript`, `julia`, etc." - }, - "editType": { - "type": "string", - "enum": [ - "insert", - "delete", - "edit" - ], - "description": "The operation peformed on the cell, whether `insert`, `delete` or `edit`.\nUse the `editType` field to specify the operation: `insert` to add a new cell, `edit` to modify an existing cell's content, and `delete` to remove a cell." - } - }, - "required": [ - "filePath", - "editType", - "cellId" - ] - } - }, - { - "name": "copilot_runNotebookCell", - "displayName": "%copilot.tools.runNotebookCell.name%", - "toolReferenceName": "runNotebookCell", - "legacyToolReferenceFullNames": [ - "runNotebooks/runCell" - ], - "icon": "$(play)", - "modelDescription": "This is a tool for running a code cell in a notebook file directly in the notebook editor. The output from the execution will be returned. Code cells should be run as they are added or edited when working through a problem to bring the kernel state up to date and ensure the code executes successfully. Code cells are ready to run and don't require any pre-processing. If asked to run the first cell in a notebook, you should run the first code cell since markdown cells cannot be executed. NOTE: Avoid executing Markdown cells or providing Markdown cell IDs, as Markdown cells cannot be executed.", - "userDescription": "%copilot.tools.runNotebookCell.description%", - "tags": [ - "enable_other_tool_copilot_getNotebookSummary" - ], - "inputSchema": { - "type": "object", - "properties": { - "filePath": { - "type": "string", - "description": "An absolute path to the notebook file with the cell to run, or the URI of a untitled, not yet named, file, such as `untitled:Untitled-1.ipynb" - }, - "reason": { - "type": "string", - "description": "An optional explanation of why the cell is being run. This will be shown to the user before the tool is run and is not necessary if it's self-explanatory." - }, - "cellId": { - "type": "string", - "description": "The ID for the code cell to execute. Avoid providing markdown cell IDs as nothing will be executed." - }, - "continueOnError": { - "type": "boolean", - "description": "Whether or not execution should continue for remaining cells if an error is encountered. Default to false unless instructed otherwise." - } - }, - "required": [ - "filePath", - "cellId" - ] - } - }, - { - "name": "copilot_getNotebookSummary", - "toolReferenceName": "getNotebookSummary", - "legacyToolReferenceFullNames": [ - "runNotebooks/getNotebookSummary" - ], - "displayName": "Get the structure of a notebook", - "modelDescription": "This is a tool returns the list of the Notebook cells along with the id, cell types, line ranges, language, execution information and output mime types for each cell. This is useful to get Cell Ids when executing a notebook or determine what cells have been executed and what order, or what cells have outputs. If required to read contents of a cell use this to determine the line range of a cells, and then use read_file tool to read a specific line range. Requery this tool if the contents of the notebook change.", - "tags": [], - "inputSchema": { - "type": "object", - "properties": { - "filePath": { - "type": "string", - "description": "An absolute path to the notebook file with the cell to run, or the URI of a untitled, not yet named, file, such as `untitled:Untitled-1.ipynb" - } - }, - "required": [ - "filePath" - ] - } - }, - { - "name": "copilot_readNotebookCellOutput", - "displayName": "%copilot.tools.getNotebookCellOutput.name%", - "toolReferenceName": "readNotebookCellOutput", - "legacyToolReferenceFullNames": [ - "runNotebooks/readNotebookCellOutput" - ], - "icon": "$(notebook-render-output)", - "modelDescription": "This tool will retrieve the output for a notebook cell from its most recent execution or restored from disk. The cell may have output even when it has not been run in the current kernel session. This tool has a higher token limit for output length than the runNotebookCell tool.", - "userDescription": "%copilot.tools.getNotebookCellOutput.description%", - "when": "userHasOpenedNotebook", - "tags": [], - "inputSchema": { - "type": "object", - "properties": { - "filePath": { - "type": "string", - "description": "An absolute path to the notebook file with the cell to run, or the URI of a untitled, not yet named, file, such as `untitled:Untitled-1.ipynb" - }, - "cellId": { - "type": "string", - "description": "The ID of the cell for which output should be retrieved." - } - }, - "required": [ - "filePath", - "cellId" - ] - } - }, - { - "name": "copilot_fetchWebPage", - "displayName": "%copilot.tools.fetchWebPage.name%", - "toolReferenceName": "fetch", - "legacyToolReferenceFullNames": [ - "fetch" - ], - "when": "!isWeb", - "icon": "$(globe)", - "userDescription": "%copilot.tools.fetchWebPage.description%", - "modelDescription": "Fetches the main content from a web page. This tool is useful for summarizing or analyzing the content of a webpage. You should use this tool when you think the user is looking for information from a specific webpage.", - "tags": [], - "inputSchema": { - "type": "object", - "properties": { - "urls": { - "type": "array", - "items": { - "type": "string" - }, - "description": "An array of URLs to fetch content from." - }, - "query": { - "type": "string", - "description": "The query to search for in the web page's content. This should be a clear and concise description of the content you want to find." - } - }, - "required": [ - "urls", - "query" - ] - } - }, - { - "name": "copilot_findTestFiles", - "displayName": "%copilot.tools.findTestFiles.name%", - "icon": "$(beaker)", - "canBeReferencedInPrompt": false, - "toolReferenceName": "findTestFiles", - "userDescription": "%copilot.tools.findTestFiles.description%", - "modelDescription": "For a source code file, find the file that contains the tests. For a test file find the file that contains the code under test.", - "tags": [], - "inputSchema": { - "type": "object", - "properties": { - "filePaths": { - "type": "array", - "items": { - "type": "string" - } - } - }, - "required": [ - "filePaths" - ] - } - }, - { - "name": "copilot_getDocInfo", - "displayName": "%copilot.tools.getDocInfo.name%", - "icon": "$(beaker)", - "canBeReferencedInPrompt": false, - "toolReferenceName": "docInfo", - "userDescription": "%copilot.tools.getDocInfo.description%", - "modelDescription": "Find information about how to document it a symbol like a class or function. This tool is useful for generating documentation comments for code symbols. You should use this tool when you think the user is looking for information about how to document a specific code symbol.", - "tags": [], - "inputSchema": { - "type": "object", - "properties": { - "filePaths": { - "type": "array", - "items": { - "type": "string" - }, - "description": "The file paths for which documentation information is needed." - } - }, - "required": [ - "filePaths" - ] - } - }, - { - "name": "copilot_getSearchResults", - "toolReferenceName": "searchResults", - "displayName": "%github.copilot.tools.searchResults.name%", - "icon": "$(search)", - "userDescription": "%github.copilot.tools.searchResults.description%", - "modelDescription": "The results from the search view" - }, - { - "name": "copilot_githubRepo", - "toolReferenceName": "githubRepo", - "legacyToolReferenceFullNames": [ - "githubRepo" - ], - "displayName": "%github.copilot.tools.githubRepo.name%", - "modelDescription": "Searches a GitHub repository for relevant source code snippets. Only use this tool if the user is very clearly asking for code snippets from a specific GitHub repository. Do not use this tool for Github repos that the user has open in their workspace.", - "userDescription": "%github.copilot.tools.githubRepo.userDescription%", - "icon": "$(repo)", - "when": "!config.github.copilot.chat.githubMcpServer.enabled", - "inputSchema": { - "type": "object", - "properties": { - "repo": { - "type": "string", - "description": "The name of the Github repository to search for code in. Should must be formatted as '/'." - }, - "query": { - "type": "string", - "description": "The query to search for repo. Should contain all relevant context." - } - }, - "required": [ - "repo", - "query" - ] - } - }, - { - "name": "copilot_toolReplay", - "modelDescription": "Replays a tool call from a previous chat session.", - "displayName": "tool replay", - "when": "false", - "inputSchema": { - "type": "object", - "properties": { - "toolCallId": { - "type": "string", - "description": "the id of the tool original tool call" - }, - "toolName": { - "type": "string", - "description": "the name of the tool being replayed" - }, - "toolCallArgs": { - "type": "object", - "description": "the arguments of the tool call" - } - } - } - }, - { - "name": "copilot_memory", - "toolReferenceName": "memory", - "displayName": "%copilot.tools.memory.name%", - "userDescription": "%copilot.tools.memory.description%", - "modelDescription": "Manage persistent memory across conversations. This tool allows you to create, view, update, and delete memory files that persist between chat sessions. Use this to remember important information about the user, their preferences, project context, or anything that should be recalled in future conversations. Available commands: view (list/read memories), create (new memory file), str_replace (edit content), insert (add content), delete (remove memory), rename (change filename).", - "icon": "$(database)", - "when": "config.github.copilot.chat.tools.memory.enabled", - "canBeReferencedInPrompt": true, - "tags": [], - "inputSchema": { - "type": "object", - "properties": { - "command": { - "type": "string", - "enum": [ - "view", - "create", - "str_replace", - "insert", - "delete", - "rename" - ], - "description": "The memory operation to perform:\n- view: Show directory contents or file contents (optional line ranges)\n- create: Create or overwrite a file\n- str_replace: Replace text in a file\n- insert: Insert text at a specific line\n- delete: Delete a file or directory\n- rename: Rename or move a file or directory" - }, - "path": { - "type": "string", - "description": "Path to the memory file or directory. Must start with /memories.\n- For view: /memories or /memories/file.md\n- For create/str_replace/insert/delete: /memories/file.md\n- Not used for rename (use old_path/new_path instead)" - }, - "view_range": { - "type": "array", - "items": { - "type": "number" - }, - "minItems": 2, - "maxItems": 2, - "description": "[view only] Optional line range [start, end] to view specific lines. Example: [1, 10]" - }, - "file_text": { - "type": "string", - "description": "[create only] Content to write to the file. Required for create command." - }, - "old_str": { - "type": "string", - "description": "[str_replace only] The exact literal text to find and replace. Must be unique in the file. Required for str_replace command." - }, - "new_str": { - "type": "string", - "description": "[str_replace only] The exact literal text to replace old_str with. Can be empty string. Required for str_replace command." - }, - "insert_line": { - "type": "number", - "description": "[insert only] Line number at which to insert text (0-indexed, 0 = before first line). Required for insert command." - }, - "insert_text": { - "type": "string", - "description": "[insert only] Text to insert at the specified line. Required for insert command." - }, - "old_path": { - "type": "string", - "description": "[rename only] Current path of the file or directory. Must start with /memories. Required for rename command." - }, - "new_path": { - "type": "string", - "description": "[rename only] New path for the file or directory. Must start with /memories. Required for rename command." - } - }, - "required": [ - "command" - ] - } - }, - { - "name": "copilot_editFiles", - "modelDescription": "This is a placeholder tool, do not use", - "userDescription": "Edit files", - "icon": "$(pencil)", - "displayName": "Edit Files", - "toolReferenceName": "editFiles", - "legacyToolReferenceFullNames": [ - "editFiles" - ] - } - ], - "languageModelToolSets": [ - { - "name": "edit", - "description": "%copilot.toolSet.editing.description%", - "icon": "$(pencil)", - "tools": [ - "createDirectory", - "createFile", - "createJupyterNotebook", - "editFiles", - "editNotebook" - ] - }, - { - "name": "execute", - "description": "", - "tools": [ - "runNotebookCell", - "testFailure" - ] - }, - { - "name": "read", - "description": "%copilot.toolSet.read.description%", - "icon": "$(eye)", - "tools": [ - "getNotebookSummary", - "problems", - "readFile", - "readNotebookCellOutput" - ] - }, - { - "name": "search", - "description": "%copilot.toolSet.search.description%", - "icon": "$(search)", - "tools": [ - "changes", - "codebase", - "fileSearch", - "listDirectory", - "searchResults", - "textSearch", - "usages" - ] - }, - { - "name": "vscode", - "description": "", - "tools": [ - "getProjectSetupInfo", - "installExtension", - "newWorkspace", - "openSimpleBrowser", - "runCommand", - "vscodeAPI" - ] - }, - { - "name": "web", - "description": "%copilot.toolSet.web.description%", - "icon": "$(globe)", - "tools": [ - "fetch", - "githubRepo" - ] - } - ], - "chatParticipants": [ - { - "id": "github.copilot.default", - "name": "GitHubCopilot", - "fullName": "GitHub Copilot", - "description": "%copilot.description%", - "isDefault": true, - "locations": [ - "panel" - ], - "modes": [ - "ask" - ], - "disambiguation": [ - { - "category": "generate_code_sample", - "description": "The user wants to generate code snippets without referencing the contents of the current workspace. This category does not include generating entire projects.", - "examples": [ - "Write an example of computing a SHA256 hash." - ] - }, - { - "category": "add_feature_to_file", - "description": "The user wants to change code in a file that is provided in their request, without referencing the contents of the current workspace. This category does not include generating entire projects.", - "examples": [ - "Add a refresh button to the table widget." - ] - }, - { - "category": "question_about_specific_files", - "description": "The user has a question about a specific file or code snippet that they have provided as part of their query, and the question does not require additional workspace context to answer.", - "examples": [ - "What does this file do?" - ] - } - ] - }, - { - "id": "github.copilot.editingSession", - "name": "GitHubCopilot", - "fullName": "GitHub Copilot", - "description": "%copilot.edits.description%", - "isDefault": true, - "locations": [ - "panel" - ], - "modes": [ - "edit" - ], - "when": "!config.chat.edits2.enabled" - }, - { - "id": "github.copilot.editingSessionEditor", - "name": "GitHubCopilot", - "fullName": "GitHub Copilot", - "description": "%copilot.edits.description%", - "isDefault": true, - "locations": [ - "editor" - ], - "commands": [ - { - "name": "generate", - "when": "!config.inlineChat.enableV2", - "description": "%copilot.workspace.generate.description%", - "disambiguation": [ - { - "category": "generate", - "description": "Generate new code", - "examples": [ - "Add a function that returns the sum of two numbers" - ] - } - ] - }, - { - "name": "edit", - "when": "!config.inlineChat.enableV2", - "description": "%copilot.workspace.edit.inline.description%", - "disambiguation": [ - { - "category": "edit", - "description": "Make changes to existing code", - "examples": [ - "Change this method to use async/await" - ] - } - ] - }, - { - "name": "doc", - "when": "!config.inlineChat.enableV2", - "description": "%copilot.workspace.doc.description%", - "disambiguation": [ - { - "category": "doc", - "description": "Add documentation comment for this symbol", - "examples": [ - "Add jsdoc to this method" - ] - } - ] - }, - { - "name": "fix", - "when": "!config.inlineChat.enableV2", - "description": "%copilot.workspace.fix.description%", - "disambiguation": [ - { - "category": "fix", - "description": "Propose a fix for the problems in the selected code", - "examples": [ - "There is a problem in this code. Rewrite the code to show it with the bug fixed." - ] - } - ] - }, - { - "name": "tests", - "when": "!config.inlineChat.enableV2", - "description": "%copilot.workspace.tests.description%", - "disambiguation": [ - { - "category": "tests", - "description": "Generate unit tests for the selected code. The user does not want to fix their existing tests.", - "examples": [ - "Write a set of detailed unit test functions for the code above." - ] - } - ] - } - ] - }, - { - "id": "github.copilot.editingSession2", - "name": "GitHubCopilot", - "fullName": "GitHub Copilot", - "description": "%copilot.edits.description%", - "isDefault": true, - "locations": [ - "panel" - ], - "modes": [ - "edit" - ], - "when": "config.chat.edits2.enabled" - }, - { - "id": "github.copilot.editsAgent", - "name": "agent", - "fullName": "GitHub Copilot", - "description": "%copilot.agent.description%", - "locations": [ - "panel" - ], - "modes": [ - "agent" - ], - "isEngine": true, - "isDefault": true, - "isAgent": true, - "when": "config.chat.agent.enabled", - "commands": [ - { - "name": "error", - "description": "Make a model request which will result in an error", - "when": "github.copilot.chat.debug" - } - ] - }, - { - "id": "github.copilot.notebook", - "name": "GitHubCopilot", - "fullName": "GitHub Copilot", - "description": "%copilot.description%", - "isDefault": true, - "locations": [ - "notebook" - ], - "when": "!config.inlineChat.notebookAgent", - "commands": [ - { - "name": "fix", - "description": "%copilot.workspace.fix.description%" - }, - { - "name": "explain", - "description": "%copilot.workspace.explain.description%" - } - ] - }, - { - "id": "github.copilot.notebookEditorAgent", - "name": "GitHubCopilot", - "fullName": "GitHub Copilot", - "description": "%copilot.description%", - "isDefault": true, - "locations": [ - "notebook" - ], - "when": "config.inlineChat.notebookAgent", - "commands": [ - { - "name": "fix", - "description": "%copilot.workspace.fix.description%" - }, - { - "name": "explain", - "description": "%copilot.workspace.explain.description%" - } - ] - }, - { - "id": "github.copilot.workspace", - "name": "workspace", - "fullName": "Workspace", - "description": "%copilot.workspace.description%", - "when": "!github.copilot.interactiveSession.disabled", - "sampleRequest": "%copilot.workspace.sampleRequest%", - "locations": [ - "panel" - ], - "disambiguation": [ - { - "category": "workspace_project_questions", - "description": "The user wants to learn about or update the code or files in their current workspace. Questions in this category may be about understanding what the whole workspace does or locating the implementation of some code. This does not include generating or updating tests.", - "examples": [ - "What does this project do?" - ] - }, - { - "category": "find_code_in_workspace", - "description": "The user wants to locate the implementation of some functionality in their current workspace.", - "examples": [ - "Where is the tree widget implemented?" - ] - }, - { - "category": "generate_with_workspace_context", - "description": "The user wants to generate code based on multiple files in the workspace and did not specify which files to reference.", - "examples": [ - "Create a README for this project." - ] - } - ], - "commands": [ - { - "name": "explain", - "description": "%copilot.workspace.explain.description%" - }, - { - "name": "review", - "description": "%copilot.workspace.review.description%", - "when": "github.copilot.advanced.review.intent" - }, - { - "name": "tests", - "description": "%copilot.workspace.tests.description%", - "disambiguation": [ - { - "category": "create_tests", - "description": "The user wants to generate unit tests.", - "examples": [ - "Generate tests for my selection using pytest." - ] - } - ] - }, - { - "name": "fix", - "description": "%copilot.workspace.fix.description%", - "sampleRequest": "%copilot.workspace.fix.sampleRequest%" - }, - { - "name": "new", - "description": "%copilot.workspace.new.description%", - "sampleRequest": "%copilot.workspace.new.sampleRequest%", - "isSticky": true, - "disambiguation": [ - { - "category": "create_new_workspace_or_extension", - "description": "The user wants to create a complete Visual Studio Code workspace from scratch, such as a new application or a Visual Studio Code extension. Use this category only if the question relates to generating or creating new workspaces in Visual Studio Code. Do not use this category for updating existing code or generating sample code snippets", - "examples": [ - "Scaffold a Node server.", - "Create a sample project which uses the fileSystemProvider API.", - "react application" - ] - } - ] - }, - { - "name": "newNotebook", - "description": "%copilot.workspace.newNotebook.description%", - "sampleRequest": "%copilot.workspace.newNotebook.sampleRequest%", - "disambiguation": [ - { - "category": "create_jupyter_notebook", - "description": "The user wants to create a new Jupyter notebook in Visual Studio Code.", - "examples": [ - "Create a notebook to analyze this CSV file." - ] - } - ] - }, - { - "name": "semanticSearch", - "description": "%copilot.workspace.semanticSearch.description%", - "sampleRequest": "%copilot.workspace.semanticSearch.sampleRequest%", - "when": "config.github.copilot.semanticSearch.enabled" - }, - { - "name": "setupTests", - "description": "%copilot.vscode.setupTests.description%", - "sampleRequest": "%copilot.vscode.setupTests.sampleRequest%", - "when": "config.github.copilot.chat.setupTests.enabled", - "disambiguation": [ - { - "category": "set_up_tests", - "description": "The user wants to configure project test setup, framework, or test runner. The user does not want to fix their existing tests.", - "examples": [ - "Set up tests for this project." - ] - } - ] - } - ] - }, - { - "id": "github.copilot.vscode", - "name": "vscode", - "fullName": "VS Code", - "description": "%copilot.vscode.description%", - "when": "!github.copilot.interactiveSession.disabled", - "sampleRequest": "%copilot.vscode.sampleRequest%", - "locations": [ - "panel" - ], - "disambiguation": [ - { - "category": "vscode_configuration_questions", - "description": "The user wants to learn about, use, or configure the Visual Studio Code. Use this category if the users question is specifically about commands, settings, keybindings, extensions and other features available in Visual Studio Code. Do not use this category to answer questions about generating code or creating new projects including Visual Studio Code extensions.", - "examples": [ - "Switch to light mode.", - "Keyboard shortcut to toggle terminal visibility.", - "Settings to enable minimap.", - "Whats new in the latest release?" - ] - }, - { - "category": "configure_python_environment", - "description": "The user wants to set up their Python environment.", - "examples": [ - "Create a virtual environment for my project." - ] - } - ], - "commands": [ - { - "name": "search", - "description": "%copilot.vscode.search.description%", - "sampleRequest": "%copilot.vscode.search.sampleRequest%" - } - ] - }, - { - "id": "github.copilot.terminal", - "name": "terminal", - "fullName": "Terminal", - "description": "%copilot.terminal.description%", - "when": "!github.copilot.interactiveSession.disabled", - "sampleRequest": "%copilot.terminal.sampleRequest%", - "isDefault": true, - "locations": [ - "terminal" - ], - "commands": [ - { - "name": "explain", - "description": "%copilot.terminal.explain.description%", - "sampleRequest": "%copilot.terminal.explain.sampleRequest%" - } - ] - }, - { - "id": "github.copilot.terminalPanel", - "name": "terminal", - "fullName": "Terminal", - "description": "%copilot.terminalPanel.description%", - "when": "!github.copilot.interactiveSession.disabled", - "sampleRequest": "%copilot.terminal.sampleRequest%", - "locations": [ - "panel" - ], - "commands": [ - { - "name": "explain", - "description": "%copilot.terminal.explain.description%", - "sampleRequest": "%copilot.terminal.explain.sampleRequest%", - "disambiguation": [ - { - "category": "terminal_state_questions", - "description": "The user wants to learn about specific state such as the selection, command, or failed command in the integrated terminal in Visual Studio Code.", - "examples": [ - "Why did the latest terminal command fail?" - ] - } - ] - } - ] - }, - { - "id": "github.copilot.chatReplay", - "name": "chatReplay", - "fullName": "Chat Replay", - "when": "debugType == 'vscode-chat-replay'", - "locations": [ - "panel" - ] - } - ], - "languageModelChatProviders": [ - { - "vendor": "copilot", - "displayName": "Copilot" - }, - { - "vendor": "azure", - "displayName": "Azure", - "managementCommand": "github.copilot.chat.manageBYOK" - }, - { - "vendor": "anthropic", - "displayName": "Anthropic", - "managementCommand": "github.copilot.chat.manageBYOK" - }, - { - "vendor": "xai", - "displayName": "xAI", - "managementCommand": "github.copilot.chat.manageBYOK" - }, - { - "vendor": "ollama", - "displayName": "Ollama" - }, - { - "vendor": "openai", - "displayName": "OpenAI", - "managementCommand": "github.copilot.chat.manageBYOK" - }, - { - "vendor": "gemini", - "displayName": "Google", - "managementCommand": "github.copilot.chat.manageBYOK" - }, - { - "vendor": "groq", - "displayName": "Groq", - "managementCommand": "github.copilot.chat.manageBYOK" - }, - { - "vendor": "openrouter", - "displayName": "OpenRouter", - "managementCommand": "github.copilot.chat.manageBYOK" - }, - { - "vendor": "customoai", - "when": "productQualityType != 'stable'", - "displayName": "OpenAI Compatible", - "managementCommand": "github.copilot.chat.manageBYOK" - } - ], - "interactiveSession": [ - { - "label": "GitHub Copilot", - "id": "copilot", - "icon": "", - "when": "!github.copilot.interactiveSession.disabled" - } - ], - "mcpServerDefinitionProviders": [ - { - "id": "github", - "label": "GitHub" - } - ], - "viewsWelcome": [ - { - "view": "debug", - "when": "github.copilot-chat.activated", - "contents": "%github.copilot.viewsWelcome.debug%" - } - ], - "chatViewsWelcome": [ - { - "icon": "$(chat-sparkle)", - "title": "%copilot.title%", - "content": "%github.copilot.viewsWelcome.individual.expired%", - "when": "github.copilot.interactiveSession.individual.expired" - }, - { - "icon": "$(chat-sparkle)", - "title": "%copilot.title%", - "content": "%github.copilot.viewsWelcome.enterprise%", - "when": "github.copilot.interactiveSession.enterprise.disabled" - }, - { - "icon": "$(chat-sparkle)", - "title": "%copilot.title%", - "content": "%github.copilot.viewsWelcome.offline%", - "when": "github.copilot.offline" - }, - { - "icon": "$(chat-sparkle)", - "title": "%copilot.title%", - "content": "%github.copilot.viewsWelcome.contactSupport%", - "when": "github.copilot.interactiveSession.contactSupport" - }, - { - "icon": "$(chat-sparkle)", - "title": "%copilot.title%", - "content": "%github.copilot.viewsWelcome.chatDisabled%", - "when": "github.copilot.interactiveSession.chatDisabled" - }, - { - "icon": "$(chat-sparkle)", - "title": "%copilot.title%", - "content": "%github.copilot.viewsWelcome.switchToReleaseChannel%", - "when": "github.copilot.interactiveSession.switchToReleaseChannel" - } - ], - "commands": [ - { - "command": "github.copilot.chat.triggerPermissiveSignIn", - "title": "%github.copilot.command.triggerPermissiveSignIn%" - }, - { - "command": "github.copilot.cli.sessions.delete", - "title": "%github.copilot.command.deleteAgentSession%", - "icon": "$(close)", - "category": "Copilot CLI" - }, - { - "command": "github.copilot.cli.sessions.resumeInTerminal", - "title": "%github.copilot.command.cli.sessions.resumeInTerminal%", - "icon": "$(terminal)", - "category": "Copilot CLI" - }, - { - "command": "github.copilot.chat.replay", - "title": "Start Chat Replay", - "icon": "$(debug-line-by-line)", - "enablement": "resourceFilename === 'benchRun.chatReplay.json' && !inDebugMode" - }, - { - "command": "github.copilot.chat.replay.enableWorkspaceEditTracing", - "title": "%github.copilot.command.enableEditTracing%", - "category": "Developer", - "enablement": "!github.copilot.chat.replay.workspaceEditTracing" - }, - { - "command": "github.copilot.chat.replay.disableWorkspaceEditTracing", - "title": "%github.copilot.command.disableEditTracing%", - "category": "Developer", - "enablement": "github.copilot.chat.replay.workspaceEditTracing" - }, - { - "command": "github.copilot.chat.explain", - "title": "%github.copilot.command.explainThis%", - "enablement": "!github.copilot.interactiveSession.disabled", - "category": "Chat" - }, - { - "command": "github.copilot.chat.explain.palette", - "title": "%github.copilot.command.explainThis%", - "enablement": "!github.copilot.interactiveSession.disabled && !editorReadonly", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review", - "title": "%github.copilot.command.reviewAndComment%", - "enablement": "config.github.copilot.chat.reviewSelection.enabled && !github.copilot.interactiveSession.disabled", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.apply", - "title": "%github.copilot.command.applyReviewSuggestion%", - "icon": "$(sparkle)", - "enablement": "commentThread =~ /hasSuggestion/", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.applyAndNext", - "title": "%github.copilot.command.applyReviewSuggestionAndNext%", - "icon": "$(sparkle)", - "enablement": "commentThread =~ /hasSuggestion/", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.discard", - "title": "%github.copilot.command.discardReviewSuggestion%", - "icon": "$(close)", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.discardAndNext", - "title": "%github.copilot.command.discardReviewSuggestionAndNext%", - "icon": "$(close)", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.discardAll", - "title": "%github.copilot.command.discardAllReviewSuggestion%", - "icon": "$(close-all)", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.stagedChanges", - "title": "%github.copilot.command.reviewStagedChanges%", - "icon": "$(code-review)", - "enablement": "github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.unstagedChanges", - "title": "%github.copilot.command.reviewUnstagedChanges%", - "icon": "$(code-review)", - "enablement": "github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.changes", - "title": "%github.copilot.command.reviewChanges%", - "icon": "$(code-review)", - "enablement": "github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.stagedFileChange", - "title": "%github.copilot.command.reviewFileChange%", - "icon": "$(code-review)", - "enablement": "github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.unstagedFileChange", - "title": "%github.copilot.command.reviewFileChange%", - "icon": "$(code-review)", - "enablement": "github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.previous", - "title": "%github.copilot.command.gotoPreviousReviewSuggestion%", - "icon": "$(arrow-up)", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.next", - "title": "%github.copilot.command.gotoNextReviewSuggestion%", - "icon": "$(arrow-down)", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.continueInInlineChat", - "title": "%github.copilot.command.continueReviewInInlineChat%", - "icon": "$(comment-discussion)", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.continueInChat", - "title": "%github.copilot.command.continueReviewInChat%", - "icon": "$(comment-discussion)", - "category": "Chat" - }, - { - "command": "github.copilot.chat.review.markHelpful", - "title": "%github.copilot.command.helpfulReviewSuggestion%", - "icon": "$(thumbsup)", - "enablement": "!(commentThread =~ /markedAsHelpful/)", - "category": "Chat" - }, - { - "command": "github.copilot.chat.openUserPreferences", - "title": "%github.copilot.command.openUserPreferences%", - "category": "Chat", - "enablement": "config.github.copilot.chat.enableUserPreferences" - }, - { - "command": "github.copilot.chat.tools.memory.openFolder", - "title": "%github.copilot.command.openMemoryFolder%", - "category": "Chat", - "enablement": "config.github.copilot.chat.tools.memory.enabled" - }, - { - "command": "github.copilot.chat.review.markUnhelpful", - "title": "%github.copilot.command.unhelpfulReviewSuggestion%", - "icon": "$(thumbsdown)", - "enablement": "!(commentThread =~ /markedAsUnhelpful/)", - "category": "Chat" - }, - { - "command": "github.copilot.chat.generate", - "title": "%github.copilot.command.generateThis%", - "icon": "$(sparkle)", - "enablement": "!github.copilot.interactiveSession.disabled && !editorReadonly", - "category": "Chat" - }, - { - "command": "github.copilot.chat.generateDocs", - "title": "%github.copilot.command.generateDocs%", - "enablement": "!github.copilot.interactiveSession.disabled && !editorReadonly", - "category": "Chat" - }, - { - "command": "github.copilot.chat.generateTests", - "title": "%github.copilot.command.generateTests%", - "enablement": "!github.copilot.interactiveSession.disabled && !editorReadonly", - "category": "Chat" - }, - { - "command": "github.copilot.chat.fix", - "title": "%github.copilot.command.fixThis%", - "enablement": "!github.copilot.interactiveSession.disabled && !editorReadonly", - "category": "Chat" - }, - { - "command": "github.copilot.interactiveSession.feedback", - "title": "%github.copilot.command.sendChatFeedback%", - "enablement": "github.copilot-chat.activated && !github.copilot.interactiveSession.disabled", - "icon": "$(feedback)", - "category": "Chat" - }, - { - "command": "github.copilot.debug.workbenchState", - "title": "%github.copilot.command.logWorkbenchState%", - "category": "Developer" - }, - { - "command": "github.copilot.debug.showChatLogView", - "title": "%github.copilot.command.showChatLogView%", - "category": "Developer" - }, - { - "command": "github.copilot.debug.showOutputChannel", - "title": "%github.copilot.command.showOutputChannel%", - "category": "Developer" - }, - { - "command": "github.copilot.debug.showContextInspectorView", - "title": "%github.copilot.command.showContextInspectorView%", - "icon": "$(inspect)", - "category": "Developer" - }, - { - "command": "github.copilot.debug.validateNesRename", - "title": "%github.copilot.command.validateNesRename%", - "category": "Developer" - }, - { - "command": "github.copilot.debug.resetVirtualToolGroups", - "title": "%github.copilot.command.resetVirtualToolGroups%", - "icon": "$(inspect)", - "category": "Developer" - }, - { - "command": "github.copilot.terminal.explainTerminalLastCommand", - "title": "%github.copilot.command.explainTerminalLastCommand%", - "category": "Chat" - }, - { - "command": "github.copilot.git.generateCommitMessage", - "title": "%github.copilot.git.generateCommitMessage%", - "icon": "$(sparkle)", - "enablement": "!github.copilot.interactiveSession.disabled", - "category": "Chat" - }, - { - "command": "github.copilot.git.resolveMergeConflicts", - "title": "%github.copilot.git.resolveMergeConflicts%", - "icon": "$(chat-sparkle)", - "enablement": "!github.copilot.interactiveSession.disabled", - "category": "Chat" - }, - { - "command": "github.copilot.devcontainer.generateDevContainerConfig", - "title": "%github.copilot.devcontainer.generateDevContainerConfig%", - "category": "Chat" - }, - { - "command": "github.copilot.tests.fixTestFailure", - "icon": "$(sparkle)", - "title": "%github.copilot.command.fixTestFailure%", - "category": "Chat" - }, - { - "command": "github.copilot.tests.fixTestFailure.fromInline", - "icon": "$(sparkle)", - "title": "%github.copilot.command.fixTestFailure%" - }, - { - "command": "github.copilot.chat.attachFile", - "title": "%github.copilot.chat.attachFile%", - "category": "Chat" - }, - { - "command": "github.copilot.chat.attachSelection", - "title": "%github.copilot.chat.attachSelection%", - "icon": "$(comment-discussion)", - "category": "Chat" - }, - { - "command": "github.copilot.debug.collectDiagnostics", - "title": "%github.copilot.command.collectDiagnostics%", - "category": "Developer" - }, - { - "command": "github.copilot.debug.inlineEdit.clearCache", - "title": "%github.copilot.command.inlineEdit.clearCache%", - "category": "Developer" - }, - { - "command": "github.copilot.debug.inlineEdit.reportNotebookNESIssue", - "title": "%github.copilot.command.inlineEdit.reportNotebookNESIssue%", - "enablement": "config.github.copilot.chat.advanced.notebook.alternativeNESFormat.enabled || github.copilot.chat.enableEnhancedNotebookNES", - "category": "Developer" - }, - { - "command": "github.copilot.debug.generateSTest", - "title": "%github.copilot.command.generateSTest%", - "enablement": "github.copilot.debugReportFeedback", - "category": "Developer" - }, - { - "command": "github.copilot.open.walkthrough", - "title": "%github.copilot.command.openWalkthrough%", - "category": "Chat" - }, - { - "command": "github.copilot.debug.generateInlineEditTests", - "title": "Generate Inline Edit Tests", - "category": "Chat", - "enablement": "resourceScheme == 'ccreq'" - }, - { - "command": "github.copilot.buildLocalWorkspaceIndex", - "title": "%github.copilot.command.buildLocalWorkspaceIndex%", - "category": "Chat", - "enablement": "github.copilot-chat.activated" - }, - { - "command": "github.copilot.buildRemoteWorkspaceIndex", - "title": "%github.copilot.command.buildRemoteWorkspaceIndex%", - "category": "Chat", - "enablement": "github.copilot-chat.activated" - }, - { - "command": "github.copilot.report", - "title": "Report Issue", - "category": "Chat" - }, - { - "command": "github.copilot.chat.rerunWithCopilotDebug", - "title": "%github.copilot.command.rerunWithCopilotDebug%", - "category": "Chat" - }, - { - "command": "github.copilot.chat.startCopilotDebugCommand", - "title": "Start Copilot Debug" - }, - { - "command": "github.copilot.chat.clearTemporalContext", - "title": "Clear Temporal Context", - "category": "Developer" - }, - { - "command": "github.copilot.search.markHelpful", - "title": "Helpful", - "icon": "$(thumbsup)", - "enablement": "!github.copilot.search.feedback.sent" - }, - { - "command": "github.copilot.search.markUnhelpful", - "title": "Unhelpful", - "icon": "$(thumbsdown)", - "enablement": "!github.copilot.search.feedback.sent" - }, - { - "command": "github.copilot.search.feedback", - "title": "Feedback", - "icon": "$(feedback)", - "enablement": "!github.copilot.search.feedback.sent" - }, - { - "command": "github.copilot.chat.debug.showElements", - "title": "Show Rendered Elements" - }, - { - "command": "github.copilot.chat.debug.hideElements", - "title": "Hide Rendered Elements" - }, - { - "command": "github.copilot.chat.debug.showTools", - "title": "Show Tools" - }, - { - "command": "github.copilot.chat.debug.hideTools", - "title": "Hide Tools" - }, - { - "command": "github.copilot.chat.debug.showNesRequests", - "title": "Show NES Requests" - }, - { - "command": "github.copilot.chat.debug.hideNesRequests", - "title": "Hide NES Requests" - }, - { - "command": "github.copilot.chat.debug.showGhostRequests", - "title": "Show Ghost Requests" - }, - { - "command": "github.copilot.chat.debug.hideGhostRequests", - "title": "Hide Ghost Requests" - }, - { - "command": "github.copilot.chat.debug.showRawRequestBody", - "title": "Show Raw Request Body" - }, - { - "command": "github.copilot.chat.debug.exportLogItem", - "title": "Export as...", - "icon": "$(export)" - }, - { - "command": "github.copilot.chat.debug.exportPromptArchive", - "title": "Export All as Archive...", - "icon": "$(archive)" - }, - { - "command": "github.copilot.chat.debug.exportPromptLogsAsJson", - "title": "Export All as JSON...", - "icon": "$(export)" - }, - { - "command": "github.copilot.chat.debug.exportAllPromptLogsAsJson", - "title": "Export All Prompt Logs as JSON...", - "icon": "$(export)" - }, - { - "command": "github.copilot.chat.showAsChatSession", - "title": "Show as chat session", - "icon": "$(chat-sparkle)" - }, - { - "command": "github.copilot.debug.collectWorkspaceIndexDiagnostics", - "title": "%github.copilot.command.collectWorkspaceIndexDiagnostics%", - "category": "Developer" - }, - { - "command": "github.copilot.chat.mcp.setup.check", - "title": "MCP Check: is supported" - }, - { - "command": "github.copilot.chat.mcp.setup.validatePackage", - "title": "MCP Check: validate package" - }, - { - "command": "github.copilot.chat.mcp.setup.flow", - "title": "MCP Check: do prompts" - }, - { - "command": "github.copilot.chat.generateAltText", - "title": "Generate/Refine Alt Text" - }, - { - "command": "github.copilot.chat.notebook.enableFollowCellExecution", - "title": "Enable Follow Cell Execution from Chat", - "shortTitle": "Follow", - "icon": "$(pinned)" - }, - { - "command": "github.copilot.chat.notebook.disableFollowCellExecution", - "title": "Disable Follow Cell Execution from Chat", - "shortTitle": "Unfollow", - "icon": "$(pinned-dirty)" - }, - { - "command": "github.copilot.chat.manageBYOK", - "title": "Manage Bring Your Own Key Vendor", - "enablement": "false" - }, - { - "command": "github.copilot.chat.manageBYOKAPIKey", - "title": "Manage Bring Your Own Key API Key", - "enablement": "false" - }, - { - "command": "github.copilot.cloud.resetWorkspaceConfirmations", - "title": "%github.copilot.command.resetCloudAgentWorkspaceConfirmations%" - }, - { - "command": "github.copilot.cloud.sessions.openInBrowser", - "title": "%github.copilot.command.openCopilotAgentSessionsInBrowser%", - "icon": "$(link-external)" - }, - { - "command": "github.copilot.cloud.sessions.proxy.closeChatSessionPullRequest", - "title": "%github.copilot.command.closeChatSessionPullRequest.title%" - }, - { - "command": "github.copilot.cloud.sessions.installPRExtension", - "title": "%github.copilot.command.installPRExtension.title%", - "icon": "$(extensions)" - }, - { - "command": "github.copilot.chat.openSuggestionsPanel", - "title": "Open Completions Panel", - "enablement": "github.copilot.extensionUnification.activated && !isWeb", - "category": "GitHub Copilot" - }, - { - "command": "github.copilot.chat.toggleStatusMenu", - "title": "Open Status Menu", - "enablement": "github.copilot.extensionUnification.activated", - "category": "GitHub Copilot" - }, - { - "command": "github.copilot.chat.completions.disable", - "title": "Disable Inline Suggestions", - "enablement": "github.copilot.extensionUnification.activated && github.copilot.activated && config.editor.inlineSuggest.enabled && github.copilot.completions.enabled", - "category": "GitHub Copilot" - }, - { - "command": "github.copilot.chat.completions.enable", - "title": "Enable Inline Suggestions", - "enablement": "github.copilot.extensionUnification.activated && github.copilot.activated && !(config.editor.inlineSuggest.enabled && github.copilot.completions.enabled)", - "category": "GitHub Copilot" - }, - { - "command": "github.copilot.chat.completions.toggle", - "title": "Toggle (Enable/Disable) Inline Suggestions", - "enablement": "github.copilot.extensionUnification.activated && github.copilot.activated", - "category": "GitHub Copilot" - }, - { - "command": "github.copilot.chat.openModelPicker", - "title": "Change Completions Model", - "category": "GitHub Copilot", - "enablement": "github.copilot.extensionUnification.activated && !isWeb" - }, - { - "command": "github.copilot.chat.applyCopilotCLIAgentSessionChanges", - "title": "%github.copilot.command.applyCopilotCLIAgentSessionChanges%", - "icon": "$(git-stash-pop)", - "category": "GitHub Copilot" - }, - { - "command": "github.copilot.chat.applyCopilotCLIAgentSessionChanges.apply", - "title": "%github.copilot.chat.applyCopilotCLIAgentSessionChanges.apply%", - "icon": "$(git-stash-pop)", - "category": "GitHub Copilot" - } - ], - "configuration": [ - { - "title": "GitHub Copilot Chat", - "id": "stable", - "properties": { - "github.copilot.chat.backgroundAgent.enabled": { - "type": "boolean", - "default": true, - "markdownDescription": "%github.copilot.config.backgroundAgent.enabled%" - }, - "github.copilot.chat.cloudAgent.enabled": { - "type": "boolean", - "default": true, - "markdownDescription": "%github.copilot.config.cloudAgent.enabled%" - }, - "github.copilot.chat.codeGeneration.useInstructionFiles": { - "type": "boolean", - "default": true, - "markdownDescription": "%github.copilot.config.codeGeneration.useInstructionFiles%" - }, - "github.copilot.editor.enableCodeActions": { - "type": "boolean", - "default": true, - "description": "%github.copilot.config.enableCodeActions%" - }, - "github.copilot.renameSuggestions.triggerAutomatically": { - "type": "boolean", - "default": true, - "description": "%github.copilot.config.renameSuggestions.triggerAutomatically%" - }, - "github.copilot.chat.localeOverride": { - "type": "string", - "enum": [ - "auto", - "en", - "fr", - "it", - "de", - "es", - "ru", - "zh-CN", - "zh-TW", - "ja", - "ko", - "cs", - "pt-br", - "tr", - "pl" - ], - "enumDescriptions": [ - "Use VS Code's configured display language", - "English", - "français", - "italiano", - "Deutsch", - "español", - "русский", - "中文(简体)", - "中文(繁體)", - "日本語", - "한국어", - "čeština", - "português", - "Türkçe", - "polski" - ], - "default": "auto", - "markdownDescription": "%github.copilot.config.localeOverride%" - }, - "github.copilot.chat.terminalChatLocation": { - "type": "string", - "default": "chatView", - "markdownDescription": "%github.copilot.config.terminalChatLocation%", - "markdownEnumDescriptions": [ - "%github.copilot.config.terminalChatLocation.chatView%", - "%github.copilot.config.terminalChatLocation.quickChat%", - "%github.copilot.config.terminalChatLocation.terminal%" - ], - "enum": [ - "chatView", - "quickChat", - "terminal" - ] - }, - "github.copilot.chat.scopeSelection": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.scopeSelection%" - }, - "github.copilot.chat.useProjectTemplates": { - "type": "boolean", - "default": true, - "markdownDescription": "%github.copilot.config.useProjectTemplates%" - }, - "github.copilot.nextEditSuggestions.enabled": { - "type": "boolean", - "default": false, - "tags": [ - "nextEditSuggestions", - "onExp" - ], - "markdownDescription": "%github.copilot.nextEditSuggestions.enabled%", - "scope": "language-overridable" - }, - "github.copilot.nextEditSuggestions.fixes": { - "type": "boolean", - "default": true, - "tags": [ - "nextEditSuggestions", - "onExp" - ], - "markdownDescription": "%github.copilot.nextEditSuggestions.fixes%", - "scope": "language-overridable" - }, - "github.copilot.nextEditSuggestions.allowWhitespaceOnlyChanges": { - "type": "boolean", - "default": true, - "tags": [ - "nextEditSuggestions", - "onExp" - ], - "markdownDescription": "%github.copilot.nextEditSuggestions.allowWhitespaceOnlyChanges%", - "scope": "language-overridable" - }, - "github.copilot.chat.agent.autoFix": { - "type": "boolean", - "default": true, - "description": "%github.copilot.config.autoFix%", - "tags": [ - "onExp" - ] - }, - "github.copilot.chat.customInstructionsInSystemMessage": { - "type": "boolean", - "default": true, - "description": "%github.copilot.config.customInstructionsInSystemMessage%" - }, - "github.copilot.chat.customInstructions.useOrganizationInstructions": { - "type": "boolean", - "default": true, - "description": "%github.copilot.config.customInstructions.useOrganizationInstructions%" - }, - "github.copilot.chat.agent.currentEditorContext.enabled": { - "type": "boolean", - "default": true, - "description": "%github.copilot.config.agent.currentEditorContext.enabled%" - }, - "github.copilot.enable": { - "type": "object", - "scope": "window", - "default": { - "*": true, - "plaintext": false, - "markdown": false, - "scminput": false - }, - "additionalProperties": { - "type": "boolean" - }, - "markdownDescription": "Enable or disable auto triggering of Copilot completions for specified [languages](https://code.visualstudio.com/docs/languages/identifiers). You can still trigger suggestions manually using `Alt + \\`" - }, - "github.copilot.selectedCompletionModel": { - "type": "string", - "default": "", - "markdownDescription": "The currently selected completion model ID. To select from a list of available models, use the __\"Change Completions Model\"__ command or open the model picker (from the Copilot menu in the VS Code title bar, select __\"Configure Code Completions\"__ then __\"Change Completions Model\"__. The value must be a valid model ID. An empty value indicates that the default model will be used." - } - } - }, - { - "id": "preview", - "properties": { - "github.copilot.chat.reviewAgent.enabled": { - "type": "boolean", - "default": true, - "description": "%github.copilot.config.reviewAgent.enabled%", - "tags": [ - "preview" - ] - }, - "github.copilot.chat.reviewSelection.enabled": { - "type": "boolean", - "default": true, - "description": "%github.copilot.config.reviewSelection.enabled%", - "tags": [ - "preview" - ] - }, - "github.copilot.chat.reviewSelection.instructions": { - "type": "array", - "items": { - "oneOf": [ - { - "type": "object", - "markdownDescription": "%github.copilot.config.reviewSelection.instruction.file%", - "properties": { - "file": { - "type": "string", - "examples": [ - ".copilot-review-instructions.md" - ] - }, - "language": { - "type": "string" - } - }, - "examples": [ - { - "file": ".copilot-review-instructions.md" - } - ], - "required": [ - "file" - ] - }, - { - "type": "object", - "markdownDescription": "%github.copilot.config.reviewSelection.instruction.text%", - "properties": { - "text": { - "type": "string", - "examples": [ - "Use underscore for field names." - ] - }, - "language": { - "type": "string" - } - }, - "required": [ - "text" - ], - "examples": [ - { - "text": "Use underscore for field names." - }, - { - "text": "Resolve all TODO tasks." - } - ] - } - ] - }, - "default": [], - "markdownDescription": "%github.copilot.config.reviewSelection.instructions%", - "examples": [ - [ - { - "file": ".copilot-review-instructions.md" - }, - { - "text": "Resolve all TODO tasks." - } - ] - ], - "tags": [ - "preview" - ] - }, - "github.copilot.chat.copilotDebugCommand.enabled": { - "type": "boolean", - "default": true, - "tags": [ - "preview" - ], - "description": "%github.copilot.chat.copilotDebugCommand.enabled%" - }, - "github.copilot.chat.codesearch.enabled": { - "type": "boolean", - "default": false, - "tags": [ - "preview" - ], - "markdownDescription": "%github.copilot.config.codesearch.enabled%" - }, - "github.copilot.chat.byok.ollamaEndpoint": { - "type": "string", - "default": "http://localhost:11434", - "tags": [ - "preview" - ], - "markdownDescription": "%github.copilot.config.byok.ollamaEndpoint%" - } - } - }, - { - "id": "experimental", - "properties": { - "github.copilot.chat.githubMcpServer.enabled": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.githubMcpServer.enabled%", - "tags": [ - "experimental" - ] - }, - "github.copilot.chat.githubMcpServer.toolsets": { - "type": "array", - "default": [ - "default" - ], - "markdownDescription": "%github.copilot.config.githubMcpServer.toolsets%", - "items": { - "type": "string" - }, - "tags": [ - "experimental" - ] - }, - "github.copilot.chat.githubMcpServer.readonly": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.githubMcpServer.readonly%", - "tags": [ - "experimental" - ] - }, - "github.copilot.chat.githubMcpServer.lockdown": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.githubMcpServer.lockdown%", - "tags": [ - "experimental" - ] - }, - "github.copilot.chat.imageUpload.enabled": { - "type": "boolean", - "default": true, - "tags": [ - "experimental", - "onExp" - ], - "markdownDescription": "%github.copilot.config.imageUpload.enabled%" - }, - "github.copilot.chat.edits.suggestRelatedFilesFromGitHistory": { - "type": "boolean", - "default": true, - "tags": [ - "experimental" - ], - "markdownDescription": "%github.copilot.config.edits.suggestRelatedFilesFromGitHistory%" - }, - "github.copilot.chat.edits.suggestRelatedFilesForTests": { - "type": "boolean", - "default": true, - "tags": [ - "experimental" - ], - "markdownDescription": "%github.copilot.chat.edits.suggestRelatedFilesForTests%" - }, - "github.copilot.chat.codeGeneration.instructions": { - "markdownDeprecationMessage": "%github.copilot.config.codeGeneration.instructions.deprecated%", - "type": "array", - "items": { - "oneOf": [ - { - "type": "object", - "markdownDescription": "%github.copilot.config.codeGeneration.instruction.file%", - "properties": { - "file": { - "type": "string", - "examples": [ - ".copilot-codeGeneration-instructions.md" - ] - }, - "language": { - "type": "string" - } - }, - "examples": [ - { - "file": ".copilot-codeGeneration-instructions.md" - } - ], - "required": [ - "file" - ] - }, - { - "type": "object", - "markdownDescription": "%github.copilot.config.codeGeneration.instruction.text%", - "properties": { - "text": { - "type": "string", - "examples": [ - "Use underscore for field names." - ] - }, - "language": { - "type": "string" - } - }, - "required": [ - "text" - ], - "examples": [ - { - "text": "Use underscore for field names." - }, - { - "text": "Always add a comment: 'Generated by Copilot'." - } - ] - } - ] - }, - "default": [], - "markdownDescription": "%github.copilot.config.codeGeneration.instructions%", - "examples": [ - [ - { - "file": ".copilot-codeGeneration-instructions.md" - }, - { - "text": "Always add a comment: 'Generated by Copilot'." - } - ] - ], - "tags": [ - "experimental" - ] - }, - "github.copilot.chat.testGeneration.instructions": { - "markdownDeprecationMessage": "%github.copilot.config.testGeneration.instructions.deprecated%", - "type": "array", - "items": { - "oneOf": [ - { - "type": "object", - "markdownDescription": "%github.copilot.config.experimental.testGeneration.instruction.file%", - "properties": { - "file": { - "type": "string", - "examples": [ - ".copilot-test-instructions.md" - ] - }, - "language": { - "type": "string" - } - }, - "examples": [ - { - "file": ".copilot-test-instructions.md" - } - ], - "required": [ - "file" - ] - }, - { - "type": "object", - "markdownDescription": "%github.copilot.config.experimental.testGeneration.instruction.text%", - "properties": { - "text": { - "type": "string", - "examples": [ - "Use suite and test instead of describe and it." - ] - }, - "language": { - "type": "string" - } - }, - "required": [ - "text" - ], - "examples": [ - { - "text": "Always try uniting related tests in a suite." - } - ] - } - ] - }, - "default": [], - "markdownDescription": "%github.copilot.config.testGeneration.instructions%", - "examples": [ - [ - { - "file": ".copilot-test-instructions.md" - }, - { - "text": "Always try uniting related tests in a suite." - } - ] - ], - "tags": [ - "experimental" - ] - }, - "github.copilot.chat.commitMessageGeneration.instructions": { - "type": "array", - "items": { - "oneOf": [ - { - "type": "object", - "markdownDescription": "%github.copilot.config.commitMessageGeneration.instruction.file%", - "properties": { - "file": { - "type": "string", - "examples": [ - ".copilot-commit-message-instructions.md" - ] - } - }, - "examples": [ - { - "file": ".copilot-commit-message-instructions.md" - } - ], - "required": [ - "file" - ] - }, - { - "type": "object", - "markdownDescription": "%github.copilot.config.commitMessageGeneration.instruction.text%", - "properties": { - "text": { - "type": "string", - "examples": [ - "Use conventional commit message format." - ] - } - }, - "required": [ - "text" - ], - "examples": [ - { - "text": "Use conventional commit message format." - } - ] - } - ] - }, - "default": [], - "markdownDescription": "%github.copilot.config.commitMessageGeneration.instructions%", - "examples": [ - [ - { - "file": ".copilot-commit-message-instructions.md" - }, - { - "text": "Use conventional commit message format." - } - ] - ], - "tags": [ - "experimental" - ] - }, - "github.copilot.chat.pullRequestDescriptionGeneration.instructions": { - "type": "array", - "items": { - "oneOf": [ - { - "type": "object", - "markdownDescription": "%github.copilot.config.pullRequestDescriptionGeneration.instruction.file%", - "properties": { - "file": { - "type": "string", - "examples": [ - ".copilot-pull-request-description-instructions.md" - ] - } - }, - "examples": [ - { - "file": ".copilot-pull-request-description-instructions.md" - } - ], - "required": [ - "file" - ] - }, - { - "type": "object", - "markdownDescription": "%github.copilot.config.pullRequestDescriptionGeneration.instruction.text%", - "properties": { - "text": { - "type": "string", - "examples": [ - "Include every commit message in the pull request description." - ] - } - }, - "required": [ - "text" - ], - "examples": [ - { - "text": "Include every commit message in the pull request description." - } - ] - } - ] - }, - "default": [], - "markdownDescription": "%github.copilot.config.pullRequestDescriptionGeneration.instructions%", - "examples": [ - [ - { - "file": ".copilot-pull-request-description-instructions.md" - }, - { - "text": "Use conventional commit message format." - } - ] - ], - "tags": [ - "experimental" - ] - }, - "github.copilot.chat.generateTests.codeLens": { - "type": "boolean", - "default": false, - "description": "%github.copilot.config.generateTests.codeLens%", - "tags": [ - "experimental" - ] - }, - "github.copilot.chat.setupTests.enabled": { - "type": "boolean", - "default": true, - "markdownDescription": "%github.copilot.config.setupTests.enabled%", - "tags": [ - "experimental" - ] - }, - "github.copilot.chat.languageContext.typescript.enabled": { - "type": "boolean", - "default": false, - "scope": "resource", - "tags": [ - "experimental", - "onExP" - ], - "markdownDescription": "%github.copilot.chat.languageContext.typescript.enabled%" - }, - "github.copilot.chat.languageContext.typescript.items": { - "type": "string", - "enum": [ - "minimal", - "double", - "fillHalf", - "fill" - ], - "default": "double", - "scope": "resource", - "tags": [ - "experimental", - "onExP" - ], - "markdownDescription": "%github.copilot.chat.languageContext.typescript.items%" - }, - "github.copilot.chat.languageContext.typescript.includeDocumentation": { - "type": "boolean", - "default": false, - "scope": "resource", - "tags": [ - "experimental", - "onExP" - ], - "markdownDescription": "%github.copilot.chat.languageContext.typescript.includeDocumentation%" - }, - "github.copilot.chat.languageContext.typescript.cacheTimeout": { - "type": "number", - "default": 500, - "scope": "resource", - "tags": [ - "experimental", - "onExP" - ], - "markdownDescription": "%github.copilot.chat.languageContext.typescript.cacheTimeout%" - }, - "github.copilot.chat.languageContext.fix.typescript.enabled": { - "type": "boolean", - "default": false, - "scope": "resource", - "tags": [ - "experimental", - "onExP" - ], - "markdownDescription": "%github.copilot.chat.languageContext.fix.typescript.enabled%" - }, - "github.copilot.chat.languageContext.inline.typescript.enabled": { - "type": "boolean", - "default": false, - "scope": "resource", - "tags": [ - "experimental", - "onExP" - ], - "markdownDescription": "%github.copilot.chat.languageContext.inline.typescript.enabled%" - }, - "github.copilot.chat.newWorkspaceCreation.enabled": { - "type": "boolean", - "default": true, - "tags": [ - "experimental" - ], - "description": "%github.copilot.config.newWorkspaceCreation.enabled%" - }, - "github.copilot.chat.newWorkspace.useContext7": { - "type": "boolean", - "default": false, - "tags": [ - "experimental" - ], - "markdownDescription": "%github.copilot.config.newWorkspace.useContext7%" - }, - "github.copilot.chat.notebook.followCellExecution.enabled": { - "type": "boolean", - "default": false, - "tags": [ - "experimental" - ], - "description": "%github.copilot.config.notebook.followCellExecution%" - }, - "github.copilot.chat.notebook.enhancedNextEditSuggestions.enabled": { - "type": "boolean", - "default": false, - "tags": [ - "experimental", - "onExp" - ], - "description": "%github.copilot.config.notebook.enhancedNextEditSuggestions%" - }, - "github.copilot.chat.summarizeAgentConversationHistory.enabled": { - "type": "boolean", - "default": true, - "tags": [ - "experimental" - ], - "description": "%github.copilot.config.summarizeAgentConversationHistory.enabled%" - }, - "github.copilot.chat.virtualTools.threshold": { - "type": "number", - "minimum": 0, - "maximum": 128, - "default": 128, - "tags": [ - "experimental" - ], - "markdownDescription": "%github.copilot.config.virtualTools.threshold%" - }, - "github.copilot.chat.azureAuthType": { - "type": "string", - "enum": [ - "entraId", - "apiKey" - ], - "enumDescriptions": [ - "%github.copilot.config.azureAuthType.entraId%", - "%github.copilot.config.azureAuthType.apiKey%" - ], - "default": "entraId", - "tags": [ - "experimental" - ], - "markdownDescription": "%github.copilot.config.azureAuthType%" - }, - "github.copilot.chat.azureModels": { - "type": "object", - "default": {}, - "tags": [ - "experimental" - ], - "additionalProperties": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Display name of the Azure model" - }, - "url": { - "type": "string", - "markdownDescription": "URL endpoint for the Azure model.\n\n**Important:** Base URLs default to Chat Completions API. Explicit API paths including `/responses` or `/chat/completions` are respected. Both behaviors are independent of the `#github.copilot.chat.useResponsesApi#` setting." - }, - "toolCalling": { - "type": "boolean", - "description": "Whether the model supports tool calling" - }, - "vision": { - "type": "boolean", - "description": "Whether the model supports vision capabilities" - }, - "maxInputTokens": { - "type": "number", - "description": "Maximum number of input tokens supported by the model" - }, - "maxOutputTokens": { - "type": "number", - "description": "Maximum number of output tokens supported by the model" - }, - "thinking": { - "type": "boolean", - "default": false, - "description": "Whether the model supports thinking capabilities" - }, - "zeroDataRetentionEnabled": { - "type": "boolean", - "default": false, - "markdownDescription": "Whether Zero Data Retention (ZDR) is enabled for this endpoint. When `true`, `previous_response_id` will not be sent in requests via Responses API." - }, - "requestHeaders": { - "type": "object", - "description": "Additional HTTP headers to include with requests to this model. These reserved headers are not allowed and ignored if present: forbidden request headers (https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_request_header), forwarding headers ('forwarded', 'x-forwarded-for', 'x-forwarded-host', 'x-forwarded-proto'), and others ('api-key', 'authorization', 'content-type', 'openai-intent', 'x-github-api-version', 'x-initiator', 'x-interaction-id', 'x-interaction-type', 'x-onbehalf-extension-id', 'x-request-id', 'x-vscode-user-agent-library-version'). Pattern-based forbidden headers ('proxy-*', 'sec-*', 'x-http-method*' with forbidden methods) are also blocked.", - "additionalProperties": { - "type": "string" - } - } - }, - "required": [ - "name", - "url", - "toolCalling", - "vision", - "maxInputTokens", - "maxOutputTokens" - ], - "additionalProperties": false - }, - "markdownDescription": "Configure custom Azure OpenAI models. Each key should be a unique model ID, and the value should be an object with model configuration including name, url, toolCalling, vision, maxInputTokens, and maxOutputTokens properties." - }, - "github.copilot.chat.customOAIModels": { - "type": "object", - "default": {}, - "tags": [ - "experimental" - ], - "additionalProperties": { - "type": "object", - "properties": { - "name": { - "type": "string", - "description": "Display name of the custom OpenAI model" - }, - "url": { - "type": "string", - "markdownDescription": "URL endpoint for the custom OpenAI-compatible model.\n\n**Important:** Base URLs default to Chat Completions API. Explicit API paths including `/responses` or `/chat/completions` are respected. Both behaviors are independent of the `#github.copilot.chat.useResponsesApi#` setting." - }, - "toolCalling": { - "type": "boolean", - "description": "Whether the model supports tool calling" - }, - "vision": { - "type": "boolean", - "description": "Whether the model supports vision capabilities" - }, - "maxInputTokens": { - "type": "number", - "description": "Maximum number of input tokens supported by the model" - }, - "maxOutputTokens": { - "type": "number", - "description": "Maximum number of output tokens supported by the model" - }, - "requiresAPIKey": { - "type": "boolean", - "description": "Whether the model requires an API key for authentication", - "default": true - }, - "editTools": { - "type": "array", - "description": "List of edit tools supported by the model. If this is not configured, the editor will try multiple edit tools and pick the best one.\n\n- 'find-replace': Find and replace text in a document.\n- 'multi-find-replace': Find and replace text in a document.\n- 'apply-patch': A file-oriented diff format used by some OpenAI models\n- 'code-rewrite': A general but slower editing tool that allows the model to rewrite and code snippet and provide only the replacement to the editor.", - "items": { - "type": "string", - "enum": [ - "find-replace", - "multi-find-replace", - "apply-patch", - "code-rewrite" - ] - } - }, - "thinking": { - "type": "boolean", - "default": false, - "description": "Whether the model supports thinking capabilities" - }, - "zeroDataRetentionEnabled": { - "type": "boolean", - "default": false, - "markdownDescription": "Whether Zero Data Retention (ZDR) is enabled for this endpoint. When `true`, `previous_response_id` will not be sent in requests via Responses API." - }, - "requestHeaders": { - "type": "object", - "description": "Additional HTTP headers to include with requests to this model. These reserved headers are not allowed and ignored if present: forbidden request headers (https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_request_header), forwarding headers ('forwarded', 'x-forwarded-for', 'x-forwarded-host', 'x-forwarded-proto'), and others ('api-key', 'authorization', 'content-type', 'openai-intent', 'x-github-api-version', 'x-initiator', 'x-interaction-id', 'x-interaction-type', 'x-onbehalf-extension-id', 'x-request-id', 'x-vscode-user-agent-library-version'). Pattern-based forbidden headers ('proxy-*', 'sec-*', 'x-http-method*' with forbidden methods) are also blocked.", - "additionalProperties": { - "type": "string" - } - } - }, - "required": [ - "name", - "url", - "toolCalling", - "vision", - "maxInputTokens", - "maxOutputTokens", - "requiresAPIKey" - ], - "additionalProperties": false - }, - "markdownDescription": "Configure custom OpenAI-compatible models. Each key should be a unique model ID, and the value should be an object with model configuration including name, url, toolCalling, vision, maxInputTokens, and maxOutputTokens properties." - }, - "github.copilot.chat.alternateGptPrompt.enabled": { - "type": "boolean", - "default": false, - "tags": [ - "experimental" - ], - "description": "%github.copilot.config.alternateGptPrompt.enabled%" - }, - "github.copilot.chat.alternateGeminiModelFPrompt.enabled": { - "type": "boolean", - "default": false, - "tags": [ - "experimental", - "onExp" - ], - "description": "%github.copilot.config.alternateGeminiModelFPrompt.enabled%" - }, - "github.copilot.chat.useResponsesApi": { - "type": "boolean", - "default": true, - "markdownDescription": "%github.copilot.config.useResponsesApi%", - "tags": [ - "experimental", - "onExp" - ] - }, - "github.copilot.chat.responsesApiReasoningEffort": { - "type": "string", - "default": "default", - "markdownDescription": "%github.copilot.config.responsesApiReasoningEffort%", - "tags": [ - "experimental", - "onExp" - ], - "enum": [ - "low", - "medium", - "high", - "default" - ] - }, - "github.copilot.chat.responsesApiReasoningSummary": { - "type": "string", - "default": "detailed", - "markdownDescription": "%github.copilot.config.responsesApiReasoningSummary%", - "tags": [ - "experimental", - "onExp" - ], - "enum": [ - "off", - "detailed" - ] - }, - "github.copilot.chat.anthropic.thinking.budgetTokens": { - "type": "number", - "markdownDescription": "%github.copilot.config.anthropic.thinking.budgetTokens%", - "minimum": 0, - "maximum": 32000, - "default": 4000, - "tags": [ - "experimental", - "onExp" - ] - }, - "github.copilot.chat.anthropic.tools.websearch.enabled": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.anthropic.tools.websearch.enabled%", - "tags": [ - "experimental", - "onExp" - ] - }, - "github.copilot.chat.anthropic.tools.websearch.maxUses": { - "type": "number", - "default": 5, - "markdownDescription": "%github.copilot.config.anthropic.tools.websearch.maxUses%", - "minimum": 1, - "maximum": 20, - "tags": [ - "experimental" - ] - }, - "github.copilot.chat.anthropic.tools.websearch.allowedDomains": { - "type": "array", - "default": [], - "markdownDescription": "%github.copilot.config.anthropic.tools.websearch.allowedDomains%", - "items": { - "type": "string" - }, - "tags": [ - "experimental" - ] - }, - "github.copilot.chat.anthropic.tools.websearch.blockedDomains": { - "type": "array", - "default": [], - "markdownDescription": "%github.copilot.config.anthropic.tools.websearch.blockedDomains%", - "items": { - "type": "string" - }, - "tags": [ - "experimental" - ] - }, - "github.copilot.chat.anthropic.tools.websearch.userLocation": { - "type": [ - "object", - "null" - ], - "default": null, - "markdownDescription": "%github.copilot.config.anthropic.tools.websearch.userLocation%", - "properties": { - "city": { - "type": "string", - "description": "City name (e.g., 'San Francisco')" - }, - "region": { - "type": "string", - "description": "State or region (e.g., 'California')" - }, - "country": { - "type": "string", - "description": "ISO country code (e.g., 'US')" - }, - "timezone": { - "type": "string", - "description": "IANA timezone identifier (e.g., 'America/Los_Angeles')" - } - }, - "tags": [ - "experimental" - ] - }, - "github.copilot.chat.tools.memory.enabled": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.tools.memory.enabled%", - "tags": [ - "experimental", - "onExp" - ] - }, - "github.copilot.chat.completionsFetcher": { - "type": [ - "string", - "null" - ], - "markdownDescription": "%github.copilot.config.completionsFetcher%", - "tags": [ - "experimental", - "onExp" - ], - "enum": [ - "electron-fetch", - "node-fetch" - ] - }, - "github.copilot.chat.nesFetcher": { - "type": [ - "string", - "null" - ], - "markdownDescription": "%github.copilot.config.nesFetcher%", - "tags": [ - "experimental", - "onExp" - ], - "enum": [ - "electron-fetch", - "node-fetch" - ] - }, - "github.copilot.chat.customAgents.showOrganizationAndEnterpriseAgents": { - "type": "boolean", - "default": false, - "description": "%github.copilot.config.customAgents.showOrganizationAndEnterpriseAgents%", - "tags": [ - "experimental" - ] - } - } - }, - { - "id": "advanced", - "properties": { - "github.copilot.chat.debug.overrideChatEngine": { - "type": [ - "string", - "null" - ], - "markdownDescription": "%github.copilot.config.debug.overrideChatEngine%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.edits.gemini3MultiReplaceString": { - "type": "boolean", - "default": false, - "markdownDescription": "Enable the modern `multi_replace_string_in_file` edit tool when generating edits with Gemini 3 models.", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.projectLabels.expanded": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.projectLabels.expanded%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.projectLabels.chat": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.projectLabels.chat%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.projectLabels.inline": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.projectLabels.inline%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.workspace.maxLocalIndexSize": { - "type": "number", - "default": 100000, - "markdownDescription": "%github.copilot.config.workspace.maxLocalIndexSize%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.workspace.enableFullWorkspace": { - "type": "boolean", - "default": true, - "markdownDescription": "%github.copilot.config.workspace.enableFullWorkspace%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.workspace.enableCodeSearch": { - "type": "boolean", - "default": true, - "markdownDescription": "%github.copilot.config.workspace.enableCodeSearch%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.workspace.enableEmbeddingsSearch": { - "type": "boolean", - "default": true, - "markdownDescription": "%github.copilot.config.workspace.enableEmbeddingsSearch%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.workspace.preferredEmbeddingsModel": { - "type": "string", - "default": "", - "markdownDescription": "%github.copilot.config.workspace.preferredEmbeddingsModel%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.workspace.prototypeAdoCodeSearchEndpointOverride": { - "type": "string", - "default": "", - "markdownDescription": "%github.copilot.config.workspace.prototypeAdoCodeSearchEndpointOverride%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.feedback.onChange": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.feedback.onChange%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.review.intent": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.review.intent%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.notebook.summaryExperimentEnabled": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.notebook.summaryExperimentEnabled%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.notebook.variableFilteringEnabled": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.notebook.variableFilteringEnabled%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.notebook.alternativeFormat": { - "type": "string", - "default": "xml", - "enum": [ - "xml", - "markdown" - ], - "markdownDescription": "%github.copilot.config.notebook.alternativeFormat%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.notebook.alternativeNESFormat.enabled": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.notebook.alternativeNESFormat.enabled%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.debugTerminalCommandPatterns": { - "type": "array", - "default": [], - "items": { - "type": "string" - }, - "markdownDescription": "%github.copilot.config.debugTerminalCommandPatterns%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.localWorkspaceRecording.enabled": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.localWorkspaceRecording.enabled%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.editRecording.enabled": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.editRecording.enabled%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.inlineChat.selectionRatioThreshold": { - "type": "number", - "default": 0, - "markdownDescription": "%github.copilot.config.inlineChat.selectionRatioThreshold%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.debug.requestLogger.maxEntries": { - "type": "number", - "default": 100, - "markdownDescription": "%github.copilot.config.debug.requestLogger.maxEntries%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.inlineEdits.diagnosticsContextProvider.enabled": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.inlineEdits.diagnosticsContextProvider.enabled%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.codesearch.agent.enabled": { - "type": "boolean", - "default": true, - "markdownDescription": "%github.copilot.config.codesearch.agent.enabled%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.agent.temperature": { - "type": [ - "number", - "null" - ], - "markdownDescription": "%github.copilot.config.agent.temperature%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.instantApply.shortContextModelName": { - "type": "string", - "default": "gpt-4o-instant-apply-full-ft-v66-short", - "markdownDescription": "%github.copilot.config.instantApply.shortContextModelName%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.instantApply.shortContextLimit": { - "type": "number", - "default": 8000, - "markdownDescription": "%github.copilot.config.instantApply.shortContextLimit%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.enableUserPreferences": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.enableUserPreferences%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.summarizeAgentConversationHistoryThreshold": { - "type": [ - "number", - "null" - ], - "markdownDescription": "%github.copilot.config.summarizeAgentConversationHistoryThreshold%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.agentHistorySummarizationMode": { - "type": [ - "string", - "null" - ], - "markdownDescription": "%github.copilot.config.agentHistorySummarizationMode%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.agentHistorySummarizationWithPromptCache": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.agentHistorySummarizationWithPromptCache%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.agentHistorySummarizationForceGpt41": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.agentHistorySummarizationForceGpt41%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.useResponsesApiTruncation": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.useResponsesApiTruncation%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.omitBaseAgentInstructions": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.omitBaseAgentInstructions%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.promptFileContextProvider.enabled": { - "type": "boolean", - "default": true, - "markdownDescription": "%github.copilot.config.promptFileContextProvider.enabled%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.tools.defaultToolsGrouped": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.tools.defaultToolsGrouped%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.claudeCode.enabled": { - "type": [ - "boolean", - "string" - ], - "default": false, - "markdownDescription": "%github.copilot.config.claudeCode.enabled%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.claudeCode.debug": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.claudeCode.debug%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.gpt5AlternativePatch": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.gpt5AlternativePatch%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.inlineEdits.triggerOnEditorChangeAfterSeconds": { - "type": [ - "number", - "null" - ], - "markdownDescription": "%github.copilot.config.inlineEdits.triggerOnEditorChangeAfterSeconds%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.inlineEdits.nextCursorPrediction.displayLine": { - "type": "boolean", - "default": true, - "markdownDescription": "%github.copilot.config.inlineEdits.nextCursorPrediction.displayLine%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.inlineEdits.nextCursorPrediction.currentFileMaxTokens": { - "type": "number", - "default": 2000, - "markdownDescription": "%github.copilot.config.inlineEdits.nextCursorPrediction.currentFileMaxTokens%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.inlineEdits.renameSymbolSuggestions": { - "type": "boolean", - "default": true, - "markdownDescription": "%github.copilot.config.inlineEdits.renameSymbolSuggestions%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.nextEditSuggestions.preferredModel": { - "type": "string", - "default": "none", - "markdownDescription": "%github.copilot.config.nextEditSuggestions.preferredModel%", - "tags": [ - "advanced", - "experimental", - "onExp" - ] - }, - "github.copilot.chat.suggestRelatedFilesFromGitHistory.useEmbeddings": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.suggestRelatedFilesFromGitHistory.useEmbeddings%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.cli.customAgents.enabled": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.cli.customAgents.enabled%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.cli.mcp.enabled": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.cli.mcp.enabled%", - "tags": [ - "advanced", - "experimental" - ] - }, - "github.copilot.chat.cli.autoCommit.enabled": { - "type": "boolean", - "default": false, - "markdownDescription": "%github.copilot.config.cli.autoCommit.enabled%", - "tags": [ - "advanced", - "experimental" - ] - } - } - } - ], - "submenus": [ - { - "id": "copilot/reviewComment/additionalActions/applyAndNext", - "label": "%github.copilot.submenu.reviewComment.applyAndNext.label%" - }, - { - "id": "copilot/reviewComment/additionalActions/discardAndNext", - "label": "%github.copilot.submenu.reviewComment.discardAndNext.label%" - }, - { - "id": "copilot/reviewComment/additionalActions/discard", - "label": "%github.copilot.submenu.reviewComment.discard.label%" - }, - { - "id": "github.copilot.chat.debug.filter", - "label": "Filter", - "icon": "$(filter)" - }, - { - "id": "github.copilot.chat.debug.exportAllPromptLogsAsJson", - "label": "Export All Logs as JSON", - "icon": "$(file-export)" - } - ], - "menus": { - "editor/title": [ - { - "command": "github.copilot.debug.generateInlineEditTests", - "when": "resourceScheme == 'ccreq'" - }, - { - "command": "github.copilot.chat.notebook.enableFollowCellExecution", - "when": "config.github.copilot.chat.notebook.followCellExecution.enabled && !github.copilot.notebookFollowInSessionEnabled && github.copilot.notebookAgentModeUsage && !config.notebook.globalToolbar", - "group": "navigation@10" - }, - { - "command": "github.copilot.chat.notebook.disableFollowCellExecution", - "when": "config.github.copilot.chat.notebook.followCellExecution.enabled && github.copilot.notebookFollowInSessionEnabled && github.copilot.notebookAgentModeUsage && !config.notebook.globalToolbar", - "group": "navigation@10" - }, - { - "command": "github.copilot.chat.replay", - "group": "navigation@9", - "when": "resourceFilename === 'benchRun.chatReplay.json'" - }, - { - "command": "github.copilot.chat.showAsChatSession", - "group": "navigation@9", - "when": "resourceFilename === 'benchRun.chatReplay.json' || resourceFilename === 'chat-export-logs.json'" - }, - { - "command": "github.copilot.chat.applyCopilotCLIAgentSessionChanges", - "group": "navigation@1", - "when": "resourceScheme == copilotcli-worktree-changes" - } - ], - "explorer/context": [ - { - "command": "github.copilot.chat.showAsChatSession", - "when": "resourceFilename === 'benchRun.chatReplay.json' || resourceFilename === 'chat-export-logs.json'", - "group": "2_copilot@1" - } - ], - "editor/context": [ - { - "command": "github.copilot.chat.explain", - "when": "!github.copilot.interactiveSession.disabled", - "group": "1_chat@4" - } - ], - "editor/context/chat": [ - { - "command": "github.copilot.chat.fix", - "when": "!github.copilot.interactiveSession.disabled && !editorReadonly", - "group": "copilotAction@1" - }, - { - "command": "github.copilot.chat.review", - "when": "config.github.copilot.chat.reviewSelection.enabled && !github.copilot.interactiveSession.disabled && resourceScheme != 'vscode-chat-code-block'", - "group": "copilotAction@2" - }, - { - "command": "github.copilot.chat.generateDocs", - "when": "!github.copilot.interactiveSession.disabled && !editorReadonly", - "group": "copilotGenerate@1" - }, - { - "command": "github.copilot.chat.generateTests", - "when": "!github.copilot.interactiveSession.disabled && !editorReadonly", - "group": "copilotGenerate@2" - } - ], - "chat/input/editing/sessionToolbar": [ - { - "command": "github.copilot.chat.applyCopilotCLIAgentSessionChanges.apply", - "when": "chatSessionType == copilotcli", - "group": "navigation@0" - } - ], - "testing/item/result": [ - { - "command": "github.copilot.tests.fixTestFailure.fromInline", - "when": "testResultState == failed && !testResultOutdated", - "group": "inline@2" - } - ], - "testing/item/context": [ - { - "command": "github.copilot.tests.fixTestFailure.fromInline", - "when": "testResultState == failed && !testResultOutdated", - "group": "inline@2" - } - ], - "commandPalette": [ - { - "command": "github.copilot.chat.triggerPermissiveSignIn", - "when": "false" - }, - { - "command": "github.copilot.interactiveSession.feedback", - "when": "github.copilot-chat.activated && !github.copilot.interactiveSession.disabled" - }, - { - "command": "github.copilot.debug.workbenchState", - "when": "true" - }, - { - "command": "github.copilot.chat.rerunWithCopilotDebug", - "when": "false" - }, - { - "command": "github.copilot.chat.startCopilotDebugCommand", - "when": "false" - }, - { - "command": "github.copilot.git.generateCommitMessage", - "when": "false" - }, - { - "command": "github.copilot.git.resolveMergeConflicts", - "when": "false" - }, - { - "command": "github.copilot.chat.explain", - "when": "false" - }, - { - "command": "github.copilot.chat.review", - "when": "!github.copilot.interactiveSession.disabled" - }, - { - "command": "github.copilot.chat.review.apply", - "when": "false" - }, - { - "command": "github.copilot.chat.review.applyAndNext", - "when": "false" - }, - { - "command": "github.copilot.chat.review.discard", - "when": "false" - }, - { - "command": "github.copilot.chat.review.discardAndNext", - "when": "false" - }, - { - "command": "github.copilot.chat.review.discardAll", - "when": "false" - }, - { - "command": "github.copilot.chat.review.stagedChanges", - "when": "false" - }, - { - "command": "github.copilot.chat.review.unstagedChanges", - "when": "false" - }, - { - "command": "github.copilot.chat.review.changes", - "when": "false" - }, - { - "command": "github.copilot.chat.review.stagedFileChange", - "when": "false" - }, - { - "command": "github.copilot.chat.review.unstagedFileChange", - "when": "false" - }, - { - "command": "github.copilot.chat.review.previous", - "when": "false" - }, - { - "command": "github.copilot.chat.review.next", - "when": "false" - }, - { - "command": "github.copilot.chat.review.continueInInlineChat", - "when": "false" - }, - { - "command": "github.copilot.chat.review.continueInChat", - "when": "false" - }, - { - "command": "github.copilot.chat.review.markHelpful", - "when": "false" - }, - { - "command": "github.copilot.chat.review.markUnhelpful", - "when": "false" - }, - { - "command": "github.copilot.devcontainer.generateDevContainerConfig", - "when": "false" - }, - { - "command": "github.copilot.tests.fixTestFailure", - "when": "false" - }, - { - "command": "github.copilot.tests.fixTestFailure.fromInline", - "when": "false" - }, - { - "command": "github.copilot.search.markHelpful", - "when": "false" - }, - { - "command": "github.copilot.search.markUnhelpful", - "when": "false" - }, - { - "command": "github.copilot.search.feedback", - "when": "false" - }, - { - "command": "github.copilot.chat.debug.showElements", - "when": "false" - }, - { - "command": "github.copilot.chat.debug.hideElements", - "when": "false" - }, - { - "command": "github.copilot.chat.debug.showTools", - "when": "false" - }, - { - "command": "github.copilot.chat.debug.hideTools", - "when": "false" - }, - { - "command": "github.copilot.chat.debug.showNesRequests", - "when": "false" - }, - { - "command": "github.copilot.chat.debug.hideNesRequests", - "when": "false" - }, - { - "command": "github.copilot.chat.debug.showGhostRequests", - "when": "false" - }, - { - "command": "github.copilot.chat.debug.hideGhostRequests", - "when": "false" - }, - { - "command": "github.copilot.chat.debug.exportLogItem", - "when": "false" - }, - { - "command": "github.copilot.chat.debug.exportPromptArchive", - "when": "false" - }, - { - "command": "github.copilot.chat.debug.exportPromptLogsAsJson", - "when": "false" - }, - { - "command": "github.copilot.chat.debug.exportAllPromptLogsAsJson", - "when": "false" - }, - { - "command": "github.copilot.chat.mcp.setup.check", - "when": "false" - }, - { - "command": "github.copilot.chat.mcp.setup.validatePackage", - "when": "false" - }, - { - "command": "github.copilot.chat.mcp.setup.flow", - "when": "false" - }, - { - "command": "github.copilot.chat.debug.showRawRequestBody", - "when": "false" - }, - { - "command": "github.copilot.debug.showOutputChannel", - "when": "false" - }, - { - "command": "github.copilot.cli.sessions.delete", - "when": "false" - }, - { - "command": "github.copilot.cli.sessions.resumeInTerminal", - "when": "false" - }, - { - "command": "github.copilot.cloud.sessions.openInBrowser", - "when": "false" - }, - { - "command": "github.copilot.cloud.sessions.proxy.closeChatSessionPullRequest", - "when": "false" - }, - { - "command": "github.copilot.cloud.sessions.installPRExtension", - "when": "false" - }, - { - "command": "github.copilot.chat.applyCopilotCLIAgentSessionChanges", - "when": "false" - }, - { - "command": "github.copilot.chat.applyCopilotCLIAgentSessionChanges.apply", - "when": "false" - }, - { - "command": "github.copilot.chat.showAsChatSession", - "when": "false" - } - ], - "view/title": [ - { - "submenu": "github.copilot.chat.debug.filter", - "when": "view == copilot-chat", - "group": "navigation" - }, - { - "command": "github.copilot.chat.debug.exportAllPromptLogsAsJson", - "when": "view == copilot-chat", - "group": "export@1" - }, - { - "command": "github.copilot.debug.showOutputChannel", - "when": "view == copilot-chat", - "group": "3_show@1" - }, - { - "command": "github.copilot.debug.showChatLogView", - "when": "view == workbench.panel.chat.view.copilot", - "group": "3_show" - } - ], - "view/item/context": [ - { - "command": "github.copilot.chat.debug.showRawRequestBody", - "when": "view == copilot-chat && viewItem == request", - "group": "export@0" - }, - { - "command": "github.copilot.chat.debug.exportLogItem", - "when": "view == copilot-chat && (viewItem == toolcall || viewItem == request)", - "group": "export@1" - }, - { - "command": "github.copilot.chat.debug.exportPromptArchive", - "when": "view == copilot-chat && viewItem == chatprompt", - "group": "export@2" - }, - { - "command": "github.copilot.chat.debug.exportPromptLogsAsJson", - "when": "view == copilot-chat && viewItem == chatprompt", - "group": "export@3" - } - ], - "searchPanel/aiResults/commands": [ - { - "command": "github.copilot.search.markHelpful", - "group": "inline@0", - "when": "aiResultsTitle && aiResultsRequested" - }, - { - "command": "github.copilot.search.markUnhelpful", - "group": "inline@1", - "when": "aiResultsTitle && aiResultsRequested" - }, - { - "command": "github.copilot.search.feedback", - "group": "inline@2", - "when": "aiResultsTitle && aiResultsRequested && github.copilot.debugReportFeedback" - } - ], - "comments/comment/title": [ - { - "command": "github.copilot.chat.review.markHelpful", - "group": "inline@0", - "when": "commentController == github-copilot-review" - }, - { - "command": "github.copilot.chat.review.markUnhelpful", - "group": "inline@1", - "when": "commentController == github-copilot-review" - } - ], - "commentsView/commentThread/context": [ - { - "command": "github.copilot.chat.review.apply", - "group": "context@1", - "when": "commentController == github-copilot-review" - }, - { - "command": "github.copilot.chat.review.discard", - "group": "context@2", - "when": "commentController == github-copilot-review" - }, - { - "command": "github.copilot.chat.review.discardAll", - "group": "context@3", - "when": "commentController == github-copilot-review" - } - ], - "comments/commentThread/additionalActions": [ - { - "submenu": "copilot/reviewComment/additionalActions/applyAndNext", - "group": "inline@1", - "when": "commentController == github-copilot-review && github.copilot.chat.review.numberOfComments > 1" - }, - { - "command": "github.copilot.chat.review.apply", - "group": "inline@1", - "when": "commentController == github-copilot-review && github.copilot.chat.review.numberOfComments == 1" - }, - { - "submenu": "copilot/reviewComment/additionalActions/discardAndNext", - "group": "inline@2", - "when": "commentController == github-copilot-review && github.copilot.chat.review.numberOfComments > 1" - }, - { - "submenu": "copilot/reviewComment/additionalActions/discard", - "group": "inline@2", - "when": "commentController == github-copilot-review && github.copilot.chat.review.numberOfComments == 1" - } - ], - "copilot/reviewComment/additionalActions/applyAndNext": [ - { - "command": "github.copilot.chat.review.applyAndNext", - "group": "inline@1", - "when": "commentController == github-copilot-review" - }, - { - "command": "github.copilot.chat.review.apply", - "group": "inline@2", - "when": "commentController == github-copilot-review" - } - ], - "copilot/reviewComment/additionalActions/discardAndNext": [ - { - "command": "github.copilot.chat.review.discardAndNext", - "group": "inline@1", - "when": "commentController == github-copilot-review" - }, - { - "command": "github.copilot.chat.review.discard", - "group": "inline@2", - "when": "commentController == github-copilot-review" - }, - { - "command": "github.copilot.chat.review.continueInInlineChat", - "group": "inline@3", - "when": "commentController == github-copilot-review" - } - ], - "copilot/reviewComment/additionalActions/discard": [ - { - "command": "github.copilot.chat.review.discard", - "group": "inline@2", - "when": "commentController == github-copilot-review" - }, - { - "command": "github.copilot.chat.review.continueInInlineChat", - "group": "inline@3", - "when": "commentController == github-copilot-review" - } - ], - "comments/commentThread/title": [ - { - "command": "github.copilot.chat.review.previous", - "group": "inline@1", - "when": "commentController == github-copilot-review" - }, - { - "command": "github.copilot.chat.review.next", - "group": "inline@2", - "when": "commentController == github-copilot-review" - }, - { - "command": "github.copilot.chat.review.continueInChat", - "group": "inline@3", - "when": "commentController == github-copilot-review" - }, - { - "command": "github.copilot.chat.review.discardAll", - "group": "inline@4", - "when": "commentController == github-copilot-review" - } - ], - "scm/title": [ - { - "command": "github.copilot.chat.review.changes", - "group": "navigation", - "when": "config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmProviderRootUri in github.copilot.chat.reviewDiff.enabledRootUris" - } - ], - "scm/resourceGroup/context": [ - { - "command": "github.copilot.chat.review.stagedChanges", - "when": "config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmResourceGroup == index", - "group": "inline@-3" - }, - { - "command": "github.copilot.chat.review.unstagedChanges", - "when": "config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmResourceGroup == workingTree", - "group": "inline@-3" - } - ], - "scm/resourceState/context": [ - { - "command": "github.copilot.git.resolveMergeConflicts", - "when": "scmProvider == git && scmResourceGroup == merge && git.activeResourceHasMergeConflicts", - "group": "z_chat@1" - }, - { - "command": "github.copilot.chat.review.stagedFileChange", - "group": "3_copilot", - "when": "config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmResourceGroup == index" - }, - { - "command": "github.copilot.chat.review.unstagedFileChange", - "group": "3_copilot", - "when": "config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmResourceGroup == workingTree" - } - ], - "scm/inputBox": [ - { - "command": "github.copilot.git.generateCommitMessage", - "when": "scmProvider == git" - } - ], - "testing/message/context": [ - { - "command": "github.copilot.tests.fixTestFailure", - "when": "testing.testItemHasUri", - "group": "inline@1" - } - ], - "issue/reporter": [ - { - "command": "github.copilot.report" - } - ], - "github.copilot.chat.debug.filter": [ - { - "command": "github.copilot.chat.debug.showElements", - "when": "github.copilot.chat.debug.elementsHidden", - "group": "commands@0" - }, - { - "command": "github.copilot.chat.debug.hideElements", - "when": "!github.copilot.chat.debug.elementsHidden", - "group": "commands@0" - }, - { - "command": "github.copilot.chat.debug.showTools", - "when": "github.copilot.chat.debug.toolsHidden", - "group": "commands@1" - }, - { - "command": "github.copilot.chat.debug.hideTools", - "when": "!github.copilot.chat.debug.toolsHidden", - "group": "commands@1" - }, - { - "command": "github.copilot.chat.debug.showNesRequests", - "when": "github.copilot.chat.debug.nesRequestsHidden", - "group": "commands@2" - }, - { - "command": "github.copilot.chat.debug.hideNesRequests", - "when": "!github.copilot.chat.debug.nesRequestsHidden", - "group": "commands@2" - }, - { - "command": "github.copilot.chat.debug.showGhostRequests", - "when": "github.copilot.chat.debug.ghostRequestsHidden", - "group": "commands@3" - }, - { - "command": "github.copilot.chat.debug.hideGhostRequests", - "when": "!github.copilot.chat.debug.ghostRequestsHidden", - "group": "commands@3" - } - ], - "notebook/toolbar": [ - { - "command": "github.copilot.chat.notebook.enableFollowCellExecution", - "when": "config.github.copilot.chat.notebook.followCellExecution.enabled && !github.copilot.notebookFollowInSessionEnabled && github.copilot.notebookAgentModeUsage && config.notebook.globalToolbar", - "group": "navigation/execute@15" - }, - { - "command": "github.copilot.chat.notebook.disableFollowCellExecution", - "when": "config.github.copilot.chat.notebook.followCellExecution.enabled && github.copilot.notebookFollowInSessionEnabled && github.copilot.notebookAgentModeUsage && config.notebook.globalToolbar", - "group": "navigation/execute@15" - } - ], - "editor/content": [ - { - "command": "github.copilot.git.resolveMergeConflicts", - "group": "z_chat@1", - "when": "config.git.enabled && !git.missing && !isInDiffEditor && !isMergeEditor && resource in git.mergeChanges && git.activeResourceHasMergeConflicts" - } - ], - "multiDiffEditor/content": [ - { - "command": "github.copilot.chat.applyCopilotCLIAgentSessionChanges", - "when": "resourceScheme == copilotcli-worktree-changes" - } - ], - "chat/chatSessions": [ - { - "command": "github.copilot.chat.applyCopilotCLIAgentSessionChanges", - "when": "chatSessionType == copilotcli", - "group": "inline@0" - }, - { - "command": "github.copilot.cli.sessions.resumeInTerminal", - "when": "chatSessionType == copilotcli", - "group": "inline@1" - }, - { - "command": "github.copilot.cli.sessions.delete", - "when": "chatSessionType == copilotcli", - "group": "1_edit@10" - }, - { - "command": "github.copilot.cloud.sessions.openInBrowser", - "when": "chatSessionType == copilot-cloud-agent", - "group": "navigation@10" - }, - { - "command": "github.copilot.cloud.sessions.proxy.closeChatSessionPullRequest", - "when": "chatSessionType == copilot-cloud-agent", - "group": "1_edit@10" - } - ], - "chat/multiDiff/context": [ - { - "command": "github.copilot.cloud.sessions.installPRExtension", - "when": "chatSessionType == copilot-cloud-agent && !github.copilot.prExtensionInstalled", - "group": "inline@1" - } - ] - }, - "icons": { - "copilot-logo": { - "description": "%github.copilot.icon%", - "default": { - "fontPath": "assets/copilot.woff", - "fontCharacter": "\\0041" - } - }, - "copilot-warning": { - "description": "%github.copilot.icon%", - "default": { - "fontPath": "assets/copilot.woff", - "fontCharacter": "\\0042" - } - }, - "copilot-notconnected": { - "description": "%github.copilot.icon%", - "default": { - "fontPath": "assets/copilot.woff", - "fontCharacter": "\\0043" - } - } - }, - "iconFonts": [ - { - "id": "copilot-font", - "src": [ - { - "path": "assets/copilot.woff", - "format": "woff" - } - ] - } - ], - "terminalQuickFixes": [ - { - "id": "copilot-chat.fixWithCopilot", - "commandLineMatcher": ".+", - "commandExitResult": "error", - "outputMatcher": { - "anchor": "bottom", - "length": 1, - "lineMatcher": ".+", - "offset": 0 - }, - "kind": "explain" - }, - { - "id": "copilot-chat.generateCommitMessage", - "commandLineMatcher": "git add .+", - "commandExitResult": "success", - "kind": "explain", - "outputMatcher": { - "anchor": "bottom", - "length": 1, - "lineMatcher": ".+", - "offset": 0 - } - }, - { - "id": "copilot-chat.terminalToDebugging", - "commandLineMatcher": ".+", - "kind": "explain", - "commandExitResult": "error", - "outputMatcher": { - "anchor": "bottom", - "length": 1, - "lineMatcher": "", - "offset": 0 - } - }, - { - "id": "copilot-chat.terminalToDebuggingSuccess", - "commandLineMatcher": ".+", - "kind": "explain", - "commandExitResult": "success", - "outputMatcher": { - "anchor": "bottom", - "length": 1, - "lineMatcher": "", - "offset": 0 - } - } - ], - "languages": [ - { - "id": "ignore", - "filenamePatterns": [ - ".copilotignore" - ], - "aliases": [] - }, - { - "id": "markdown", - "extensions": [ - ".copilotmd" - ] - } - ], - "views": { - "copilot-chat": [ - { - "id": "copilot-chat", - "name": "Chat Debug", - "icon": "assets/debug-icon.svg", - "when": "github.copilot.chat.showLogView" - } - ], - "context-inspector": [ - { - "id": "context-inspector", - "name": "Language Context Inspector", - "icon": "$(inspect)", - "when": "github.copilot.chat.showContextInspectorView" - } - ] - }, - "viewsContainers": { - "activitybar": [ - { - "id": "copilot-chat", - "title": "Chat Debug", - "icon": "assets/debug-icon.svg" - }, - { - "id": "context-inspector", - "title": "Language Context Inspector", - "icon": "$(inspect)" - } - ] - }, - "configurationDefaults": { - "workbench.editorAssociations": { - "*.copilotmd": "vscode.markdown.preview.editor" - } - }, - "keybindings": [ - { - "command": "github.copilot.chat.rerunWithCopilotDebug", - "key": "ctrl+alt+.", - "mac": "cmd+alt+.", - "when": "github.copilot-chat.activated && terminalShellIntegrationEnabled && terminalFocus && !terminalAltBufferActive" - } - ], - "walkthroughs": [ - { - "id": "copilotWelcome", - "title": "%github.copilot.walkthrough.title%", - "description": "%github.copilot.walkthrough.description%", - "when": "!isWeb", - "steps": [ - { - "id": "copilot.setup.signIn", - "title": "%github.copilot.walkthrough.setup.signIn.title%", - "description": "%github.copilot.walkthrough.setup.signIn.description%", - "when": "chatEntitlementSignedOut && !view.workbench.panel.chat.view.copilot.visible && !github.copilot-chat.activated && !github.copilot.offline && !github.copilot.interactiveSession.individual.disabled && !github.copilot.interactiveSession.individual.expired && !github.copilot.interactiveSession.enterprise.disabled && !github.copilot.interactiveSession.contactSupport", - "media": { - "video": { - "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4", - "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4", - "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4", - "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4" - }, - "altText": "%github.copilot.walkthrough.panelChat.media.altText%" - } - }, - { - "id": "copilot.setup.signInNoAction", - "title": "%github.copilot.walkthrough.setup.signIn.title%", - "description": "%github.copilot.walkthrough.setup.noAction.description%", - "when": "chatEntitlementSignedOut && view.workbench.panel.chat.view.copilot.visible && !github.copilot-chat.activated && !github.copilot.offline && !github.copilot.interactiveSession.individual.disabled && !github.copilot.interactiveSession.individual.expired && !github.copilot.interactiveSession.enterprise.disabled && !github.copilot.interactiveSession.contactSupport", - "media": { - "video": { - "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4", - "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4", - "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4", - "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4" - }, - "altText": "%github.copilot.walkthrough.panelChat.media.altText%" - } - }, - { - "id": "copilot.setup.signUp", - "title": "%github.copilot.walkthrough.setup.signUp.title%", - "description": "%github.copilot.walkthrough.setup.signUp.description%", - "when": "chatPlanCanSignUp && !view.workbench.panel.chat.view.copilot.visible && !github.copilot-chat.activated && !github.copilot.offline && (github.copilot.interactiveSession.individual.disabled || github.copilot.interactiveSession.individual.expired) && !github.copilot.interactiveSession.enterprise.disabled && !github.copilot.interactiveSession.contactSupport", - "media": { - "video": { - "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4", - "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4", - "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4", - "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4" - }, - "altText": "%github.copilot.walkthrough.panelChat.media.altText%" - } - }, - { - "id": "copilot.setup.signUpNoAction", - "title": "%github.copilot.walkthrough.setup.signUp.title%", - "description": "%github.copilot.walkthrough.setup.noAction.description%", - "when": "chatPlanCanSignUp && view.workbench.panel.chat.view.copilot.visible && !github.copilot-chat.activated && !github.copilot.offline && (github.copilot.interactiveSession.individual.disabled || github.copilot.interactiveSession.individual.expired) && !github.copilot.interactiveSession.enterprise.disabled && !github.copilot.interactiveSession.contactSupport", - "media": { - "video": { - "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4", - "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4", - "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4", - "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4" - }, - "altText": "%github.copilot.walkthrough.panelChat.media.altText%" - } - }, - { - "id": "copilot.panelChat", - "title": "%github.copilot.walkthrough.panelChat.title%", - "description": "%github.copilot.walkthrough.panelChat.description%", - "when": "!chatEntitlementSignedOut || chatIsEnabled ", - "media": { - "video": { - "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4", - "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4", - "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4", - "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4" - }, - "altText": "%github.copilot.walkthrough.panelChat.media.altText%" - } - }, - { - "id": "copilot.edits", - "title": "%github.copilot.walkthrough.edits.title%", - "description": "%github.copilot.walkthrough.edits.description%", - "when": "!chatEntitlementSignedOut || chatIsEnabled ", - "media": { - "video": { - "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/edits.mp4", - "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/edits-light.mp4", - "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/edits-hc.mp4", - "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/edits-hclight.mp4" - }, - "altText": "%github.copilot.walkthrough.edits.media.altText%" - } - }, - { - "id": "copilot.firstSuggest", - "title": "%github.copilot.walkthrough.firstSuggest.title%", - "description": "%github.copilot.walkthrough.firstSuggest.description%", - "when": "!chatEntitlementSignedOut || chatIsEnabled ", - "media": { - "video": { - "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/ghost-text.mp4", - "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/ghost-text-light.mp4", - "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/ghost-text-hc.mp4", - "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/ghost-text-hclight.mp4" - }, - "altText": "%github.copilot.walkthrough.firstSuggest.media.altText%" - } - }, - { - "id": "copilot.inlineChatNotMac", - "title": "%github.copilot.walkthrough.inlineChatNotMac.title%", - "description": "%github.copilot.walkthrough.inlineChatNotMac.description%", - "when": "!isMac && (!chatEntitlementSignedOut || chatIsEnabled )", - "media": { - "video": { - "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline.mp4", - "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-light.mp4", - "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-hc.mp4", - "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-hclight.mp4" - }, - "altText": "%github.copilot.walkthrough.inlineChatNotMac.media.altText%" - } - }, - { - "id": "copilot.inlineChatMac", - "title": "%github.copilot.walkthrough.inlineChatMac.title%", - "description": "%github.copilot.walkthrough.inlineChatMac.description%", - "when": "isMac && (!chatEntitlementSignedOut || chatIsEnabled )", - "media": { - "video": { - "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline.mp4", - "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-light.mp4", - "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-hc.mp4", - "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-hclight.mp4" - }, - "altText": "%github.copilot.walkthrough.inlineChatMac.media.altText%" - } - }, - { - "id": "copilot.sparkle", - "title": "%github.copilot.walkthrough.sparkle.title%", - "description": "%github.copilot.walkthrough.sparkle.description%", - "when": "!chatEntitlementSignedOut || chatIsEnabled", - "media": { - "video": { - "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/git-commit.mp4", - "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/git-commit-light.mp4", - "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/git-commit-hc.mp4", - "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/git-commit-hclight.mp4" - }, - "altText": "%github.copilot.walkthrough.sparkle.media.altText%" - } - } - ] - } - ], - "jsonValidation": [ - { - "fileMatch": "settings.json", - "url": "ccsettings://root/schema.json" - } - ], - "typescriptServerPlugins": [ - { - "name": "@vscode/copilot-typescript-server-plugin", - "enableForWorkspaceTypeScriptVersions": true - } - ], - "chatSessions": [ - { - "type": "claude-code", - "name": "claude", - "displayName": "Claude Code CLI Agent", - "icon": "$(sparkle)", - "welcomeTitle": "Claude Code Agent", - "welcomeMessage": "Run local background tasks", - "inputPlaceholder": "Run local tasks with Claude Code, type `#` for adding context", - "order": 3, - "description": "The Claude Code Agent works on your local machine", - "when": "config.github.copilot.chat.claudeCode.enabled", - "canDelegate": true, - "capabilities": { - "supportsFileAttachments": true - }, - "commands": [ - { - "name": "init", - "description": "Initialize a new CLAUDE.md file with codebase documentation" - }, - { - "name": "compact", - "description": "Clear conversation history but keep a summary in context. Optional: /compact [instructions for summarization]" - }, - { - "name": "pr-comments", - "description": "Get comments from a GitHub pull request" - }, - { - "name": "review", - "description": "Review a pull request" - }, - { - "name": "security-review", - "description": "Complete a security review of the pending changes on the current branch" - } - ] - }, - { - "type": "copilotcli", - "name": "cli", - "displayName": "Background Agent", - "icon": "$(collection)", - "welcomeTitle": "Background Agent", - "welcomeMessage": "Run tasks in the background", - "inputPlaceholder": "Run tasks in the background, type `#` for adding context", - "order": 2, - "canDelegate": true, - "description": "Delegate tasks to a background agent.", - "when": "config.github.copilot.chat.backgroundAgent.enabled", - "capabilities": { - "supportsFileAttachments": true, - "supportsProblemAttachments": true, - "supportsToolAttachments": false, - "supportsSymbolAttachments": true, - "supportsSearchResultAttachments": true, - "supportsSourceControlAttachments": true - }, - "commands": [ - { - "name": "delegate", - "description": "Delegate chat session to cloud agent and create associated PR", - "when": "config.github.copilot.chat.cloudAgent.enabled" - } - ] - }, - { - "type": "copilot-cloud-agent", - "alternativeIds": [ - "copilot-swe-agent" - ], - "name": "cloud", - "displayName": "Cloud Agent", - "icon": "$(cloud)", - "welcomeTitle": "Cloud Agent", - "welcomeMessage": "Delegate tasks to the cloud", - "inputPlaceholder": "Delegate tasks to the cloud, type `#` for adding context", - "order": 1, - "canDelegate": true, - "description": "Delegate tasks to the GitHub Copilot Cloud Agent. The agent works asynchronously in the cloud to implement changes, iterates via chat, and can create or update pull requests as needed.", - "when": "config.github.copilot.chat.cloudAgent.enabled", - "capabilities": { - "supportsFileAttachments": true - } - } - ], - "debuggers": [ - { - "type": "vscode-chat-replay", - "label": "vscode-chat-replay", - "languages": [ - "json" - ], - "when": "resourceFilename === 'benchRun.chatReplay.json'", - "configurationAttributes": { - "launch": { - "properties": { - "program": { - "type": "string", - "description": "Chat replay file to debug (parse for headers)", - "default": "${file}" - }, - "stopOnEntry": { - "type": "boolean", - "default": true, - "description": "Break immediately to step through manually." - } - }, - "required": [ - "program" - ] - } - } - } - ], - "chatAgents": [ - { - "name": "Plan", - "path": "./assets/agents/Plan.agent.md", - "description": "Researches a task to create multi-step plans" - } - ], - "chatPromptFiles": [ - { - "name": "savePrompt", - "path": "./assets/prompts/savePrompt.prompt.md", - "description": "Generalize the current discussion into a reusable prompt and save it as a file" - } - ] - }, - "extensionPack": [ - "GitHub.copilot" - ], - "prettier": { - "useTabs": true, - "tabWidth": 4, - "singleQuote": true - }, - "scripts": { - "postinstall": "tsx ./script/postinstall.ts", - "prepare": "husky", - "vscode-dts:dev": "node node_modules/@vscode/dts/index.js dev && mv vscode.proposed.*.ts src/extension", - "vscode-dts:main": "node node_modules/@vscode/dts/index.js main && mv vscode.d.ts src/extension", - "build": "node .esbuild.ts", - "compile": "node .esbuild.ts --dev", - "watch": "npm-run-all -p watch:*", - "watch:esbuild": "node .esbuild.ts --watch --dev", - "watch:tsc-extension": "tsc --noEmit --watch --project tsconfig.json", - "watch:tsc-extension-web": "tsc --noEmit --watch --project tsconfig.worker.json", - "watch:tsc-simulation-workbench": "tsc --noEmit --watch --project test/simulation/workbench/tsconfig.json", - "typecheck": "tsc --noEmit --project tsconfig.json && tsc --noEmit --project test/simulation/workbench/tsconfig.json && tsc --noEmit --project tsconfig.worker.json && tsc --noEmit --project src/extension/completions-core/vscode-node/extension/src/copilotPanel/webView/tsconfig.json", - "lint": "eslint . --max-warnings=0", - "lint-staged": "eslint --max-warnings=0", - "tsfmt": "npx tsfmt -r --verify", - "test": "npm-run-all test:*", - "test:extension": "vscode-test", - "test:sanity": "vscode-test --sanity", - "test:unit": "vitest --run --pool=forks", - "vitest": "vitest", - "bench": "vitest bench", - "get_env": "tsx script/setup/getEnv.mts", - "get_token": "tsx script/setup/getToken.mts", - "prettier": "prettier --list-different --write --cache .", - "simulate": "node dist/simulationMain.js", - "simulate-require-cache": "node dist/simulationMain.js --require-cache", - "simulate-ci": "node dist/simulationMain.js --ci --require-cache", - "simulate-update-baseline": "node dist/simulationMain.js --update-baseline", - "simulate-gc": "node dist/simulationMain.js --require-cache --gc", - "setup": "npm run get_env && npm run get_token", - "setup:dotnet": "run-script-os", - "setup:dotnet:darwin:linux": "curl -O https://raw.githubusercontent.com/dotnet/install-scripts/main/src/dotnet-install.sh && chmod u+x dotnet-install.sh && ./dotnet-install.sh --channel 10.0 && rm dotnet-install.sh", - "setup:dotnet:win32": "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command \"Invoke-WebRequest -Uri https://raw.githubusercontent.com/dotnet/install-scripts/main/src/dotnet-install.ps1 -OutFile dotnet-install.ps1; ./dotnet-install.ps1 -channel 10.0; Remove-Item dotnet-install.ps1\"", - "analyze-edits": "tsx script/analyzeEdits.ts", - "extract-chat-lib": "tsx script/build/extractChatLib.ts", - "create_venv": "tsx script/setup/createVenv.mts", - "package": "vsce package", - "web": "vscode-test-web --headless --extensionDevelopmentPath=. .", - "test:prompt": "mocha \"src/extension/completions-core/vscode-node/prompt/**/test/**/*.test.{ts,tsx}\"", - "test:completions-core": "tsx src/extension/completions-core/vscode-node/extension/test/runTest.ts" - }, - "devDependencies": { - "@azure/identity": "4.9.1", - "@azure/keyvault-secrets": "^4.10.0", - "@azure/msal-node": "^3.6.3", - "@c4312/scip": "^0.1.0", - "@fluentui/react-components": "^9.66.6", - "@fluentui/react-icons": "^2.0.305", - "@hediet/node-reload": "^0.8.0", - "@keyv/sqlite": "^4.0.5", - "@octokit/types": "^14.1.0", - "@parcel/watcher": "^2.5.1", - "@stylistic/eslint-plugin": "^3.0.1", - "@types/eslint": "^9.0.0", - "@types/google-protobuf": "^3.15.12", - "@types/js-yaml": "^4.0.9", - "@types/markdown-it": "^14.0.0", - "@types/minimist": "^1.2.5", - "@types/mocha": "^10.0.10", - "@types/node": "^22.16.3", - "@types/picomatch": "^4.0.0", - "@types/react": "17.0.44", - "@types/react-dom": "^18.2.17", - "@types/sinon": "^17.0.4", - "@types/source-map-support": "^0.5.10", - "@types/tar": "^6.1.13", - "@types/vinyl": "^2.0.12", - "@types/vscode": "^1.102.0", - "@types/vscode-webview": "^1.57.4", - "@types/yargs": "^17.0.24", - "@typescript-eslint/eslint-plugin": "^8.35.0", - "@typescript-eslint/parser": "^8.32.0", - "@typescript-eslint/typescript-estree": "^8.26.1", - "@vitest/coverage-v8": "^3.2.4", - "@vitest/snapshot": "^1.5.0", - "@vscode/debugadapter": "^1.68.0", - "@vscode/debugprotocol": "^1.68.0", - "@vscode/dts": "^0.4.1", - "@vscode/lsif-language-service": "^0.1.0-pre.4", - "@vscode/test-cli": "^0.0.11", - "@vscode/test-electron": "^2.5.2", - "@vscode/test-web": "^0.0.71", - "@vscode/vsce": "3.6.0", - "copyfiles": "^2.4.1", - "csv-parse": "^6.0.0", - "dotenv": "^17.2.0", - "electron": "^37.2.1", - "esbuild": "^0.25.6", - "eslint": "^9.30.0", - "eslint-import-resolver-typescript": "^4.4.4", - "eslint-plugin-header": "^3.1.1", - "eslint-plugin-import": "^2.32.0", - "eslint-plugin-jsdoc": "^51.3.4", - "eslint-plugin-no-only-tests": "^3.3.0", - "fastq": "^1.19.1", - "glob": "^11.1.0", - "husky": "^9.1.7", - "js-yaml": "^4.1.1", - "keyv": "^5.3.2", - "lint-staged": "15.2.9", - "minimist": "^1.2.8", - "mobx": "^6.13.7", - "mobx-react-lite": "^4.1.0", - "mocha": "^11.7.1", - "mocha-junit-reporter": "^2.2.1", - "mocha-multi-reporters": "^1.5.1", - "monaco-editor": "0.44.0", - "npm-run-all": "^4.1.5", - "open": "^10.1.2", - "openai": "^6.7.0", - "outdent": "^0.8.0", - "picomatch": "^4.0.2", - "playwright": "^1.56.1", - "prettier": "^3.6.2", - "react": "^17.0.2", - "react-dom": "17.0.2", - "rimraf": "^6.0.1", - "run-script-os": "^1.1.6", - "shiki": "~1.15.0", - "sinon": "^21.0.0", - "source-map-support": "^0.5.21", - "tar": "^7.4.3", - "ts-dedent": "^2.2.0", - "tsx": "^4.20.3", - "typescript": "^5.8.3", - "typescript-eslint": "^8.36.0", - "typescript-formatter": "github:jrieken/typescript-formatter#497efb26bc40b5fa59a350e6eab17bce650a7e4b", - "vite-plugin-top-level-await": "^1.5.0", - "vite-plugin-wasm": "^3.5.0", - "vitest": "^3.0.5", - "vscode-languageserver-protocol": "^3.17.5", - "vscode-languageserver-textdocument": "^1.0.12", - "vscode-languageserver-types": "^3.17.5", - "yaml": "^2.8.0", - "yargs": "^17.7.2" - }, - "dependencies": { - "@anthropic-ai/claude-agent-sdk": "0.1.55", - "@anthropic-ai/sdk": "^0.68.0", - "@github/blackbird-external-ingest-utils": "^0.1.0", - "@github/copilot": "^0.0.366", - "@google/genai": "^1.22.0", - "@humanwhocodes/gitignore-to-minimatch": "1.0.2", - "@microsoft/tiktokenizer": "^1.0.10", - "@sinclair/typebox": "^0.34.41", - "@vscode/copilot-api": "^0.2.6", - "@vscode/extension-telemetry": "^1.2.0", - "@vscode/l10n": "^0.0.18", - "@vscode/prompt-tsx": "^0.4.0-alpha.5", - "@vscode/tree-sitter-wasm": "0.0.5-php.2", - "@vscode/webview-ui-toolkit": "^1.3.1", - "@xterm/headless": "^5.5.0", - "ajv": "^8.17.1", - "applicationinsights": "^2.9.7", - "diff": "^8.0.2", - "dompurify": "^3.3.0", - "ignore": "^7.0.5", - "isbinaryfile": "^5.0.4", - "jsonc-parser": "^3.3.1", - "lru-cache": "^11.1.0", - "markdown-it": "^14.1.0", - "minimatch": "^10.0.3", - "undici": "^7.11.0", - "vscode-tas-client": "^0.1.84", - "web-tree-sitter": "^0.23.0" - }, - "overrides": { - "@aminya/node-gyp-build": "npm:node-gyp-build@4.8.1", - "string_decoder": "npm:string_decoder@1.2.0", - "node-gyp": "npm:node-gyp@10.3.1" - } + "name": "copilot-chat", + "displayName": "GitHub Copilot Chat", + "description": "AI chat features powered by Copilot", + "version": "0.36.0", + "build": "1", + "internalAIKey": "1058ec22-3c95-4951-8443-f26c1f325911", + "completionsCoreVersion": "1.378.1799", + "internalLargeStorageAriaKey": "ec712b3202c5462fb6877acae7f1f9d7-c19ad55e-3e3c-4f99-984b-827f6d95bd9e-6917", + "ariaKey": "0c6ae279ed8443289764825290e4f9e2-1a736e7c-1324-4338-be46-fc2a58ae4d14-7255", + "buildType": "dev", + "publisher": "GitHub", + "homepage": "https://github.com/features/copilot?editor=vscode", + "license": "SEE LICENSE IN LICENSE.txt", + "repository": { + "type": "git", + "url": "https://github.com/microsoft/vscode-copilot-chat" + }, + "bugs": { + "url": "https://github.com/microsoft/vscode/issues" + }, + "qna": "https://github.com/github-community/community/discussions/categories/copilot", + "icon": "assets/copilot.png", + "pricing": "Trial", + "engines": { + "vscode": "^1.108.0", + "npm": ">=9.0.0", + "node": ">=22.14.0" + }, + "categories": [ + "AI", + "Chat", + "Programming Languages", + "Machine Learning" + ], + "keywords": [ + "ai", + "openai", + "codex", + "pilot", + "snippets", + "documentation", + "autocomplete", + "intellisense", + "refactor", + "javascript", + "python", + "typescript", + "php", + "go", + "golang", + "ruby", + "c++", + "c#", + "java", + "kotlin", + "co-pilot" + ], + "badges": [ + { + "url": "https://img.shields.io/badge/GitHub%20Copilot-Subscription%20Required-orange", + "href": "https://github.com/github-copilot/signup?editor=vscode", + "description": "%github.copilot.badge.signUp%" + }, + { + "url": "https://img.shields.io/github/stars/github/copilot-docs?style=social", + "href": "https://github.com/github/copilot-docs", + "description": "%github.copilot.badge.star%" + }, + { + "url": "https://img.shields.io/youtube/channel/views/UC7c3Kb6jYCRj4JOHHZTxKsQ?style=social", + "href": "https://www.youtube.com/@GitHub/search?query=copilot", + "description": "%github.copilot.badge.youtube%" + }, + { + "url": "https://img.shields.io/twitter/follow/github?style=social", + "href": "https://twitter.com/github", + "description": "%github.copilot.badge.twitter%" + } + ], + "activationEvents": [ + "onStartupFinished", + "onLanguageModelChat:copilot", + "onUri", + "onFileSystem:ccreq", + "onFileSystem:ccsettings", + "onChatContributionsProvider" + ], + "main": "./dist/extension", + "l10n": "./l10n", + "enabledApiProposals": [ + "extensionsAny", + "newSymbolNamesProvider", + "interactive", + "codeActionAI", + "activeComment", + "commentReveal", + "contribCommentThreadAdditionalMenu", + "contribCommentsViewThreadMenus", + "documentFiltersExclusive", + "embeddings", + "findTextInFiles", + "findTextInFiles2", + "findFiles2@2", + "textSearchProvider", + "terminalDataWriteEvent", + "terminalExecuteCommandEvent", + "terminalSelection", + "terminalQuickFixProvider", + "mappedEditsProvider", + "aiRelatedInformation", + "aiSettingsSearch", + "chatParticipantAdditions", + "chatEditing", + "defaultChatParticipant@4", + "contribSourceControlInputBoxMenu", + "authLearnMore", + "testObserver", + "aiTextSearchProvider@2", + "chatParticipantPrivate@11", + "chatProvider@4", + "contribDebugCreateConfiguration", + "chatReferenceDiagnostic", + "textSearchProvider2", + "chatReferenceBinaryData", + "languageModelSystem", + "languageModelCapabilities", + "inlineCompletionsAdditions", + "chatStatusItem", + "taskProblemMatcherStatus", + "contribLanguageModelToolSets", + "textDocumentChangeReason", + "resolvers", + "taskExecutionTerminal", + "dataChannels", + "languageModelThinkingPart", + "chatSessionsProvider@3", + "devDeviceId", + "contribEditorContentMenu" + ], + "contributes": { + "languageModelTools": [ + { + "name": "copilot_searchCodebase", + "toolReferenceName": "codebase", + "displayName": "%copilot.tools.searchCodebase.name%", + "icon": "$(folder)", + "userDescription": "%copilot.codebase.tool.description%", + "modelDescription": "Run a natural language search for relevant code or documentation comments from the user's current workspace. Returns relevant code snippets from the user's current workspace if it is large, or the full contents of the workspace if it is small.", + "tags": [ + "codesearch", + "vscode_codesearch" + ], + "inputSchema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "The query to search the codebase for. Should contain all relevant context. Should ideally be text that might appear in the codebase, such as function names, variable names, or comments." + } + }, + "required": [ + "query" + ] + } + }, + { + "name": "copilot_searchWorkspaceSymbols", + "toolReferenceName": "symbols", + "displayName": "%copilot.tools.searchWorkspaceSymbols.name%", + "icon": "$(symbol)", + "userDescription": "%copilot.workspaceSymbols.tool.description%", + "modelDescription": "Search the user's workspace for code symbols using language services. Use this tool when the user is looking for a specific symbol in their workspace.", + "tags": [ + "vscode_codesearch" + ], + "inputSchema": { + "type": "object", + "properties": { + "symbolName": { + "type": "string", + "description": "The symbol to search for, such as a function name, class name, or variable name." + } + }, + "required": [ + "symbolName" + ] + } + }, + { + "name": "copilot_listCodeUsages", + "toolReferenceName": "usages", + "legacyToolReferenceFullNames": [ + "usages" + ], + "displayName": "%copilot.tools.listCodeUsages.name%", + "icon": "$(references)", + "userDescription": "%copilot.listCodeUsages.tool.description%", + "modelDescription": "Request to list all usages (references, definitions, implementations etc) of a function, class, method, variable etc. Use this tool when \n1. Looking for a sample implementation of an interface or class\n2. Checking how a function is used throughout the codebase.\n3. Including and updating all usages when changing a function, method, or constructor", + "tags": [ + "vscode_codesearch" + ], + "inputSchema": { + "type": "object", + "properties": { + "symbolName": { + "type": "string", + "description": "The name of the symbol, such as a function name, class name, method name, variable name, etc." + }, + "filePaths": { + "type": "array", + "description": "One or more file paths which likely contain the definition of the symbol. For instance the file which declares a class or function. This is optional but will speed up the invocation of this tool and improve the quality of its output.", + "items": { + "type": "string" + } + } + }, + "required": [ + "symbolName" + ] + } + }, + { + "name": "copilot_getVSCodeAPI", + "toolReferenceName": "vscodeAPI", + "displayName": "%copilot.tools.getVSCodeAPI.name%", + "icon": "$(references)", + "userDescription": "%copilot.vscode.tool.description%", + "modelDescription": "Get comprehensive VS Code API documentation and references for extension development. This tool provides authoritative documentation for VS Code's extensive API surface, including proposed APIs, contribution points, and best practices. Use this tool for understanding complex VS Code API interactions.\n\nWhen to use this tool:\n- User asks about specific VS Code APIs, interfaces, or extension capabilities\n- Need documentation for VS Code extension contribution points (commands, views, settings, etc.)\n- Questions about proposed APIs and their usage patterns\n- Understanding VS Code extension lifecycle, activation events, and packaging\n- Best practices for VS Code extension development architecture\n- API examples and code patterns for extension features\n- Troubleshooting extension-specific issues or API limitations\n\nWhen NOT to use this tool:\n- Creating simple standalone files or scripts unrelated to VS Code extensions\n- General programming questions not specific to VS Code extension development\n- Questions about using VS Code as an editor (user-facing features)\n- Non-extension related development tasks\n- File creation or editing that doesn't involve VS Code extension APIs\n\nCRITICAL usage guidelines:\n1. Always include specific API names, interfaces, or concepts in your query\n2. Mention the extension feature you're trying to implement\n3. Include context about proposed vs stable APIs when relevant\n4. Reference specific contribution points when asking about extension manifest\n5. Be specific about the VS Code version or API version when known\n\nScope: This tool is for EXTENSION DEVELOPMENT ONLY - building tools that extend VS Code itself, not for general file creation or non-extension programming tasks.", + "inputSchema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "The query to search vscode documentation for. Should contain all relevant context." + } + }, + "required": [ + "query" + ] + }, + "tags": [] + }, + { + "name": "copilot_findFiles", + "toolReferenceName": "fileSearch", + "displayName": "%copilot.tools.findFiles.name%", + "userDescription": "%copilot.tools.findFiles.userDescription%", + "modelDescription": "Search for files in the workspace by glob pattern. This only returns the paths of matching files. Use this tool when you know the exact filename pattern of the files you're searching for. Glob patterns match from the root of the workspace folder. Examples:\n- **/*.{js,ts} to match all js/ts files in the workspace.\n- src/** to match all files under the top-level src folder.\n- **/foo/**/*.js to match all js files under any foo folder in the workspace.", + "tags": [ + "vscode_codesearch" + ], + "inputSchema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "Search for files with names or paths matching this glob pattern." + }, + "maxResults": { + "type": "number", + "description": "The maximum number of results to return. Do not use this unless necessary, it can slow things down. By default, only some matches are returned. If you use this and don't see what you're looking for, you can try again with a more specific query or a larger maxResults." + } + }, + "required": [ + "query" + ] + } + }, + { + "name": "copilot_findTextInFiles", + "toolReferenceName": "textSearch", + "displayName": "%copilot.tools.findTextInFiles.name%", + "userDescription": "%copilot.tools.findTextInFiles.userDescription%", + "modelDescription": "Do a fast text search in the workspace. Use this tool when you want to search with an exact string or regex. If you are not sure what words will appear in the workspace, prefer using regex patterns with alternation (|) or character classes to search for multiple potential words at once instead of making separate searches. For example, use 'function|method|procedure' to look for all of those words at once. Use includePattern to search within files matching a specific pattern, or in a specific file, using a relative path. Use 'includeIgnoredFiles' to include files normally ignored by .gitignore, other ignore files, and `files.exclude` and `search.exclude` settings. Warning: using this may cause the search to be slower, only set it when you want to search in ignored folders like node_modules or build outputs. Use this tool when you want to see an overview of a particular file, instead of using read_file many times to look for code within a file.", + "tags": [ + "vscode_codesearch" + ], + "inputSchema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "The pattern to search for in files in the workspace. Use regex with alternation (e.g., 'word1|word2|word3') or character classes to find multiple potential words in a single search. Be sure to set the isRegexp property properly to declare whether it's a regex or plain text pattern. Is case-insensitive." + }, + "isRegexp": { + "type": "boolean", + "description": "Whether the pattern is a regex." + }, + "includePattern": { + "type": "string", + "description": "Search files matching this glob pattern. Will be applied to the relative path of files within the workspace. To search recursively inside a folder, use a proper glob pattern like \"src/folder/**\". Do not use | in includePattern." + }, + "maxResults": { + "type": "number", + "description": "The maximum number of results to return. Do not use this unless necessary, it can slow things down. By default, only some matches are returned. If you use this and don't see what you're looking for, you can try again with a more specific query or a larger maxResults." + }, + "includeIgnoredFiles": { + "type": "boolean", + "description": "Whether to include files that would normally be ignored according to .gitignore, other ignore files and `files.exclude` and `search.exclude` settings. Warning: using this may cause the search to be slower. Only set it when you want to search in ignored folders like node_modules or build outputs." + } + }, + "required": [ + "query", + "isRegexp" + ] + } + }, + { + "name": "copilot_applyPatch", + "displayName": "%copilot.tools.applyPatch.name%", + "toolReferenceName": "applyPatch", + "userDescription": "%copilot.tools.applyPatch.description%", + "modelDescription": "Edit text files. Do not use this tool to edit Jupyter notebooks. `apply_patch` allows you to execute a diff/patch against a text file, but the format of the diff specification is unique to this task, so pay careful attention to these instructions. To use the `apply_patch` command, you should pass a message of the following structure as \"input\":\n\n*** Begin Patch\n[YOUR_PATCH]\n*** End Patch\n\nWhere [YOUR_PATCH] is the actual content of your patch, specified in the following V4A diff format.\n\n*** [ACTION] File: [/absolute/path/to/file] -> ACTION can be one of Add, Update, or Delete.\nAn example of a message that you might pass as \"input\" to this function, in order to apply a patch, is shown below.\n\n*** Begin Patch\n*** Update File: /Users/someone/pygorithm/searching/binary_search.py\n@@class BaseClass\n@@ def search():\n- pass\n+ raise NotImplementedError()\n\n@@class Subclass\n@@ def search():\n- pass\n+ raise NotImplementedError()\n\n*** End Patch\nDo not use line numbers in this diff format.", + "inputSchema": { + "type": "object", + "properties": { + "input": { + "type": "string", + "description": "The edit patch to apply." + }, + "explanation": { + "type": "string", + "description": "A short description of what the tool call is aiming to achieve." + } + }, + "required": [ + "input", + "explanation" + ] + } + }, + { + "name": "copilot_readFile", + "toolReferenceName": "readFile", + "legacyToolReferenceFullNames": [ + "search/readFile" + ], + "displayName": "%copilot.tools.readFile.name%", + "userDescription": "%copilot.tools.readFile.userDescription%", + "modelDescription": "Read the contents of a file.\n\nYou must specify the line range you're interested in. Line numbers are 1-indexed. If the file contents returned are insufficient for your task, you may call this tool again to retrieve more content. Prefer reading larger ranges over doing many small reads.", + "tags": [ + "vscode_codesearch" + ], + "inputSchema": { + "type": "object", + "properties": { + "filePath": { + "description": "The absolute path of the file to read.", + "type": "string" + }, + "startLine": { + "type": "number", + "description": "The line number to start reading from, 1-based." + }, + "endLine": { + "type": "number", + "description": "The inclusive line number to end reading at, 1-based." + } + }, + "required": [ + "filePath", + "startLine", + "endLine" + ] + } + }, + { + "name": "copilot_listDirectory", + "toolReferenceName": "listDirectory", + "displayName": "%copilot.tools.listDirectory.name%", + "userDescription": "%copilot.tools.listDirectory.userDescription%", + "modelDescription": "List the contents of a directory. Result will have the name of the child. If the name ends in /, it's a folder, otherwise a file", + "tags": [ + "vscode_codesearch" + ], + "inputSchema": { + "type": "object", + "properties": { + "path": { + "type": "string", + "description": "The absolute path to the directory to list." + } + }, + "required": [ + "path" + ] + } + }, + { + "name": "copilot_getErrors", + "displayName": "%copilot.tools.getErrors.name%", + "toolReferenceName": "problems", + "legacyToolReferenceFullNames": [ + "problems" + ], + "icon": "$(error)", + "userDescription": "%copilot.tools.errors.description%", + "modelDescription": "Get any compile or lint errors in a specific file or across all files. If the user mentions errors or problems in a file, they may be referring to these. Use the tool to see the same errors that the user is seeing. If the user asks you to analyze all errors, or does not specify a file, use this tool to gather errors for all files. Also use this tool after editing a file to validate the change.", + "tags": [], + "inputSchema": { + "type": "object", + "properties": { + "filePaths": { + "description": "The absolute paths to the files or folders to check for errors. Omit 'filePaths' when retrieving all errors.", + "type": "array", + "items": { + "type": "string" + } + } + } + } + }, + { + "name": "copilot_readProjectStructure", + "displayName": "%copilot.tools.readProjectStructure.name%", + "modelDescription": "Get a file tree representation of the workspace.", + "tags": [] + }, + { + "name": "copilot_getChangedFiles", + "displayName": "%copilot.tools.getChangedFiles.name%", + "toolReferenceName": "changes", + "legacyToolReferenceFullNames": [ + "changes" + ], + "icon": "$(diff)", + "userDescription": "%copilot.tools.changes.description%", + "modelDescription": "Get git diffs of current file changes in a git repository. Don't forget that you can use run_in_terminal to run git commands in a terminal as well.", + "tags": [ + "vscode_codesearch" + ], + "inputSchema": { + "type": "object", + "properties": { + "repositoryPath": { + "type": "string", + "description": "The absolute path to the git repository to look for changes in. If not provided, the active git repository will be used." + }, + "sourceControlState": { + "type": "array", + "items": { + "type": "string", + "enum": [ + "staged", + "unstaged", + "merge-conflicts" + ] + }, + "description": "The kinds of git state to filter by. Allowed values are: 'staged', 'unstaged', and 'merge-conflicts'. If not provided, all states will be included." + } + } + } + }, + { + "name": "copilot_testFailure", + "toolReferenceName": "testFailure", + "legacyToolReferenceFullNames": [ + "testFailure" + ], + "displayName": "%copilot.tools.testFailure.name%", + "icon": "$(beaker)", + "userDescription": "%copilot.testFailure.tool.description%", + "modelDescription": "Includes test failure information in the prompt.", + "inputSchema": {}, + "tags": [ + "vscode_editing_with_tests", + "enable_other_tool_copilot_readFile", + "enable_other_tool_copilot_listDirectory", + "enable_other_tool_copilot_findFiles", + "enable_other_tool_copilot_runTests" + ] + }, + { + "name": "copilot_updateUserPreferences", + "toolReferenceName": "updateUserPreferences", + "displayName": "%copilot.tools.updateUserPreferences.name%", + "modelDescription": "Update the user's preferences file with new information about the user and their coding preferences, based on the current chat history.", + "canBeReferencedInPrompt": true, + "tags": [], + "inputSchema": { + "type": "object", + "properties": { + "facts": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of new user preferences to remember." + } + }, + "required": [ + "facts" + ] + }, + "when": "config.github.copilot.chat.enableUserPreferences" + }, + { + "name": "copilot_createNewWorkspace", + "displayName": "%github.copilot.tools.createNewWorkspace.name%", + "toolReferenceName": "newWorkspace", + "legacyToolReferenceFullNames": [ + "new/newWorkspace" + ], + "icon": "$(new-folder)", + "userDescription": "%github.copilot.tools.createNewWorkspace.userDescription%", + "when": "config.github.copilot.chat.newWorkspaceCreation.enabled", + "modelDescription": "Get comprehensive setup steps to help the user create complete project structures in a VS Code workspace. This tool is designed for full project initialization and scaffolding, not for creating individual files.\n\nWhen to use this tool:\n- User wants to create a new complete project from scratch\n- Setting up entire project frameworks (TypeScript projects, React apps, Node.js servers, etc.)\n- Initializing Model Context Protocol (MCP) servers with full structure\n- Creating VS Code extensions with proper scaffolding\n- Setting up Next.js, Vite, or other framework-based projects\n- User asks for \"new project\", \"create a workspace\", \"set up a [framework] project\"\n- Need to establish complete development environment with dependencies, config files, and folder structure\n\nWhen NOT to use this tool:\n- Creating single files or small code snippets\n- Adding individual files to existing projects\n- Making modifications to existing codebases\n- User asks to \"create a file\" or \"add a component\"\n- Simple code examples or demonstrations\n- Debugging or fixing existing code\n\nThis tool provides complete project setup including:\n- Folder structure creation\n- Package.json and dependency management\n- Configuration files (tsconfig, eslint, etc.)\n- Initial boilerplate code\n- Development environment setup\n- Build and run instructions\n\nUse other file creation tools for individual files within existing projects.", + "inputSchema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "The query to use to generate the new workspace. This should be a clear and concise description of the workspace the user wants to create." + } + }, + "required": [ + "query" + ] + }, + "tags": [ + "enable_other_tool_install_extension", + "enable_other_tool_get_project_setup_info" + ] + }, + { + "name": "copilot_getProjectSetupInfo", + "displayName": "%github.copilot.tools.getProjectSetupInfo.name%", + "when": "config.github.copilot.chat.newWorkspaceCreation.enabled", + "toolReferenceName": "getProjectSetupInfo", + "legacyToolReferenceFullNames": [ + "new/getProjectSetupInfo" + ], + "modelDescription": "Do not call this tool without first calling the tool to create a workspace. This tool provides a project setup information for a Visual Studio Code workspace based on a project type and programming language.", + "inputSchema": { + "type": "object", + "properties": { + "projectType": { + "type": "string", + "description": "The type of project to create. Supported values are: 'python-script', 'python-project', 'mcp-server', 'model-context-protocol-server', 'vscode-extension', 'next-js', 'vite' and 'other'" + } + }, + "required": [ + "projectType" + ] + }, + "tags": [] + }, + { + "name": "copilot_installExtension", + "displayName": "Install Extension in VS Code", + "when": "config.github.copilot.chat.newWorkspaceCreation.enabled", + "toolReferenceName": "installExtension", + "legacyToolReferenceFullNames": [ + "new/installExtension" + ], + "modelDescription": "Install an extension in VS Code. Use this tool to install an extension in Visual Studio Code as part of a new workspace creation process only.", + "inputSchema": { + "type": "object", + "properties": { + "id": { + "type": "string", + "description": "The ID of the extension to install. This should be in the format .." + }, + "name": { + "type": "string", + "description": "The name of the extension to install. This should be a clear and concise description of the extension." + } + }, + "required": [ + "id", + "name" + ] + }, + "tags": [] + }, + { + "name": "copilot_runVscodeCommand", + "displayName": "Run VS Code Command", + "when": "config.github.copilot.chat.newWorkspaceCreation.enabled", + "toolReferenceName": "runCommand", + "legacyToolReferenceFullNames": [ + "new/runVscodeCommand" + ], + "modelDescription": "Run a command in VS Code. Use this tool to run a command in Visual Studio Code as part of a new workspace creation process only.", + "inputSchema": { + "type": "object", + "properties": { + "commandId": { + "type": "string", + "description": "The ID of the command to execute. This should be in the format ." + }, + "name": { + "type": "string", + "description": "The name of the command to execute. This should be a clear and concise description of the command." + }, + "args": { + "type": "array", + "description": "The arguments to pass to the command. This should be an array of strings.", + "items": { + "type": "string" + } + } + }, + "required": [ + "commandId", + "name" + ] + }, + "tags": [] + }, + { + "name": "copilot_createNewJupyterNotebook", + "displayName": "Create New Jupyter Notebook", + "icon": "$(notebook)", + "toolReferenceName": "createJupyterNotebook", + "legacyToolReferenceFullNames": [ + "newJupyterNotebook" + ], + "modelDescription": "Generates a new Jupyter Notebook (.ipynb) in VS Code. Jupyter Notebooks are interactive documents commonly used for data exploration, analysis, visualization, and combining code with narrative text. Prefer creating plain Python files or similar unless a user explicitly requests creating a new Jupyter Notebook or already has a Jupyter Notebook opened or exists in the workspace.", + "userDescription": "%copilot.tools.newJupyterNotebook.description%", + "inputSchema": { + "type": "object", + "properties": { + "query": { + "type": "string", + "description": "The query to use to generate the jupyter notebook. This should be a clear and concise description of the notebook the user wants to create." + } + }, + "required": [ + "query" + ] + }, + "tags": [] + }, + { + "name": "copilot_insertEdit", + "toolReferenceName": "insertEdit", + "displayName": "%copilot.tools.insertEdit.name%", + "modelDescription": "Insert new code into an existing file in the workspace. Use this tool once per file that needs to be modified, even if there are multiple changes for a file. Generate the \"explanation\" property first.\nThe system is very smart and can understand how to apply your edits to the files, you just need to provide minimal hints.\nAvoid repeating existing code, instead use comments to represent regions of unchanged code. Be as concise as possible. For example:\n// ...existing code...\n{ changed code }\n// ...existing code...\n{ changed code }\n// ...existing code...\n\nHere is an example of how you should use format an edit to an existing Person class:\nclass Person {\n\t// ...existing code...\n\tage: number;\n\t// ...existing code...\n\tgetAge() {\n\treturn this.age;\n\t}\n}", + "tags": [], + "inputSchema": { + "type": "object", + "properties": { + "explanation": { + "type": "string", + "description": "A short explanation of the edit being made." + }, + "filePath": { + "type": "string", + "description": "An absolute path to the file to edit." + }, + "code": { + "type": "string", + "description": "The code change to apply to the file.\nThe system is very smart and can understand how to apply your edits to the files, you just need to provide minimal hints.\nAvoid repeating existing code, instead use comments to represent regions of unchanged code. Be as concise as possible. For example:\n// ...existing code...\n{ changed code }\n// ...existing code...\n{ changed code }\n// ...existing code...\n\nHere is an example of how you should use format an edit to an existing Person class:\nclass Person {\n\t// ...existing code...\n\tage: number;\n\t// ...existing code...\n\tgetAge() {\n\t\treturn this.age;\n\t}\n}" + } + }, + "required": [ + "explanation", + "filePath", + "code" + ] + } + }, + { + "name": "copilot_createFile", + "toolReferenceName": "createFile", + "legacyToolReferenceFullNames": [ + "createFile" + ], + "displayName": "%copilot.tools.createFile.name%", + "userDescription": "%copilot.tools.createFile.description%", + "modelDescription": "This is a tool for creating a new file in the workspace. The file will be created with the specified content. The directory will be created if it does not already exist. Never use this tool to edit a file that already exists.", + "tags": [], + "inputSchema": { + "type": "object", + "properties": { + "filePath": { + "type": "string", + "description": "The absolute path to the file to create." + }, + "content": { + "type": "string", + "description": "The content to write to the file." + } + }, + "required": [ + "filePath", + "content" + ] + } + }, + { + "name": "copilot_createDirectory", + "toolReferenceName": "createDirectory", + "legacyToolReferenceFullNames": [ + "createDirectory" + ], + "displayName": "%copilot.tools.createDirectory.name%", + "userDescription": "%copilot.tools.createDirectory.description%", + "modelDescription": "Create a new directory structure in the workspace. Will recursively create all directories in the path, like mkdir -p. You do not need to use this tool before using create_file, that tool will automatically create the needed directories.", + "tags": [], + "inputSchema": { + "type": "object", + "properties": { + "dirPath": { + "type": "string", + "description": "The absolute path to the directory to create." + } + }, + "required": [ + "dirPath" + ] + } + }, + { + "name": "copilot_openSimpleBrowser", + "displayName": "%copilot.tools.openSimpleBrowser.name%", + "modelDescription": "Preview a website or open a URL in the editor's Simple Browser. Useful for quickly viewing locally hosted websites, demos, or resources without leaving the coding environment.", + "userDescription": "%copilot.tools.openSimpleBrowser.description%", + "toolReferenceName": "openSimpleBrowser", + "legacyToolReferenceFullNames": [ + "openSimpleBrowser" + ], + "tags": [], + "inputSchema": { + "type": "object", + "properties": { + "url": { + "type": "string", + "description": "The website URL to preview or open in the Simple Browser inside the editor. Must be either an http or https URL" + } + }, + "required": [ + "url" + ] + } + }, + { + "name": "copilot_replaceString", + "toolReferenceName": "replaceString", + "displayName": "%copilot.tools.replaceString.name%", + "modelDescription": "This is a tool for making edits in an existing file in the workspace. For moving or renaming files, use run in terminal tool with the 'mv' command instead. For larger edits, split them into smaller edits and call the edit tool multiple times to ensure accuracy. Before editing, always ensure you have the context to understand the file's contents and context. To edit a file, provide: 1) filePath (absolute path), 2) oldString (MUST be the exact literal text to replace including all whitespace, indentation, newlines, and surrounding code etc), and 3) newString (MUST be the exact literal text to replace \\`oldString\\` with (also including all whitespace, indentation, newlines, and surrounding code etc.). Ensure the resulting code is correct and idiomatic.). Each use of this tool replaces exactly ONE occurrence of oldString.\n\nCRITICAL for \\`oldString\\`: Must uniquely identify the single instance to change. Include at least 3 lines of context BEFORE and AFTER the target text, matching whitespace and indentation precisely. If this string matches multiple locations, or does not match exactly, the tool will fail. Never use 'Lines 123-456 omitted' from summarized documents or ...existing code... comments in the oldString or newString.", + "when": "!config.github.copilot.chat.disableReplaceTool", + "inputSchema": { + "type": "object", + "properties": { + "filePath": { + "type": "string", + "description": "An absolute path to the file to edit." + }, + "oldString": { + "type": "string", + "description": "The exact literal text to replace, preferably unescaped. For single replacements (default), include at least 3 lines of context BEFORE and AFTER the target text, matching whitespace and indentation precisely. For multiple replacements, specify expected_replacements parameter. If this string is not the exact literal text (i.e. you escaped it) or does not match exactly, the tool will fail." + }, + "newString": { + "type": "string", + "description": "The exact literal text to replace `old_string` with, preferably unescaped. Provide the EXACT text. Ensure the resulting code is correct and idiomatic." + } + }, + "required": [ + "filePath", + "oldString", + "newString" + ] + } + }, + { + "name": "copilot_multiReplaceString", + "toolReferenceName": "multiReplaceString", + "displayName": "%copilot.tools.multiReplaceString.name%", + "modelDescription": "This tool allows you to apply multiple replace_string_in_file operations in a single call, which is more efficient than calling replace_string_in_file multiple times. It takes an array of replacement operations and applies them sequentially. Each replacement operation has the same parameters as replace_string_in_file: filePath, oldString, newString, and explanation. This tool is ideal when you need to make multiple edits across different files or multiple edits in the same file. The tool will provide a summary of successful and failed operations.", + "when": "!config.github.copilot.chat.disableReplaceTool", + "inputSchema": { + "type": "object", + "properties": { + "explanation": { + "type": "string", + "description": "A brief explanation of what the multi-replace operation will accomplish." + }, + "replacements": { + "type": "array", + "description": "An array of replacement operations to apply sequentially.", + "items": { + "type": "object", + "properties": { + "explanation": { + "type": "string", + "description": "A brief explanation of this specific replacement operation." + }, + "filePath": { + "type": "string", + "description": "An absolute path to the file to edit." + }, + "oldString": { + "type": "string", + "description": "The exact literal text to replace, preferably unescaped. Include at least 3 lines of context BEFORE and AFTER the target text, matching whitespace and indentation precisely. If this string is not the exact literal text or does not match exactly, this replacement will fail." + }, + "newString": { + "type": "string", + "description": "The exact literal text to replace `oldString` with, preferably unescaped. Provide the EXACT text. Ensure the resulting code is correct and idiomatic." + } + }, + "required": [ + "explanation", + "filePath", + "oldString", + "newString" + ] + }, + "minItems": 1 + } + }, + "required": [ + "explanation", + "replacements" + ] + } + }, + { + "name": "copilot_editNotebook", + "toolReferenceName": "editNotebook", + "icon": "$(pencil)", + "displayName": "%copilot.tools.editNotebook.name%", + "userDescription": "%copilot.tools.editNotebook.userDescription%", + "modelDescription": "This is a tool for editing an existing Notebook file in the workspace. Generate the \"explanation\" property first.\nThe system is very smart and can understand how to apply your edits to the notebooks.\nWhen updating the content of an existing cell, ensure newCode preserves whitespace and indentation exactly and does NOT include any code markers such as (...existing code...).", + "tags": [ + "enable_other_tool_copilot_getNotebookSummary" + ], + "inputSchema": { + "type": "object", + "properties": { + "filePath": { + "type": "string", + "description": "An absolute path to the notebook file to edit, or the URI of a untitled, not yet named, file, such as `untitled:Untitled-1." + }, + "cellId": { + "type": "string", + "description": "Id of the cell that needs to be deleted or edited. Use the value `TOP`, `BOTTOM` when inserting a cell at the top or bottom of the notebook, else provide the id of the cell after which a new cell is to be inserted. Remember, if a cellId is provided and editType=insert, then a cell will be inserted after the cell with the provided cellId." + }, + "newCode": { + "anyOf": [ + { + "type": "string", + "description": "The code for the new or existing cell to be edited. Code should not be wrapped within tags. Do NOT include code markers such as (...existing code...) to indicate existing code." + }, + { + "type": "array", + "items": { + "type": "string", + "description": "The code for the new or existing cell to be edited. Code should not be wrapped within tags" + } + } + ] + }, + "language": { + "type": "string", + "description": "The language of the cell. `markdown`, `python`, `javascript`, `julia`, etc." + }, + "editType": { + "type": "string", + "enum": [ + "insert", + "delete", + "edit" + ], + "description": "The operation peformed on the cell, whether `insert`, `delete` or `edit`.\nUse the `editType` field to specify the operation: `insert` to add a new cell, `edit` to modify an existing cell's content, and `delete` to remove a cell." + } + }, + "required": [ + "filePath", + "editType", + "cellId" + ] + } + }, + { + "name": "copilot_runNotebookCell", + "displayName": "%copilot.tools.runNotebookCell.name%", + "toolReferenceName": "runNotebookCell", + "legacyToolReferenceFullNames": [ + "runNotebooks/runCell" + ], + "icon": "$(play)", + "modelDescription": "This is a tool for running a code cell in a notebook file directly in the notebook editor. The output from the execution will be returned. Code cells should be run as they are added or edited when working through a problem to bring the kernel state up to date and ensure the code executes successfully. Code cells are ready to run and don't require any pre-processing. If asked to run the first cell in a notebook, you should run the first code cell since markdown cells cannot be executed. NOTE: Avoid executing Markdown cells or providing Markdown cell IDs, as Markdown cells cannot be executed.", + "userDescription": "%copilot.tools.runNotebookCell.description%", + "tags": [ + "enable_other_tool_copilot_getNotebookSummary" + ], + "inputSchema": { + "type": "object", + "properties": { + "filePath": { + "type": "string", + "description": "An absolute path to the notebook file with the cell to run, or the URI of a untitled, not yet named, file, such as `untitled:Untitled-1.ipynb" + }, + "reason": { + "type": "string", + "description": "An optional explanation of why the cell is being run. This will be shown to the user before the tool is run and is not necessary if it's self-explanatory." + }, + "cellId": { + "type": "string", + "description": "The ID for the code cell to execute. Avoid providing markdown cell IDs as nothing will be executed." + }, + "continueOnError": { + "type": "boolean", + "description": "Whether or not execution should continue for remaining cells if an error is encountered. Default to false unless instructed otherwise." + } + }, + "required": [ + "filePath", + "cellId" + ] + } + }, + { + "name": "copilot_getNotebookSummary", + "toolReferenceName": "getNotebookSummary", + "legacyToolReferenceFullNames": [ + "runNotebooks/getNotebookSummary" + ], + "displayName": "Get the structure of a notebook", + "modelDescription": "This is a tool returns the list of the Notebook cells along with the id, cell types, line ranges, language, execution information and output mime types for each cell. This is useful to get Cell Ids when executing a notebook or determine what cells have been executed and what order, or what cells have outputs. If required to read contents of a cell use this to determine the line range of a cells, and then use read_file tool to read a specific line range. Requery this tool if the contents of the notebook change.", + "tags": [], + "inputSchema": { + "type": "object", + "properties": { + "filePath": { + "type": "string", + "description": "An absolute path to the notebook file with the cell to run, or the URI of a untitled, not yet named, file, such as `untitled:Untitled-1.ipynb" + } + }, + "required": [ + "filePath" + ] + } + }, + { + "name": "copilot_readNotebookCellOutput", + "displayName": "%copilot.tools.getNotebookCellOutput.name%", + "toolReferenceName": "readNotebookCellOutput", + "legacyToolReferenceFullNames": [ + "runNotebooks/readNotebookCellOutput" + ], + "icon": "$(notebook-render-output)", + "modelDescription": "This tool will retrieve the output for a notebook cell from its most recent execution or restored from disk. The cell may have output even when it has not been run in the current kernel session. This tool has a higher token limit for output length than the runNotebookCell tool.", + "userDescription": "%copilot.tools.getNotebookCellOutput.description%", + "when": "userHasOpenedNotebook", + "tags": [], + "inputSchema": { + "type": "object", + "properties": { + "filePath": { + "type": "string", + "description": "An absolute path to the notebook file with the cell to run, or the URI of a untitled, not yet named, file, such as `untitled:Untitled-1.ipynb" + }, + "cellId": { + "type": "string", + "description": "The ID of the cell for which output should be retrieved." + } + }, + "required": [ + "filePath", + "cellId" + ] + } + }, + { + "name": "copilot_fetchWebPage", + "displayName": "%copilot.tools.fetchWebPage.name%", + "toolReferenceName": "fetch", + "legacyToolReferenceFullNames": [ + "fetch" + ], + "when": "!isWeb", + "icon": "$(globe)", + "userDescription": "%copilot.tools.fetchWebPage.description%", + "modelDescription": "Fetches the main content from a web page. This tool is useful for summarizing or analyzing the content of a webpage. You should use this tool when you think the user is looking for information from a specific webpage.", + "tags": [], + "inputSchema": { + "type": "object", + "properties": { + "urls": { + "type": "array", + "items": { + "type": "string" + }, + "description": "An array of URLs to fetch content from." + }, + "query": { + "type": "string", + "description": "The query to search for in the web page's content. This should be a clear and concise description of the content you want to find." + } + }, + "required": [ + "urls", + "query" + ] + } + }, + { + "name": "copilot_findTestFiles", + "displayName": "%copilot.tools.findTestFiles.name%", + "icon": "$(beaker)", + "canBeReferencedInPrompt": false, + "toolReferenceName": "findTestFiles", + "userDescription": "%copilot.tools.findTestFiles.description%", + "modelDescription": "For a source code file, find the file that contains the tests. For a test file find the file that contains the code under test.", + "tags": [], + "inputSchema": { + "type": "object", + "properties": { + "filePaths": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "required": [ + "filePaths" + ] + } + }, + { + "name": "copilot_getDocInfo", + "displayName": "%copilot.tools.getDocInfo.name%", + "icon": "$(beaker)", + "canBeReferencedInPrompt": false, + "toolReferenceName": "docInfo", + "userDescription": "%copilot.tools.getDocInfo.description%", + "modelDescription": "Find information about how to document it a symbol like a class or function. This tool is useful for generating documentation comments for code symbols. You should use this tool when you think the user is looking for information about how to document a specific code symbol.", + "tags": [], + "inputSchema": { + "type": "object", + "properties": { + "filePaths": { + "type": "array", + "items": { + "type": "string" + }, + "description": "The file paths for which documentation information is needed." + } + }, + "required": [ + "filePaths" + ] + } + }, + { + "name": "copilot_getSearchResults", + "toolReferenceName": "searchResults", + "displayName": "%github.copilot.tools.searchResults.name%", + "icon": "$(search)", + "userDescription": "%github.copilot.tools.searchResults.description%", + "modelDescription": "The results from the search view" + }, + { + "name": "copilot_githubRepo", + "toolReferenceName": "githubRepo", + "legacyToolReferenceFullNames": [ + "githubRepo" + ], + "displayName": "%github.copilot.tools.githubRepo.name%", + "modelDescription": "Searches a GitHub repository for relevant source code snippets. Only use this tool if the user is very clearly asking for code snippets from a specific GitHub repository. Do not use this tool for Github repos that the user has open in their workspace.", + "userDescription": "%github.copilot.tools.githubRepo.userDescription%", + "icon": "$(repo)", + "when": "!config.github.copilot.chat.githubMcpServer.enabled", + "inputSchema": { + "type": "object", + "properties": { + "repo": { + "type": "string", + "description": "The name of the Github repository to search for code in. Should must be formatted as '/'." + }, + "query": { + "type": "string", + "description": "The query to search for repo. Should contain all relevant context." + } + }, + "required": [ + "repo", + "query" + ] + } + }, + { + "name": "copilot_toolReplay", + "modelDescription": "Replays a tool call from a previous chat session.", + "displayName": "tool replay", + "when": "false", + "inputSchema": { + "type": "object", + "properties": { + "toolCallId": { + "type": "string", + "description": "the id of the tool original tool call" + }, + "toolName": { + "type": "string", + "description": "the name of the tool being replayed" + }, + "toolCallArgs": { + "type": "object", + "description": "the arguments of the tool call" + } + } + } + }, + { + "name": "copilot_memory", + "toolReferenceName": "memory", + "displayName": "%copilot.tools.memory.name%", + "userDescription": "%copilot.tools.memory.description%", + "modelDescription": "Manage persistent memory across conversations. This tool allows you to create, view, update, and delete memory files that persist between chat sessions. Use this to remember important information about the user, their preferences, project context, or anything that should be recalled in future conversations. Available commands: view (list/read memories), create (new memory file), str_replace (edit content), insert (add content), delete (remove memory), rename (change filename).", + "icon": "$(database)", + "when": "config.github.copilot.chat.tools.memory.enabled", + "canBeReferencedInPrompt": true, + "tags": [], + "inputSchema": { + "type": "object", + "properties": { + "command": { + "type": "string", + "enum": [ + "view", + "create", + "str_replace", + "insert", + "delete", + "rename" + ], + "description": "The memory operation to perform:\n- view: Show directory contents or file contents (optional line ranges)\n- create: Create or overwrite a file\n- str_replace: Replace text in a file\n- insert: Insert text at a specific line\n- delete: Delete a file or directory\n- rename: Rename or move a file or directory" + }, + "path": { + "type": "string", + "description": "Path to the memory file or directory. Must start with /memories.\n- For view: /memories or /memories/file.md\n- For create/str_replace/insert/delete: /memories/file.md\n- Not used for rename (use old_path/new_path instead)" + }, + "view_range": { + "type": "array", + "items": { + "type": "number" + }, + "minItems": 2, + "maxItems": 2, + "description": "[view only] Optional line range [start, end] to view specific lines. Example: [1, 10]" + }, + "file_text": { + "type": "string", + "description": "[create only] Content to write to the file. Required for create command." + }, + "old_str": { + "type": "string", + "description": "[str_replace only] The exact literal text to find and replace. Must be unique in the file. Required for str_replace command." + }, + "new_str": { + "type": "string", + "description": "[str_replace only] The exact literal text to replace old_str with. Can be empty string. Required for str_replace command." + }, + "insert_line": { + "type": "number", + "description": "[insert only] Line number at which to insert text (0-indexed, 0 = before first line). Required for insert command." + }, + "insert_text": { + "type": "string", + "description": "[insert only] Text to insert at the specified line. Required for insert command." + }, + "old_path": { + "type": "string", + "description": "[rename only] Current path of the file or directory. Must start with /memories. Required for rename command." + }, + "new_path": { + "type": "string", + "description": "[rename only] New path for the file or directory. Must start with /memories. Required for rename command." + } + }, + "required": [ + "command" + ] + } + }, + { + "name": "copilot_editFiles", + "modelDescription": "This is a placeholder tool, do not use", + "userDescription": "Edit files", + "icon": "$(pencil)", + "displayName": "Edit Files", + "toolReferenceName": "editFiles", + "legacyToolReferenceFullNames": [ + "editFiles" + ] + } + ], + "languageModelToolSets": [ + { + "name": "edit", + "description": "%copilot.toolSet.editing.description%", + "icon": "$(pencil)", + "tools": [ + "createDirectory", + "createFile", + "createJupyterNotebook", + "editFiles", + "editNotebook" + ] + }, + { + "name": "execute", + "description": "", + "tools": [ + "runNotebookCell", + "testFailure" + ] + }, + { + "name": "read", + "description": "%copilot.toolSet.read.description%", + "icon": "$(eye)", + "tools": [ + "getNotebookSummary", + "problems", + "readFile", + "readNotebookCellOutput" + ] + }, + { + "name": "search", + "description": "%copilot.toolSet.search.description%", + "icon": "$(search)", + "tools": [ + "changes", + "codebase", + "fileSearch", + "listDirectory", + "searchResults", + "textSearch", + "usages" + ] + }, + { + "name": "vscode", + "description": "", + "tools": [ + "getProjectSetupInfo", + "installExtension", + "newWorkspace", + "openSimpleBrowser", + "runCommand", + "vscodeAPI" + ] + }, + { + "name": "web", + "description": "%copilot.toolSet.web.description%", + "icon": "$(globe)", + "tools": [ + "fetch", + "githubRepo" + ] + } + ], + "chatParticipants": [ + { + "id": "github.copilot.default", + "name": "GitHubCopilot", + "fullName": "GitHub Copilot", + "description": "%copilot.description%", + "isDefault": true, + "locations": [ + "panel" + ], + "modes": [ + "ask" + ], + "disambiguation": [ + { + "category": "generate_code_sample", + "description": "The user wants to generate code snippets without referencing the contents of the current workspace. This category does not include generating entire projects.", + "examples": [ + "Write an example of computing a SHA256 hash." + ] + }, + { + "category": "add_feature_to_file", + "description": "The user wants to change code in a file that is provided in their request, without referencing the contents of the current workspace. This category does not include generating entire projects.", + "examples": [ + "Add a refresh button to the table widget." + ] + }, + { + "category": "question_about_specific_files", + "description": "The user has a question about a specific file or code snippet that they have provided as part of their query, and the question does not require additional workspace context to answer.", + "examples": [ + "What does this file do?" + ] + } + ] + }, + { + "id": "github.copilot.editingSession", + "name": "GitHubCopilot", + "fullName": "GitHub Copilot", + "description": "%copilot.edits.description%", + "isDefault": true, + "locations": [ + "panel" + ], + "modes": [ + "edit" + ], + "when": "!config.chat.edits2.enabled" + }, + { + "id": "github.copilot.editingSessionEditor", + "name": "GitHubCopilot", + "fullName": "GitHub Copilot", + "description": "%copilot.edits.description%", + "isDefault": true, + "locations": [ + "editor" + ], + "commands": [ + { + "name": "generate", + "when": "!config.inlineChat.enableV2", + "description": "%copilot.workspace.generate.description%", + "disambiguation": [ + { + "category": "generate", + "description": "Generate new code", + "examples": [ + "Add a function that returns the sum of two numbers" + ] + } + ] + }, + { + "name": "edit", + "when": "!config.inlineChat.enableV2", + "description": "%copilot.workspace.edit.inline.description%", + "disambiguation": [ + { + "category": "edit", + "description": "Make changes to existing code", + "examples": [ + "Change this method to use async/await" + ] + } + ] + }, + { + "name": "doc", + "when": "!config.inlineChat.enableV2", + "description": "%copilot.workspace.doc.description%", + "disambiguation": [ + { + "category": "doc", + "description": "Add documentation comment for this symbol", + "examples": [ + "Add jsdoc to this method" + ] + } + ] + }, + { + "name": "fix", + "when": "!config.inlineChat.enableV2", + "description": "%copilot.workspace.fix.description%", + "disambiguation": [ + { + "category": "fix", + "description": "Propose a fix for the problems in the selected code", + "examples": [ + "There is a problem in this code. Rewrite the code to show it with the bug fixed." + ] + } + ] + }, + { + "name": "tests", + "when": "!config.inlineChat.enableV2", + "description": "%copilot.workspace.tests.description%", + "disambiguation": [ + { + "category": "tests", + "description": "Generate unit tests for the selected code. The user does not want to fix their existing tests.", + "examples": [ + "Write a set of detailed unit test functions for the code above." + ] + } + ] + } + ] + }, + { + "id": "github.copilot.editingSession2", + "name": "GitHubCopilot", + "fullName": "GitHub Copilot", + "description": "%copilot.edits.description%", + "isDefault": true, + "locations": [ + "panel" + ], + "modes": [ + "edit" + ], + "when": "config.chat.edits2.enabled" + }, + { + "id": "github.copilot.editsAgent", + "name": "agent", + "fullName": "GitHub Copilot", + "description": "%copilot.agent.description%", + "locations": [ + "panel" + ], + "modes": [ + "agent" + ], + "isEngine": true, + "isDefault": true, + "isAgent": true, + "when": "config.chat.agent.enabled", + "commands": [ + { + "name": "error", + "description": "Make a model request which will result in an error", + "when": "github.copilot.chat.debug" + } + ] + }, + { + "id": "github.copilot.notebook", + "name": "GitHubCopilot", + "fullName": "GitHub Copilot", + "description": "%copilot.description%", + "isDefault": true, + "locations": [ + "notebook" + ], + "when": "!config.inlineChat.notebookAgent", + "commands": [ + { + "name": "fix", + "description": "%copilot.workspace.fix.description%" + }, + { + "name": "explain", + "description": "%copilot.workspace.explain.description%" + } + ] + }, + { + "id": "github.copilot.notebookEditorAgent", + "name": "GitHubCopilot", + "fullName": "GitHub Copilot", + "description": "%copilot.description%", + "isDefault": true, + "locations": [ + "notebook" + ], + "when": "config.inlineChat.notebookAgent", + "commands": [ + { + "name": "fix", + "description": "%copilot.workspace.fix.description%" + }, + { + "name": "explain", + "description": "%copilot.workspace.explain.description%" + } + ] + }, + { + "id": "github.copilot.workspace", + "name": "workspace", + "fullName": "Workspace", + "description": "%copilot.workspace.description%", + "when": "!github.copilot.interactiveSession.disabled", + "sampleRequest": "%copilot.workspace.sampleRequest%", + "locations": [ + "panel" + ], + "disambiguation": [ + { + "category": "workspace_project_questions", + "description": "The user wants to learn about or update the code or files in their current workspace. Questions in this category may be about understanding what the whole workspace does or locating the implementation of some code. This does not include generating or updating tests.", + "examples": [ + "What does this project do?" + ] + }, + { + "category": "find_code_in_workspace", + "description": "The user wants to locate the implementation of some functionality in their current workspace.", + "examples": [ + "Where is the tree widget implemented?" + ] + }, + { + "category": "generate_with_workspace_context", + "description": "The user wants to generate code based on multiple files in the workspace and did not specify which files to reference.", + "examples": [ + "Create a README for this project." + ] + } + ], + "commands": [ + { + "name": "explain", + "description": "%copilot.workspace.explain.description%" + }, + { + "name": "review", + "description": "%copilot.workspace.review.description%", + "when": "github.copilot.advanced.review.intent" + }, + { + "name": "tests", + "description": "%copilot.workspace.tests.description%", + "disambiguation": [ + { + "category": "create_tests", + "description": "The user wants to generate unit tests.", + "examples": [ + "Generate tests for my selection using pytest." + ] + } + ] + }, + { + "name": "fix", + "description": "%copilot.workspace.fix.description%", + "sampleRequest": "%copilot.workspace.fix.sampleRequest%" + }, + { + "name": "new", + "description": "%copilot.workspace.new.description%", + "sampleRequest": "%copilot.workspace.new.sampleRequest%", + "isSticky": true, + "disambiguation": [ + { + "category": "create_new_workspace_or_extension", + "description": "The user wants to create a complete Visual Studio Code workspace from scratch, such as a new application or a Visual Studio Code extension. Use this category only if the question relates to generating or creating new workspaces in Visual Studio Code. Do not use this category for updating existing code or generating sample code snippets", + "examples": [ + "Scaffold a Node server.", + "Create a sample project which uses the fileSystemProvider API.", + "react application" + ] + } + ] + }, + { + "name": "newNotebook", + "description": "%copilot.workspace.newNotebook.description%", + "sampleRequest": "%copilot.workspace.newNotebook.sampleRequest%", + "disambiguation": [ + { + "category": "create_jupyter_notebook", + "description": "The user wants to create a new Jupyter notebook in Visual Studio Code.", + "examples": [ + "Create a notebook to analyze this CSV file." + ] + } + ] + }, + { + "name": "semanticSearch", + "description": "%copilot.workspace.semanticSearch.description%", + "sampleRequest": "%copilot.workspace.semanticSearch.sampleRequest%", + "when": "config.github.copilot.semanticSearch.enabled" + }, + { + "name": "setupTests", + "description": "%copilot.vscode.setupTests.description%", + "sampleRequest": "%copilot.vscode.setupTests.sampleRequest%", + "when": "config.github.copilot.chat.setupTests.enabled", + "disambiguation": [ + { + "category": "set_up_tests", + "description": "The user wants to configure project test setup, framework, or test runner. The user does not want to fix their existing tests.", + "examples": [ + "Set up tests for this project." + ] + } + ] + } + ] + }, + { + "id": "github.copilot.vscode", + "name": "vscode", + "fullName": "VS Code", + "description": "%copilot.vscode.description%", + "when": "!github.copilot.interactiveSession.disabled", + "sampleRequest": "%copilot.vscode.sampleRequest%", + "locations": [ + "panel" + ], + "disambiguation": [ + { + "category": "vscode_configuration_questions", + "description": "The user wants to learn about, use, or configure the Visual Studio Code. Use this category if the users question is specifically about commands, settings, keybindings, extensions and other features available in Visual Studio Code. Do not use this category to answer questions about generating code or creating new projects including Visual Studio Code extensions.", + "examples": [ + "Switch to light mode.", + "Keyboard shortcut to toggle terminal visibility.", + "Settings to enable minimap.", + "Whats new in the latest release?" + ] + }, + { + "category": "configure_python_environment", + "description": "The user wants to set up their Python environment.", + "examples": [ + "Create a virtual environment for my project." + ] + } + ], + "commands": [ + { + "name": "search", + "description": "%copilot.vscode.search.description%", + "sampleRequest": "%copilot.vscode.search.sampleRequest%" + } + ] + }, + { + "id": "github.copilot.terminal", + "name": "terminal", + "fullName": "Terminal", + "description": "%copilot.terminal.description%", + "when": "!github.copilot.interactiveSession.disabled", + "sampleRequest": "%copilot.terminal.sampleRequest%", + "isDefault": true, + "locations": [ + "terminal" + ], + "commands": [ + { + "name": "explain", + "description": "%copilot.terminal.explain.description%", + "sampleRequest": "%copilot.terminal.explain.sampleRequest%" + } + ] + }, + { + "id": "github.copilot.terminalPanel", + "name": "terminal", + "fullName": "Terminal", + "description": "%copilot.terminalPanel.description%", + "when": "!github.copilot.interactiveSession.disabled", + "sampleRequest": "%copilot.terminal.sampleRequest%", + "locations": [ + "panel" + ], + "commands": [ + { + "name": "explain", + "description": "%copilot.terminal.explain.description%", + "sampleRequest": "%copilot.terminal.explain.sampleRequest%", + "disambiguation": [ + { + "category": "terminal_state_questions", + "description": "The user wants to learn about specific state such as the selection, command, or failed command in the integrated terminal in Visual Studio Code.", + "examples": [ + "Why did the latest terminal command fail?" + ] + } + ] + } + ] + }, + { + "id": "github.copilot.chatReplay", + "name": "chatReplay", + "fullName": "Chat Replay", + "when": "debugType == 'vscode-chat-replay'", + "locations": [ + "panel" + ] + } + ], + "languageModelChatProviders": [ + { + "vendor": "copilot", + "displayName": "Copilot" + }, + { + "vendor": "azure", + "displayName": "Azure", + "managementCommand": "github.copilot.chat.manageBYOK" + }, + { + "vendor": "anthropic", + "displayName": "Anthropic", + "managementCommand": "github.copilot.chat.manageBYOK" + }, + { + "vendor": "xai", + "displayName": "xAI", + "managementCommand": "github.copilot.chat.manageBYOK" + }, + { + "vendor": "ollama", + "displayName": "Ollama" + }, + { + "vendor": "openai", + "displayName": "OpenAI", + "managementCommand": "github.copilot.chat.manageBYOK" + }, + { + "vendor": "gemini", + "displayName": "Google", + "managementCommand": "github.copilot.chat.manageBYOK" + }, + { + "vendor": "groq", + "displayName": "Groq", + "managementCommand": "github.copilot.chat.manageBYOK" + }, + { + "vendor": "openrouter", + "displayName": "OpenRouter", + "managementCommand": "github.copilot.chat.manageBYOK" + }, + { + "vendor": "customoai", + "when": "productQualityType != 'stable'", + "displayName": "OpenAI Compatible", + "managementCommand": "github.copilot.chat.manageBYOK" + } + ], + "interactiveSession": [ + { + "label": "GitHub Copilot", + "id": "copilot", + "icon": "", + "when": "!github.copilot.interactiveSession.disabled" + } + ], + "mcpServerDefinitionProviders": [ + { + "id": "github", + "label": "GitHub" + } + ], + "viewsWelcome": [ + { + "view": "debug", + "when": "github.copilot-chat.activated", + "contents": "%github.copilot.viewsWelcome.debug%" + } + ], + "chatViewsWelcome": [ + { + "icon": "$(chat-sparkle)", + "title": "%copilot.title%", + "content": "%github.copilot.viewsWelcome.individual.expired%", + "when": "github.copilot.interactiveSession.individual.expired" + }, + { + "icon": "$(chat-sparkle)", + "title": "%copilot.title%", + "content": "%github.copilot.viewsWelcome.enterprise%", + "when": "github.copilot.interactiveSession.enterprise.disabled" + }, + { + "icon": "$(chat-sparkle)", + "title": "%copilot.title%", + "content": "%github.copilot.viewsWelcome.offline%", + "when": "github.copilot.offline" + }, + { + "icon": "$(chat-sparkle)", + "title": "%copilot.title%", + "content": "%github.copilot.viewsWelcome.contactSupport%", + "when": "github.copilot.interactiveSession.contactSupport" + }, + { + "icon": "$(chat-sparkle)", + "title": "%copilot.title%", + "content": "%github.copilot.viewsWelcome.chatDisabled%", + "when": "github.copilot.interactiveSession.chatDisabled" + }, + { + "icon": "$(chat-sparkle)", + "title": "%copilot.title%", + "content": "%github.copilot.viewsWelcome.switchToReleaseChannel%", + "when": "github.copilot.interactiveSession.switchToReleaseChannel" + } + ], + "commands": [ + { + "command": "github.copilot.chat.triggerPermissiveSignIn", + "title": "%github.copilot.command.triggerPermissiveSignIn%" + }, + { + "command": "github.copilot.cli.sessions.delete", + "title": "%github.copilot.command.deleteAgentSession%", + "icon": "$(close)", + "category": "Copilot CLI" + }, + { + "command": "github.copilot.cli.sessions.resumeInTerminal", + "title": "%github.copilot.command.cli.sessions.resumeInTerminal%", + "icon": "$(terminal)", + "category": "Copilot CLI" + }, + { + "command": "github.copilot.chat.replay", + "title": "Start Chat Replay", + "icon": "$(debug-line-by-line)", + "enablement": "resourceFilename === 'benchRun.chatReplay.json' && !inDebugMode" + }, + { + "command": "github.copilot.chat.replay.enableWorkspaceEditTracing", + "title": "%github.copilot.command.enableEditTracing%", + "category": "Developer", + "enablement": "!github.copilot.chat.replay.workspaceEditTracing" + }, + { + "command": "github.copilot.chat.replay.disableWorkspaceEditTracing", + "title": "%github.copilot.command.disableEditTracing%", + "category": "Developer", + "enablement": "github.copilot.chat.replay.workspaceEditTracing" + }, + { + "command": "github.copilot.chat.explain", + "title": "%github.copilot.command.explainThis%", + "enablement": "!github.copilot.interactiveSession.disabled", + "category": "Chat" + }, + { + "command": "github.copilot.chat.explain.palette", + "title": "%github.copilot.command.explainThis%", + "enablement": "!github.copilot.interactiveSession.disabled && !editorReadonly", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review", + "title": "%github.copilot.command.reviewAndComment%", + "enablement": "config.github.copilot.chat.reviewSelection.enabled && !github.copilot.interactiveSession.disabled", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.apply", + "title": "%github.copilot.command.applyReviewSuggestion%", + "icon": "$(sparkle)", + "enablement": "commentThread =~ /hasSuggestion/", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.applyAndNext", + "title": "%github.copilot.command.applyReviewSuggestionAndNext%", + "icon": "$(sparkle)", + "enablement": "commentThread =~ /hasSuggestion/", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.discard", + "title": "%github.copilot.command.discardReviewSuggestion%", + "icon": "$(close)", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.discardAndNext", + "title": "%github.copilot.command.discardReviewSuggestionAndNext%", + "icon": "$(close)", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.discardAll", + "title": "%github.copilot.command.discardAllReviewSuggestion%", + "icon": "$(close-all)", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.stagedChanges", + "title": "%github.copilot.command.reviewStagedChanges%", + "icon": "$(code-review)", + "enablement": "github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.unstagedChanges", + "title": "%github.copilot.command.reviewUnstagedChanges%", + "icon": "$(code-review)", + "enablement": "github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.changes", + "title": "%github.copilot.command.reviewChanges%", + "icon": "$(code-review)", + "enablement": "github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.stagedFileChange", + "title": "%github.copilot.command.reviewFileChange%", + "icon": "$(code-review)", + "enablement": "github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.unstagedFileChange", + "title": "%github.copilot.command.reviewFileChange%", + "icon": "$(code-review)", + "enablement": "github.copilot.chat.reviewDiff.enabled && !github.copilot.interactiveSession.disabled", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.previous", + "title": "%github.copilot.command.gotoPreviousReviewSuggestion%", + "icon": "$(arrow-up)", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.next", + "title": "%github.copilot.command.gotoNextReviewSuggestion%", + "icon": "$(arrow-down)", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.continueInInlineChat", + "title": "%github.copilot.command.continueReviewInInlineChat%", + "icon": "$(comment-discussion)", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.continueInChat", + "title": "%github.copilot.command.continueReviewInChat%", + "icon": "$(comment-discussion)", + "category": "Chat" + }, + { + "command": "github.copilot.chat.review.markHelpful", + "title": "%github.copilot.command.helpfulReviewSuggestion%", + "icon": "$(thumbsup)", + "enablement": "!(commentThread =~ /markedAsHelpful/)", + "category": "Chat" + }, + { + "command": "github.copilot.chat.openUserPreferences", + "title": "%github.copilot.command.openUserPreferences%", + "category": "Chat", + "enablement": "config.github.copilot.chat.enableUserPreferences" + }, + { + "command": "github.copilot.chat.tools.memory.openFolder", + "title": "%github.copilot.command.openMemoryFolder%", + "category": "Chat", + "enablement": "config.github.copilot.chat.tools.memory.enabled" + }, + { + "command": "github.copilot.chat.review.markUnhelpful", + "title": "%github.copilot.command.unhelpfulReviewSuggestion%", + "icon": "$(thumbsdown)", + "enablement": "!(commentThread =~ /markedAsUnhelpful/)", + "category": "Chat" + }, + { + "command": "github.copilot.chat.generate", + "title": "%github.copilot.command.generateThis%", + "icon": "$(sparkle)", + "enablement": "!github.copilot.interactiveSession.disabled && !editorReadonly", + "category": "Chat" + }, + { + "command": "github.copilot.chat.generateDocs", + "title": "%github.copilot.command.generateDocs%", + "enablement": "!github.copilot.interactiveSession.disabled && !editorReadonly", + "category": "Chat" + }, + { + "command": "github.copilot.chat.generateTests", + "title": "%github.copilot.command.generateTests%", + "enablement": "!github.copilot.interactiveSession.disabled && !editorReadonly", + "category": "Chat" + }, + { + "command": "github.copilot.chat.fix", + "title": "%github.copilot.command.fixThis%", + "enablement": "!github.copilot.interactiveSession.disabled && !editorReadonly", + "category": "Chat" + }, + { + "command": "github.copilot.interactiveSession.feedback", + "title": "%github.copilot.command.sendChatFeedback%", + "enablement": "github.copilot-chat.activated && !github.copilot.interactiveSession.disabled", + "icon": "$(feedback)", + "category": "Chat" + }, + { + "command": "github.copilot.debug.workbenchState", + "title": "%github.copilot.command.logWorkbenchState%", + "category": "Developer" + }, + { + "command": "github.copilot.debug.showChatLogView", + "title": "%github.copilot.command.showChatLogView%", + "category": "Developer" + }, + { + "command": "github.copilot.debug.showOutputChannel", + "title": "%github.copilot.command.showOutputChannel%", + "category": "Developer" + }, + { + "command": "github.copilot.debug.showContextInspectorView", + "title": "%github.copilot.command.showContextInspectorView%", + "icon": "$(inspect)", + "category": "Developer" + }, + { + "command": "github.copilot.debug.validateNesRename", + "title": "%github.copilot.command.validateNesRename%", + "category": "Developer" + }, + { + "command": "github.copilot.debug.resetVirtualToolGroups", + "title": "%github.copilot.command.resetVirtualToolGroups%", + "icon": "$(inspect)", + "category": "Developer" + }, + { + "command": "github.copilot.terminal.explainTerminalLastCommand", + "title": "%github.copilot.command.explainTerminalLastCommand%", + "category": "Chat" + }, + { + "command": "github.copilot.git.generateCommitMessage", + "title": "%github.copilot.git.generateCommitMessage%", + "icon": "$(sparkle)", + "enablement": "!github.copilot.interactiveSession.disabled", + "category": "Chat" + }, + { + "command": "github.copilot.git.resolveMergeConflicts", + "title": "%github.copilot.git.resolveMergeConflicts%", + "icon": "$(chat-sparkle)", + "enablement": "!github.copilot.interactiveSession.disabled", + "category": "Chat" + }, + { + "command": "github.copilot.devcontainer.generateDevContainerConfig", + "title": "%github.copilot.devcontainer.generateDevContainerConfig%", + "category": "Chat" + }, + { + "command": "github.copilot.tests.fixTestFailure", + "icon": "$(sparkle)", + "title": "%github.copilot.command.fixTestFailure%", + "category": "Chat" + }, + { + "command": "github.copilot.tests.fixTestFailure.fromInline", + "icon": "$(sparkle)", + "title": "%github.copilot.command.fixTestFailure%" + }, + { + "command": "github.copilot.chat.attachFile", + "title": "%github.copilot.chat.attachFile%", + "category": "Chat" + }, + { + "command": "github.copilot.chat.attachSelection", + "title": "%github.copilot.chat.attachSelection%", + "icon": "$(comment-discussion)", + "category": "Chat" + }, + { + "command": "github.copilot.debug.collectDiagnostics", + "title": "%github.copilot.command.collectDiagnostics%", + "category": "Developer" + }, + { + "command": "github.copilot.debug.inlineEdit.clearCache", + "title": "%github.copilot.command.inlineEdit.clearCache%", + "category": "Developer" + }, + { + "command": "github.copilot.debug.inlineEdit.reportNotebookNESIssue", + "title": "%github.copilot.command.inlineEdit.reportNotebookNESIssue%", + "enablement": "config.github.copilot.chat.advanced.notebook.alternativeNESFormat.enabled || github.copilot.chat.enableEnhancedNotebookNES", + "category": "Developer" + }, + { + "command": "github.copilot.debug.generateSTest", + "title": "%github.copilot.command.generateSTest%", + "enablement": "github.copilot.debugReportFeedback", + "category": "Developer" + }, + { + "command": "github.copilot.open.walkthrough", + "title": "%github.copilot.command.openWalkthrough%", + "category": "Chat" + }, + { + "command": "github.copilot.debug.generateInlineEditTests", + "title": "Generate Inline Edit Tests", + "category": "Chat", + "enablement": "resourceScheme == 'ccreq'" + }, + { + "command": "github.copilot.buildLocalWorkspaceIndex", + "title": "%github.copilot.command.buildLocalWorkspaceIndex%", + "category": "Chat", + "enablement": "github.copilot-chat.activated" + }, + { + "command": "github.copilot.buildRemoteWorkspaceIndex", + "title": "%github.copilot.command.buildRemoteWorkspaceIndex%", + "category": "Chat", + "enablement": "github.copilot-chat.activated" + }, + { + "command": "github.copilot.report", + "title": "Report Issue", + "category": "Chat" + }, + { + "command": "github.copilot.chat.rerunWithCopilotDebug", + "title": "%github.copilot.command.rerunWithCopilotDebug%", + "category": "Chat" + }, + { + "command": "github.copilot.chat.startCopilotDebugCommand", + "title": "Start Copilot Debug" + }, + { + "command": "github.copilot.chat.clearTemporalContext", + "title": "Clear Temporal Context", + "category": "Developer" + }, + { + "command": "github.copilot.search.markHelpful", + "title": "Helpful", + "icon": "$(thumbsup)", + "enablement": "!github.copilot.search.feedback.sent" + }, + { + "command": "github.copilot.search.markUnhelpful", + "title": "Unhelpful", + "icon": "$(thumbsdown)", + "enablement": "!github.copilot.search.feedback.sent" + }, + { + "command": "github.copilot.search.feedback", + "title": "Feedback", + "icon": "$(feedback)", + "enablement": "!github.copilot.search.feedback.sent" + }, + { + "command": "github.copilot.chat.debug.showElements", + "title": "Show Rendered Elements" + }, + { + "command": "github.copilot.chat.debug.hideElements", + "title": "Hide Rendered Elements" + }, + { + "command": "github.copilot.chat.debug.showTools", + "title": "Show Tools" + }, + { + "command": "github.copilot.chat.debug.hideTools", + "title": "Hide Tools" + }, + { + "command": "github.copilot.chat.debug.showNesRequests", + "title": "Show NES Requests" + }, + { + "command": "github.copilot.chat.debug.hideNesRequests", + "title": "Hide NES Requests" + }, + { + "command": "github.copilot.chat.debug.showGhostRequests", + "title": "Show Ghost Requests" + }, + { + "command": "github.copilot.chat.debug.hideGhostRequests", + "title": "Hide Ghost Requests" + }, + { + "command": "github.copilot.chat.debug.showRawRequestBody", + "title": "Show Raw Request Body" + }, + { + "command": "github.copilot.chat.debug.exportLogItem", + "title": "Export as...", + "icon": "$(export)" + }, + { + "command": "github.copilot.chat.debug.exportPromptArchive", + "title": "Export All as Archive...", + "icon": "$(archive)" + }, + { + "command": "github.copilot.chat.debug.exportPromptLogsAsJson", + "title": "Export All as JSON...", + "icon": "$(export)" + }, + { + "command": "github.copilot.chat.debug.exportAllPromptLogsAsJson", + "title": "Export All Prompt Logs as JSON...", + "icon": "$(export)" + }, + { + "command": "github.copilot.chat.showAsChatSession", + "title": "Show as chat session", + "icon": "$(chat-sparkle)" + }, + { + "command": "github.copilot.debug.collectWorkspaceIndexDiagnostics", + "title": "%github.copilot.command.collectWorkspaceIndexDiagnostics%", + "category": "Developer" + }, + { + "command": "github.copilot.chat.mcp.setup.check", + "title": "MCP Check: is supported" + }, + { + "command": "github.copilot.chat.mcp.setup.validatePackage", + "title": "MCP Check: validate package" + }, + { + "command": "github.copilot.chat.mcp.setup.flow", + "title": "MCP Check: do prompts" + }, + { + "command": "github.copilot.chat.generateAltText", + "title": "Generate/Refine Alt Text" + }, + { + "command": "github.copilot.chat.notebook.enableFollowCellExecution", + "title": "Enable Follow Cell Execution from Chat", + "shortTitle": "Follow", + "icon": "$(pinned)" + }, + { + "command": "github.copilot.chat.notebook.disableFollowCellExecution", + "title": "Disable Follow Cell Execution from Chat", + "shortTitle": "Unfollow", + "icon": "$(pinned-dirty)" + }, + { + "command": "github.copilot.chat.manageBYOK", + "title": "Manage Bring Your Own Key Vendor", + "enablement": "false" + }, + { + "command": "github.copilot.chat.manageBYOKAPIKey", + "title": "Manage Bring Your Own Key API Key", + "enablement": "false" + }, + { + "command": "github.copilot.cloud.resetWorkspaceConfirmations", + "title": "%github.copilot.command.resetCloudAgentWorkspaceConfirmations%" + }, + { + "command": "github.copilot.cloud.sessions.openInBrowser", + "title": "%github.copilot.command.openCopilotAgentSessionsInBrowser%", + "icon": "$(link-external)" + }, + { + "command": "github.copilot.cloud.sessions.proxy.closeChatSessionPullRequest", + "title": "%github.copilot.command.closeChatSessionPullRequest.title%" + }, + { + "command": "github.copilot.cloud.sessions.installPRExtension", + "title": "%github.copilot.command.installPRExtension.title%", + "icon": "$(extensions)" + }, + { + "command": "github.copilot.chat.openSuggestionsPanel", + "title": "Open Completions Panel", + "enablement": "github.copilot.extensionUnification.activated && !isWeb", + "category": "GitHub Copilot" + }, + { + "command": "github.copilot.chat.toggleStatusMenu", + "title": "Open Status Menu", + "enablement": "github.copilot.extensionUnification.activated", + "category": "GitHub Copilot" + }, + { + "command": "github.copilot.chat.completions.disable", + "title": "Disable Inline Suggestions", + "enablement": "github.copilot.extensionUnification.activated && github.copilot.activated && config.editor.inlineSuggest.enabled && github.copilot.completions.enabled", + "category": "GitHub Copilot" + }, + { + "command": "github.copilot.chat.completions.enable", + "title": "Enable Inline Suggestions", + "enablement": "github.copilot.extensionUnification.activated && github.copilot.activated && !(config.editor.inlineSuggest.enabled && github.copilot.completions.enabled)", + "category": "GitHub Copilot" + }, + { + "command": "github.copilot.chat.completions.toggle", + "title": "Toggle (Enable/Disable) Inline Suggestions", + "enablement": "github.copilot.extensionUnification.activated && github.copilot.activated", + "category": "GitHub Copilot" + }, + { + "command": "github.copilot.chat.openModelPicker", + "title": "Change Completions Model", + "category": "GitHub Copilot", + "enablement": "github.copilot.extensionUnification.activated && !isWeb" + }, + { + "command": "github.copilot.chat.applyCopilotCLIAgentSessionChanges", + "title": "%github.copilot.command.applyCopilotCLIAgentSessionChanges%", + "icon": "$(git-stash-pop)", + "category": "GitHub Copilot" + }, + { + "command": "github.copilot.chat.applyCopilotCLIAgentSessionChanges.apply", + "title": "%github.copilot.chat.applyCopilotCLIAgentSessionChanges.apply%", + "icon": "$(git-stash-pop)", + "category": "GitHub Copilot" + } + ], + "configuration": [ + { + "title": "GitHub Copilot Chat", + "id": "stable", + "properties": { + "github.copilot.chat.backgroundAgent.enabled": { + "type": "boolean", + "default": true, + "markdownDescription": "%github.copilot.config.backgroundAgent.enabled%" + }, + "github.copilot.chat.cloudAgent.enabled": { + "type": "boolean", + "default": true, + "markdownDescription": "%github.copilot.config.cloudAgent.enabled%" + }, + "github.copilot.chat.codeGeneration.useInstructionFiles": { + "type": "boolean", + "default": true, + "markdownDescription": "%github.copilot.config.codeGeneration.useInstructionFiles%" + }, + "github.copilot.editor.enableCodeActions": { + "type": "boolean", + "default": true, + "description": "%github.copilot.config.enableCodeActions%" + }, + "github.copilot.renameSuggestions.triggerAutomatically": { + "type": "boolean", + "default": true, + "description": "%github.copilot.config.renameSuggestions.triggerAutomatically%" + }, + "github.copilot.chat.localeOverride": { + "type": "string", + "enum": [ + "auto", + "en", + "fr", + "it", + "de", + "es", + "ru", + "zh-CN", + "zh-TW", + "ja", + "ko", + "cs", + "pt-br", + "tr", + "pl" + ], + "enumDescriptions": [ + "Use VS Code's configured display language", + "English", + "français", + "italiano", + "Deutsch", + "español", + "русский", + "中文(简体)", + "中文(繁體)", + "日本語", + "한국어", + "čeština", + "português", + "Türkçe", + "polski" + ], + "default": "auto", + "markdownDescription": "%github.copilot.config.localeOverride%" + }, + "github.copilot.chat.terminalChatLocation": { + "type": "string", + "default": "chatView", + "markdownDescription": "%github.copilot.config.terminalChatLocation%", + "markdownEnumDescriptions": [ + "%github.copilot.config.terminalChatLocation.chatView%", + "%github.copilot.config.terminalChatLocation.quickChat%", + "%github.copilot.config.terminalChatLocation.terminal%" + ], + "enum": [ + "chatView", + "quickChat", + "terminal" + ] + }, + "github.copilot.chat.scopeSelection": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.scopeSelection%" + }, + "github.copilot.chat.useProjectTemplates": { + "type": "boolean", + "default": true, + "markdownDescription": "%github.copilot.config.useProjectTemplates%" + }, + "github.copilot.nextEditSuggestions.enabled": { + "type": "boolean", + "default": false, + "tags": [ + "nextEditSuggestions", + "onExp" + ], + "markdownDescription": "%github.copilot.nextEditSuggestions.enabled%", + "scope": "language-overridable" + }, + "github.copilot.nextEditSuggestions.fixes": { + "type": "boolean", + "default": true, + "tags": [ + "nextEditSuggestions", + "onExp" + ], + "markdownDescription": "%github.copilot.nextEditSuggestions.fixes%", + "scope": "language-overridable" + }, + "github.copilot.nextEditSuggestions.allowWhitespaceOnlyChanges": { + "type": "boolean", + "default": true, + "tags": [ + "nextEditSuggestions", + "onExp" + ], + "markdownDescription": "%github.copilot.nextEditSuggestions.allowWhitespaceOnlyChanges%", + "scope": "language-overridable" + }, + "github.copilot.chat.agent.autoFix": { + "type": "boolean", + "default": true, + "description": "%github.copilot.config.autoFix%", + "tags": [ + "onExp" + ] + }, + "github.copilot.chat.customInstructionsInSystemMessage": { + "type": "boolean", + "default": true, + "description": "%github.copilot.config.customInstructionsInSystemMessage%" + }, + "github.copilot.chat.customInstructions.useOrganizationInstructions": { + "type": "boolean", + "default": true, + "description": "%github.copilot.config.customInstructions.useOrganizationInstructions%" + }, + "github.copilot.chat.agent.currentEditorContext.enabled": { + "type": "boolean", + "default": true, + "description": "%github.copilot.config.agent.currentEditorContext.enabled%" + }, + "github.copilot.enable": { + "type": "object", + "scope": "window", + "default": { + "*": true, + "plaintext": false, + "markdown": false, + "scminput": false + }, + "additionalProperties": { + "type": "boolean" + }, + "markdownDescription": "Enable or disable auto triggering of Copilot completions for specified [languages](https://code.visualstudio.com/docs/languages/identifiers). You can still trigger suggestions manually using `Alt + \\`" + }, + "github.copilot.selectedCompletionModel": { + "type": "string", + "default": "", + "markdownDescription": "The currently selected completion model ID. To select from a list of available models, use the __\"Change Completions Model\"__ command or open the model picker (from the Copilot menu in the VS Code title bar, select __\"Configure Code Completions\"__ then __\"Change Completions Model\"__. The value must be a valid model ID. An empty value indicates that the default model will be used." + } + } + }, + { + "id": "preview", + "properties": { + "github.copilot.chat.reviewAgent.enabled": { + "type": "boolean", + "default": true, + "description": "%github.copilot.config.reviewAgent.enabled%", + "tags": [ + "preview" + ] + }, + "github.copilot.chat.reviewSelection.enabled": { + "type": "boolean", + "default": true, + "description": "%github.copilot.config.reviewSelection.enabled%", + "tags": [ + "preview" + ] + }, + "github.copilot.chat.reviewSelection.instructions": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "markdownDescription": "%github.copilot.config.reviewSelection.instruction.file%", + "properties": { + "file": { + "type": "string", + "examples": [ + ".copilot-review-instructions.md" + ] + }, + "language": { + "type": "string" + } + }, + "examples": [ + { + "file": ".copilot-review-instructions.md" + } + ], + "required": [ + "file" + ] + }, + { + "type": "object", + "markdownDescription": "%github.copilot.config.reviewSelection.instruction.text%", + "properties": { + "text": { + "type": "string", + "examples": [ + "Use underscore for field names." + ] + }, + "language": { + "type": "string" + } + }, + "required": [ + "text" + ], + "examples": [ + { + "text": "Use underscore for field names." + }, + { + "text": "Resolve all TODO tasks." + } + ] + } + ] + }, + "default": [], + "markdownDescription": "%github.copilot.config.reviewSelection.instructions%", + "examples": [ + [ + { + "file": ".copilot-review-instructions.md" + }, + { + "text": "Resolve all TODO tasks." + } + ] + ], + "tags": [ + "preview" + ] + }, + "github.copilot.chat.copilotDebugCommand.enabled": { + "type": "boolean", + "default": true, + "tags": [ + "preview" + ], + "description": "%github.copilot.chat.copilotDebugCommand.enabled%" + }, + "github.copilot.chat.codesearch.enabled": { + "type": "boolean", + "default": false, + "tags": [ + "preview" + ], + "markdownDescription": "%github.copilot.config.codesearch.enabled%" + }, + "github.copilot.chat.byok.ollamaEndpoint": { + "type": "string", + "default": "http://localhost:11434", + "tags": [ + "preview" + ], + "markdownDescription": "%github.copilot.config.byok.ollamaEndpoint%" + } + } + }, + { + "id": "experimental", + "properties": { + "github.copilot.chat.githubMcpServer.enabled": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.githubMcpServer.enabled%", + "tags": [ + "experimental" + ] + }, + "github.copilot.chat.githubMcpServer.toolsets": { + "type": "array", + "default": [ + "default" + ], + "markdownDescription": "%github.copilot.config.githubMcpServer.toolsets%", + "items": { + "type": "string" + }, + "tags": [ + "experimental" + ] + }, + "github.copilot.chat.githubMcpServer.readonly": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.githubMcpServer.readonly%", + "tags": [ + "experimental" + ] + }, + "github.copilot.chat.githubMcpServer.lockdown": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.githubMcpServer.lockdown%", + "tags": [ + "experimental" + ] + }, + "github.copilot.chat.imageUpload.enabled": { + "type": "boolean", + "default": true, + "tags": [ + "experimental", + "onExp" + ], + "markdownDescription": "%github.copilot.config.imageUpload.enabled%" + }, + "github.copilot.chat.edits.suggestRelatedFilesFromGitHistory": { + "type": "boolean", + "default": true, + "tags": [ + "experimental" + ], + "markdownDescription": "%github.copilot.config.edits.suggestRelatedFilesFromGitHistory%" + }, + "github.copilot.chat.edits.suggestRelatedFilesForTests": { + "type": "boolean", + "default": true, + "tags": [ + "experimental" + ], + "markdownDescription": "%github.copilot.chat.edits.suggestRelatedFilesForTests%" + }, + "github.copilot.chat.codeGeneration.instructions": { + "markdownDeprecationMessage": "%github.copilot.config.codeGeneration.instructions.deprecated%", + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "markdownDescription": "%github.copilot.config.codeGeneration.instruction.file%", + "properties": { + "file": { + "type": "string", + "examples": [ + ".copilot-codeGeneration-instructions.md" + ] + }, + "language": { + "type": "string" + } + }, + "examples": [ + { + "file": ".copilot-codeGeneration-instructions.md" + } + ], + "required": [ + "file" + ] + }, + { + "type": "object", + "markdownDescription": "%github.copilot.config.codeGeneration.instruction.text%", + "properties": { + "text": { + "type": "string", + "examples": [ + "Use underscore for field names." + ] + }, + "language": { + "type": "string" + } + }, + "required": [ + "text" + ], + "examples": [ + { + "text": "Use underscore for field names." + }, + { + "text": "Always add a comment: 'Generated by Copilot'." + } + ] + } + ] + }, + "default": [], + "markdownDescription": "%github.copilot.config.codeGeneration.instructions%", + "examples": [ + [ + { + "file": ".copilot-codeGeneration-instructions.md" + }, + { + "text": "Always add a comment: 'Generated by Copilot'." + } + ] + ], + "tags": [ + "experimental" + ] + }, + "github.copilot.chat.testGeneration.instructions": { + "markdownDeprecationMessage": "%github.copilot.config.testGeneration.instructions.deprecated%", + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "markdownDescription": "%github.copilot.config.experimental.testGeneration.instruction.file%", + "properties": { + "file": { + "type": "string", + "examples": [ + ".copilot-test-instructions.md" + ] + }, + "language": { + "type": "string" + } + }, + "examples": [ + { + "file": ".copilot-test-instructions.md" + } + ], + "required": [ + "file" + ] + }, + { + "type": "object", + "markdownDescription": "%github.copilot.config.experimental.testGeneration.instruction.text%", + "properties": { + "text": { + "type": "string", + "examples": [ + "Use suite and test instead of describe and it." + ] + }, + "language": { + "type": "string" + } + }, + "required": [ + "text" + ], + "examples": [ + { + "text": "Always try uniting related tests in a suite." + } + ] + } + ] + }, + "default": [], + "markdownDescription": "%github.copilot.config.testGeneration.instructions%", + "examples": [ + [ + { + "file": ".copilot-test-instructions.md" + }, + { + "text": "Always try uniting related tests in a suite." + } + ] + ], + "tags": [ + "experimental" + ] + }, + "github.copilot.chat.commitMessageGeneration.instructions": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "markdownDescription": "%github.copilot.config.commitMessageGeneration.instruction.file%", + "properties": { + "file": { + "type": "string", + "examples": [ + ".copilot-commit-message-instructions.md" + ] + } + }, + "examples": [ + { + "file": ".copilot-commit-message-instructions.md" + } + ], + "required": [ + "file" + ] + }, + { + "type": "object", + "markdownDescription": "%github.copilot.config.commitMessageGeneration.instruction.text%", + "properties": { + "text": { + "type": "string", + "examples": [ + "Use conventional commit message format." + ] + } + }, + "required": [ + "text" + ], + "examples": [ + { + "text": "Use conventional commit message format." + } + ] + } + ] + }, + "default": [], + "markdownDescription": "%github.copilot.config.commitMessageGeneration.instructions%", + "examples": [ + [ + { + "file": ".copilot-commit-message-instructions.md" + }, + { + "text": "Use conventional commit message format." + } + ] + ], + "tags": [ + "experimental" + ] + }, + "github.copilot.chat.pullRequestDescriptionGeneration.instructions": { + "type": "array", + "items": { + "oneOf": [ + { + "type": "object", + "markdownDescription": "%github.copilot.config.pullRequestDescriptionGeneration.instruction.file%", + "properties": { + "file": { + "type": "string", + "examples": [ + ".copilot-pull-request-description-instructions.md" + ] + } + }, + "examples": [ + { + "file": ".copilot-pull-request-description-instructions.md" + } + ], + "required": [ + "file" + ] + }, + { + "type": "object", + "markdownDescription": "%github.copilot.config.pullRequestDescriptionGeneration.instruction.text%", + "properties": { + "text": { + "type": "string", + "examples": [ + "Include every commit message in the pull request description." + ] + } + }, + "required": [ + "text" + ], + "examples": [ + { + "text": "Include every commit message in the pull request description." + } + ] + } + ] + }, + "default": [], + "markdownDescription": "%github.copilot.config.pullRequestDescriptionGeneration.instructions%", + "examples": [ + [ + { + "file": ".copilot-pull-request-description-instructions.md" + }, + { + "text": "Use conventional commit message format." + } + ] + ], + "tags": [ + "experimental" + ] + }, + "github.copilot.chat.generateTests.codeLens": { + "type": "boolean", + "default": false, + "description": "%github.copilot.config.generateTests.codeLens%", + "tags": [ + "experimental" + ] + }, + "github.copilot.chat.setupTests.enabled": { + "type": "boolean", + "default": true, + "markdownDescription": "%github.copilot.config.setupTests.enabled%", + "tags": [ + "experimental" + ] + }, + "github.copilot.chat.languageContext.typescript.enabled": { + "type": "boolean", + "default": false, + "scope": "resource", + "tags": [ + "experimental", + "onExP" + ], + "markdownDescription": "%github.copilot.chat.languageContext.typescript.enabled%" + }, + "github.copilot.chat.languageContext.typescript.items": { + "type": "string", + "enum": [ + "minimal", + "double", + "fillHalf", + "fill" + ], + "default": "double", + "scope": "resource", + "tags": [ + "experimental", + "onExP" + ], + "markdownDescription": "%github.copilot.chat.languageContext.typescript.items%" + }, + "github.copilot.chat.languageContext.typescript.includeDocumentation": { + "type": "boolean", + "default": false, + "scope": "resource", + "tags": [ + "experimental", + "onExP" + ], + "markdownDescription": "%github.copilot.chat.languageContext.typescript.includeDocumentation%" + }, + "github.copilot.chat.languageContext.typescript.cacheTimeout": { + "type": "number", + "default": 500, + "scope": "resource", + "tags": [ + "experimental", + "onExP" + ], + "markdownDescription": "%github.copilot.chat.languageContext.typescript.cacheTimeout%" + }, + "github.copilot.chat.languageContext.fix.typescript.enabled": { + "type": "boolean", + "default": false, + "scope": "resource", + "tags": [ + "experimental", + "onExP" + ], + "markdownDescription": "%github.copilot.chat.languageContext.fix.typescript.enabled%" + }, + "github.copilot.chat.languageContext.inline.typescript.enabled": { + "type": "boolean", + "default": false, + "scope": "resource", + "tags": [ + "experimental", + "onExP" + ], + "markdownDescription": "%github.copilot.chat.languageContext.inline.typescript.enabled%" + }, + "github.copilot.chat.newWorkspaceCreation.enabled": { + "type": "boolean", + "default": true, + "tags": [ + "experimental" + ], + "description": "%github.copilot.config.newWorkspaceCreation.enabled%" + }, + "github.copilot.chat.newWorkspace.useContext7": { + "type": "boolean", + "default": false, + "tags": [ + "experimental" + ], + "markdownDescription": "%github.copilot.config.newWorkspace.useContext7%" + }, + "github.copilot.chat.notebook.followCellExecution.enabled": { + "type": "boolean", + "default": false, + "tags": [ + "experimental" + ], + "description": "%github.copilot.config.notebook.followCellExecution%" + }, + "github.copilot.chat.notebook.enhancedNextEditSuggestions.enabled": { + "type": "boolean", + "default": false, + "tags": [ + "experimental", + "onExp" + ], + "description": "%github.copilot.config.notebook.enhancedNextEditSuggestions%" + }, + "github.copilot.chat.summarizeAgentConversationHistory.enabled": { + "type": "boolean", + "default": true, + "tags": [ + "experimental" + ], + "description": "%github.copilot.config.summarizeAgentConversationHistory.enabled%" + }, + "github.copilot.chat.virtualTools.threshold": { + "type": "number", + "minimum": 0, + "maximum": 128, + "default": 128, + "tags": [ + "experimental" + ], + "markdownDescription": "%github.copilot.config.virtualTools.threshold%" + }, + "github.copilot.chat.azureAuthType": { + "type": "string", + "enum": [ + "entraId", + "apiKey" + ], + "enumDescriptions": [ + "%github.copilot.config.azureAuthType.entraId%", + "%github.copilot.config.azureAuthType.apiKey%" + ], + "default": "entraId", + "tags": [ + "experimental" + ], + "markdownDescription": "%github.copilot.config.azureAuthType%" + }, + "github.copilot.chat.azureModels": { + "type": "object", + "default": {}, + "tags": [ + "experimental" + ], + "additionalProperties": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Display name of the Azure model" + }, + "url": { + "type": "string", + "markdownDescription": "URL endpoint for the Azure model.\n\n**Important:** Base URLs default to Chat Completions API. Explicit API paths including `/responses` or `/chat/completions` are respected. Both behaviors are independent of the `#github.copilot.chat.useResponsesApi#` setting." + }, + "toolCalling": { + "type": "boolean", + "description": "Whether the model supports tool calling" + }, + "vision": { + "type": "boolean", + "description": "Whether the model supports vision capabilities" + }, + "maxInputTokens": { + "type": "number", + "description": "Maximum number of input tokens supported by the model" + }, + "maxOutputTokens": { + "type": "number", + "description": "Maximum number of output tokens supported by the model" + }, + "thinking": { + "type": "boolean", + "default": false, + "description": "Whether the model supports thinking capabilities" + }, + "zeroDataRetentionEnabled": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether Zero Data Retention (ZDR) is enabled for this endpoint. When `true`, `previous_response_id` will not be sent in requests via Responses API." + }, + "requestHeaders": { + "type": "object", + "description": "Additional HTTP headers to include with requests to this model. These reserved headers are not allowed and ignored if present: forbidden request headers (https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_request_header), forwarding headers ('forwarded', 'x-forwarded-for', 'x-forwarded-host', 'x-forwarded-proto'), and others ('api-key', 'authorization', 'content-type', 'openai-intent', 'x-github-api-version', 'x-initiator', 'x-interaction-id', 'x-interaction-type', 'x-onbehalf-extension-id', 'x-request-id', 'x-vscode-user-agent-library-version'). Pattern-based forbidden headers ('proxy-*', 'sec-*', 'x-http-method*' with forbidden methods) are also blocked.", + "additionalProperties": { + "type": "string" + } + } + }, + "required": [ + "name", + "url", + "toolCalling", + "vision", + "maxInputTokens", + "maxOutputTokens" + ], + "additionalProperties": false + }, + "markdownDescription": "Configure custom Azure OpenAI models. Each key should be a unique model ID, and the value should be an object with model configuration including name, url, toolCalling, vision, maxInputTokens, and maxOutputTokens properties." + }, + "github.copilot.chat.customOAIModels": { + "type": "object", + "default": {}, + "tags": [ + "experimental" + ], + "additionalProperties": { + "type": "object", + "properties": { + "name": { + "type": "string", + "description": "Display name of the custom OpenAI model" + }, + "url": { + "type": "string", + "markdownDescription": "URL endpoint for the custom OpenAI-compatible model.\n\n**Important:** Base URLs default to Chat Completions API. Explicit API paths including `/responses` or `/chat/completions` are respected. Both behaviors are independent of the `#github.copilot.chat.useResponsesApi#` setting." + }, + "toolCalling": { + "type": "boolean", + "description": "Whether the model supports tool calling" + }, + "vision": { + "type": "boolean", + "description": "Whether the model supports vision capabilities" + }, + "maxInputTokens": { + "type": "number", + "description": "Maximum number of input tokens supported by the model" + }, + "maxOutputTokens": { + "type": "number", + "description": "Maximum number of output tokens supported by the model" + }, + "requiresAPIKey": { + "type": "boolean", + "description": "Whether the model requires an API key for authentication", + "default": true + }, + "editTools": { + "type": "array", + "description": "List of edit tools supported by the model. If this is not configured, the editor will try multiple edit tools and pick the best one.\n\n- 'find-replace': Find and replace text in a document.\n- 'multi-find-replace': Find and replace text in a document.\n- 'apply-patch': A file-oriented diff format used by some OpenAI models\n- 'code-rewrite': A general but slower editing tool that allows the model to rewrite and code snippet and provide only the replacement to the editor.", + "items": { + "type": "string", + "enum": [ + "find-replace", + "multi-find-replace", + "apply-patch", + "code-rewrite" + ] + } + }, + "thinking": { + "type": "boolean", + "default": false, + "description": "Whether the model supports thinking capabilities" + }, + "zeroDataRetentionEnabled": { + "type": "boolean", + "default": false, + "markdownDescription": "Whether Zero Data Retention (ZDR) is enabled for this endpoint. When `true`, `previous_response_id` will not be sent in requests via Responses API." + }, + "requestHeaders": { + "type": "object", + "description": "Additional HTTP headers to include with requests to this model. These reserved headers are not allowed and ignored if present: forbidden request headers (https://developer.mozilla.org/en-US/docs/Glossary/Forbidden_request_header), forwarding headers ('forwarded', 'x-forwarded-for', 'x-forwarded-host', 'x-forwarded-proto'), and others ('api-key', 'authorization', 'content-type', 'openai-intent', 'x-github-api-version', 'x-initiator', 'x-interaction-id', 'x-interaction-type', 'x-onbehalf-extension-id', 'x-request-id', 'x-vscode-user-agent-library-version'). Pattern-based forbidden headers ('proxy-*', 'sec-*', 'x-http-method*' with forbidden methods) are also blocked.", + "additionalProperties": { + "type": "string" + } + } + }, + "required": [ + "name", + "url", + "toolCalling", + "vision", + "maxInputTokens", + "maxOutputTokens", + "requiresAPIKey" + ], + "additionalProperties": false + }, + "markdownDescription": "Configure custom OpenAI-compatible models. Each key should be a unique model ID, and the value should be an object with model configuration including name, url, toolCalling, vision, maxInputTokens, and maxOutputTokens properties." + }, + "github.copilot.chat.alternateGptPrompt.enabled": { + "type": "boolean", + "default": false, + "tags": [ + "experimental" + ], + "description": "%github.copilot.config.alternateGptPrompt.enabled%" + }, + "github.copilot.chat.alternateGeminiModelFPrompt.enabled": { + "type": "boolean", + "default": false, + "tags": [ + "experimental", + "onExp" + ], + "description": "%github.copilot.config.alternateGeminiModelFPrompt.enabled%" + }, + "github.copilot.chat.useResponsesApi": { + "type": "boolean", + "default": true, + "markdownDescription": "%github.copilot.config.useResponsesApi%", + "tags": [ + "experimental", + "onExp" + ] + }, + "github.copilot.chat.responsesApiReasoningEffort": { + "type": "string", + "default": "default", + "markdownDescription": "%github.copilot.config.responsesApiReasoningEffort%", + "tags": [ + "experimental", + "onExp" + ], + "enum": [ + "low", + "medium", + "high", + "default" + ] + }, + "github.copilot.chat.responsesApiReasoningSummary": { + "type": "string", + "default": "detailed", + "markdownDescription": "%github.copilot.config.responsesApiReasoningSummary%", + "tags": [ + "experimental", + "onExp" + ], + "enum": [ + "off", + "detailed" + ] + }, + "github.copilot.chat.anthropic.thinking.budgetTokens": { + "type": "number", + "markdownDescription": "%github.copilot.config.anthropic.thinking.budgetTokens%", + "minimum": 0, + "maximum": 32000, + "default": 4000, + "tags": [ + "experimental", + "onExp" + ] + }, + "github.copilot.chat.anthropic.tools.websearch.enabled": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.anthropic.tools.websearch.enabled%", + "tags": [ + "experimental", + "onExp" + ] + }, + "github.copilot.chat.anthropic.tools.websearch.maxUses": { + "type": "number", + "default": 5, + "markdownDescription": "%github.copilot.config.anthropic.tools.websearch.maxUses%", + "minimum": 1, + "maximum": 20, + "tags": [ + "experimental" + ] + }, + "github.copilot.chat.anthropic.tools.websearch.allowedDomains": { + "type": "array", + "default": [], + "markdownDescription": "%github.copilot.config.anthropic.tools.websearch.allowedDomains%", + "items": { + "type": "string" + }, + "tags": [ + "experimental" + ] + }, + "github.copilot.chat.anthropic.tools.websearch.blockedDomains": { + "type": "array", + "default": [], + "markdownDescription": "%github.copilot.config.anthropic.tools.websearch.blockedDomains%", + "items": { + "type": "string" + }, + "tags": [ + "experimental" + ] + }, + "github.copilot.chat.anthropic.tools.websearch.userLocation": { + "type": [ + "object", + "null" + ], + "default": null, + "markdownDescription": "%github.copilot.config.anthropic.tools.websearch.userLocation%", + "properties": { + "city": { + "type": "string", + "description": "City name (e.g., 'San Francisco')" + }, + "region": { + "type": "string", + "description": "State or region (e.g., 'California')" + }, + "country": { + "type": "string", + "description": "ISO country code (e.g., 'US')" + }, + "timezone": { + "type": "string", + "description": "IANA timezone identifier (e.g., 'America/Los_Angeles')" + } + }, + "tags": [ + "experimental" + ] + }, + "github.copilot.chat.tools.memory.enabled": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.tools.memory.enabled%", + "tags": [ + "experimental", + "onExp" + ] + }, + "github.copilot.chat.completionsFetcher": { + "type": [ + "string", + "null" + ], + "markdownDescription": "%github.copilot.config.completionsFetcher%", + "tags": [ + "experimental", + "onExp" + ], + "enum": [ + "electron-fetch", + "node-fetch" + ] + }, + "github.copilot.chat.nesFetcher": { + "type": [ + "string", + "null" + ], + "markdownDescription": "%github.copilot.config.nesFetcher%", + "tags": [ + "experimental", + "onExp" + ], + "enum": [ + "electron-fetch", + "node-fetch" + ] + }, + "github.copilot.chat.customAgents.showOrganizationAndEnterpriseAgents": { + "type": "boolean", + "default": false, + "description": "%github.copilot.config.customAgents.showOrganizationAndEnterpriseAgents%", + "tags": [ + "experimental" + ] + } + } + }, + { + "id": "advanced", + "properties": { + "github.copilot.chat.debug.overrideChatEngine": { + "type": [ + "string", + "null" + ], + "markdownDescription": "%github.copilot.config.debug.overrideChatEngine%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.edits.gemini3MultiReplaceString": { + "type": "boolean", + "default": false, + "markdownDescription": "Enable the modern `multi_replace_string_in_file` edit tool when generating edits with Gemini 3 models.", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.projectLabels.expanded": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.projectLabels.expanded%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.projectLabels.chat": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.projectLabels.chat%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.projectLabels.inline": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.projectLabels.inline%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.workspace.maxLocalIndexSize": { + "type": "number", + "default": 100000, + "markdownDescription": "%github.copilot.config.workspace.maxLocalIndexSize%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.workspace.enableFullWorkspace": { + "type": "boolean", + "default": true, + "markdownDescription": "%github.copilot.config.workspace.enableFullWorkspace%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.workspace.enableCodeSearch": { + "type": "boolean", + "default": true, + "markdownDescription": "%github.copilot.config.workspace.enableCodeSearch%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.workspace.enableEmbeddingsSearch": { + "type": "boolean", + "default": true, + "markdownDescription": "%github.copilot.config.workspace.enableEmbeddingsSearch%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.workspace.preferredEmbeddingsModel": { + "type": "string", + "default": "", + "markdownDescription": "%github.copilot.config.workspace.preferredEmbeddingsModel%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.workspace.prototypeAdoCodeSearchEndpointOverride": { + "type": "string", + "default": "", + "markdownDescription": "%github.copilot.config.workspace.prototypeAdoCodeSearchEndpointOverride%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.feedback.onChange": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.feedback.onChange%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.review.intent": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.review.intent%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.notebook.summaryExperimentEnabled": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.notebook.summaryExperimentEnabled%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.notebook.variableFilteringEnabled": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.notebook.variableFilteringEnabled%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.notebook.alternativeFormat": { + "type": "string", + "default": "xml", + "enum": [ + "xml", + "markdown" + ], + "markdownDescription": "%github.copilot.config.notebook.alternativeFormat%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.notebook.alternativeNESFormat.enabled": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.notebook.alternativeNESFormat.enabled%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.debugTerminalCommandPatterns": { + "type": "array", + "default": [], + "items": { + "type": "string" + }, + "markdownDescription": "%github.copilot.config.debugTerminalCommandPatterns%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.localWorkspaceRecording.enabled": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.localWorkspaceRecording.enabled%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.editRecording.enabled": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.editRecording.enabled%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.inlineChat.selectionRatioThreshold": { + "type": "number", + "default": 0, + "markdownDescription": "%github.copilot.config.inlineChat.selectionRatioThreshold%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.debug.requestLogger.maxEntries": { + "type": "number", + "default": 100, + "markdownDescription": "%github.copilot.config.debug.requestLogger.maxEntries%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.inlineEdits.diagnosticsContextProvider.enabled": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.inlineEdits.diagnosticsContextProvider.enabled%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.codesearch.agent.enabled": { + "type": "boolean", + "default": true, + "markdownDescription": "%github.copilot.config.codesearch.agent.enabled%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.agent.temperature": { + "type": [ + "number", + "null" + ], + "markdownDescription": "%github.copilot.config.agent.temperature%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.instantApply.shortContextModelName": { + "type": "string", + "default": "gpt-4o-instant-apply-full-ft-v66-short", + "markdownDescription": "%github.copilot.config.instantApply.shortContextModelName%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.instantApply.shortContextLimit": { + "type": "number", + "default": 8000, + "markdownDescription": "%github.copilot.config.instantApply.shortContextLimit%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.enableUserPreferences": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.enableUserPreferences%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.summarizeAgentConversationHistoryThreshold": { + "type": [ + "number", + "null" + ], + "markdownDescription": "%github.copilot.config.summarizeAgentConversationHistoryThreshold%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.agentHistorySummarizationMode": { + "type": [ + "string", + "null" + ], + "markdownDescription": "%github.copilot.config.agentHistorySummarizationMode%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.agentHistorySummarizationWithPromptCache": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.agentHistorySummarizationWithPromptCache%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.agentHistorySummarizationForceGpt41": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.agentHistorySummarizationForceGpt41%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.useResponsesApiTruncation": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.useResponsesApiTruncation%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.omitBaseAgentInstructions": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.omitBaseAgentInstructions%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.promptFileContextProvider.enabled": { + "type": "boolean", + "default": true, + "markdownDescription": "%github.copilot.config.promptFileContextProvider.enabled%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.tools.defaultToolsGrouped": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.tools.defaultToolsGrouped%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.claudeCode.enabled": { + "type": [ + "boolean", + "string" + ], + "default": false, + "markdownDescription": "%github.copilot.config.claudeCode.enabled%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.claudeCode.debug": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.claudeCode.debug%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.gpt5AlternativePatch": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.gpt5AlternativePatch%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.inlineEdits.triggerOnEditorChangeAfterSeconds": { + "type": [ + "number", + "null" + ], + "markdownDescription": "%github.copilot.config.inlineEdits.triggerOnEditorChangeAfterSeconds%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.inlineEdits.nextCursorPrediction.displayLine": { + "type": "boolean", + "default": true, + "markdownDescription": "%github.copilot.config.inlineEdits.nextCursorPrediction.displayLine%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.inlineEdits.nextCursorPrediction.currentFileMaxTokens": { + "type": "number", + "default": 2000, + "markdownDescription": "%github.copilot.config.inlineEdits.nextCursorPrediction.currentFileMaxTokens%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.inlineEdits.renameSymbolSuggestions": { + "type": "boolean", + "default": true, + "markdownDescription": "%github.copilot.config.inlineEdits.renameSymbolSuggestions%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.nextEditSuggestions.preferredModel": { + "type": "string", + "default": "none", + "markdownDescription": "%github.copilot.config.nextEditSuggestions.preferredModel%", + "tags": [ + "advanced", + "experimental", + "onExp" + ] + }, + "github.copilot.chat.suggestRelatedFilesFromGitHistory.useEmbeddings": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.suggestRelatedFilesFromGitHistory.useEmbeddings%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.cli.customAgents.enabled": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.cli.customAgents.enabled%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.cli.mcp.enabled": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.cli.mcp.enabled%", + "tags": [ + "advanced", + "experimental" + ] + }, + "github.copilot.chat.cli.autoCommit.enabled": { + "type": "boolean", + "default": false, + "markdownDescription": "%github.copilot.config.cli.autoCommit.enabled%", + "tags": [ + "advanced", + "experimental" + ] + } + } + } + ], + "submenus": [ + { + "id": "copilot/reviewComment/additionalActions/applyAndNext", + "label": "%github.copilot.submenu.reviewComment.applyAndNext.label%" + }, + { + "id": "copilot/reviewComment/additionalActions/discardAndNext", + "label": "%github.copilot.submenu.reviewComment.discardAndNext.label%" + }, + { + "id": "copilot/reviewComment/additionalActions/discard", + "label": "%github.copilot.submenu.reviewComment.discard.label%" + }, + { + "id": "github.copilot.chat.debug.filter", + "label": "Filter", + "icon": "$(filter)" + }, + { + "id": "github.copilot.chat.debug.exportAllPromptLogsAsJson", + "label": "Export All Logs as JSON", + "icon": "$(file-export)" + } + ], + "menus": { + "editor/title": [ + { + "command": "github.copilot.debug.generateInlineEditTests", + "when": "resourceScheme == 'ccreq'" + }, + { + "command": "github.copilot.chat.notebook.enableFollowCellExecution", + "when": "config.github.copilot.chat.notebook.followCellExecution.enabled && !github.copilot.notebookFollowInSessionEnabled && github.copilot.notebookAgentModeUsage && !config.notebook.globalToolbar", + "group": "navigation@10" + }, + { + "command": "github.copilot.chat.notebook.disableFollowCellExecution", + "when": "config.github.copilot.chat.notebook.followCellExecution.enabled && github.copilot.notebookFollowInSessionEnabled && github.copilot.notebookAgentModeUsage && !config.notebook.globalToolbar", + "group": "navigation@10" + }, + { + "command": "github.copilot.chat.replay", + "group": "navigation@9", + "when": "resourceFilename === 'benchRun.chatReplay.json'" + }, + { + "command": "github.copilot.chat.showAsChatSession", + "group": "navigation@9", + "when": "resourceFilename === 'benchRun.chatReplay.json' || resourceFilename === 'chat-export-logs.json'" + }, + { + "command": "github.copilot.chat.applyCopilotCLIAgentSessionChanges", + "group": "navigation@1", + "when": "resourceScheme == copilotcli-worktree-changes" + } + ], + "explorer/context": [ + { + "command": "github.copilot.chat.showAsChatSession", + "when": "resourceFilename === 'benchRun.chatReplay.json' || resourceFilename === 'chat-export-logs.json'", + "group": "2_copilot@1" + } + ], + "editor/context": [ + { + "command": "github.copilot.chat.explain", + "when": "!github.copilot.interactiveSession.disabled", + "group": "1_chat@4" + } + ], + "editor/context/chat": [ + { + "command": "github.copilot.chat.fix", + "when": "!github.copilot.interactiveSession.disabled && !editorReadonly", + "group": "copilotAction@1" + }, + { + "command": "github.copilot.chat.review", + "when": "config.github.copilot.chat.reviewSelection.enabled && !github.copilot.interactiveSession.disabled && resourceScheme != 'vscode-chat-code-block'", + "group": "copilotAction@2" + }, + { + "command": "github.copilot.chat.generateDocs", + "when": "!github.copilot.interactiveSession.disabled && !editorReadonly", + "group": "copilotGenerate@1" + }, + { + "command": "github.copilot.chat.generateTests", + "when": "!github.copilot.interactiveSession.disabled && !editorReadonly", + "group": "copilotGenerate@2" + } + ], + "chat/input/editing/sessionToolbar": [ + { + "command": "github.copilot.chat.applyCopilotCLIAgentSessionChanges.apply", + "when": "chatSessionType == copilotcli", + "group": "navigation@0" + } + ], + "testing/item/result": [ + { + "command": "github.copilot.tests.fixTestFailure.fromInline", + "when": "testResultState == failed && !testResultOutdated", + "group": "inline@2" + } + ], + "testing/item/context": [ + { + "command": "github.copilot.tests.fixTestFailure.fromInline", + "when": "testResultState == failed && !testResultOutdated", + "group": "inline@2" + } + ], + "commandPalette": [ + { + "command": "github.copilot.chat.triggerPermissiveSignIn", + "when": "false" + }, + { + "command": "github.copilot.interactiveSession.feedback", + "when": "github.copilot-chat.activated && !github.copilot.interactiveSession.disabled" + }, + { + "command": "github.copilot.debug.workbenchState", + "when": "true" + }, + { + "command": "github.copilot.chat.rerunWithCopilotDebug", + "when": "false" + }, + { + "command": "github.copilot.chat.startCopilotDebugCommand", + "when": "false" + }, + { + "command": "github.copilot.git.generateCommitMessage", + "when": "false" + }, + { + "command": "github.copilot.git.resolveMergeConflicts", + "when": "false" + }, + { + "command": "github.copilot.chat.explain", + "when": "false" + }, + { + "command": "github.copilot.chat.review", + "when": "!github.copilot.interactiveSession.disabled" + }, + { + "command": "github.copilot.chat.review.apply", + "when": "false" + }, + { + "command": "github.copilot.chat.review.applyAndNext", + "when": "false" + }, + { + "command": "github.copilot.chat.review.discard", + "when": "false" + }, + { + "command": "github.copilot.chat.review.discardAndNext", + "when": "false" + }, + { + "command": "github.copilot.chat.review.discardAll", + "when": "false" + }, + { + "command": "github.copilot.chat.review.stagedChanges", + "when": "false" + }, + { + "command": "github.copilot.chat.review.unstagedChanges", + "when": "false" + }, + { + "command": "github.copilot.chat.review.changes", + "when": "false" + }, + { + "command": "github.copilot.chat.review.stagedFileChange", + "when": "false" + }, + { + "command": "github.copilot.chat.review.unstagedFileChange", + "when": "false" + }, + { + "command": "github.copilot.chat.review.previous", + "when": "false" + }, + { + "command": "github.copilot.chat.review.next", + "when": "false" + }, + { + "command": "github.copilot.chat.review.continueInInlineChat", + "when": "false" + }, + { + "command": "github.copilot.chat.review.continueInChat", + "when": "false" + }, + { + "command": "github.copilot.chat.review.markHelpful", + "when": "false" + }, + { + "command": "github.copilot.chat.review.markUnhelpful", + "when": "false" + }, + { + "command": "github.copilot.devcontainer.generateDevContainerConfig", + "when": "false" + }, + { + "command": "github.copilot.tests.fixTestFailure", + "when": "false" + }, + { + "command": "github.copilot.tests.fixTestFailure.fromInline", + "when": "false" + }, + { + "command": "github.copilot.search.markHelpful", + "when": "false" + }, + { + "command": "github.copilot.search.markUnhelpful", + "when": "false" + }, + { + "command": "github.copilot.search.feedback", + "when": "false" + }, + { + "command": "github.copilot.chat.debug.showElements", + "when": "false" + }, + { + "command": "github.copilot.chat.debug.hideElements", + "when": "false" + }, + { + "command": "github.copilot.chat.debug.showTools", + "when": "false" + }, + { + "command": "github.copilot.chat.debug.hideTools", + "when": "false" + }, + { + "command": "github.copilot.chat.debug.showNesRequests", + "when": "false" + }, + { + "command": "github.copilot.chat.debug.hideNesRequests", + "when": "false" + }, + { + "command": "github.copilot.chat.debug.showGhostRequests", + "when": "false" + }, + { + "command": "github.copilot.chat.debug.hideGhostRequests", + "when": "false" + }, + { + "command": "github.copilot.chat.debug.exportLogItem", + "when": "false" + }, + { + "command": "github.copilot.chat.debug.exportPromptArchive", + "when": "false" + }, + { + "command": "github.copilot.chat.debug.exportPromptLogsAsJson", + "when": "false" + }, + { + "command": "github.copilot.chat.debug.exportAllPromptLogsAsJson", + "when": "false" + }, + { + "command": "github.copilot.chat.mcp.setup.check", + "when": "false" + }, + { + "command": "github.copilot.chat.mcp.setup.validatePackage", + "when": "false" + }, + { + "command": "github.copilot.chat.mcp.setup.flow", + "when": "false" + }, + { + "command": "github.copilot.chat.debug.showRawRequestBody", + "when": "false" + }, + { + "command": "github.copilot.debug.showOutputChannel", + "when": "false" + }, + { + "command": "github.copilot.cli.sessions.delete", + "when": "false" + }, + { + "command": "github.copilot.cli.sessions.resumeInTerminal", + "when": "false" + }, + { + "command": "github.copilot.cloud.sessions.openInBrowser", + "when": "false" + }, + { + "command": "github.copilot.cloud.sessions.proxy.closeChatSessionPullRequest", + "when": "false" + }, + { + "command": "github.copilot.cloud.sessions.installPRExtension", + "when": "false" + }, + { + "command": "github.copilot.chat.applyCopilotCLIAgentSessionChanges", + "when": "false" + }, + { + "command": "github.copilot.chat.applyCopilotCLIAgentSessionChanges.apply", + "when": "false" + }, + { + "command": "github.copilot.chat.showAsChatSession", + "when": "false" + } + ], + "view/title": [ + { + "submenu": "github.copilot.chat.debug.filter", + "when": "view == copilot-chat", + "group": "navigation" + }, + { + "command": "github.copilot.chat.debug.exportAllPromptLogsAsJson", + "when": "view == copilot-chat", + "group": "export@1" + }, + { + "command": "github.copilot.debug.showOutputChannel", + "when": "view == copilot-chat", + "group": "3_show@1" + }, + { + "command": "github.copilot.debug.showChatLogView", + "when": "view == workbench.panel.chat.view.copilot", + "group": "3_show" + } + ], + "view/item/context": [ + { + "command": "github.copilot.chat.debug.showRawRequestBody", + "when": "view == copilot-chat && viewItem == request", + "group": "export@0" + }, + { + "command": "github.copilot.chat.debug.exportLogItem", + "when": "view == copilot-chat && (viewItem == toolcall || viewItem == request)", + "group": "export@1" + }, + { + "command": "github.copilot.chat.debug.exportPromptArchive", + "when": "view == copilot-chat && viewItem == chatprompt", + "group": "export@2" + }, + { + "command": "github.copilot.chat.debug.exportPromptLogsAsJson", + "when": "view == copilot-chat && viewItem == chatprompt", + "group": "export@3" + } + ], + "searchPanel/aiResults/commands": [ + { + "command": "github.copilot.search.markHelpful", + "group": "inline@0", + "when": "aiResultsTitle && aiResultsRequested" + }, + { + "command": "github.copilot.search.markUnhelpful", + "group": "inline@1", + "when": "aiResultsTitle && aiResultsRequested" + }, + { + "command": "github.copilot.search.feedback", + "group": "inline@2", + "when": "aiResultsTitle && aiResultsRequested && github.copilot.debugReportFeedback" + } + ], + "comments/comment/title": [ + { + "command": "github.copilot.chat.review.markHelpful", + "group": "inline@0", + "when": "commentController == github-copilot-review" + }, + { + "command": "github.copilot.chat.review.markUnhelpful", + "group": "inline@1", + "when": "commentController == github-copilot-review" + } + ], + "commentsView/commentThread/context": [ + { + "command": "github.copilot.chat.review.apply", + "group": "context@1", + "when": "commentController == github-copilot-review" + }, + { + "command": "github.copilot.chat.review.discard", + "group": "context@2", + "when": "commentController == github-copilot-review" + }, + { + "command": "github.copilot.chat.review.discardAll", + "group": "context@3", + "when": "commentController == github-copilot-review" + } + ], + "comments/commentThread/additionalActions": [ + { + "submenu": "copilot/reviewComment/additionalActions/applyAndNext", + "group": "inline@1", + "when": "commentController == github-copilot-review && github.copilot.chat.review.numberOfComments > 1" + }, + { + "command": "github.copilot.chat.review.apply", + "group": "inline@1", + "when": "commentController == github-copilot-review && github.copilot.chat.review.numberOfComments == 1" + }, + { + "submenu": "copilot/reviewComment/additionalActions/discardAndNext", + "group": "inline@2", + "when": "commentController == github-copilot-review && github.copilot.chat.review.numberOfComments > 1" + }, + { + "submenu": "copilot/reviewComment/additionalActions/discard", + "group": "inline@2", + "when": "commentController == github-copilot-review && github.copilot.chat.review.numberOfComments == 1" + } + ], + "copilot/reviewComment/additionalActions/applyAndNext": [ + { + "command": "github.copilot.chat.review.applyAndNext", + "group": "inline@1", + "when": "commentController == github-copilot-review" + }, + { + "command": "github.copilot.chat.review.apply", + "group": "inline@2", + "when": "commentController == github-copilot-review" + } + ], + "copilot/reviewComment/additionalActions/discardAndNext": [ + { + "command": "github.copilot.chat.review.discardAndNext", + "group": "inline@1", + "when": "commentController == github-copilot-review" + }, + { + "command": "github.copilot.chat.review.discard", + "group": "inline@2", + "when": "commentController == github-copilot-review" + }, + { + "command": "github.copilot.chat.review.continueInInlineChat", + "group": "inline@3", + "when": "commentController == github-copilot-review" + } + ], + "copilot/reviewComment/additionalActions/discard": [ + { + "command": "github.copilot.chat.review.discard", + "group": "inline@2", + "when": "commentController == github-copilot-review" + }, + { + "command": "github.copilot.chat.review.continueInInlineChat", + "group": "inline@3", + "when": "commentController == github-copilot-review" + } + ], + "comments/commentThread/title": [ + { + "command": "github.copilot.chat.review.previous", + "group": "inline@1", + "when": "commentController == github-copilot-review" + }, + { + "command": "github.copilot.chat.review.next", + "group": "inline@2", + "when": "commentController == github-copilot-review" + }, + { + "command": "github.copilot.chat.review.continueInChat", + "group": "inline@3", + "when": "commentController == github-copilot-review" + }, + { + "command": "github.copilot.chat.review.discardAll", + "group": "inline@4", + "when": "commentController == github-copilot-review" + } + ], + "scm/title": [ + { + "command": "github.copilot.chat.review.changes", + "group": "navigation", + "when": "config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmProviderRootUri in github.copilot.chat.reviewDiff.enabledRootUris" + } + ], + "scm/resourceGroup/context": [ + { + "command": "github.copilot.chat.review.stagedChanges", + "when": "config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmResourceGroup == index", + "group": "inline@-3" + }, + { + "command": "github.copilot.chat.review.unstagedChanges", + "when": "config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmResourceGroup == workingTree", + "group": "inline@-3" + } + ], + "scm/resourceState/context": [ + { + "command": "github.copilot.git.resolveMergeConflicts", + "when": "scmProvider == git && scmResourceGroup == merge && git.activeResourceHasMergeConflicts", + "group": "z_chat@1" + }, + { + "command": "github.copilot.chat.review.stagedFileChange", + "group": "3_copilot", + "when": "config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmResourceGroup == index" + }, + { + "command": "github.copilot.chat.review.unstagedFileChange", + "group": "3_copilot", + "when": "config.github.copilot.chat.reviewAgent.enabled && github.copilot.chat.reviewDiff.enabled && scmProvider == git && scmResourceGroup == workingTree" + } + ], + "scm/inputBox": [ + { + "command": "github.copilot.git.generateCommitMessage", + "when": "scmProvider == git" + } + ], + "testing/message/context": [ + { + "command": "github.copilot.tests.fixTestFailure", + "when": "testing.testItemHasUri", + "group": "inline@1" + } + ], + "issue/reporter": [ + { + "command": "github.copilot.report" + } + ], + "github.copilot.chat.debug.filter": [ + { + "command": "github.copilot.chat.debug.showElements", + "when": "github.copilot.chat.debug.elementsHidden", + "group": "commands@0" + }, + { + "command": "github.copilot.chat.debug.hideElements", + "when": "!github.copilot.chat.debug.elementsHidden", + "group": "commands@0" + }, + { + "command": "github.copilot.chat.debug.showTools", + "when": "github.copilot.chat.debug.toolsHidden", + "group": "commands@1" + }, + { + "command": "github.copilot.chat.debug.hideTools", + "when": "!github.copilot.chat.debug.toolsHidden", + "group": "commands@1" + }, + { + "command": "github.copilot.chat.debug.showNesRequests", + "when": "github.copilot.chat.debug.nesRequestsHidden", + "group": "commands@2" + }, + { + "command": "github.copilot.chat.debug.hideNesRequests", + "when": "!github.copilot.chat.debug.nesRequestsHidden", + "group": "commands@2" + }, + { + "command": "github.copilot.chat.debug.showGhostRequests", + "when": "github.copilot.chat.debug.ghostRequestsHidden", + "group": "commands@3" + }, + { + "command": "github.copilot.chat.debug.hideGhostRequests", + "when": "!github.copilot.chat.debug.ghostRequestsHidden", + "group": "commands@3" + } + ], + "notebook/toolbar": [ + { + "command": "github.copilot.chat.notebook.enableFollowCellExecution", + "when": "config.github.copilot.chat.notebook.followCellExecution.enabled && !github.copilot.notebookFollowInSessionEnabled && github.copilot.notebookAgentModeUsage && config.notebook.globalToolbar", + "group": "navigation/execute@15" + }, + { + "command": "github.copilot.chat.notebook.disableFollowCellExecution", + "when": "config.github.copilot.chat.notebook.followCellExecution.enabled && github.copilot.notebookFollowInSessionEnabled && github.copilot.notebookAgentModeUsage && config.notebook.globalToolbar", + "group": "navigation/execute@15" + } + ], + "editor/content": [ + { + "command": "github.copilot.git.resolveMergeConflicts", + "group": "z_chat@1", + "when": "config.git.enabled && !git.missing && !isInDiffEditor && !isMergeEditor && resource in git.mergeChanges && git.activeResourceHasMergeConflicts" + } + ], + "multiDiffEditor/content": [ + { + "command": "github.copilot.chat.applyCopilotCLIAgentSessionChanges", + "when": "resourceScheme == copilotcli-worktree-changes" + } + ], + "chat/chatSessions": [ + { + "command": "github.copilot.chat.applyCopilotCLIAgentSessionChanges", + "when": "chatSessionType == copilotcli", + "group": "inline@0" + }, + { + "command": "github.copilot.cli.sessions.resumeInTerminal", + "when": "chatSessionType == copilotcli", + "group": "inline@1" + }, + { + "command": "github.copilot.cli.sessions.delete", + "when": "chatSessionType == copilotcli", + "group": "1_edit@10" + }, + { + "command": "github.copilot.cloud.sessions.openInBrowser", + "when": "chatSessionType == copilot-cloud-agent", + "group": "navigation@10" + }, + { + "command": "github.copilot.cloud.sessions.proxy.closeChatSessionPullRequest", + "when": "chatSessionType == copilot-cloud-agent", + "group": "1_edit@10" + } + ], + "chat/multiDiff/context": [ + { + "command": "github.copilot.cloud.sessions.installPRExtension", + "when": "chatSessionType == copilot-cloud-agent && !github.copilot.prExtensionInstalled", + "group": "inline@1" + } + ] + }, + "icons": { + "copilot-logo": { + "description": "%github.copilot.icon%", + "default": { + "fontPath": "assets/copilot.woff", + "fontCharacter": "\\0041" + } + }, + "copilot-warning": { + "description": "%github.copilot.icon%", + "default": { + "fontPath": "assets/copilot.woff", + "fontCharacter": "\\0042" + } + }, + "copilot-notconnected": { + "description": "%github.copilot.icon%", + "default": { + "fontPath": "assets/copilot.woff", + "fontCharacter": "\\0043" + } + } + }, + "iconFonts": [ + { + "id": "copilot-font", + "src": [ + { + "path": "assets/copilot.woff", + "format": "woff" + } + ] + } + ], + "terminalQuickFixes": [ + { + "id": "copilot-chat.fixWithCopilot", + "commandLineMatcher": ".+", + "commandExitResult": "error", + "outputMatcher": { + "anchor": "bottom", + "length": 1, + "lineMatcher": ".+", + "offset": 0 + }, + "kind": "explain" + }, + { + "id": "copilot-chat.generateCommitMessage", + "commandLineMatcher": "git add .+", + "commandExitResult": "success", + "kind": "explain", + "outputMatcher": { + "anchor": "bottom", + "length": 1, + "lineMatcher": ".+", + "offset": 0 + } + }, + { + "id": "copilot-chat.terminalToDebugging", + "commandLineMatcher": ".+", + "kind": "explain", + "commandExitResult": "error", + "outputMatcher": { + "anchor": "bottom", + "length": 1, + "lineMatcher": "", + "offset": 0 + } + }, + { + "id": "copilot-chat.terminalToDebuggingSuccess", + "commandLineMatcher": ".+", + "kind": "explain", + "commandExitResult": "success", + "outputMatcher": { + "anchor": "bottom", + "length": 1, + "lineMatcher": "", + "offset": 0 + } + } + ], + "languages": [ + { + "id": "ignore", + "filenamePatterns": [ + ".copilotignore" + ], + "aliases": [] + }, + { + "id": "markdown", + "extensions": [ + ".copilotmd" + ] + } + ], + "views": { + "copilot-chat": [ + { + "id": "copilot-chat", + "name": "Chat Debug", + "icon": "assets/debug-icon.svg", + "when": "github.copilot.chat.showLogView" + } + ], + "context-inspector": [ + { + "id": "context-inspector", + "name": "Language Context Inspector", + "icon": "$(inspect)", + "when": "github.copilot.chat.showContextInspectorView" + } + ] + }, + "viewsContainers": { + "activitybar": [ + { + "id": "copilot-chat", + "title": "Chat Debug", + "icon": "assets/debug-icon.svg" + }, + { + "id": "context-inspector", + "title": "Language Context Inspector", + "icon": "$(inspect)" + } + ] + }, + "configurationDefaults": { + "workbench.editorAssociations": { + "*.copilotmd": "vscode.markdown.preview.editor" + } + }, + "keybindings": [ + { + "command": "github.copilot.chat.rerunWithCopilotDebug", + "key": "ctrl+alt+.", + "mac": "cmd+alt+.", + "when": "github.copilot-chat.activated && terminalShellIntegrationEnabled && terminalFocus && !terminalAltBufferActive" + } + ], + "walkthroughs": [ + { + "id": "copilotWelcome", + "title": "%github.copilot.walkthrough.title%", + "description": "%github.copilot.walkthrough.description%", + "when": "!isWeb", + "steps": [ + { + "id": "copilot.setup.signIn", + "title": "%github.copilot.walkthrough.setup.signIn.title%", + "description": "%github.copilot.walkthrough.setup.signIn.description%", + "when": "chatEntitlementSignedOut && !view.workbench.panel.chat.view.copilot.visible && !github.copilot-chat.activated && !github.copilot.offline && !github.copilot.interactiveSession.individual.disabled && !github.copilot.interactiveSession.individual.expired && !github.copilot.interactiveSession.enterprise.disabled && !github.copilot.interactiveSession.contactSupport", + "media": { + "video": { + "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4", + "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4", + "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4", + "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4" + }, + "altText": "%github.copilot.walkthrough.panelChat.media.altText%" + } + }, + { + "id": "copilot.setup.signInNoAction", + "title": "%github.copilot.walkthrough.setup.signIn.title%", + "description": "%github.copilot.walkthrough.setup.noAction.description%", + "when": "chatEntitlementSignedOut && view.workbench.panel.chat.view.copilot.visible && !github.copilot-chat.activated && !github.copilot.offline && !github.copilot.interactiveSession.individual.disabled && !github.copilot.interactiveSession.individual.expired && !github.copilot.interactiveSession.enterprise.disabled && !github.copilot.interactiveSession.contactSupport", + "media": { + "video": { + "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4", + "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4", + "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4", + "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4" + }, + "altText": "%github.copilot.walkthrough.panelChat.media.altText%" + } + }, + { + "id": "copilot.setup.signUp", + "title": "%github.copilot.walkthrough.setup.signUp.title%", + "description": "%github.copilot.walkthrough.setup.signUp.description%", + "when": "chatPlanCanSignUp && !view.workbench.panel.chat.view.copilot.visible && !github.copilot-chat.activated && !github.copilot.offline && (github.copilot.interactiveSession.individual.disabled || github.copilot.interactiveSession.individual.expired) && !github.copilot.interactiveSession.enterprise.disabled && !github.copilot.interactiveSession.contactSupport", + "media": { + "video": { + "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4", + "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4", + "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4", + "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4" + }, + "altText": "%github.copilot.walkthrough.panelChat.media.altText%" + } + }, + { + "id": "copilot.setup.signUpNoAction", + "title": "%github.copilot.walkthrough.setup.signUp.title%", + "description": "%github.copilot.walkthrough.setup.noAction.description%", + "when": "chatPlanCanSignUp && view.workbench.panel.chat.view.copilot.visible && !github.copilot-chat.activated && !github.copilot.offline && (github.copilot.interactiveSession.individual.disabled || github.copilot.interactiveSession.individual.expired) && !github.copilot.interactiveSession.enterprise.disabled && !github.copilot.interactiveSession.contactSupport", + "media": { + "video": { + "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4", + "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4", + "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4", + "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4" + }, + "altText": "%github.copilot.walkthrough.panelChat.media.altText%" + } + }, + { + "id": "copilot.panelChat", + "title": "%github.copilot.walkthrough.panelChat.title%", + "description": "%github.copilot.walkthrough.panelChat.description%", + "when": "!chatEntitlementSignedOut || chatIsEnabled ", + "media": { + "video": { + "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace.mp4", + "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-light.mp4", + "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hc.mp4", + "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/workspace-hclight.mp4" + }, + "altText": "%github.copilot.walkthrough.panelChat.media.altText%" + } + }, + { + "id": "copilot.edits", + "title": "%github.copilot.walkthrough.edits.title%", + "description": "%github.copilot.walkthrough.edits.description%", + "when": "!chatEntitlementSignedOut || chatIsEnabled ", + "media": { + "video": { + "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/edits.mp4", + "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/edits-light.mp4", + "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/edits-hc.mp4", + "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/edits-hclight.mp4" + }, + "altText": "%github.copilot.walkthrough.edits.media.altText%" + } + }, + { + "id": "copilot.firstSuggest", + "title": "%github.copilot.walkthrough.firstSuggest.title%", + "description": "%github.copilot.walkthrough.firstSuggest.description%", + "when": "!chatEntitlementSignedOut || chatIsEnabled ", + "media": { + "video": { + "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/ghost-text.mp4", + "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/ghost-text-light.mp4", + "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/ghost-text-hc.mp4", + "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/ghost-text-hclight.mp4" + }, + "altText": "%github.copilot.walkthrough.firstSuggest.media.altText%" + } + }, + { + "id": "copilot.inlineChatNotMac", + "title": "%github.copilot.walkthrough.inlineChatNotMac.title%", + "description": "%github.copilot.walkthrough.inlineChatNotMac.description%", + "when": "!isMac && (!chatEntitlementSignedOut || chatIsEnabled )", + "media": { + "video": { + "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline.mp4", + "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-light.mp4", + "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-hc.mp4", + "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-hclight.mp4" + }, + "altText": "%github.copilot.walkthrough.inlineChatNotMac.media.altText%" + } + }, + { + "id": "copilot.inlineChatMac", + "title": "%github.copilot.walkthrough.inlineChatMac.title%", + "description": "%github.copilot.walkthrough.inlineChatMac.description%", + "when": "isMac && (!chatEntitlementSignedOut || chatIsEnabled )", + "media": { + "video": { + "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline.mp4", + "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-light.mp4", + "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-hc.mp4", + "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/inline-hclight.mp4" + }, + "altText": "%github.copilot.walkthrough.inlineChatMac.media.altText%" + } + }, + { + "id": "copilot.sparkle", + "title": "%github.copilot.walkthrough.sparkle.title%", + "description": "%github.copilot.walkthrough.sparkle.description%", + "when": "!chatEntitlementSignedOut || chatIsEnabled", + "media": { + "video": { + "dark": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/git-commit.mp4", + "light": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/git-commit-light.mp4", + "hc": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/git-commit-hc.mp4", + "hcLight": "https://vscodewalkthroughs.z1.web.core.windows.net/v0.26/git-commit-hclight.mp4" + }, + "altText": "%github.copilot.walkthrough.sparkle.media.altText%" + } + } + ] + } + ], + "jsonValidation": [ + { + "fileMatch": "settings.json", + "url": "ccsettings://root/schema.json" + } + ], + "typescriptServerPlugins": [ + { + "name": "@vscode/copilot-typescript-server-plugin", + "enableForWorkspaceTypeScriptVersions": true + } + ], + "chatSessions": [ + { + "type": "claude-code", + "name": "claude", + "displayName": "Claude Code CLI Agent", + "icon": "$(sparkle)", + "welcomeTitle": "Claude Code Agent", + "welcomeMessage": "Run local background tasks", + "inputPlaceholder": "Run local tasks with Claude Code, type `#` for adding context", + "order": 3, + "description": "The Claude Code Agent works on your local machine", + "when": "config.github.copilot.chat.claudeCode.enabled", + "canDelegate": true, + "capabilities": { + "supportsFileAttachments": true + }, + "commands": [ + { + "name": "init", + "description": "Initialize a new CLAUDE.md file with codebase documentation" + }, + { + "name": "compact", + "description": "Clear conversation history but keep a summary in context. Optional: /compact [instructions for summarization]" + }, + { + "name": "pr-comments", + "description": "Get comments from a GitHub pull request" + }, + { + "name": "review", + "description": "Review a pull request" + }, + { + "name": "security-review", + "description": "Complete a security review of the pending changes on the current branch" + } + ] + }, + { + "type": "copilotcli", + "name": "cli", + "displayName": "Background Agent", + "icon": "$(collection)", + "welcomeTitle": "Background Agent", + "welcomeMessage": "Run tasks in the background", + "inputPlaceholder": "Run tasks in the background, type `#` for adding context", + "order": 2, + "canDelegate": true, + "description": "Delegate tasks to a background agent.", + "when": "config.github.copilot.chat.backgroundAgent.enabled", + "capabilities": { + "supportsFileAttachments": true, + "supportsProblemAttachments": true, + "supportsToolAttachments": false, + "supportsSymbolAttachments": true, + "supportsSearchResultAttachments": true, + "supportsSourceControlAttachments": true + }, + "commands": [ + { + "name": "delegate", + "description": "Delegate chat session to cloud agent and create associated PR", + "when": "config.github.copilot.chat.cloudAgent.enabled" + } + ] + }, + { + "type": "copilot-cloud-agent", + "alternativeIds": [ + "copilot-swe-agent" + ], + "name": "cloud", + "displayName": "Cloud Agent", + "icon": "$(cloud)", + "welcomeTitle": "Cloud Agent", + "welcomeMessage": "Delegate tasks to the cloud", + "inputPlaceholder": "Delegate tasks to the cloud, type `#` for adding context", + "order": 1, + "canDelegate": true, + "description": "Delegate tasks to the GitHub Copilot Cloud Agent. The agent works asynchronously in the cloud to implement changes, iterates via chat, and can create or update pull requests as needed.", + "when": "config.github.copilot.chat.cloudAgent.enabled", + "capabilities": { + "supportsFileAttachments": true + } + } + ], + "debuggers": [ + { + "type": "vscode-chat-replay", + "label": "vscode-chat-replay", + "languages": [ + "json" + ], + "when": "resourceFilename === 'benchRun.chatReplay.json'", + "configurationAttributes": { + "launch": { + "properties": { + "program": { + "type": "string", + "description": "Chat replay file to debug (parse for headers)", + "default": "${file}" + }, + "stopOnEntry": { + "type": "boolean", + "default": true, + "description": "Break immediately to step through manually." + } + }, + "required": [ + "program" + ] + } + } + } + ], + "chatAgents": [ + { + "name": "Plan", + "path": "./assets/agents/Plan.agent.md", + "description": "Researches a task to create multi-step plans" + } + ], + "chatPromptFiles": [ + { + "name": "savePrompt", + "path": "./assets/prompts/savePrompt.prompt.md", + "description": "Generalize the current discussion into a reusable prompt and save it as a file" + } + ] + }, + "extensionPack": [ + "GitHub.copilot" + ], + "prettier": { + "useTabs": true, + "tabWidth": 4, + "singleQuote": true + }, + "scripts": { + "postinstall": "tsx ./script/postinstall.ts", + "prepare": "husky", + "vscode-dts:dev": "node node_modules/@vscode/dts/index.js dev && mv vscode.proposed.*.ts src/extension", + "vscode-dts:main": "node node_modules/@vscode/dts/index.js main && mv vscode.d.ts src/extension", + "build": "node .esbuild.ts", + "compile": "node .esbuild.ts --dev", + "watch": "npm-run-all -p watch:*", + "watch:esbuild": "node .esbuild.ts --watch --dev", + "watch:tsc-extension": "tsc --noEmit --watch --project tsconfig.json", + "watch:tsc-extension-web": "tsc --noEmit --watch --project tsconfig.worker.json", + "watch:tsc-simulation-workbench": "tsc --noEmit --watch --project test/simulation/workbench/tsconfig.json", + "typecheck": "tsc --noEmit --project tsconfig.json && tsc --noEmit --project test/simulation/workbench/tsconfig.json && tsc --noEmit --project tsconfig.worker.json && tsc --noEmit --project src/extension/completions-core/vscode-node/extension/src/copilotPanel/webView/tsconfig.json", + "lint": "eslint . --max-warnings=0", + "lint-staged": "eslint --max-warnings=0", + "tsfmt": "npx tsfmt -r --verify", + "test": "npm-run-all test:*", + "test:extension": "vscode-test", + "test:sanity": "vscode-test --sanity", + "test:unit": "vitest --run --pool=forks", + "vitest": "vitest", + "bench": "vitest bench", + "get_env": "tsx script/setup/getEnv.mts", + "get_token": "tsx script/setup/getToken.mts", + "prettier": "prettier --list-different --write --cache .", + "simulate": "node dist/simulationMain.js", + "simulate-require-cache": "node dist/simulationMain.js --require-cache", + "simulate-ci": "node dist/simulationMain.js --ci --require-cache", + "simulate-update-baseline": "node dist/simulationMain.js --update-baseline", + "simulate-gc": "node dist/simulationMain.js --require-cache --gc", + "setup": "npm run get_env && npm run get_token", + "setup:dotnet": "run-script-os", + "setup:dotnet:darwin:linux": "curl -O https://raw.githubusercontent.com/dotnet/install-scripts/main/src/dotnet-install.sh && chmod u+x dotnet-install.sh && ./dotnet-install.sh --channel 10.0 && rm dotnet-install.sh", + "setup:dotnet:win32": "powershell.exe -NoProfile -ExecutionPolicy Bypass -Command \"Invoke-WebRequest -Uri https://raw.githubusercontent.com/dotnet/install-scripts/main/src/dotnet-install.ps1 -OutFile dotnet-install.ps1; ./dotnet-install.ps1 -channel 10.0; Remove-Item dotnet-install.ps1\"", + "analyze-edits": "tsx script/analyzeEdits.ts", + "extract-chat-lib": "tsx script/build/extractChatLib.ts", + "create_venv": "tsx script/setup/createVenv.mts", + "package": "vsce package", + "web": "vscode-test-web --headless --extensionDevelopmentPath=. .", + "test:prompt": "mocha \"src/extension/completions-core/vscode-node/prompt/**/test/**/*.test.{ts,tsx}\"", + "test:completions-core": "tsx src/extension/completions-core/vscode-node/extension/test/runTest.ts" + }, + "devDependencies": { + "@azure/identity": "4.9.1", + "@azure/keyvault-secrets": "^4.10.0", + "@azure/msal-node": "^3.6.3", + "@c4312/scip": "^0.1.0", + "@fluentui/react-components": "^9.66.6", + "@fluentui/react-icons": "^2.0.305", + "@hediet/node-reload": "^0.8.0", + "@keyv/sqlite": "^4.0.5", + "@octokit/types": "^14.1.0", + "@parcel/watcher": "^2.5.1", + "@stylistic/eslint-plugin": "^3.0.1", + "@types/eslint": "^9.0.0", + "@types/google-protobuf": "^3.15.12", + "@types/js-yaml": "^4.0.9", + "@types/markdown-it": "^14.0.0", + "@types/minimist": "^1.2.5", + "@types/mocha": "^10.0.10", + "@types/node": "^22.16.3", + "@types/picomatch": "^4.0.0", + "@types/react": "17.0.44", + "@types/react-dom": "^18.2.17", + "@types/sinon": "^17.0.4", + "@types/source-map-support": "^0.5.10", + "@types/tar": "^6.1.13", + "@types/vinyl": "^2.0.12", + "@types/vscode": "^1.102.0", + "@types/vscode-webview": "^1.57.4", + "@types/yargs": "^17.0.24", + "@typescript-eslint/eslint-plugin": "^8.35.0", + "@typescript-eslint/parser": "^8.32.0", + "@typescript-eslint/typescript-estree": "^8.26.1", + "@vitest/coverage-v8": "^3.2.4", + "@vitest/snapshot": "^1.5.0", + "@vscode/debugadapter": "^1.68.0", + "@vscode/debugprotocol": "^1.68.0", + "@vscode/dts": "^0.4.1", + "@vscode/lsif-language-service": "^0.1.0-pre.4", + "@vscode/test-cli": "^0.0.11", + "@vscode/test-electron": "^2.5.2", + "@vscode/test-web": "^0.0.71", + "@vscode/vsce": "3.6.0", + "copyfiles": "^2.4.1", + "csv-parse": "^6.0.0", + "dotenv": "^17.2.0", + "electron": "^37.2.1", + "esbuild": "^0.25.6", + "eslint": "^9.30.0", + "eslint-import-resolver-typescript": "^4.4.4", + "eslint-plugin-header": "^3.1.1", + "eslint-plugin-import": "^2.32.0", + "eslint-plugin-jsdoc": "^51.3.4", + "eslint-plugin-no-only-tests": "^3.3.0", + "fastq": "^1.19.1", + "glob": "^11.1.0", + "husky": "^9.1.7", + "js-yaml": "^4.1.1", + "keyv": "^5.3.2", + "lint-staged": "15.2.9", + "minimist": "^1.2.8", + "mobx": "^6.13.7", + "mobx-react-lite": "^4.1.0", + "mocha": "^11.7.1", + "mocha-junit-reporter": "^2.2.1", + "mocha-multi-reporters": "^1.5.1", + "monaco-editor": "0.44.0", + "npm-run-all": "^4.1.5", + "open": "^10.1.2", + "openai": "^6.7.0", + "outdent": "^0.8.0", + "picomatch": "^4.0.2", + "playwright": "^1.56.1", + "prettier": "^3.6.2", + "react": "^17.0.2", + "react-dom": "17.0.2", + "rimraf": "^6.0.1", + "run-script-os": "^1.1.6", + "shiki": "~1.15.0", + "sinon": "^21.0.0", + "source-map-support": "^0.5.21", + "tar": "^7.4.3", + "ts-dedent": "^2.2.0", + "tsx": "^4.20.3", + "typescript": "^5.8.3", + "typescript-eslint": "^8.36.0", + "typescript-formatter": "github:jrieken/typescript-formatter#497efb26bc40b5fa59a350e6eab17bce650a7e4b", + "vite-plugin-top-level-await": "^1.5.0", + "vite-plugin-wasm": "^3.5.0", + "vitest": "^3.0.5", + "vscode-languageserver-protocol": "^3.17.5", + "vscode-languageserver-textdocument": "^1.0.12", + "vscode-languageserver-types": "^3.17.5", + "yaml": "^2.8.0", + "yargs": "^17.7.2" + }, + "dependencies": { + "@anthropic-ai/claude-agent-sdk": "0.1.55", + "@anthropic-ai/sdk": "^0.68.0", + "@github/blackbird-external-ingest-utils": "^0.1.0", + "@github/copilot": "^0.0.366", + "@google/genai": "^1.22.0", + "@humanwhocodes/gitignore-to-minimatch": "1.0.2", + "@microsoft/tiktokenizer": "^1.0.10", + "@sinclair/typebox": "^0.34.41", + "@vscode/copilot-api": "^0.2.6", + "@vscode/extension-telemetry": "^1.2.0", + "@vscode/l10n": "^0.0.18", + "@vscode/prompt-tsx": "^0.4.0-alpha.5", + "@vscode/tree-sitter-wasm": "0.0.5-php.2", + "@vscode/webview-ui-toolkit": "^1.3.1", + "@xterm/headless": "^5.5.0", + "ajv": "^8.17.1", + "applicationinsights": "^2.9.7", + "diff": "^8.0.2", + "dompurify": "^3.3.0", + "ignore": "^7.0.5", + "isbinaryfile": "^5.0.4", + "jsonc-parser": "^3.3.1", + "lru-cache": "^11.1.0", + "markdown-it": "^14.1.0", + "minimatch": "^10.0.3", + "undici": "^7.11.0", + "vscode-tas-client": "^0.1.84", + "web-tree-sitter": "^0.23.0" + }, + "overrides": { + "@aminya/node-gyp-build": "npm:node-gyp-build@4.8.1", + "string_decoder": "npm:string_decoder@1.2.0", + "node-gyp": "npm:node-gyp@10.3.1" + } } diff --git a/src/extension/agents/vscode-node/organizationAndEnterpriseAgentContrib.ts b/src/extension/agents/vscode-node/organizationAndEnterpriseAgentContrib.ts index 537c7816a3..30df935711 100644 --- a/src/extension/agents/vscode-node/organizationAndEnterpriseAgentContrib.ts +++ b/src/extension/agents/vscode-node/organizationAndEnterpriseAgentContrib.ts @@ -19,11 +19,11 @@ export class OrganizationAndEnterpriseAgentContribution extends Disposable imple ) { super(); - if ('registerCustomAgentsProvider' in vscode.chat) { + if ('registerContributionsProvider' in vscode.chat) { // Only register the provider if the setting is enabled if (configurationService.getConfig(ConfigKey.ShowOrganizationAndEnterpriseAgents)) { const provider = instantiationService.createInstance(OrganizationAndEnterpriseAgentProvider); - this._register(vscode.chat.registerCustomAgentsProvider(provider)); + this._register(vscode.chat.registerContributionsProvider('agent', provider)); } } } diff --git a/src/extension/agents/vscode-node/organizationAndEnterpriseAgentProvider.ts b/src/extension/agents/vscode-node/organizationAndEnterpriseAgentProvider.ts index f1e8b35f40..ad82a6a49e 100644 --- a/src/extension/agents/vscode-node/organizationAndEnterpriseAgentProvider.ts +++ b/src/extension/agents/vscode-node/organizationAndEnterpriseAgentProvider.ts @@ -14,13 +14,13 @@ import { Disposable } from '../../../util/vs/base/common/lifecycle'; const AgentFileExtension = '.agent.md'; -export class OrganizationAndEnterpriseAgentProvider extends Disposable implements vscode.CustomAgentsProvider { +export class OrganizationAndEnterpriseAgentProvider extends Disposable implements vscode.ChatContributionsProvider { - private readonly _onDidChangeCustomAgents = this._register(new vscode.EventEmitter()); - readonly onDidChangeCustomAgents = this._onDidChangeCustomAgents.event; + private readonly _onDidChangeContributions = this._register(new vscode.EventEmitter()); + readonly onDidChangeContributions = this._onDidChangeContributions.event; private isFetching = false; - private memoryCache: vscode.CustomAgentResource[] | undefined; + private memoryCache: vscode.ChatContributionResource[] | undefined; constructor( @IOctoKitService private readonly octoKitService: IOctoKitService, @@ -41,10 +41,10 @@ export class OrganizationAndEnterpriseAgentProvider extends Disposable implement return vscode.Uri.joinPath(this.extensionContext.globalStorageUri, 'githubAgentsCache'); } - async provideCustomAgents( - _options: vscode.CustomAgentQueryOptions, + async provideContributions( + _options: vscode.ChatContributionQueryOptions, _token: vscode.CancellationToken - ): Promise { + ): Promise { try { if (this.memoryCache !== undefined) { return this.memoryCache; @@ -53,12 +53,12 @@ export class OrganizationAndEnterpriseAgentProvider extends Disposable implement // Return results from file cache return await this.readFromCache(); } catch (error) { - this.logService.error(`[OrganizationAndEnterpriseAgentProvider] Error in provideCustomAgents: ${error}`); + this.logService.error(`[OrganizationAndEnterpriseAgentProvider] Error in provideContributions: ${error}`); return []; } } - private async readFromCache(): Promise { + private async readFromCache(): Promise { try { const cacheDir = this.getCacheDir(); if (!cacheDir) { @@ -66,7 +66,7 @@ export class OrganizationAndEnterpriseAgentProvider extends Disposable implement return []; } - const agents: vscode.CustomAgentResource[] = []; + const agents: vscode.ChatContributionResource[] = []; // Check if cache directory exists try { @@ -323,7 +323,7 @@ export class OrganizationAndEnterpriseAgentProvider extends Disposable implement } // Fire event to notify consumers that agents have changed - this._onDidChangeCustomAgents.fire(); + this._onDidChangeContributions.fire(); } finally { this.isFetching = false; } diff --git a/src/extension/agents/vscode-node/organizationInstructionsContrib.ts b/src/extension/agents/vscode-node/organizationInstructionsContrib.ts index d3b9bd3e76..1e6b5e4590 100644 --- a/src/extension/agents/vscode-node/organizationInstructionsContrib.ts +++ b/src/extension/agents/vscode-node/organizationInstructionsContrib.ts @@ -19,11 +19,11 @@ export class OrganizationInstructionsContribution extends Disposable implements ) { super(); - if ('registerInstructionsProvider' in vscode.chat) { + if ('registerContributionsProvider' in vscode.chat) { // Only register the provider if the setting is enabled if (configurationService.getConfig(ConfigKey.UseOrganizationInstructions)) { const provider = instantiationService.createInstance(OrganizationInstructionsProvider); - this._register(vscode.chat.registerInstructionsProvider(provider)); + this._register(vscode.chat.registerContributionsProvider('instruction', provider)); } } } diff --git a/src/extension/agents/vscode-node/organizationInstructionsProvider.ts b/src/extension/agents/vscode-node/organizationInstructionsProvider.ts index 520b1c9a7c..be47269aba 100644 --- a/src/extension/agents/vscode-node/organizationInstructionsProvider.ts +++ b/src/extension/agents/vscode-node/organizationInstructionsProvider.ts @@ -15,10 +15,10 @@ import { getRepoId } from '../../chatSessions/vscode/copilotCodingAgentUtils'; const InstructionFileExtension = '.instruction.md'; -export class OrganizationInstructionsProvider extends Disposable implements vscode.InstructionsProvider { +export class OrganizationInstructionsProvider extends Disposable implements vscode.ChatContributionsProvider { - private readonly _onDidChangeInstructions = this._register(new vscode.EventEmitter()); - readonly onDidChangeInstructions = this._onDidChangeInstructions.event; + private readonly _onDidChangeContributions = this._register(new vscode.EventEmitter()); + readonly onDidChangeContributions = this._onDidChangeContributions.event; private isFetching = false; @@ -43,10 +43,10 @@ export class OrganizationInstructionsProvider extends Disposable implements vsco return orgLogin + InstructionFileExtension; } - async provideInstructions( - options: vscode.InstructionQueryOptions, + async provideContributions( + options: vscode.ChatContributionQueryOptions, _token: vscode.CancellationToken - ): Promise { + ): Promise { try { // Get repository information from the active git repository const repoId = await getRepoId(this.gitService); @@ -67,14 +67,14 @@ export class OrganizationInstructionsProvider extends Disposable implements vsco return cachedInstructions; } catch (error) { - this.logService.error(`[OrganizationInstructionsProvider] Error in provideInstructions: ${error}`); + this.logService.error(`[OrganizationInstructionsProvider] Error in provideContributions: ${error}`); return []; } } private async readFromCache( orgLogin: string, - ): Promise { + ): Promise { try { const cacheDir = this.getCacheDir(); if (!cacheDir) { @@ -88,7 +88,7 @@ export class OrganizationInstructionsProvider extends Disposable implements vsco return []; } - const instructions: vscode.CustomAgentResource[] = []; + const instructions: vscode.ChatContributionResource[] = []; const fileName = this.getCacheFilename(orgLogin); const fileUri = vscode.Uri.joinPath(cacheDir, fileName); instructions.push({ @@ -107,7 +107,7 @@ export class OrganizationInstructionsProvider extends Disposable implements vsco private async fetchAndUpdateCache( orgLogin: string, - options: vscode.InstructionQueryOptions + options: vscode.ChatContributionQueryOptions ): Promise { // Prevent concurrent fetches if (this.isFetching) { @@ -154,7 +154,7 @@ export class OrganizationInstructionsProvider extends Disposable implements vsco this.logService.trace(`[OrganizationInstructionsProvider] Updated cache with instructions for org ${orgLogin}`); // Fire event to notify consumers that instructions have changed - this._onDidChangeInstructions.fire(); + this._onDidChangeContributions.fire(); } finally { this.isFetching = false; } diff --git a/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts b/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts index 69ac4f050e..cdf810473a 100644 --- a/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts +++ b/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts @@ -129,7 +129,7 @@ suite('OrganizationAndEnterpriseAgentProvider', () => { mockOctoKitService.setUserOrganizations([]); const provider = createProvider(); - const agents = await provider.provideCustomAgents({}, {} as any); + const agents = await provider.provideContributions({}, {} as any); assert.deepEqual(agents, []); }); @@ -138,7 +138,7 @@ suite('OrganizationAndEnterpriseAgentProvider', () => { mockExtensionContext.globalStorageUri = undefined; const provider = createProvider(); - const agents = await provider.provideCustomAgents({}, {} as any); + const agents = await provider.provideContributions({}, {} as any); assert.deepEqual(agents, []); }); @@ -159,7 +159,7 @@ description: A test agent Test prompt content`; mockFileSystem.mockFile(agentFile, agentContent); - const agents = await provider.provideCustomAgents({}, {} as any); + const agents = await provider.provideContributions({}, {} as any); assert.equal(agents.length, 1); assert.equal(agents[0].name, 'test_agent'); @@ -190,20 +190,20 @@ Test prompt content`; mockOctoKitService.setAgentDetails('api_agent', mockDetails); // First call returns cached (empty) results and triggers background fetch - const agents1 = await provider.provideCustomAgents({}, {} as any); + const agents1 = await provider.provideContributions({}, {} as any); assert.deepEqual(agents1, []); // Wait for background fetch to complete await new Promise(resolve => setTimeout(resolve, 100)); // Second call should return newly cached agents from memory - const agents2 = await provider.provideCustomAgents({}, {} as any); + const agents2 = await provider.provideContributions({}, {} as any); assert.equal(agents2.length, 1); assert.equal(agents2[0].name, 'api_agent'); assert.equal(agents2[0].description, 'An agent from API'); // Third call should also return from memory cache without file I/O - const agents3 = await provider.provideCustomAgents({}, {} as any); + const agents3 = await provider.provideContributions({}, {} as any); assert.equal(agents3.length, 1); assert.equal(agents3[0].name, 'api_agent'); }); @@ -234,7 +234,7 @@ Test prompt content`; }; mockOctoKitService.setAgentDetails('full_agent', mockDetails); - await provider.provideCustomAgents({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Check cached file content @@ -283,7 +283,7 @@ Detailed prompt content }; mockOctoKitService.setAgentDetails('Agent With Spaces!@#', mockDetails); - await provider.provideCustomAgents({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Check that file was created with sanitized name @@ -322,12 +322,12 @@ Detailed prompt content mockOctoKitService.setAgentDetails('changing_agent', mockDetails); let eventFired = false; - provider.onDidChangeCustomAgents(() => { + provider.onDidChangeContributions(() => { eventFired = true; }); // First call triggers background fetch - await provider.provideCustomAgents({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 150)); // Event should fire after initial successful fetch @@ -343,7 +343,7 @@ Detailed prompt content }; // Should not throw, should return empty array - const agents = await provider.provideCustomAgents({}, {} as any); + const agents = await provider.provideContributions({}, {} as any); assert.deepEqual(agents, []); }); @@ -356,9 +356,9 @@ Detailed prompt content return []; }; - const queryOptions: vscode.CustomAgentQueryOptions = {}; + const queryOptions: vscode.ChatContributionQueryOptions = {}; - await provider.provideCustomAgents(queryOptions, {} as any); + await provider.provideContributions(queryOptions, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); assert.ok(capturedOptions); @@ -377,9 +377,9 @@ Detailed prompt content }; // Make multiple concurrent calls - const promise1 = provider.provideCustomAgents({}, {} as any); - const promise2 = provider.provideCustomAgents({}, {} as any); - const promise3 = provider.provideCustomAgents({}, {} as any); + const promise1 = provider.provideContributions({}, {} as any); + const promise2 = provider.provideContributions({}, {} as any); + const promise3 = provider.provideContributions({}, {} as any); await Promise.all([promise1, promise2, promise3]); await new Promise(resolve => setTimeout(resolve, 100)); @@ -435,12 +435,12 @@ description: First agent Agent 1 prompt`; mockFileSystem.mockFile(URI.joinPath(orgDir, 'agent1.agent.md'), agentContent); - await provider.provideCustomAgents({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // With error handling, partial failures skip cache update for that org // So the existing file cache is returned with the one successful agent - const cachedAgents = await provider.provideCustomAgents({}, {} as any); + const cachedAgents = await provider.provideContributions({}, {} as any); assert.equal(cachedAgents.length, 1); assert.equal(cachedAgents[0].name, 'agent1'); }); @@ -466,11 +466,11 @@ Agent 1 prompt`; prompt: 'Initial prompt', }); - await provider.provideCustomAgents({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // After successful fetch, subsequent calls return from memory - const agents1 = await provider.provideCustomAgents({}, {} as any); + const agents1 = await provider.provideContributions({}, {} as any); assert.equal(agents1.length, 1); assert.equal(agents1[0].name, 'initial_agent'); @@ -493,7 +493,7 @@ Agent 1 prompt`; }); // Memory cache returns old results without refetching - const agents2 = await provider.provideCustomAgents({}, {} as any); + const agents2 = await provider.provideContributions({}, {} as any); assert.equal(agents2.length, 1); assert.equal(agents2[0].name, 'initial_agent'); }); @@ -530,18 +530,18 @@ Agent 1 prompt`; mockOctoKitService.setAgentDetails('agent1', { ...agents[0], prompt: 'Prompt 1' }); mockOctoKitService.setAgentDetails('agent2', { ...agents[1], prompt: 'Prompt 2' }); - await provider.provideCustomAgents({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Verify both agents are cached - const cachedAgents1 = await provider.provideCustomAgents({}, {} as any); + const cachedAgents1 = await provider.provideContributions({}, {} as any); assert.equal(cachedAgents1.length, 2); // Remove one agent from API mockOctoKitService.setCustomAgents([agents[0]]); // Memory cache still returns both agents (no refetch) - const cachedAgents2 = await provider.provideCustomAgents({}, {} as any); + const cachedAgents2 = await provider.provideContributions({}, {} as any); assert.equal(cachedAgents2.length, 2); assert.equal(cachedAgents2[0].name, 'agent1'); assert.equal(cachedAgents2[1].name, 'agent2'); @@ -567,16 +567,16 @@ Agent 1 prompt`; prompt: 'Stable prompt', }); - await provider.provideCustomAgents({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); let changeEventCount = 0; - provider.onDidChangeCustomAgents(() => { + provider.onDidChangeContributions(() => { changeEventCount++; }); // Fetch again with identical content - await provider.provideCustomAgents({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 150)); // No change event should fire @@ -604,18 +604,18 @@ Agent 1 prompt`; prompt: 'Temporary prompt', }); - await provider.provideCustomAgents({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Verify agent is cached - const agents1 = await provider.provideCustomAgents({}, {} as any); + const agents1 = await provider.provideContributions({}, {} as any); assert.equal(agents1.length, 1); // API now returns empty array mockOctoKitService.setCustomAgents([]); // Memory cache still returns the agent (no refetch) - const agents2 = await provider.provideCustomAgents({}, {} as any); + const agents2 = await provider.provideContributions({}, {} as any); assert.equal(agents2.length, 1); assert.equal(agents2[0].name, 'temporary_agent'); }); @@ -643,7 +643,7 @@ Agent 1 prompt`; }; mockOctoKitService.setAgentDetails('minimal_agent', mockDetails); - await provider.provideCustomAgents({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); const cacheDir = URI.joinPath(mockExtensionContext.globalStorageUri!, 'githubAgentsCache'); @@ -684,7 +684,7 @@ Agent 1 prompt`; }; mockOctoKitService.setAgentDetails('wildcard_agent', mockDetails); - await provider.provideCustomAgents({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); const cacheDir = URI.joinPath(mockExtensionContext.globalStorageUri!, 'githubAgentsCache'); @@ -720,7 +720,7 @@ Valid prompt`; const noFrontmatterContent = `Just some content without any frontmatter`; mockFileSystem.mockFile(URI.joinPath(orgDir, 'no_frontmatter.agent.md'), noFrontmatterContent); - const agents = await provider.provideCustomAgents({}, {} as any); + const agents = await provider.provideContributions({}, {} as any); // Parser is lenient - both agents are returned, one with empty description assert.equal(agents.length, 2); @@ -742,7 +742,7 @@ Valid prompt`; return []; }; - await provider.provideCustomAgents({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Should have fetched from all three organizations @@ -776,7 +776,7 @@ Valid prompt`; }; mockOctoKitService.setAgentDetails('world_domination', mockDetails); - await provider.provideCustomAgents({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); const cacheDir = URI.joinPath(mockExtensionContext.globalStorageUri!, 'githubAgentsCache'); @@ -821,7 +821,7 @@ You are a world-class computer scientist. }; mockOctoKitService.setAgentDetails('special_chars_agent', mockDetails); - await provider.provideCustomAgents({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); const cacheDir = URI.joinPath(mockExtensionContext.globalStorageUri!, 'githubAgentsCache'); @@ -864,7 +864,7 @@ Test prompt with special characters }; mockOctoKitService.setAgentDetails('multiline_agent', mockDetails); - await provider.provideCustomAgents({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); const cacheDir = URI.joinPath(mockExtensionContext.globalStorageUri!, 'githubAgentsCache'); @@ -903,7 +903,7 @@ Test prompt return originalGetCustomAgents.call(mockOctoKitService, owner, repo, options, { createIfNone: false }); }; - await provider.provideCustomAgents({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Should have aborted after first org, so second org shouldn't be processed @@ -940,10 +940,10 @@ Test prompt prompt: 'Enterprise prompt', }); - await provider.provideCustomAgents({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); - const agents = await provider.provideCustomAgents({}, {} as any); + const agents = await provider.provideContributions({}, {} as any); // Should only have one agent, not two (deduped) assert.equal(agents.length, 1); @@ -1027,10 +1027,10 @@ Test prompt return undefined; }; - await provider.provideCustomAgents({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); - const agents = await provider.provideCustomAgents({}, {} as any); + const agents = await provider.provideContributions({}, {} as any); // Different versions are deduplicated, only the first one is kept assert.equal(agents.length, 1); @@ -1086,10 +1086,10 @@ Test prompt return undefined; }; - await provider.provideCustomAgents({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); - const agents = await provider.provideCustomAgents({}, {} as any); + const agents = await provider.provideContributions({}, {} as any); // Should have 2 agents since they're from different repos (not duplicates) assert.equal(agents.length, 2); @@ -1148,10 +1148,10 @@ Test prompt return undefined; }; - await provider.provideCustomAgents({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); - const agents = await provider.provideCustomAgents({}, {} as any); + const agents = await provider.provideContributions({}, {} as any); // Should have exactly 2 agents, not 6 (2 agents x 3 orgs) assert.equal(agents.length, 2); @@ -1197,10 +1197,10 @@ Test prompt return undefined; }; - await provider.provideCustomAgents({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); - const agents = await provider.provideCustomAgents({}, {} as any); + const agents = await provider.provideContributions({}, {} as any); // Different versions are deduplicated, only the first one is kept assert.equal(agents.length, 1); diff --git a/src/extension/agents/vscode-node/test/organizationInstructionsProvider.spec.ts b/src/extension/agents/vscode-node/test/organizationInstructionsProvider.spec.ts index b5d3121044..0a5dcafd54 100644 --- a/src/extension/agents/vscode-node/test/organizationInstructionsProvider.spec.ts +++ b/src/extension/agents/vscode-node/test/organizationInstructionsProvider.spec.ts @@ -194,7 +194,7 @@ suite('OrganizationInstructionsProvider', () => { mockGitService.setActiveRepository(undefined); const provider = createProvider(); - const instructions = await provider.provideInstructions({}, {} as any); + const instructions = await provider.provideContributions({}, {} as any); assert.deepEqual(instructions, []); }); @@ -204,7 +204,7 @@ suite('OrganizationInstructionsProvider', () => { mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); const provider = createProvider(); - const instructions = await provider.provideInstructions({}, {} as any); + const instructions = await provider.provideContributions({}, {} as any); assert.deepEqual(instructions, []); }); @@ -222,7 +222,7 @@ suite('OrganizationInstructionsProvider', () => { Always follow our coding standards.`; mockFileSystem.mockFile(instructionFile, instructionContent); - const instructions = await provider.provideInstructions({}, {} as any); + const instructions = await provider.provideContributions({}, {} as any); assert.equal(instructions.length, 1); assert.equal(instructions[0].name, 'testorg'); @@ -240,14 +240,14 @@ Always use TypeScript strict mode.`; mockOctoKitService.setOrgInstructions('testorg', mockInstructions); // First call returns cached (empty) results - const instructions1 = await provider.provideInstructions({}, {} as any); + const instructions1 = await provider.provideContributions({}, {} as any); assert.deepEqual(instructions1, []); // Wait for background fetch to complete await new Promise(resolve => setTimeout(resolve, 100)); // Second call should return newly cached instructions - const instructions2 = await provider.provideInstructions({}, {} as any); + const instructions2 = await provider.provideContributions({}, {} as any); assert.equal(instructions2.length, 1); assert.equal(instructions2[0].name, 'testorg'); }); @@ -263,7 +263,7 @@ Always use TypeScript strict mode.`; 3. Write comprehensive tests`; mockOctoKitService.setOrgInstructions('testorg', mockInstructions); - await provider.provideInstructions({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Check cached file content @@ -282,11 +282,11 @@ Always use TypeScript strict mode.`; const mockInstructions = `# Initial Instructions`; mockOctoKitService.setOrgInstructions('testorg', mockInstructions); - await provider.provideInstructions({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); let eventFired = false; - provider.onDidChangeInstructions(() => { + provider.onDidChangeContributions(() => { eventFired = true; }); @@ -294,7 +294,7 @@ Always use TypeScript strict mode.`; const updatedInstructions = `# Updated Instructions`; mockOctoKitService.setOrgInstructions('testorg', updatedInstructions); - await provider.provideInstructions({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 150)); assert.equal(eventFired, true); @@ -310,7 +310,7 @@ Always use TypeScript strict mode.`; }; // Should not throw, should return empty array - const instructions = await provider.provideInstructions({}, {} as any); + const instructions = await provider.provideContributions({}, {} as any); assert.deepEqual(instructions, []); }); @@ -327,9 +327,9 @@ Always use TypeScript strict mode.`; }; // Make multiple concurrent calls - const promise1 = provider.provideInstructions({}, {} as any); - const promise2 = provider.provideInstructions({}, {} as any); - const promise3 = provider.provideInstructions({}, {} as any); + const promise1 = provider.provideContributions({}, {} as any); + const promise2 = provider.provideContributions({}, {} as any); + const promise3 = provider.provideContributions({}, {} as any); await Promise.all([promise1, promise2, promise3]); await new Promise(resolve => setTimeout(resolve, 100)); @@ -345,16 +345,16 @@ Always use TypeScript strict mode.`; const mockInstructions = `# Stable Instructions`; mockOctoKitService.setOrgInstructions('testorg', mockInstructions); - await provider.provideInstructions({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); let changeEventCount = 0; - provider.onDidChangeInstructions(() => { + provider.onDidChangeContributions(() => { changeEventCount++; }); // Fetch again with identical content - await provider.provideInstructions({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 150)); // No change event should fire @@ -368,7 +368,7 @@ Always use TypeScript strict mode.`; // API returns undefined (no instructions) mockOctoKitService.setOrgInstructions('testorg', undefined); - await provider.provideInstructions({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Should not create any cache files @@ -388,7 +388,7 @@ Always use TypeScript strict mode.`; const mockInstructions = `# Company Instructions`; mockOctoKitService.setOrgInstructions('mycompany', mockInstructions); - await provider.provideInstructions({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Check that file was created with correct name @@ -415,7 +415,7 @@ Always use TypeScript strict mode.`; return 'Org A instructions'; }; - await provider.provideInstructions({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); assert.equal(capturedOrgLogin, 'orgA'); @@ -423,7 +423,7 @@ Always use TypeScript strict mode.`; // Change to org B mockGitService.setActiveRepository(new GithubRepoId('orgB', 'repoB')); - await provider.provideInstructions({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Should fetch from new organization @@ -440,7 +440,7 @@ Always use TypeScript strict mode.`; // Initially no cache directory const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); - await provider.provideInstructions({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Cache directory should now exist @@ -463,7 +463,7 @@ Always use TypeScript strict mode.`; const instructionContent = `# Existing Instructions`; mockFileSystem.mockFile(instructionFile, instructionContent); - const instructions = await provider.provideInstructions({}, {} as any); + const instructions = await provider.provideContributions({}, {} as any); // Should successfully read cached instructions assert.equal(instructions.length, 1); @@ -483,7 +483,7 @@ Always use TypeScript strict mode.`; }; // Should not throw, should return empty array - const instructions = await provider.provideInstructions({}, {} as any); + const instructions = await provider.provideContributions({}, {} as any); assert.deepEqual(instructions, []); // Restore original method @@ -497,11 +497,11 @@ Always use TypeScript strict mode.`; // Initial setup with no instructions mockOctoKitService.setOrgInstructions('testorg', undefined); - await provider.provideInstructions({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); let changeEventFired = false; - provider.onDidChangeInstructions(() => { + provider.onDidChangeContributions(() => { changeEventFired = true; }); @@ -511,11 +511,11 @@ Always use TypeScript strict mode.`; Follow these rules.`; mockOctoKitService.setOrgInstructions('testorg', newInstructions); - await provider.provideInstructions({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 150)); assert.equal(changeEventFired, true); - const instructions = await provider.provideInstructions({}, {} as any); + const instructions = await provider.provideContributions({}, {} as any); assert.equal(instructions.length, 1); }); @@ -527,17 +527,17 @@ Follow these rules.`; const initialInstructions = `# Initial Instructions`; mockOctoKitService.setOrgInstructions('testorg', initialInstructions); - await provider.provideInstructions({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); - provider.onDidChangeInstructions(() => { + provider.onDidChangeContributions(() => { // Event listener registered for potential future use }); // Remove instructions mockOctoKitService.setOrgInstructions('testorg', undefined); - await provider.provideInstructions({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 150)); // Note: Currently the implementation doesn't delete cache files when instructions are removed, @@ -552,7 +552,7 @@ Follow these rules.`; // API returns empty string mockOctoKitService.setOrgInstructions('testorg', ''); - await provider.provideInstructions({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Empty strings are treated as "no instructions" and not cached @@ -577,7 +577,7 @@ Include special chars: @#$%^&*() Unicode: 你好 🚀`; mockOctoKitService.setOrgInstructions('testorg', mockInstructions); - await provider.provideInstructions({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Check that special characters are preserved @@ -597,7 +597,7 @@ Unicode: 你好 🚀`; const largeContent = '# Large Instructions\n\n' + 'x'.repeat(100000); mockOctoKitService.setOrgInstructions('testorg', largeContent); - await provider.provideInstructions({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Check that large content is handled correctly @@ -620,7 +620,7 @@ Unicode: 你好 🚀`; const instructionContent = `# Test`; mockFileSystem.mockFile(instructionFile, instructionContent); - const instructions = await provider.provideInstructions({}, {} as any); + const instructions = await provider.provideContributions({}, {} as any); assert.equal(instructions.length, 1); assert.ok(instructions[0].uri); @@ -634,14 +634,14 @@ Unicode: 你好 🚀`; mockGitService.setActiveRepository(new GithubRepoId('org1', 'repo1')); mockOctoKitService.setOrgInstructions('org1', '# Org 1 Instructions'); - await provider.provideInstructions({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Second organization mockGitService.setActiveRepository(new GithubRepoId('org2', 'repo2')); mockOctoKitService.setOrgInstructions('org2', '# Org 2 Instructions'); - await provider.provideInstructions({}, {} as any); + await provider.provideContributions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Both instruction files should exist in cache @@ -666,7 +666,7 @@ Unicode: 你好 🚀`; // Request instructions for org1 mockGitService.setActiveRepository(new GithubRepoId('org1', 'repo1')); - const instructions = await provider.provideInstructions({}, {} as any); + const instructions = await provider.provideContributions({}, {} as any); assert.equal(instructions.length, 1); assert.equal(instructions[0].name, 'org1'); diff --git a/src/extension/vscode.proposed.chatParticipantPrivate.d.ts b/src/extension/vscode.proposed.chatParticipantPrivate.d.ts index 7967959e24..17bcaa3fbd 100644 --- a/src/extension/vscode.proposed.chatParticipantPrivate.d.ts +++ b/src/extension/vscode.proposed.chatParticipantPrivate.d.ts @@ -314,12 +314,12 @@ declare module 'vscode' { // #endregion - // #region CustomAgentsProvider + // #region ChatContributionsProvider /** * Represents a custom agent resource file (e.g., .agent.md or .prompt.md) available for a repository. */ - export interface CustomAgentResource { + export interface ChatContributionResource { /** * The unique identifier/name of the custom agent resource. */ @@ -344,16 +344,16 @@ declare module 'vscode' { /** * Options for querying custom agents. */ - export interface CustomAgentQueryOptions { } + export interface ChatContributionQueryOptions { } /** * A provider that supplies custom agent resources (from .agent.md and .prompt.md files) for repositories. */ - export interface CustomAgentsProvider { + export interface ChatContributionsProvider { /** * An optional event to signal that custom agents have changed. */ - readonly onDidChangeCustomAgents?: Event; + readonly onDidChangeContributions?: Event; /** * Provide the list of custom agent resources available for a given repository. @@ -361,34 +361,7 @@ declare module 'vscode' { * @param token A cancellation token. * @returns An array of custom agent resources or a promise that resolves to such. */ - provideCustomAgents(options: CustomAgentQueryOptions, token: CancellationToken): ProviderResult; - } - - // #endregion - - // #region InstructionsProvider - - /** - * Options for querying instructions. - */ - export interface InstructionQueryOptions { } - - /** - * A provider that supplies instruction resources for repositories. - */ - export interface InstructionsProvider { - /** - * An optional event to signal that instructions have changed. - */ - readonly onDidChangeInstructions?: Event; - - /** - * Provide the list of instruction resources available for a given repository. - * @param options Optional query parameters. - * @param token A cancellation token. - * @returns An array of instruction resources or a promise that resolves to such. - */ - provideInstructions(options: InstructionQueryOptions, token: CancellationToken): ProviderResult; + provideContributions(options: ChatContributionQueryOptions, token: CancellationToken): ProviderResult; } export namespace chat { @@ -397,14 +370,7 @@ declare module 'vscode' { * @param provider The custom agents provider. * @returns A disposable that unregisters the provider when disposed. */ - export function registerCustomAgentsProvider(provider: CustomAgentsProvider): Disposable; - - /** - * Register a provider for instructions. - * @param provider The instructions provider. - * @returns A disposable that unregisters the provider when disposed. - */ - export function registerInstructionsProvider(provider: InstructionsProvider): Disposable; + export function registerContributionsProvider(type: string, provider: ChatContributionsProvider): Disposable; } // #endregion From da7039cfd408dba4d31f8f10728db424344655ce Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Wed, 31 Dec 2025 12:58:40 -0800 Subject: [PATCH 13/33] fix --- .../organizationInstructionsProvider.ts | 2 +- .../test/organizationInstructionsProvider.spec.ts | 15 +++++++++++++++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/extension/agents/vscode-node/organizationInstructionsProvider.ts b/src/extension/agents/vscode-node/organizationInstructionsProvider.ts index be47269aba..600b8c2398 100644 --- a/src/extension/agents/vscode-node/organizationInstructionsProvider.ts +++ b/src/extension/agents/vscode-node/organizationInstructionsProvider.ts @@ -119,7 +119,7 @@ export class OrganizationInstructionsProvider extends Disposable implements vsco try { this.logService.trace(`[OrganizationInstructionsProvider] Fetching custom instructions for org ${orgLogin}`); - const instructions = await this.octoKitService.getOrgCustomInstructions(orgLogin); + const instructions = await this.octoKitService.getOrgCustomInstructions(orgLogin, {}); const cacheDir = this.getCacheDir(); if (!cacheDir) { this.logService.trace('[OrganizationInstructionsProvider] No workspace open, cannot use cache'); diff --git a/src/extension/agents/vscode-node/test/organizationInstructionsProvider.spec.ts b/src/extension/agents/vscode-node/test/organizationInstructionsProvider.spec.ts index 0a5dcafd54..4ffc3a128c 100644 --- a/src/extension/agents/vscode-node/test/organizationInstructionsProvider.spec.ts +++ b/src/extension/agents/vscode-node/test/organizationInstructionsProvider.spec.ts @@ -46,6 +46,7 @@ class MockGitService implements IGitService { isRebasing: false, remoteFetchUrls: [`https://github.com/${repoId.org}/${repoId.repo}.git`], remotes: [], + worktrees: [], changes: undefined, headBranchNameObs: constObservable(undefined), headCommitHashObs: constObservable(undefined), @@ -75,6 +76,12 @@ class MockGitService implements IGitService { async diffBetween(uri: URI, ref1: string, ref2: string): Promise { return []; } + async diffBetweenPatch(uri: URI, ref1: string, ref2: string, path: string): Promise { + return undefined; + } + async diffBetweenWithStats(uri: URI, ref1: string, ref2: string, path?: string): Promise { + return []; + } async diffWith(uri: URI, ref: string): Promise { return []; } @@ -90,6 +97,11 @@ class MockGitService implements IGitService { } async deleteWorktree(uri: URI, path: string, options?: { force?: boolean }): Promise { } async migrateChanges(uri: URI, sourceRepositoryUri: URI, options?: { confirmation?: boolean; deleteFromSource?: boolean; untracked?: boolean }): Promise { } + async applyPatch(uri: URI, patch: string): Promise { } + async commit(uri: URI, message: string | undefined): Promise { } + async getRefs(uri: URI, query: any, cancellationToken?: any): Promise { + return []; + } dispose() { } } @@ -112,10 +124,13 @@ class MockOctoKitService implements IOctoKitService { getJobBySessionId = async () => undefined; addPullRequestComment = async () => null; getAllOpenSessions = async () => []; + getAllSessions = async () => []; getPullRequestFromGlobalId = async () => null; getPullRequestFiles = async () => []; closePullRequest = async () => false; getFileContent = async () => ''; + getUserOrganizations = async () => []; + getOrganizationRepositories = async () => []; getCustomAgents = async () => []; getCustomAgentDetails = async () => undefined; From 8697883674e7c3533050a1b727eb4b6190a9b9bd Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Wed, 31 Dec 2025 15:22:41 -0800 Subject: [PATCH 14/33] use enum --- .../vscode-node/organizationAndEnterpriseAgentContrib.ts | 2 +- .../agents/vscode-node/organizationInstructionsContrib.ts | 2 +- src/extension/vscode.proposed.chatParticipantPrivate.d.ts | 8 +++++++- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/extension/agents/vscode-node/organizationAndEnterpriseAgentContrib.ts b/src/extension/agents/vscode-node/organizationAndEnterpriseAgentContrib.ts index 30df935711..7c69f6baad 100644 --- a/src/extension/agents/vscode-node/organizationAndEnterpriseAgentContrib.ts +++ b/src/extension/agents/vscode-node/organizationAndEnterpriseAgentContrib.ts @@ -23,7 +23,7 @@ export class OrganizationAndEnterpriseAgentContribution extends Disposable imple // Only register the provider if the setting is enabled if (configurationService.getConfig(ConfigKey.ShowOrganizationAndEnterpriseAgents)) { const provider = instantiationService.createInstance(OrganizationAndEnterpriseAgentProvider); - this._register(vscode.chat.registerContributionsProvider('agent', provider)); + this._register(vscode.chat.registerContributionsProvider(vscode.PromptsType.agent, provider)); } } } diff --git a/src/extension/agents/vscode-node/organizationInstructionsContrib.ts b/src/extension/agents/vscode-node/organizationInstructionsContrib.ts index 1e6b5e4590..3b0b4f292e 100644 --- a/src/extension/agents/vscode-node/organizationInstructionsContrib.ts +++ b/src/extension/agents/vscode-node/organizationInstructionsContrib.ts @@ -23,7 +23,7 @@ export class OrganizationInstructionsContribution extends Disposable implements // Only register the provider if the setting is enabled if (configurationService.getConfig(ConfigKey.UseOrganizationInstructions)) { const provider = instantiationService.createInstance(OrganizationInstructionsProvider); - this._register(vscode.chat.registerContributionsProvider('instruction', provider)); + this._register(vscode.chat.registerContributionsProvider(vscode.PromptsType.instructions, provider)); } } } diff --git a/src/extension/vscode.proposed.chatParticipantPrivate.d.ts b/src/extension/vscode.proposed.chatParticipantPrivate.d.ts index 17bcaa3fbd..5902df1694 100644 --- a/src/extension/vscode.proposed.chatParticipantPrivate.d.ts +++ b/src/extension/vscode.proposed.chatParticipantPrivate.d.ts @@ -316,6 +316,12 @@ declare module 'vscode' { // #region ChatContributionsProvider + export enum PromptsType { + instructions = 'instructions', + prompt = 'prompt', + agent = 'agent' + } + /** * Represents a custom agent resource file (e.g., .agent.md or .prompt.md) available for a repository. */ @@ -370,7 +376,7 @@ declare module 'vscode' { * @param provider The custom agents provider. * @returns A disposable that unregisters the provider when disposed. */ - export function registerContributionsProvider(type: string, provider: ChatContributionsProvider): Disposable; + export function registerContributionsProvider(type: PromptsType, provider: ChatContributionsProvider): Disposable; } // #endregion From e62f5836a9b2d6ecdb0f3e251c98ea08b1cf6222 Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Wed, 7 Jan 2026 11:49:00 -0800 Subject: [PATCH 15/33] PR --- package-lock.json | 38734 ++++++++-------- .../organizationAndEnterpriseAgentContrib.ts | 4 +- .../organizationAndEnterpriseAgentProvider.ts | 20 +- .../organizationInstructionsContrib.ts | 4 +- .../organizationInstructionsProvider.ts | 22 +- ...nizationAndEnterpriseAgentProvider.spec.ts | 96 +- .../organizationInstructionsProvider.spec.ts | 74 +- ...scode.proposed.chatParticipantPrivate.d.ts | 158 +- 8 files changed, 19614 insertions(+), 19498 deletions(-) diff --git a/package-lock.json b/package-lock.json index d5e1008fe4..8dac842a8c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,19369 +1,19369 @@ { - "name": "copilot-chat", - "version": "0.36.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "copilot-chat", - "version": "0.36.0", - "hasInstallScript": true, - "license": "SEE LICENSE IN LICENSE.txt", - "dependencies": { - "@anthropic-ai/claude-agent-sdk": "0.1.55", - "@anthropic-ai/sdk": "^0.68.0", - "@github/blackbird-external-ingest-utils": "^0.1.0", - "@github/copilot": "^0.0.366", - "@google/genai": "^1.22.0", - "@humanwhocodes/gitignore-to-minimatch": "1.0.2", - "@microsoft/tiktokenizer": "^1.0.10", - "@sinclair/typebox": "^0.34.41", - "@vscode/copilot-api": "^0.2.6", - "@vscode/extension-telemetry": "^1.2.0", - "@vscode/l10n": "^0.0.18", - "@vscode/prompt-tsx": "^0.4.0-alpha.5", - "@vscode/tree-sitter-wasm": "0.0.5-php.2", - "@vscode/webview-ui-toolkit": "^1.3.1", - "@xterm/headless": "^5.5.0", - "ajv": "^8.17.1", - "applicationinsights": "^2.9.7", - "diff": "^8.0.2", - "dompurify": "^3.3.0", - "ignore": "^7.0.5", - "isbinaryfile": "^5.0.4", - "jsonc-parser": "^3.3.1", - "lru-cache": "^11.1.0", - "markdown-it": "^14.1.0", - "minimatch": "^10.0.3", - "undici": "^7.11.0", - "vscode-tas-client": "^0.1.84", - "web-tree-sitter": "^0.23.0" - }, - "devDependencies": { - "@azure/identity": "4.9.1", - "@azure/keyvault-secrets": "^4.10.0", - "@azure/msal-node": "^3.6.3", - "@c4312/scip": "^0.1.0", - "@fluentui/react-components": "^9.66.6", - "@fluentui/react-icons": "^2.0.305", - "@hediet/node-reload": "^0.8.0", - "@keyv/sqlite": "^4.0.5", - "@octokit/types": "^14.1.0", - "@parcel/watcher": "^2.5.1", - "@stylistic/eslint-plugin": "^3.0.1", - "@types/eslint": "^9.0.0", - "@types/google-protobuf": "^3.15.12", - "@types/js-yaml": "^4.0.9", - "@types/markdown-it": "^14.0.0", - "@types/minimist": "^1.2.5", - "@types/mocha": "^10.0.10", - "@types/node": "^22.16.3", - "@types/picomatch": "^4.0.0", - "@types/react": "17.0.44", - "@types/react-dom": "^18.2.17", - "@types/sinon": "^17.0.4", - "@types/source-map-support": "^0.5.10", - "@types/tar": "^6.1.13", - "@types/vinyl": "^2.0.12", - "@types/vscode": "^1.102.0", - "@types/vscode-webview": "^1.57.4", - "@types/yargs": "^17.0.24", - "@typescript-eslint/eslint-plugin": "^8.35.0", - "@typescript-eslint/parser": "^8.32.0", - "@typescript-eslint/typescript-estree": "^8.26.1", - "@vitest/coverage-v8": "^3.2.4", - "@vitest/snapshot": "^1.5.0", - "@vscode/debugadapter": "^1.68.0", - "@vscode/debugprotocol": "^1.68.0", - "@vscode/dts": "^0.4.1", - "@vscode/lsif-language-service": "^0.1.0-pre.4", - "@vscode/test-cli": "^0.0.11", - "@vscode/test-electron": "^2.5.2", - "@vscode/test-web": "^0.0.71", - "@vscode/vsce": "3.6.0", - "copyfiles": "^2.4.1", - "csv-parse": "^6.0.0", - "dotenv": "^17.2.0", - "electron": "^37.2.1", - "esbuild": "^0.25.6", - "eslint": "^9.30.0", - "eslint-import-resolver-typescript": "^4.4.4", - "eslint-plugin-header": "^3.1.1", - "eslint-plugin-import": "^2.32.0", - "eslint-plugin-jsdoc": "^51.3.4", - "eslint-plugin-no-only-tests": "^3.3.0", - "fastq": "^1.19.1", - "glob": "^11.1.0", - "husky": "^9.1.7", - "js-yaml": "^4.1.1", - "keyv": "^5.3.2", - "lint-staged": "15.2.9", - "minimist": "^1.2.8", - "mobx": "^6.13.7", - "mobx-react-lite": "^4.1.0", - "mocha": "^11.7.1", - "mocha-junit-reporter": "^2.2.1", - "mocha-multi-reporters": "^1.5.1", - "monaco-editor": "0.44.0", - "npm-run-all": "^4.1.5", - "open": "^10.1.2", - "openai": "^6.7.0", - "outdent": "^0.8.0", - "picomatch": "^4.0.2", - "playwright": "^1.56.1", - "prettier": "^3.6.2", - "react": "^17.0.2", - "react-dom": "17.0.2", - "rimraf": "^6.0.1", - "run-script-os": "^1.1.6", - "shiki": "~1.15.0", - "sinon": "^21.0.0", - "source-map-support": "^0.5.21", - "tar": "^7.4.3", - "ts-dedent": "^2.2.0", - "tsx": "^4.20.3", - "typescript": "^5.8.3", - "typescript-eslint": "^8.36.0", - "typescript-formatter": "github:jrieken/typescript-formatter#497efb26bc40b5fa59a350e6eab17bce650a7e4b", - "vite-plugin-top-level-await": "^1.5.0", - "vite-plugin-wasm": "^3.5.0", - "vitest": "^3.0.5", - "vscode-languageserver-protocol": "^3.17.5", - "vscode-languageserver-textdocument": "^1.0.12", - "vscode-languageserver-types": "^3.17.5", - "yaml": "^2.8.0", - "yargs": "^17.7.2" - }, - "engines": { - "node": ">=22.14.0", - "npm": ">=9.0.0", - "vscode": "^1.108.0" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@ampproject/remapping": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", - "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@anthropic-ai/claude-agent-sdk": { - "version": "0.1.55", - "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk/-/claude-agent-sdk-0.1.55.tgz", - "integrity": "sha512-nwlxPjn/gc7I+iOGYY7AGtM2xcjzJFCxF9Bnr0xH1JNaNx+QXLM3h/wmzSvuEOKeJgPymf1GMBs4DZ3jyd/Z7Q==", - "license": "SEE LICENSE IN README.md", - "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "@img/sharp-darwin-arm64": "^0.33.5", - "@img/sharp-darwin-x64": "^0.33.5", - "@img/sharp-linux-arm": "^0.33.5", - "@img/sharp-linux-arm64": "^0.33.5", - "@img/sharp-linux-x64": "^0.33.5", - "@img/sharp-linuxmusl-arm64": "^0.33.5", - "@img/sharp-linuxmusl-x64": "^0.33.5", - "@img/sharp-win32-x64": "^0.33.5" - }, - "peerDependencies": { - "zod": "^3.24.1" - } - }, - "node_modules/@anthropic-ai/sdk": { - "version": "0.68.0", - "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.68.0.tgz", - "integrity": "sha512-SMYAmbbiprG8k1EjEPMTwaTqssDT7Ae+jxcR5kWXiqTlbwMR2AthXtscEVWOHkRfyAV5+y3PFYTJRNa3OJWIEw==", - "license": "MIT", - "dependencies": { - "json-schema-to-ts": "^3.1.1" - }, - "bin": { - "anthropic-ai-sdk": "bin/cli" - }, - "peerDependencies": { - "zod": "^3.25.0 || ^4.0.0" - }, - "peerDependenciesMeta": { - "zod": { - "optional": true - } - } - }, - "node_modules/@azu/format-text": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@azu/format-text/-/format-text-1.0.2.tgz", - "integrity": "sha512-Swi4N7Edy1Eqq82GxgEECXSSLyn6GOb5htRFPzBDdUkECGXtlf12ynO5oJSpWKPwCaUssOu7NfhDcCWpIC6Ywg==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@azu/style-format": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@azu/style-format/-/style-format-1.0.1.tgz", - "integrity": "sha512-AHcTojlNBdD/3/KxIKlg8sxIWHfOtQszLvOpagLTO+bjC3u7SAszu1lf//u7JJC50aUSH+BVWDD/KvaA6Gfn5g==", - "dev": true, - "license": "WTFPL", - "dependencies": { - "@azu/format-text": "^1.0.1" - } - }, - "node_modules/@azure-rest/core-client": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@azure-rest/core-client/-/core-client-2.4.0.tgz", - "integrity": "sha512-CjMFBcmnt0YNdRcxSSoZbtZNXudLlicdml7UrPsV03nHiWB+Bq5cu5ctieyaCuRtU7jm7+SOFtiE/g4pBFPKKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.3.0", - "@azure/core-rest-pipeline": "^1.5.0", - "@azure/core-tracing": "^1.0.1", - "@typespec/ts-http-runtime": "^0.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", - "license": "MIT", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-auth": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.9.0.tgz", - "integrity": "sha512-FPwHpZywuyasDSLMqJ6fhbOK3TqUdviZNF8OqRGA4W5Ewib2lEEZ+pBsYcBa88B2NGO/SEnYPGhyBqNlE8ilSw==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-util": "^1.11.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-client": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.2.tgz", - "integrity": "sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==", - "dev": true, - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.4.0", - "@azure/core-rest-pipeline": "^1.9.1", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.6.1", - "@azure/logger": "^1.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-http-compat": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@azure/core-http-compat/-/core-http-compat-2.3.0.tgz", - "integrity": "sha512-qLQujmUypBBG0gxHd0j6/Jdmul6ttl24c8WGiLXIk7IHXdBlfoBqW27hyz3Xn6xbfdyVSarl1Ttbk0AwnZBYCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-client": "^1.3.0", - "@azure/core-rest-pipeline": "^1.20.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-http-compat/node_modules/@azure/core-rest-pipeline": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.21.0.tgz", - "integrity": "sha512-a4MBwe/5WKbq9MIxikzgxLBbruC5qlkFYlBdI7Ev50Y7ib5Vo/Jvt5jnJo7NaWeJ908LCHL0S1Us4UMf1VoTfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.8.0", - "@azure/core-tracing": "^1.0.1", - "@azure/core-util": "^1.11.0", - "@azure/logger": "^1.0.0", - "@typespec/ts-http-runtime": "^0.2.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-lro": { - "version": "2.7.2", - "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.7.2.tgz", - "integrity": "sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==", - "dev": true, - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-util": "^1.2.0", - "@azure/logger": "^1.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-paging": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.6.2.tgz", - "integrity": "sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==", - "dev": true, - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-rest-pipeline": { - "version": "1.16.3", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.16.3.tgz", - "integrity": "sha512-VxLk4AHLyqcHsfKe4MZ6IQ+D+ShuByy+RfStKfSjxJoL3WBWq17VNmrz8aT8etKzqc2nAeIyLxScjpzsS4fz8w==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.4.0", - "@azure/core-tracing": "^1.0.1", - "@azure/core-util": "^1.9.0", - "@azure/logger": "^1.0.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-tracing": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.2.0.tgz", - "integrity": "sha512-UKTiEJPkWcESPYJz3X5uKRYyOcJD+4nYph+KpfdPRnQJVrZfk0KJgdnaAWKfhsBBtAf/D58Az4AvCJEmWgIBAg==", - "license": "MIT", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-util": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.11.0.tgz", - "integrity": "sha512-DxOSLua+NdpWoSqULhjDyAZTXFdP/LKkqtYuxxz1SCN289zk3OG8UOpnCQAz/tygyACBtWp/BoO72ptK7msY8g==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/identity": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.9.1.tgz", - "integrity": "sha512-986D7Cf1AOwYqSDtO/FnMAyk/Jc8qpftkGsxuehoh4F85MhQ4fICBGX/44+X1y78lN4Sqib3Bsoaoh/FvOGgmg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.9.0", - "@azure/core-client": "^1.9.2", - "@azure/core-rest-pipeline": "^1.17.0", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.11.0", - "@azure/logger": "^1.0.0", - "@azure/msal-browser": "^4.2.0", - "@azure/msal-node": "^3.5.0", - "open": "^10.1.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/identity/node_modules/@azure/core-rest-pipeline": { - "version": "1.19.0", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.19.0.tgz", - "integrity": "sha512-bM3308LRyg5g7r3Twprtqww0R/r7+GyVxj4BafcmVPo4WQoGt5JXuaqxHEFjw2o3rvFZcUPiqJMg6WuvEEeVUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.8.0", - "@azure/core-tracing": "^1.0.1", - "@azure/core-util": "^1.11.0", - "@azure/logger": "^1.0.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/keyvault-common": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@azure/keyvault-common/-/keyvault-common-2.0.0.tgz", - "integrity": "sha512-wRLVaroQtOqfg60cxkzUkGKrKMsCP6uYXAOomOIysSMyt1/YM0eUn9LqieAWM8DLcU4+07Fio2YGpPeqUbpP9w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.3.0", - "@azure/core-client": "^1.5.0", - "@azure/core-rest-pipeline": "^1.8.0", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.10.0", - "@azure/logger": "^1.1.4", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/keyvault-secrets": { - "version": "4.10.0", - "resolved": "https://registry.npmjs.org/@azure/keyvault-secrets/-/keyvault-secrets-4.10.0.tgz", - "integrity": "sha512-WvXc3h2hqHL1pMzUU7ANE2RBKoxjK3JQc0YNn6GUFvOWQtf2ZR+sH4/5cZu8zAg62v9qLCduBN7065nHKl+AOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure-rest/core-client": "^2.3.3", - "@azure/abort-controller": "^2.1.2", - "@azure/core-auth": "^1.9.0", - "@azure/core-http-compat": "^2.2.0", - "@azure/core-lro": "^2.7.2", - "@azure/core-paging": "^1.6.2", - "@azure/core-rest-pipeline": "^1.19.0", - "@azure/core-tracing": "^1.2.0", - "@azure/core-util": "^1.11.0", - "@azure/keyvault-common": "^2.0.0", - "@azure/logger": "^1.1.4", - "tslib": "^2.8.1" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/keyvault-secrets/node_modules/@azure/core-rest-pipeline": { - "version": "1.21.0", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.21.0.tgz", - "integrity": "sha512-a4MBwe/5WKbq9MIxikzgxLBbruC5qlkFYlBdI7Ev50Y7ib5Vo/Jvt5jnJo7NaWeJ908LCHL0S1Us4UMf1VoTfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-auth": "^1.8.0", - "@azure/core-tracing": "^1.0.1", - "@azure/core-util": "^1.11.0", - "@azure/logger": "^1.0.0", - "@typespec/ts-http-runtime": "^0.2.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/logger": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.1.4.tgz", - "integrity": "sha512-4IXXzcCdLdlXuCG+8UKEwLA1T1NHqUfanhXYHiQTn+6sfWCZXduqbtXDGceg3Ce5QxTGo7EqmbV6Bi+aqKuClQ==", - "license": "MIT", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/msal-browser": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.12.0.tgz", - "integrity": "sha512-WD1lmVWchg7wn1mI7Tr4v7QPyTwK+8Nuyje3jRpOFENLRLEBsdK8VVdTw3C+TypZmYn4cOAdj3zREnuFXgvfIA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure/msal-common": "15.6.0" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@azure/msal-common": { - "version": "15.6.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.6.0.tgz", - "integrity": "sha512-EotmBz42apYGjqiIV9rDUdptaMptpTn4TdGf3JfjLvFvinSe9BJ6ywU92K9ky+t/b0ghbeTSe9RfqlgLh8f2jA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@azure/msal-node": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.6.3.tgz", - "integrity": "sha512-95wjsKGyUcAd5tFmQBo5Ug/kOj+hFh/8FsXuxluEvdfbgg6xCimhSP9qnyq6+xIg78/jREkBD1/BSqd7NIDDYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure/msal-common": "15.8.1", - "jsonwebtoken": "^9.0.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@azure/msal-node/node_modules/@azure/msal-common": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.8.1.tgz", - "integrity": "sha512-ltIlFK5VxeJ5BurE25OsJIfcx1Q3H/IZg2LjV9d4vmH+5t4c1UCyRQ/HgKLgXuCZShs7qfc/TC95GYZfsUsJUQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@azure/opentelemetry-instrumentation-azure-sdk": { - "version": "1.0.0-beta.5", - "resolved": "https://registry.npmjs.org/@azure/opentelemetry-instrumentation-azure-sdk/-/opentelemetry-instrumentation-azure-sdk-1.0.0-beta.5.tgz", - "integrity": "sha512-fsUarKQDvjhmBO4nIfaZkfNSApm1hZBzcvpNbSrXdcUBxu7lRvKsV5DnwszX7cnhLyVOW9yl1uigtRQ1yDANjA==", - "dependencies": { - "@azure/core-tracing": "^1.0.0", - "@azure/logger": "^1.0.0", - "@opentelemetry/api": "^1.4.1", - "@opentelemetry/core": "^1.15.2", - "@opentelemetry/instrumentation": "^0.41.2", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", - "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.27.1", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-string-parser": { - "version": "7.25.9", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", - "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", - "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/parser": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.7.tgz", - "integrity": "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/types": "^7.26.7" - }, - "bin": { - "parser": "bin/babel-parser.js" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.27.1", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.1.tgz", - "integrity": "sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/types": { - "version": "7.26.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.7.tgz", - "integrity": "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.25.9", - "@babel/helper-validator-identifier": "^7.25.9" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@bufbuild/protobuf": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.0.0.tgz", - "integrity": "sha512-sw2JhwJyvyL0zlhG61aDzOVryEfJg2PDZFSV7i7IdC7nAE41WuXCru3QWLGiP87At0BMzKOoKO/FqEGoKygGZQ==", - "dev": true - }, - "node_modules/@c4312/scip": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@c4312/scip/-/scip-0.1.0.tgz", - "integrity": "sha512-V1VIq3rB1tIj7n3NHIg+VgbKEYl75O+yM30GD4K5wQgdgC7taOsJU7itQdMvtkKhyCWHHuR3WZ0ijUUqPELR3g==", - "dev": true, - "dependencies": { - "@bufbuild/protobuf": "^2.0.0" - } - }, - "node_modules/@ctrl/tinycolor": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", - "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/@electron/get": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz", - "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "env-paths": "^2.2.0", - "fs-extra": "^8.1.0", - "got": "^11.8.5", - "progress": "^2.0.3", - "semver": "^6.2.0", - "sumchecker": "^3.0.1" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "global-agent": "^3.0.0" - } - }, - "node_modules/@electron/get/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@emnapi/core": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.3.tgz", - "integrity": "sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.0.2", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.5.0.tgz", - "integrity": "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.2.tgz", - "integrity": "sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emotion/hash": { - "version": "0.9.2", - "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", - "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@es-joy/jsdoccomment": { - "version": "0.52.0", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.52.0.tgz", - "integrity": "sha512-BXuN7BII+8AyNtn57euU2Yxo9yA/KUDNzrpXyi3pfqKmBhhysR6ZWOebFh3vyPoqA3/j1SOvGgucElMGwlXing==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.8", - "@typescript-eslint/types": "^8.34.1", - "comment-parser": "1.4.1", - "esquery": "^1.6.0", - "jsdoc-type-pratt-parser": "~4.1.0" - }, - "engines": { - "node": ">=20.11.0" - } - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.6.tgz", - "integrity": "sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.6.tgz", - "integrity": "sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.6.tgz", - "integrity": "sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.6.tgz", - "integrity": "sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.6.tgz", - "integrity": "sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.6.tgz", - "integrity": "sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.6.tgz", - "integrity": "sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.6.tgz", - "integrity": "sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.6.tgz", - "integrity": "sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.6.tgz", - "integrity": "sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.6.tgz", - "integrity": "sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.6.tgz", - "integrity": "sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.6.tgz", - "integrity": "sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.6.tgz", - "integrity": "sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.6.tgz", - "integrity": "sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.6.tgz", - "integrity": "sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.6.tgz", - "integrity": "sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.6.tgz", - "integrity": "sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.6.tgz", - "integrity": "sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.6.tgz", - "integrity": "sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.6.tgz", - "integrity": "sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.6.tgz", - "integrity": "sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.6.tgz", - "integrity": "sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.6.tgz", - "integrity": "sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.6.tgz", - "integrity": "sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.6.tgz", - "integrity": "sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", - "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", - "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/config-array": { - "version": "0.21.0", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", - "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^2.1.6", - "debug": "^4.3.1", - "minimatch": "^3.1.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/config-helpers": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.0.tgz", - "integrity": "sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/core": { - "version": "0.14.0", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", - "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", - "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^10.0.1", - "globals": "^14.0.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/js": { - "version": "9.30.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.30.1.tgz", - "integrity": "sha512-zXhuECFlyep42KZUhWjfvsmXGX39W8K8LFb8AWXM9gSV9dQB+MrJGLKvW6Zw0Ggnbpw0VHTtrhFXYe3Gym18jg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - } - }, - "node_modules/@eslint/object-schema": { - "version": "2.1.6", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", - "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.3.4", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.4.tgz", - "integrity": "sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^0.15.1", - "levn": "^0.4.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { - "version": "0.15.1", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz", - "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/@floating-ui/core": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.2.tgz", - "integrity": "sha512-wNB5ooIKHQc+Kui96jE/n69rHFWAVoxn5CAzL1Xdd8FG03cgY3MLO+GF9U3W737fYDSgPWA6MReKhBQBop6Pcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@floating-ui/utils": "^0.2.10" - } - }, - "node_modules/@floating-ui/devtools": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@floating-ui/devtools/-/devtools-0.2.1.tgz", - "integrity": "sha512-8PHJLbD6VhBh+LJ1uty/Bz30qs02NXCE5u8WpOhSewlYXUWl03GNXknr9AS2yaAWJEQaY27x7eByJs44gODBcw==", - "dev": true, - "peerDependencies": { - "@floating-ui/dom": ">=1.5.4" - } - }, - "node_modules/@floating-ui/dom": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.2.tgz", - "integrity": "sha512-7cfaOQuCS27HD7DX+6ib2OrnW+b4ZBwDNnCcT0uTyidcmyWb03FnQqJybDBoCnpdxwBSfA94UAYlRCt7mV+TbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@floating-ui/core": "^1.7.2", - "@floating-ui/utils": "^0.2.10" - } - }, - "node_modules/@floating-ui/utils": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", - "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@fluentui/keyboard-keys": { - "version": "9.0.8", - "resolved": "https://registry.npmjs.org/@fluentui/keyboard-keys/-/keyboard-keys-9.0.8.tgz", - "integrity": "sha512-iUSJUUHAyTosnXK8O2Ilbfxma+ZyZPMua5vB028Ys96z80v+LFwntoehlFsdH3rMuPsA8GaC1RE7LMezwPBPdw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@swc/helpers": "^0.5.1" - } - }, - "node_modules/@fluentui/priority-overflow": { - "version": "9.1.15", - "resolved": "https://registry.npmjs.org/@fluentui/priority-overflow/-/priority-overflow-9.1.15.tgz", - "integrity": "sha512-/3jPBBq64hRdA416grVj+ZeMBUIaKZk2S5HiRg7CKCAV1JuyF84Do0rQI6ns8Vb9XOGuc4kurMcL/UEftoEVrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@swc/helpers": "^0.5.1" - } - }, - "node_modules/@fluentui/react-accordion": { - "version": "9.7.3", - "resolved": "https://registry.npmjs.org/@fluentui/react-accordion/-/react-accordion-9.7.3.tgz", - "integrity": "sha512-RgmBfctL41DRMyHjEmTW3+850La6wk+4DziAmY/3ltciO0qjjxra5UxgTQzJGLKbkdRa0/aOfzulCtJqMo4nWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-aria": "^9.15.3", - "@fluentui/react-context-selector": "^9.2.2", - "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-motion": "^9.9.0", - "@fluentui/react-motion-components-preview": "^0.6.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-alert": { - "version": "9.0.0-beta.124", - "resolved": "https://registry.npmjs.org/@fluentui/react-alert/-/react-alert-9.0.0-beta.124.tgz", - "integrity": "sha512-yFBo3B5H9hnoaXxlkuz8wRz04DEyQ+ElYA/p5p+Vojf19Zuta8DmFZZ6JtWdtxcdnnQ4LvAfC5OYYlzdReozPA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-avatar": "^9.6.29", - "@fluentui/react-button": "^9.3.83", - "@fluentui/react-icons": "^2.0.239", - "@fluentui/react-jsx-runtime": "^9.0.39", - "@fluentui/react-tabster": "^9.21.5", - "@fluentui/react-theme": "^9.1.19", - "@fluentui/react-utilities": "^9.18.10", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-aria": { - "version": "9.15.3", - "resolved": "https://registry.npmjs.org/@fluentui/react-aria/-/react-aria-9.15.3.tgz", - "integrity": "sha512-4M+wrimplTIXpJrxyodHO2y0ncjiERd3EuGMF+LvUWqIYgyEqvShAV3qFrJ1rHKQx0F0k64Sl6dd0W7OuRSARQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-utilities": "^9.22.0", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-avatar": { - "version": "9.8.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-avatar/-/react-avatar-9.8.6.tgz", - "integrity": "sha512-V084fMhMBKZQd6Dua9g7V8DuZPAOghl2iz1XA7MeqE71nmDv0HHvkALv7GocSgquNu1zZPhwo46DcLvFGUbwsw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-badge": "^9.3.2", - "@fluentui/react-context-selector": "^9.2.2", - "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-popover": "^9.11.6", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-tooltip": "^9.7.6", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-badge": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@fluentui/react-badge/-/react-badge-9.3.2.tgz", - "integrity": "sha512-uMcSRPvb7iU9/8qt2zJiWIikmItfBMdcDEDhGPQzRf+Zp1krzEKSrkDOwF4kEMo+wPoyBWs37RMAAdLuSJPFCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-breadcrumb": { - "version": "9.2.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-breadcrumb/-/react-breadcrumb-9.2.6.tgz", - "integrity": "sha512-3ANVFDNkXQpmVHJF7Cotq404SWL/lv2NRcIcqg8zv6aCjUSC4dl8fx3QGxGsMrGZ+ckbxgcFMhsSi9XgrJVvNg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-aria": "^9.15.3", - "@fluentui/react-button": "^9.5.3", - "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-link": "^9.5.3", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-button": { - "version": "9.5.3", - "resolved": "https://registry.npmjs.org/@fluentui/react-button/-/react-button-9.5.3.tgz", - "integrity": "sha512-xkP2/+5Mwxk8kCdJkcTgP1yETvk5kKy7dM+QXCIXeOvY2BF4/eEaWTcIYL0rAuytaRPc9uMG285yXjw7gb+lSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.15.3", - "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-card": { - "version": "9.3.3", - "resolved": "https://registry.npmjs.org/@fluentui/react-card/-/react-card-9.3.3.tgz", - "integrity": "sha512-a2i7unGaEOUHr0Yn4Da2Ul6QlVeX7vlfpyjng25lOIoYbCFB55QiZX8WYyN5mnUDA+maC/nP6xCEUmjYzPongg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-text": "^9.5.2", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-carousel": { - "version": "9.7.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-carousel/-/react-carousel-9.7.6.tgz", - "integrity": "sha512-6Z52YlhXd8VzTBrT7IJqHvrxKNHt0PMiaKP9OPjRevEJggTuVAoo2uzL6H7i8DY9diuGGffZC9BuDiNts/8ULw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-aria": "^9.15.3", - "@fluentui/react-button": "^9.5.3", - "@fluentui/react-context-selector": "^9.2.2", - "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-tooltip": "^9.7.6", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1", - "embla-carousel": "^8.5.1", - "embla-carousel-autoplay": "^8.5.1", - "embla-carousel-fade": "^8.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-checkbox": { - "version": "9.4.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-checkbox/-/react-checkbox-9.4.6.tgz", - "integrity": "sha512-f74lYgmL8ENh4erg7v9FMBHJEm48rn2TRLKIHaDmI66w788iN3Txi5RA2a1NpQzuRu0Bqzbbuz+8neqrfnHfXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-field": "^9.3.6", - "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-label": "^9.2.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-color-picker": { - "version": "9.1.3", - "resolved": "https://registry.npmjs.org/@fluentui/react-color-picker/-/react-color-picker-9.1.3.tgz", - "integrity": "sha512-Q/OcaAcNq8jLaeZgO4MfDLXrPr3E6VNXtQ+6j55odZCX4iDAbjD84omf8IRjPkGAKm64fI4Rdqb5gSC1q3x+hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ctrl/tinycolor": "^3.3.4", - "@fluentui/react-context-selector": "^9.2.2", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-combobox": { - "version": "9.15.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-combobox/-/react-combobox-9.15.6.tgz", - "integrity": "sha512-F9TqfN5hFakgXkEa6QKEOjOi+kr9qDbRA0JjeDdTsw4UqXEP3SjSktKxpcaucgwBE2Sz2YeE0Ush50f7ZpsZ7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.15.3", - "@fluentui/react-context-selector": "^9.2.2", - "@fluentui/react-field": "^9.3.6", - "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-portal": "^9.6.4", - "@fluentui/react-positioning": "^9.18.5", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-components": { - "version": "9.66.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-components/-/react-components-9.66.6.tgz", - "integrity": "sha512-wcXIYlyvWMrwofGbhTl/XImwvqCI91kVf/NwqyGQw3/YKB1gWkp0ioJj37FxmYLADtTNpB5oBg2/IcsUfwUU5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-accordion": "^9.7.3", - "@fluentui/react-alert": "9.0.0-beta.124", - "@fluentui/react-aria": "^9.15.3", - "@fluentui/react-avatar": "^9.8.6", - "@fluentui/react-badge": "^9.3.2", - "@fluentui/react-breadcrumb": "^9.2.6", - "@fluentui/react-button": "^9.5.3", - "@fluentui/react-card": "^9.3.3", - "@fluentui/react-carousel": "^9.7.6", - "@fluentui/react-checkbox": "^9.4.6", - "@fluentui/react-color-picker": "^9.1.3", - "@fluentui/react-combobox": "^9.15.6", - "@fluentui/react-dialog": "^9.13.6", - "@fluentui/react-divider": "^9.3.2", - "@fluentui/react-drawer": "^9.8.6", - "@fluentui/react-field": "^9.3.6", - "@fluentui/react-image": "^9.2.2", - "@fluentui/react-infobutton": "9.0.0-beta.102", - "@fluentui/react-infolabel": "^9.3.6", - "@fluentui/react-input": "^9.6.6", - "@fluentui/react-label": "^9.2.2", - "@fluentui/react-link": "^9.5.3", - "@fluentui/react-list": "^9.2.6", - "@fluentui/react-menu": "^9.17.6", - "@fluentui/react-message-bar": "^9.5.3", - "@fluentui/react-motion": "^9.9.0", - "@fluentui/react-nav": "^9.2.2", - "@fluentui/react-overflow": "^9.4.6", - "@fluentui/react-persona": "^9.4.6", - "@fluentui/react-popover": "^9.11.6", - "@fluentui/react-portal": "^9.6.4", - "@fluentui/react-positioning": "^9.18.5", - "@fluentui/react-progress": "^9.3.6", - "@fluentui/react-provider": "^9.21.3", - "@fluentui/react-radio": "^9.4.6", - "@fluentui/react-rating": "^9.2.3", - "@fluentui/react-search": "^9.2.6", - "@fluentui/react-select": "^9.3.6", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-skeleton": "^9.3.6", - "@fluentui/react-slider": "^9.4.6", - "@fluentui/react-spinbutton": "^9.4.6", - "@fluentui/react-spinner": "^9.6.2", - "@fluentui/react-swatch-picker": "^9.3.6", - "@fluentui/react-switch": "^9.3.6", - "@fluentui/react-table": "^9.17.6", - "@fluentui/react-tabs": "^9.8.3", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-tag-picker": "^9.6.6", - "@fluentui/react-tags": "^9.6.6", - "@fluentui/react-teaching-popover": "^9.5.6", - "@fluentui/react-text": "^9.5.2", - "@fluentui/react-textarea": "^9.5.6", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-toast": "^9.5.4", - "@fluentui/react-toolbar": "^9.5.6", - "@fluentui/react-tooltip": "^9.7.6", - "@fluentui/react-tree": "^9.11.6", - "@fluentui/react-utilities": "^9.22.0", - "@fluentui/react-virtualizer": "9.0.0-alpha.100", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-context-selector": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/@fluentui/react-context-selector/-/react-context-selector-9.2.2.tgz", - "integrity": "sha512-R9710dBH2AYNbdQz0UpvSqoA8YZ8vVicyqGvWPKvDGCNbZB6GY1Cu5LbODpeAthylLXhgXxIlGEcoOpjBBpRbA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-utilities": "^9.22.0", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0", - "scheduler": ">=0.19.0 <=0.23.0" - } - }, - "node_modules/@fluentui/react-dialog": { - "version": "9.13.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-dialog/-/react-dialog-9.13.6.tgz", - "integrity": "sha512-IC5fP3VGQtO0XO08DWD9uneBdqsyCE5TIdlDsiA5rypBINGpoZ41OrNQIop1wAzT9VGSxXdTmPZkWXY8HRR6sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.15.3", - "@fluentui/react-context-selector": "^9.2.2", - "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-motion": "^9.9.0", - "@fluentui/react-motion-components-preview": "^0.6.2", - "@fluentui/react-portal": "^9.6.4", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-divider": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@fluentui/react-divider/-/react-divider-9.3.2.tgz", - "integrity": "sha512-YCaPVDhwQ3jYui0oc+R2rWnOGBS+iQqMkz7oxk3Uu+rDfH259daCkX5Wmvnvlb0sk2J9l3+cpEq++cf54Ierog==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-drawer": { - "version": "9.8.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-drawer/-/react-drawer-9.8.6.tgz", - "integrity": "sha512-ef0jfuZtHpehWosb0RONBq1wE+kSc5SUOwyytBgt8MQnOnET9nWE0x6Hg1iOLVHp56iwqzGn7s4lJQhlhZSIFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-dialog": "^9.13.6", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-motion": "^9.9.0", - "@fluentui/react-portal": "^9.6.4", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-field": { - "version": "9.3.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-field/-/react-field-9.3.6.tgz", - "integrity": "sha512-17v+WkFVeSbl70Dq0z35G8iP6kQ92S1WNjJKXSHToYDWpaMhBlwVYm7NsQQ5Veb425+q4o5bBk59KYNryOMwXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-context-selector": "^9.2.2", - "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-label": "^9.2.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-icons": { - "version": "2.0.305", - "resolved": "https://registry.npmjs.org/@fluentui/react-icons/-/react-icons-2.0.305.tgz", - "integrity": "sha512-lxJZsW4IKaPaIrlaZlvDFujztKwWXSR3tUMBUBG0WtEGoQkbrWhrt8fqzhQ9BEbq02FtifLFUpaIqiJ326//Rw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@griffel/react": "^1.0.0", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "react": ">=16.8.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-image": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/@fluentui/react-image/-/react-image-9.2.2.tgz", - "integrity": "sha512-HYBQdaYr7xt1tSlPUEGyu/U3+TF3z2s2qxN41WQwjo93fhFwnVsYR1hDYQqVFa0tIOY1/ZGG3BIvgNINAFe/hw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-infobutton": { - "version": "9.0.0-beta.102", - "resolved": "https://registry.npmjs.org/@fluentui/react-infobutton/-/react-infobutton-9.0.0-beta.102.tgz", - "integrity": "sha512-3kA4F0Vga8Ds6JGlBajLCCDOo/LmPuS786Wg7ui4ZTDYVIMzy1yp2XuVcZniifBFvEp0HQCUoDPWUV0VI3FfzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-icons": "^2.0.237", - "@fluentui/react-jsx-runtime": "^9.0.36", - "@fluentui/react-label": "^9.1.68", - "@fluentui/react-popover": "^9.9.6", - "@fluentui/react-tabster": "^9.21.0", - "@fluentui/react-theme": "^9.1.19", - "@fluentui/react-utilities": "^9.18.7", - "@griffel/react": "^1.5.14", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-infolabel": { - "version": "9.3.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-infolabel/-/react-infolabel-9.3.6.tgz", - "integrity": "sha512-19MNvTjipkieN4i6kWlaSSg1ijrfOuj3lVJ/Xsa1W7MjJUMkjKWLB0wHbJqPPu916s/k5AIvAtmoUyQoMN6x8Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-label": "^9.2.2", - "@fluentui/react-popover": "^9.11.6", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-input": { - "version": "9.6.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-input/-/react-input-9.6.6.tgz", - "integrity": "sha512-YDpbmg7Xjpkyjc1F9Xk9FmSeK8smnUhKktMMKkXJAzNnXhHebtVBra5qAGC0z2LlboROo6ZNbn4CuFmd0dCdsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-field": "^9.3.6", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-jsx-runtime": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/@fluentui/react-jsx-runtime/-/react-jsx-runtime-9.1.2.tgz", - "integrity": "sha512-igGuh0P7Gd09Kk3g6JwjnaRIRk+mluCbpf+KcAUde6bxZ/5qB50HGX+DOGWa3+RPd5240+HLBxpT3Y985INgqw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-utilities": "^9.22.0", - "@swc/helpers": "^0.5.1", - "react-is": "^17.0.2" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "react": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-jsx-runtime/node_modules/react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@fluentui/react-label": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/@fluentui/react-label/-/react-label-9.2.2.tgz", - "integrity": "sha512-4SOSVCFzl5Of4D9OBkz0K4+jpkkuLBmurRzwTvgNkArMYYW7NpZZoVzxsGJLtXYMB+Uf2zIRyHUUM0CDTtGOjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-link": { - "version": "9.5.3", - "resolved": "https://registry.npmjs.org/@fluentui/react-link/-/react-link-9.5.3.tgz", - "integrity": "sha512-sEOU1jQoZODD2kVgyjYY/h5ylicj0ojVnLW2AaXnAK6kgkUiioDGDXz7rHsmVhTqKkLfUV2ZClFjc+DHI4b64A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-list": { - "version": "9.2.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-list/-/react-list-9.2.6.tgz", - "integrity": "sha512-28QmexNGjsPiDQHmvgUnRssiM9XxjaoXkAcAn0AruW5vE4kd966A4jJp4LVkGf3N40lS6HePuEqKzJseQkuDRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-checkbox": "^9.4.6", - "@fluentui/react-context-selector": "^9.2.2", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-menu": { - "version": "9.17.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-menu/-/react-menu-9.17.6.tgz", - "integrity": "sha512-qM63MDY1ueJSlZwP1M4dVM91QpZt7YdhIKTkyVWLVIjCVwU+GAmxHk0B+23u5yjTjAEBfZvSqUaW8b33OBNv5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.15.3", - "@fluentui/react-context-selector": "^9.2.2", - "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-portal": "^9.6.4", - "@fluentui/react-positioning": "^9.18.5", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-message-bar": { - "version": "9.5.3", - "resolved": "https://registry.npmjs.org/@fluentui/react-message-bar/-/react-message-bar-9.5.3.tgz", - "integrity": "sha512-w6AQIz/O3HQX2S8LFnH7qNbhybG5KXv19BY8xeOchQJ+NAw3U1GgKX5+7UxKU/DNsBSL5adQoe3SUvexALfSUw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-button": "^9.5.3", - "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-link": "^9.5.3", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1", - "react-transition-group": "^4.4.1" - }, - "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-motion": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/@fluentui/react-motion/-/react-motion-9.9.0.tgz", - "integrity": "sha512-xgm/CkU1UvemooplEFKJL9mfGJFvzId2DJ1WYTFAa5TSZMtzOAZuPuwS/PrPNFuwjnhvCMShDj8zazgvR5i37A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-utilities": "^9.22.0", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-motion-components-preview": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/@fluentui/react-motion-components-preview/-/react-motion-components-preview-0.6.2.tgz", - "integrity": "sha512-vVFnNXQESs2VbLQMx7Quu/49D+aUmXTS6/oTEfkK5fW5CCec11K4BNYkaQMorhMudbdBIPz4d4thzNx7YenHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-motion": "*", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-nav": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/@fluentui/react-nav/-/react-nav-9.2.2.tgz", - "integrity": "sha512-29+lwuzoBBm8G8twuMaC3drwfqMKSy0y7VNwMmBYYrAYKyQDl2G3zNQwkeSp2FlsW+lt9CpGXhOVqRgMX6nvMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-aria": "^9.15.3", - "@fluentui/react-button": "^9.5.3", - "@fluentui/react-context-selector": "^9.2.2", - "@fluentui/react-divider": "^9.3.2", - "@fluentui/react-drawer": "^9.8.6", - "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-motion": "^9.9.0", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-tooltip": "^9.7.6", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-overflow": { - "version": "9.4.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-overflow/-/react-overflow-9.4.6.tgz", - "integrity": "sha512-7a3Wf21lPSmMnmxYNyIPEEEne5SJCsd0f/3Jhmx32w1t0xW69dErq+za6MGuKo5n3B0aNGX+ItH9q8UmnzLXOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/priority-overflow": "^9.1.15", - "@fluentui/react-context-selector": "^9.2.2", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-persona": { - "version": "9.4.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-persona/-/react-persona-9.4.6.tgz", - "integrity": "sha512-2tC3YzzOrOHcGS0XD0+WMmnm3l25qfxp+1xGStOKE59WgDDRWILZ8Cpr16TdmQFtw4b1z7xxLt44yMV0560m0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-avatar": "^9.8.6", - "@fluentui/react-badge": "^9.3.2", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-popover": { - "version": "9.11.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-popover/-/react-popover-9.11.6.tgz", - "integrity": "sha512-JgyM5gugBzx5F2ZB0pNuK0tG7DtLUInIHUtRdYv2jS+liUdDt+6KICSHZl/xNK1Tv+fNUtbWWXpvXtw/BMCnNg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.15.3", - "@fluentui/react-context-selector": "^9.2.2", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-portal": "^9.6.4", - "@fluentui/react-positioning": "^9.18.5", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-portal": { - "version": "9.6.4", - "resolved": "https://registry.npmjs.org/@fluentui/react-portal/-/react-portal-9.6.4.tgz", - "integrity": "sha512-7NTxAZ0rMjbD0bvZUdcicbSHmbf/WnTT5YOhmevHWapEuBG4is/mZkMnn0s+x8heUrkE3Xa0NOaVpZvzG2p/ew==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1", - "use-disposable": "^1.0.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-positioning": { - "version": "9.18.5", - "resolved": "https://registry.npmjs.org/@fluentui/react-positioning/-/react-positioning-9.18.5.tgz", - "integrity": "sha512-cm3ZyLFpI9zOvO66UAT45Kn2f332Vw2WXUsUF4G+8WcnXroh/9kX4Wm0CfIbM5X7OOZW08mdq6LFi+MPbD+HhQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@floating-ui/devtools": "0.2.1", - "@floating-ui/dom": "^1.6.12", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1", - "use-sync-external-store": "^1.2.0" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-progress": { - "version": "9.3.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-progress/-/react-progress-9.3.6.tgz", - "integrity": "sha512-/wgg8D+Rtq4HyOWgrehXNh1NPONivivXQaR7vO+1g6A2O8kCAqKhcxGDLFDrVTz2ngbqkVKpnBaJcTYBUO9+1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-field": "^9.3.6", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-provider": { - "version": "9.21.3", - "resolved": "https://registry.npmjs.org/@fluentui/react-provider/-/react-provider-9.21.3.tgz", - "integrity": "sha512-2f6hvro9o3xrIuV2LsTd4CsIPIv49J3uyDjN3psA83KSKc8LxmmduJrj5SMfZvlXLgdd8pL+Vy6ugwUCUysVDg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/core": "^1.16.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-radio": { - "version": "9.4.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-radio/-/react-radio-9.4.6.tgz", - "integrity": "sha512-/9J4JqSK82+tYKyVRe+F6ClEGbjXGSXghQxZu7Yy6pGzGIkrOjTSN43fY7NBUZTO0gj+kGhGc/ouVT7StNzCiA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-field": "^9.3.6", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-label": "^9.2.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-rating": { - "version": "9.2.3", - "resolved": "https://registry.npmjs.org/@fluentui/react-rating/-/react-rating-9.2.3.tgz", - "integrity": "sha512-hm2bgdkQKBPpxao3ktHD1G45g76nYaBWxXkG2k5oxXCfFAZlaFumk0Wj8R5FnkHT56HRxpElIHXwcJp/izmMKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-search": { - "version": "9.2.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-search/-/react-search-9.2.6.tgz", - "integrity": "sha512-EnD94bhVWmMfI7wxjfl/ZZOwlwkZidCzi8kZTnv+TVx3BsxzScnig7H2YKubomON0gNDuxLttRuE6uPwu0llhQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-input": "^9.6.6", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-select": { - "version": "9.3.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-select/-/react-select-9.3.6.tgz", - "integrity": "sha512-Ivbbx8MNTfd9ikgKZAKYljDbvcVfrEl4CnpRqPcLgHcRFzAQzM1Ys1Dii08iYjKkSYj1FK7haMtthQc5P21eKQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-field": "^9.3.6", - "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-shared-contexts": { - "version": "9.24.0", - "resolved": "https://registry.npmjs.org/@fluentui/react-shared-contexts/-/react-shared-contexts-9.24.0.tgz", - "integrity": "sha512-GA+uLv711E+YGrAP/aVB15ozvNCiuB2ZrPDC9aYF+A6sRDxoZZG8VgHjhQ/YWJfVjDXLky4ihirknzsW1sjGtg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-theme": "^9.1.24", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "react": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-skeleton": { - "version": "9.3.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-skeleton/-/react-skeleton-9.3.6.tgz", - "integrity": "sha512-K8aPQCV7ayHC4bC3NLsTKvNR7w+HoFrEQsTDf73W4BlAhJ2AbI/r6aIBVzV11olOvIkOHqE7w52rc3Lc+4B52Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-field": "^9.3.6", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-slider": { - "version": "9.4.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-slider/-/react-slider-9.4.6.tgz", - "integrity": "sha512-yKqq2grLjQiNBq1EApZb0N8msX/u9U/4Bbq0Fo/+bhf11pa+hCMQ5UkQLkrKjik5v/pF3ZSO7EOyMKxmlrB8zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-field": "^9.3.6", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-spinbutton": { - "version": "9.4.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-spinbutton/-/react-spinbutton-9.4.6.tgz", - "integrity": "sha512-LF95WmP8DZ6wq07Z4jMoTmEf81WPn21ubysURBmBEXmA5zSRD61jutW2ferpWxxXGQKtZ/NFnovFqX/AhR6Nug==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-field": "^9.3.6", - "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-spinner": { - "version": "9.6.2", - "resolved": "https://registry.npmjs.org/@fluentui/react-spinner/-/react-spinner-9.6.2.tgz", - "integrity": "sha512-HxgUQ2ZJtiGqMFlln5WicE/++89NRCELQbkxRvmJapqbYkXI108Cz/JF2RaLyWSYMEyaxHUd1sdxbCEOuRegpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-label": "^9.2.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-swatch-picker": { - "version": "9.3.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-swatch-picker/-/react-swatch-picker-9.3.6.tgz", - "integrity": "sha512-XD0RxoTH5kDuOlrXwt/BI8ZdIAoprabN+sc6Yu8JE9W9jzXMDWlpqHYwECj3QmvSWRBgJ5B3hHNcDEdhjMpwhw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-context-selector": "^9.2.2", - "@fluentui/react-field": "^9.3.6", - "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-switch": { - "version": "9.3.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-switch/-/react-switch-9.3.6.tgz", - "integrity": "sha512-yP+tXmsChEy2UJYf5SHP8ssfxjyVdavikb/SD2QAlZYutNSimuUdA1mypxkdzkv7li98fEnaYHqDSj3NTAQt3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-field": "^9.3.6", - "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-label": "^9.2.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-table": { - "version": "9.17.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-table/-/react-table-9.17.6.tgz", - "integrity": "sha512-YhAlzD8Cf8A59vKsf9xtpqbcH7hHbtPBWzFyLCP/y/VVYZ0fAlcwULbrvvgc+PpdBur7XeczxGGIqe589w6vuw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.15.3", - "@fluentui/react-avatar": "^9.8.6", - "@fluentui/react-checkbox": "^9.4.6", - "@fluentui/react-context-selector": "^9.2.2", - "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-radio": "^9.4.6", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-tabs": { - "version": "9.8.3", - "resolved": "https://registry.npmjs.org/@fluentui/react-tabs/-/react-tabs-9.8.3.tgz", - "integrity": "sha512-UGcJoz6hbYmxC0yPmGJ3wls3bm3p/ROF6p/PzRvk3ceKXpQHiXElC2TIDgm0VPwIaA0HvYl+9AptSlLtdQe6EQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-context-selector": "^9.2.2", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-tabster": { - "version": "9.25.3", - "resolved": "https://registry.npmjs.org/@fluentui/react-tabster/-/react-tabster-9.25.3.tgz", - "integrity": "sha512-y5sNkYqZP3CaQLRfWwqqlenb5TGjb8lAExr68QYkuwzAgvqlNguxTbYM2PSgWG14tfqmW8cG9UxQdp9LGw2Nfw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1", - "keyborg": "^2.6.0", - "tabster": "^8.5.5" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-tag-picker": { - "version": "9.6.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-tag-picker/-/react-tag-picker-9.6.6.tgz", - "integrity": "sha512-AsuPgk5+BrEMRbVSHdvt7B623jeY5o64f2CAXKeOBzEjskOQLLETLRd1vZo1nkJLweh2kHE3rI4H9WQcEGarmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.15.3", - "@fluentui/react-combobox": "^9.15.6", - "@fluentui/react-context-selector": "^9.2.2", - "@fluentui/react-field": "^9.3.6", - "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-portal": "^9.6.4", - "@fluentui/react-positioning": "^9.18.5", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-tags": "^9.6.6", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-tags": { - "version": "9.6.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-tags/-/react-tags-9.6.6.tgz", - "integrity": "sha512-IESredJstOTuoWJasCNdfvtUh/LLs6mYeVqn3C4mkHyngP/vepXyvvcP/e/ZI2mZi1SWE7MhrM1ubNIUOrVCIQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.15.3", - "@fluentui/react-avatar": "^9.8.6", - "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-teaching-popover": { - "version": "9.5.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-teaching-popover/-/react-teaching-popover-9.5.6.tgz", - "integrity": "sha512-IugbjJbyqWOflGg11hvvlRfdiOVvJT8wCS2BIGIwWxEZa31EdHXEHhrCg2DjEAtT+d3FEyGhEO7v31mHczIEsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-aria": "^9.15.3", - "@fluentui/react-button": "^9.5.3", - "@fluentui/react-context-selector": "^9.2.2", - "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-popover": "^9.11.6", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1", - "use-sync-external-store": "^1.2.0" - }, - "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-text": { - "version": "9.5.2", - "resolved": "https://registry.npmjs.org/@fluentui/react-text/-/react-text-9.5.2.tgz", - "integrity": "sha512-zhTBiy6k61e/my3VbTvFGlvOO6sQ3umFA3CTrvTuTB093giN6OqQ5rvHky2XwEQiVad9WoQ14MPgO0K0ORLluQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-textarea": { - "version": "9.5.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-textarea/-/react-textarea-9.5.6.tgz", - "integrity": "sha512-yLUntuLjNvrLJ+g2OjtImdkYNAqPdTfG5X9xPvt6h447c0yFzAd6oW9NqjAahDoEYTwMwWUb5+zv7cR88MHbUg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-field": "^9.3.6", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-theme": { - "version": "9.1.24", - "resolved": "https://registry.npmjs.org/@fluentui/react-theme/-/react-theme-9.1.24.tgz", - "integrity": "sha512-OhVKYD7CMYHxzJEn4PtIszledj8hbQJNWBMfIZsp4Sytdp9vCi0txIQUx4BhS1WqtQPhNGCF16eW9Q3NRrnIrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/tokens": "1.0.0-alpha.21", - "@swc/helpers": "^0.5.1" - } - }, - "node_modules/@fluentui/react-toast": { - "version": "9.5.4", - "resolved": "https://registry.npmjs.org/@fluentui/react-toast/-/react-toast-9.5.4.tgz", - "integrity": "sha512-iLcNrtu3iVp4h8pw9KumhXwUrM8uUm3EU57hBU1FxXQpreEpnPuJLxQx1NmuNCeiBMFg2S0rtfsqI/aTWvG2nQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.15.3", - "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-motion": "^9.9.0", - "@fluentui/react-motion-components-preview": "^0.6.2", - "@fluentui/react-portal": "^9.6.4", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-toolbar": { - "version": "9.5.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-toolbar/-/react-toolbar-9.5.6.tgz", - "integrity": "sha512-nDujwd9vLwykAeF3lOVBuXZmGcyDLjwRcLHuvTKUGNvykr8TDbxeCq9ln2ZvfNhXHCzYvNnWPBIJKbndOVK+oQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-button": "^9.5.3", - "@fluentui/react-context-selector": "^9.2.2", - "@fluentui/react-divider": "^9.3.2", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-radio": "^9.4.6", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-tooltip": { - "version": "9.7.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-tooltip/-/react-tooltip-9.7.6.tgz", - "integrity": "sha512-xtkJ0A20jmmqw5KFypJZXpubHyKK4vQekjbr9IUFdHaxbyAo+9yxrYcdGQS0MdNnYwSlf8x8ShdwsUU3VccqVA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-portal": "^9.6.4", - "@fluentui/react-positioning": "^9.18.5", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-tree": { - "version": "9.11.6", - "resolved": "https://registry.npmjs.org/@fluentui/react-tree/-/react-tree-9.11.6.tgz", - "integrity": "sha512-H14/IT0g77Z8DSMCwD88fXqeqOeot+ajh49FKgfU6K+xefz1/YgYNJ/Xy3ukODHkZoznS+XfvjRXnlHer5U/1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-aria": "^9.15.3", - "@fluentui/react-avatar": "^9.8.6", - "@fluentui/react-button": "^9.5.3", - "@fluentui/react-checkbox": "^9.4.6", - "@fluentui/react-context-selector": "^9.2.2", - "@fluentui/react-icons": "^2.0.245", - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-motion": "^9.9.0", - "@fluentui/react-motion-components-preview": "^0.6.2", - "@fluentui/react-radio": "^9.4.6", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-tabster": "^9.25.3", - "@fluentui/react-theme": "^9.1.24", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-utilities": { - "version": "9.22.0", - "resolved": "https://registry.npmjs.org/@fluentui/react-utilities/-/react-utilities-9.22.0.tgz", - "integrity": "sha512-O4D51FUyn5670SjduzzN1usmwWAmFPQA00Gu6jJrbDXvOXTpOAO/ApkLpSW87HChKGrj8Y0gjFHtK8xpC3qOCg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/keyboard-keys": "^9.0.8", - "@fluentui/react-shared-contexts": "^9.24.0", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "react": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/react-virtualizer": { - "version": "9.0.0-alpha.100", - "resolved": "https://registry.npmjs.org/@fluentui/react-virtualizer/-/react-virtualizer-9.0.0-alpha.100.tgz", - "integrity": "sha512-e7u3SP2Smv5+9Adey+pOerGmHq2D6Nd0ek/iWbc/o0CKX5QMeHwbUlZAbVVsrX/vwIeeZ3+qJMt+UH3hHI+wdw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@fluentui/react-jsx-runtime": "^9.1.2", - "@fluentui/react-shared-contexts": "^9.24.0", - "@fluentui/react-utilities": "^9.22.0", - "@griffel/react": "^1.5.22", - "@swc/helpers": "^0.5.1" - }, - "peerDependencies": { - "@types/react": ">=16.14.0 <19.0.0", - "@types/react-dom": ">=16.9.0 <19.0.0", - "react": ">=16.14.0 <19.0.0", - "react-dom": ">=16.14.0 <19.0.0" - } - }, - "node_modules/@fluentui/tokens": { - "version": "1.0.0-alpha.21", - "resolved": "https://registry.npmjs.org/@fluentui/tokens/-/tokens-1.0.0-alpha.21.tgz", - "integrity": "sha512-xQ1T56sNgDFGl+kJdIwhz67mHng8vcwO7Dvx5Uja4t+NRULQBgMcJ4reUo4FGF3TjufHj08pP0/OnKQgnOaSVg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@swc/helpers": "^0.5.1" - } - }, - "node_modules/@github/blackbird-external-ingest-utils": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@github/blackbird-external-ingest-utils/-/blackbird-external-ingest-utils-0.1.0.tgz", - "integrity": "sha512-JM3ofzZS5SMQOeFlMPhxgLmT/BcMz2PI5QxQa/N5CzKX7TWmXBI4jMmsXTQ4MlKg0jR2f4F7+VCRHXuzffnwYQ==", - "license": "MIT" - }, - "node_modules/@github/copilot": { - "version": "0.0.366", - "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-0.0.366.tgz", - "integrity": "sha512-mJ3wAvn4/yCrQBG5kcn2SOvWQSlrftkbpaAUBXX4l42y6Xsi4d9teuEdcwKOsUWLNDavpt3ecoCDnZUaCb/81A==", - "license": "SEE LICENSE IN LICENSE.md", - "bin": { - "copilot": "index.js" - }, - "engines": { - "node": ">=22" - } - }, - "node_modules/@google/genai": { - "version": "1.25.0", - "resolved": "https://registry.npmjs.org/@google/genai/-/genai-1.25.0.tgz", - "integrity": "sha512-IBNyel/umavam98SQUfvQSvh/Rp6Ql2fysQLqPyWZr5K8d768X9AO+JZU4o+3qvFDUBA0dVYUSkxyYonVcICvA==", - "license": "Apache-2.0", - "dependencies": { - "google-auth-library": "^9.14.2", - "ws": "^8.18.0" - }, - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "@modelcontextprotocol/sdk": "^1.11.4" - }, - "peerDependenciesMeta": { - "@modelcontextprotocol/sdk": { - "optional": true - } - } - }, - "node_modules/@griffel/core": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/@griffel/core/-/core-1.19.1.tgz", - "integrity": "sha512-ZItAAOm8YH1FW0ebzOxS3jwENqd+Dz4CGiPEdgkL4kr7D6mBpjjBbQC6VRXxnA+VqHeEQGy69Ll4M1peY8MX/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@emotion/hash": "^0.9.0", - "@griffel/style-types": "^1.3.0", - "csstype": "^3.1.3", - "rtl-css-js": "^1.16.1", - "stylis": "^4.2.0", - "tslib": "^2.1.0" - } - }, - "node_modules/@griffel/react": { - "version": "1.5.29", - "resolved": "https://registry.npmjs.org/@griffel/react/-/react-1.5.29.tgz", - "integrity": "sha512-xKenEIfV2PnLKVsM8yp2ZCUTknh2790937XlI88zDaO9TC8ylG10mZ3MrcgCdSecrVjKq9JKmm24tsODpkh4pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@griffel/core": "^1.19.1", - "tslib": "^2.1.0" - }, - "peerDependencies": { - "react": ">=16.8.0 <19.0.0" - } - }, - "node_modules/@griffel/style-types": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@griffel/style-types/-/style-types-1.3.0.tgz", - "integrity": "sha512-bHwD3sUE84Xwv4dH011gOKe1jul77M1S6ZFN9Tnq8pvZ48UMdY//vtES6fv7GRS5wXYT4iqxQPBluAiYAfkpmw==", - "dev": true, - "license": "MIT", - "dependencies": { - "csstype": "^3.1.3" - } - }, - "node_modules/@hediet/node-reload": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@hediet/node-reload/-/node-reload-0.8.0.tgz", - "integrity": "sha512-TX+RrahcrMAPdJAE4V3rD2rggHJHJ/jJoedx7vmDVBn8/NQRhXLc+9OqXQAu28toiSP5p9cJ77bVcrv1xr4Mmg==", - "dev": true, - "dependencies": { - "@types/node": "^12.0.7", - "@types/stack-trace": "^0.0.29" - } - }, - "node_modules/@hediet/node-reload/node_modules/@types/node": { - "version": "12.20.55", - "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", - "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", - "dev": true - }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", - "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/gitignore-to-minimatch": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", - "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "dev": true, - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", - "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@img/sharp-darwin-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", - "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.0.4" - } - }, - "node_modules/@img/sharp-darwin-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", - "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.0.4" - } - }, - "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", - "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", - "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "darwin" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", - "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", - "cpu": [ - "arm" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", - "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", - "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", - "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", - "cpu": [ - "arm64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", - "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", - "cpu": [ - "x64" - ], - "license": "LGPL-3.0-or-later", - "optional": true, - "os": [ - "linux" - ], - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-linux-arm": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", - "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", - "cpu": [ - "arm" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.0.5" - } - }, - "node_modules/@img/sharp-linux-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", - "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.0.4" - } - }, - "node_modules/@img/sharp-linux-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", - "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.0.4" - } - }, - "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", - "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", - "cpu": [ - "arm64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" - } - }, - "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", - "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.0.4" - } - }, - "node_modules/@img/sharp-win32-x64": { - "version": "0.33.5", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", - "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", - "cpu": [ - "x64" - ], - "license": "Apache-2.0 AND LGPL-3.0-or-later", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", - "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/fs-minipass": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", - "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.4" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@isaacs/fs-minipass/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jest/schemas": { - "version": "29.6.3", - "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", - "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sinclair/typebox": "^0.27.8" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@jest/schemas/node_modules/@sinclair/typebox": { - "version": "0.27.8", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", - "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", - "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", - "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@keyv/serialize": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.0.3.tgz", - "integrity": "sha512-qnEovoOp5Np2JDGonIDL6Ayihw0RhnRh6vxPuHo4RDn1UOzwEo4AeIfpL6UGIrsceWrCMiVPgwRjbHu4vYFc3g==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer": "^6.0.3" - } - }, - "node_modules/@keyv/serialize/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/@keyv/sqlite": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/@keyv/sqlite/-/sqlite-4.0.5.tgz", - "integrity": "sha512-Q7Ye2p+wDA1ufQ4SHuWfZk0c4oZJ5y73AZ28zHLWeMqgPbIDItK0dMvM5lL+B1Tl4nBPbPO00F+f7dQrS9u/IQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "sqlite3": "^5.1.7" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "keyv": "^5.3.4" - } - }, - "node_modules/@koa/cors": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@koa/cors/-/cors-5.0.0.tgz", - "integrity": "sha512-x/iUDjcS90W69PryLDIMgFyV21YLTnG9zOpPXS7Bkt2b8AsY3zZsIpOLBkYr9fBcF3HbkKaER5hOBZLfpLgYNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/@koa/router": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/@koa/router/-/router-13.1.0.tgz", - "integrity": "sha512-mNVu1nvkpSd8Q8gMebGbCkDWJ51ODetrFvLKYusej+V0ByD4btqHYnPIzTBLXnQMVUlm/oxVwqmWBY3zQfZilw==", - "dev": true, - "license": "MIT", - "dependencies": { - "http-errors": "^2.0.0", - "koa-compose": "^4.1.0", - "path-to-regexp": "^6.3.0" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/@microsoft/1ds-core-js": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/@microsoft/1ds-core-js/-/1ds-core-js-4.3.10.tgz", - "integrity": "sha512-5fSZmkGwWkH+mrIA5M1GYPZdPM+SjXwCCl2Am7VhFoVwOBJNhRnwvIpAdzw6sFjiebN/rz+/YH0NdxztGZSa9Q==", - "license": "MIT", - "dependencies": { - "@microsoft/applicationinsights-core-js": "3.3.10", - "@microsoft/applicationinsights-shims": "3.0.1", - "@microsoft/dynamicproto-js": "^2.0.3", - "@nevware21/ts-async": ">= 0.5.4 < 2.x", - "@nevware21/ts-utils": ">= 0.11.8 < 2.x" - } - }, - "node_modules/@microsoft/1ds-post-js": { - "version": "4.3.10", - "resolved": "https://registry.npmjs.org/@microsoft/1ds-post-js/-/1ds-post-js-4.3.10.tgz", - "integrity": "sha512-VSLjc9cT+Y+eTiSfYltJHJCejn8oYr0E6Pq2BMhOEO7F6IyLGYIxzKKvo78ze9x+iHX7KPTATcZ+PFgjGXuNqg==", - "license": "MIT", - "dependencies": { - "@microsoft/1ds-core-js": "4.3.10", - "@microsoft/applicationinsights-shims": "3.0.1", - "@microsoft/dynamicproto-js": "^2.0.3", - "@nevware21/ts-async": ">= 0.5.4 < 2.x", - "@nevware21/ts-utils": ">= 0.11.8 < 2.x" - } - }, - "node_modules/@microsoft/applicationinsights-channel-js": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-3.3.10.tgz", - "integrity": "sha512-iolFLz1ocWAzIQqHIEjjov3gNTPkgFQ4ArHnBcJEYoffOGWlJt6copaevS5YPI5rHzmbySsengZ8cLJJBBrXzQ==", - "license": "MIT", - "dependencies": { - "@microsoft/applicationinsights-common": "3.3.10", - "@microsoft/applicationinsights-core-js": "3.3.10", - "@microsoft/applicationinsights-shims": "3.0.1", - "@microsoft/dynamicproto-js": "^2.0.3", - "@nevware21/ts-async": ">= 0.5.4 < 2.x", - "@nevware21/ts-utils": ">= 0.11.8 < 2.x" - }, - "peerDependencies": { - "tslib": ">= 1.0.0" - } - }, - "node_modules/@microsoft/applicationinsights-common": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-common/-/applicationinsights-common-3.3.10.tgz", - "integrity": "sha512-RVIenPIvNgZCbjJdALvLM4rNHgAFuHI7faFzHCgnI6S2WCUNGHeXlQTs9EUUrL+n2TPp9/cd0KKMILU5VVyYiA==", - "license": "MIT", - "dependencies": { - "@microsoft/applicationinsights-core-js": "3.3.10", - "@microsoft/applicationinsights-shims": "3.0.1", - "@microsoft/dynamicproto-js": "^2.0.3", - "@nevware21/ts-utils": ">= 0.11.8 < 2.x" - }, - "peerDependencies": { - "tslib": ">= 1.0.0" - } - }, - "node_modules/@microsoft/applicationinsights-core-js": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.3.10.tgz", - "integrity": "sha512-5yKeyassZTq2l+SAO4npu6LPnbS++UD+M+Ghjm9uRzoBwD8tumFx0/F8AkSVqbniSREd+ztH/2q2foewa2RZyg==", - "license": "MIT", - "dependencies": { - "@microsoft/applicationinsights-shims": "3.0.1", - "@microsoft/dynamicproto-js": "^2.0.3", - "@nevware21/ts-async": ">= 0.5.4 < 2.x", - "@nevware21/ts-utils": ">= 0.11.8 < 2.x" - }, - "peerDependencies": { - "tslib": ">= 1.0.0" - } - }, - "node_modules/@microsoft/applicationinsights-shims": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-shims/-/applicationinsights-shims-3.0.1.tgz", - "integrity": "sha512-DKwboF47H1nb33rSUfjqI6ryX29v+2QWcTrRvcQDA32AZr5Ilkr7whOOSsD1aBzwqX0RJEIP1Z81jfE3NBm/Lg==", - "license": "MIT", - "dependencies": { - "@nevware21/ts-utils": ">= 0.9.4 < 2.x" - } - }, - "node_modules/@microsoft/applicationinsights-web-basic": { - "version": "3.3.10", - "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web-basic/-/applicationinsights-web-basic-3.3.10.tgz", - "integrity": "sha512-AZib5DAT3NU0VT0nLWEwXrnoMDDgZ/5S4dso01CNU5ELNxLdg+1fvchstlVdMy4FrAnxzs8Wf/GIQNFYOVgpAw==", - "license": "MIT", - "dependencies": { - "@microsoft/applicationinsights-channel-js": "3.3.10", - "@microsoft/applicationinsights-common": "3.3.10", - "@microsoft/applicationinsights-core-js": "3.3.10", - "@microsoft/applicationinsights-shims": "3.0.1", - "@microsoft/dynamicproto-js": "^2.0.3", - "@nevware21/ts-async": ">= 0.5.4 < 2.x", - "@nevware21/ts-utils": ">= 0.11.8 < 2.x" - }, - "peerDependencies": { - "tslib": ">= 1.0.0" - } - }, - "node_modules/@microsoft/applicationinsights-web-snippet": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web-snippet/-/applicationinsights-web-snippet-1.0.1.tgz", - "integrity": "sha512-2IHAOaLauc8qaAitvWS+U931T+ze+7MNWrDHY47IENP5y2UA0vqJDu67kWZDdpCN1fFC77sfgfB+HV7SrKshnQ==" - }, - "node_modules/@microsoft/dynamicproto-js": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@microsoft/dynamicproto-js/-/dynamicproto-js-2.0.3.tgz", - "integrity": "sha512-JTWTU80rMy3mdxOjjpaiDQsTLZ6YSGGqsjURsY6AUQtIj0udlF/jYmhdLZu8693ZIC0T1IwYnFa0+QeiMnziBA==", - "license": "MIT", - "dependencies": { - "@nevware21/ts-utils": ">= 0.10.4 < 2.x" - } - }, - "node_modules/@microsoft/fast-element": { - "version": "1.14.0", - "resolved": "https://registry.npmjs.org/@microsoft/fast-element/-/fast-element-1.14.0.tgz", - "integrity": "sha512-zXvuSOzvsu8zDTy9eby8ix8VqLop2rwKRgp++ZN2kTCsoB3+QJVoaGD2T/Cyso2ViZQFXNpiNCVKfnmxBvmWkQ==", - "license": "MIT" - }, - "node_modules/@microsoft/fast-foundation": { - "version": "2.50.0", - "resolved": "https://registry.npmjs.org/@microsoft/fast-foundation/-/fast-foundation-2.50.0.tgz", - "integrity": "sha512-8mFYG88Xea1jZf2TI9Lm/jzZ6RWR8x29r24mGuLojNYqIR2Bl8+hnswoV6laApKdCbGMPKnsAL/O68Q0sRxeVg==", - "license": "MIT", - "dependencies": { - "@microsoft/fast-element": "^1.14.0", - "@microsoft/fast-web-utilities": "^5.4.1", - "tabbable": "^5.2.0", - "tslib": "^1.13.0" - } - }, - "node_modules/@microsoft/fast-foundation/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "license": "0BSD" - }, - "node_modules/@microsoft/fast-react-wrapper": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@microsoft/fast-react-wrapper/-/fast-react-wrapper-0.3.25.tgz", - "integrity": "sha512-jKzmk2xJV93RL/jEFXEZgBvXlKIY4N4kXy3qrjmBfFpqNi3VjY+oUTWyMnHRMC5EUhIFxD+Y1VD4u9uIPX3jQw==", - "license": "MIT", - "dependencies": { - "@microsoft/fast-element": "^1.14.0", - "@microsoft/fast-foundation": "^2.50.0" - }, - "peerDependencies": { - "react": ">=16.9.0" - } - }, - "node_modules/@microsoft/fast-web-utilities": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/@microsoft/fast-web-utilities/-/fast-web-utilities-5.4.1.tgz", - "integrity": "sha512-ReWYncndjV3c8D8iq9tp7NcFNc1vbVHvcBFPME2nNFKNbS1XCesYZGlIlf3ot5EmuOXPlrzUHOWzQ2vFpIkqDg==", - "license": "MIT", - "dependencies": { - "exenv-es6": "^1.1.1" - } - }, - "node_modules/@microsoft/tiktokenizer": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@microsoft/tiktokenizer/-/tiktokenizer-1.0.10.tgz", - "integrity": "sha512-k6ujcOTZEEjvb5CWHA3LTVfwLw+if6rW9fp0JfYRez0Ex3wKq42tnovoXs107pGMS39qPdiV1+Dv8dJgROshJg==", - "license": "MIT", - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.11.tgz", - "integrity": "sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@emnapi/core": "^1.4.3", - "@emnapi/runtime": "^1.4.3", - "@tybys/wasm-util": "^0.9.0" - } - }, - "node_modules/@nevware21/ts-async": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/@nevware21/ts-async/-/ts-async-0.5.4.tgz", - "integrity": "sha512-IBTyj29GwGlxfzXw2NPnzty+w0Adx61Eze1/lknH/XIVdxtF9UnOpk76tnrHXWa6j84a1RR9hsOcHQPFv9qJjA==", - "license": "MIT", - "dependencies": { - "@nevware21/ts-utils": ">= 0.11.6 < 2.x" - } - }, - "node_modules/@nevware21/ts-utils": { - "version": "0.12.5", - "resolved": "https://registry.npmjs.org/@nevware21/ts-utils/-/ts-utils-0.12.5.tgz", - "integrity": "sha512-JPQZWPKQJjj7kAftdEZL0XDFfbMgXCGiUAZe0d7EhLC3QlXTlZdSckGqqRIQ2QNl0VTEZyZUvRBw6Ednw089Fw==", - "license": "MIT" - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@octokit/openapi-types": { - "version": "25.1.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.1.0.tgz", - "integrity": "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@octokit/types": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", - "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^25.1.0" - } - }, - "node_modules/@opentelemetry/api": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.6.0.tgz", - "integrity": "sha512-OWlrQAnWn9577PhVgqjUvMr1pg57Bc4jv0iL4w0PRuOSRvq67rvHW9Ie/dZVMvCzhSCB+UxhcY/PmCmFj33Q+g==", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@opentelemetry/core": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", - "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/semantic-conventions": "1.28.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", - "license": "Apache-2.0", - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/instrumentation": { - "version": "0.41.2", - "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.41.2.tgz", - "integrity": "sha512-rxU72E0pKNH6ae2w5+xgVYZLzc5mlxAbGzF4shxMVK8YC2QQsfN38B2GPbj0jvrKWWNUElfclQ+YTykkNg/grw==", - "dependencies": { - "@types/shimmer": "^1.0.2", - "import-in-the-middle": "1.4.2", - "require-in-the-middle": "^7.1.1", - "semver": "^7.5.1", - "shimmer": "^1.2.1" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.3.0" - } - }, - "node_modules/@opentelemetry/resources": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.1.tgz", - "integrity": "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/semantic-conventions": "1.28.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", - "license": "Apache-2.0", - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/sdk-trace-base": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.1.tgz", - "integrity": "sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/core": "1.30.1", - "@opentelemetry/resources": "1.30.1", - "@opentelemetry/semantic-conventions": "1.28.0" - }, - "engines": { - "node": ">=14" - }, - "peerDependencies": { - "@opentelemetry/api": ">=1.0.0 <1.10.0" - } - }, - "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/semantic-conventions": { - "version": "1.28.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", - "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", - "license": "Apache-2.0", - "engines": { - "node": ">=14" - } - }, - "node_modules/@opentelemetry/semantic-conventions": { - "version": "1.30.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.30.0.tgz", - "integrity": "sha512-4VlGgo32k2EQ2wcCY3vEU28A0O13aOtHz3Xt2/2U5FAh9EfhD6t6DqL5Z6yAnRCntbTFDU4YfbpyzSlHNWycPw==", - "license": "Apache-2.0", - "engines": { - "node": ">=14" - } - }, - "node_modules/@parcel/watcher": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", - "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "detect-libc": "^1.0.3", - "is-glob": "^4.0.3", - "micromatch": "^4.0.5", - "node-addon-api": "^7.0.0" - }, - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "@parcel/watcher-android-arm64": "2.5.1", - "@parcel/watcher-darwin-arm64": "2.5.1", - "@parcel/watcher-darwin-x64": "2.5.1", - "@parcel/watcher-freebsd-x64": "2.5.1", - "@parcel/watcher-linux-arm-glibc": "2.5.1", - "@parcel/watcher-linux-arm-musl": "2.5.1", - "@parcel/watcher-linux-arm64-glibc": "2.5.1", - "@parcel/watcher-linux-arm64-musl": "2.5.1", - "@parcel/watcher-linux-x64-glibc": "2.5.1", - "@parcel/watcher-linux-x64-musl": "2.5.1", - "@parcel/watcher-win32-arm64": "2.5.1", - "@parcel/watcher-win32-ia32": "2.5.1", - "@parcel/watcher-win32-x64": "2.5.1" - } - }, - "node_modules/@parcel/watcher-android-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", - "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", - "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", - "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", - "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", - "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", - "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", - "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", - "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", - "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", - "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", - "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", - "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-x64": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", - "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher/node_modules/detect-libc": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", - "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", - "dev": true, - "bin": { - "detect-libc": "bin/detect-libc.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/@parcel/watcher/node_modules/node-addon-api": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.0.tgz", - "integrity": "sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==", - "dev": true, - "engines": { - "node": "^16 || ^18 || >= 20" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@playwright/browser-chromium": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/@playwright/browser-chromium/-/browser-chromium-1.54.0.tgz", - "integrity": "sha512-MVBsWtRCliYq2w+fxWbNx0p9DG6yKD4Ca51D9I/mC3AwGg8SwWttZ3dp96W0TnRtmxQAVFNBJm/297fsZ50hSw==", - "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "playwright-core": "1.54.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@rollup/plugin-virtual": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@rollup/plugin-virtual/-/plugin-virtual-3.0.2.tgz", - "integrity": "sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A==", - "dev": true, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.5.tgz", - "integrity": "sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.5.tgz", - "integrity": "sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.5.tgz", - "integrity": "sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.5.tgz", - "integrity": "sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.5.tgz", - "integrity": "sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.5.tgz", - "integrity": "sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.5.tgz", - "integrity": "sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.5.tgz", - "integrity": "sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.5.tgz", - "integrity": "sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.5.tgz", - "integrity": "sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.5.tgz", - "integrity": "sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.5.tgz", - "integrity": "sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.5.tgz", - "integrity": "sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.5.tgz", - "integrity": "sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.5.tgz", - "integrity": "sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.5.tgz", - "integrity": "sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.5.tgz", - "integrity": "sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.5.tgz", - "integrity": "sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.5.tgz", - "integrity": "sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.5.tgz", - "integrity": "sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.5.tgz", - "integrity": "sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.5.tgz", - "integrity": "sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rtsao/scc": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", - "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", - "dev": true, - "license": "MIT" - }, - "node_modules/@secretlint/config-creator": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/@secretlint/config-creator/-/config-creator-10.1.1.tgz", - "integrity": "sha512-TJ42CHZqqnEe9ORvIXVVMqdu3KAtyZRxLspjFexo6XgrwJ6CoFHQYzIihilqRjo2sJh9HMrpnYSj/5hopofGrA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@secretlint/types": "^10.1.1" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@secretlint/config-loader": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/@secretlint/config-loader/-/config-loader-10.1.1.tgz", - "integrity": "sha512-jBClVFmS6Yu/zI5ejBCRF5a5ASYsE4gOjogjB+WsaHbQHtGvnyY7I26Qtdg4ihCc/VPKYQg0LdM75pLTXzwsjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@secretlint/profiler": "^10.1.1", - "@secretlint/resolver": "^10.1.1", - "@secretlint/types": "^10.1.1", - "ajv": "^8.17.1", - "debug": "^4.4.1", - "rc-config-loader": "^4.1.3" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@secretlint/core": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/@secretlint/core/-/core-10.1.1.tgz", - "integrity": "sha512-COLCxSoH/iVQdLeaZPVtBj0UWKOagO09SqYkCQgfFfZ+soGxKVK405dL317r4PnH9Pm8/s8xQC6OSY5rWTRObQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@secretlint/profiler": "^10.1.1", - "@secretlint/types": "^10.1.1", - "debug": "^4.4.1", - "structured-source": "^4.0.0" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@secretlint/formatter": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/@secretlint/formatter/-/formatter-10.1.1.tgz", - "integrity": "sha512-Gpd8gTPN121SJ0h/9e6nWlZU7PitfhXUiEzW7Kyswg6kNGs+bSqmgTgWFtbo1VQ4ygJYiveWPNT05RCImBexJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@secretlint/resolver": "^10.1.1", - "@secretlint/types": "^10.1.1", - "@textlint/linter-formatter": "^14.8.4", - "@textlint/module-interop": "^14.8.4", - "@textlint/types": "^14.8.4", - "chalk": "^4.1.2", - "debug": "^4.4.1", - "pluralize": "^8.0.0", - "strip-ansi": "^6.0.1", - "table": "^6.9.0", - "terminal-link": "^2.1.1" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@secretlint/node": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/@secretlint/node/-/node-10.1.1.tgz", - "integrity": "sha512-AhN+IGqljVObm8a+B33b23FY79wihu5E61Nd3oYSoZV7SxUvMjpafqhLfpt4frNSY7Ghf/pirWu7JY7GMujFrA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@secretlint/config-loader": "^10.1.1", - "@secretlint/core": "^10.1.1", - "@secretlint/formatter": "^10.1.1", - "@secretlint/profiler": "^10.1.1", - "@secretlint/source-creator": "^10.1.1", - "@secretlint/types": "^10.1.1", - "debug": "^4.4.1", - "p-map": "^7.0.3" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@secretlint/profiler": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/@secretlint/profiler/-/profiler-10.1.1.tgz", - "integrity": "sha512-kReI+Wr7IQz0LbVwYByzlnPbx4BEF2oEWJBc4Oa45g24alCjHu+jD9h9mzkTJqYUgMnVYD3o7HfzeqxFrV+9XA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@secretlint/resolver": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/@secretlint/resolver/-/resolver-10.1.1.tgz", - "integrity": "sha512-GdQzxnBtdBRjBULvZ8ERkaRqDp0njVwXrzBCav1pb0XshVk76C1cjeDqtTqM4RJ1Awo/g5U5MIWYztYv67v5Gg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@secretlint/secretlint-formatter-sarif": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/@secretlint/secretlint-formatter-sarif/-/secretlint-formatter-sarif-10.1.1.tgz", - "integrity": "sha512-Dyq8nzy6domjSlZKX1E5PEzuWxeTqjQJWrlXBmVmOjwLBLfRZDlm5Vq+AduBmEk03KEIKIZi4cZQwsniuRPO9Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "node-sarif-builder": "^2.0.3" - } - }, - "node_modules/@secretlint/secretlint-rule-no-dotenv": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/@secretlint/secretlint-rule-no-dotenv/-/secretlint-rule-no-dotenv-10.1.1.tgz", - "integrity": "sha512-a3/sOUUtEHuw1HCadtxUjViNeomiiohfJj+rwtHxJkCq4pjITS3HSYhQBXnNvkctQNljKIzFm7JUA/4QJ6I4sQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@secretlint/types": "^10.1.1" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@secretlint/secretlint-rule-preset-recommend": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/@secretlint/secretlint-rule-preset-recommend/-/secretlint-rule-preset-recommend-10.1.1.tgz", - "integrity": "sha512-+GeISCXVgpnoeRZE4ZPsuO97+fm6z8Ge23LNq6LvR9ZJAq018maXVftkJhHj4hnvYB5URUAEerBBkPGNk5/Ong==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@secretlint/source-creator": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/@secretlint/source-creator/-/source-creator-10.1.1.tgz", - "integrity": "sha512-IWjvHcE0bhC/x88a9M9jbZlFRZGUEbBzujxrs2KzI5IQ2BXTBRBRhRSjE/BEpWqDHILB22c3mfam8X+UjukphA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@secretlint/types": "^10.1.1", - "istextorbinary": "^9.5.0" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@secretlint/types": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/@secretlint/types/-/types-10.1.1.tgz", - "integrity": "sha512-/JGAvVkurVHkargk3AC7UxRy+Ymc+52AVBO/fZA5pShuLW2dX4O/rKc4n8cyhQiOb/3ym5ACSlLQuQ8apPfxrQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@shikijs/core": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.15.2.tgz", - "integrity": "sha512-hi6XZuwHYn6bU4wtXZxST8ynM55aiU2+rVU9aPIrSxqKmEKl4d65puwGsggwcZWTET+7zGXKe7AUj46iQ8Aq8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/hast": "^3.0.4" - } - }, - "node_modules/@sinclair/typebox": { - "version": "0.34.41", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", - "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", - "license": "MIT" - }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "node_modules/@sindresorhus/merge-streams": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", - "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "13.0.5", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", - "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1" - } - }, - "node_modules/@sinonjs/samsam": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.2.tgz", - "integrity": "sha512-v46t/fwnhejRSFTGqbpn9u+LQ9xJDse10gNnPgAcxgdoCDMXj/G2asWAC/8Qs+BAZDicX+MNZouXT1A7c83kVw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1", - "lodash.get": "^4.4.2", - "type-detect": "^4.1.0" - } - }, - "node_modules/@sinonjs/samsam/node_modules/type-detect": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", - "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@stylistic/eslint-plugin": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-3.1.0.tgz", - "integrity": "sha512-pA6VOrOqk0+S8toJYhQGv2MWpQQR0QpeUo9AhNkC49Y26nxBQ/nH1rta9bUU1rPw2fJ1zZEMV5oCX5AazT7J2g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/utils": "^8.13.0", - "eslint-visitor-keys": "^4.2.0", - "espree": "^10.3.0", - "estraverse": "^5.3.0", - "picomatch": "^4.0.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "peerDependencies": { - "eslint": ">=8.40.0" - } - }, - "node_modules/@stylistic/eslint-plugin/node_modules/eslint-visitor-keys": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", - "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@swc/core": { - "version": "1.11.8", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.11.8.tgz", - "integrity": "sha512-UAL+EULxrc0J73flwYHfu29mO8CONpDJiQv1QPDXsyCvDUcEhqAqUROVTgC+wtJCFFqMQdyr4stAA5/s0KSOmA==", - "dev": true, - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "@swc/counter": "^0.1.3", - "@swc/types": "^0.1.19" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/swc" - }, - "optionalDependencies": { - "@swc/core-darwin-arm64": "1.11.8", - "@swc/core-darwin-x64": "1.11.8", - "@swc/core-linux-arm-gnueabihf": "1.11.8", - "@swc/core-linux-arm64-gnu": "1.11.8", - "@swc/core-linux-arm64-musl": "1.11.8", - "@swc/core-linux-x64-gnu": "1.11.8", - "@swc/core-linux-x64-musl": "1.11.8", - "@swc/core-win32-arm64-msvc": "1.11.8", - "@swc/core-win32-ia32-msvc": "1.11.8", - "@swc/core-win32-x64-msvc": "1.11.8" - }, - "peerDependencies": { - "@swc/helpers": "*" - }, - "peerDependenciesMeta": { - "@swc/helpers": { - "optional": true - } - } - }, - "node_modules/@swc/core-darwin-arm64": { - "version": "1.11.8", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.11.8.tgz", - "integrity": "sha512-rrSsunyJWpHN+5V1zumndwSSifmIeFQBK9i2RMQQp15PgbgUNxHK5qoET1n20pcUrmZeT6jmJaEWlQchkV//Og==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-darwin-x64": { - "version": "1.11.8", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.11.8.tgz", - "integrity": "sha512-44goLqQuuo0HgWnG8qC+ZFw/qnjCVVeqffhzFr9WAXXotogVaxM8ze6egE58VWrfEc8me8yCcxOYL9RbtjhS/Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.11.8", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.11.8.tgz", - "integrity": "sha512-Mzo8umKlhTWwF1v8SLuTM1z2A+P43UVhf4R8RZDhzIRBuB2NkeyE+c0gexIOJBuGSIATryuAF4O4luDu727D1w==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "Apache-2.0", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.11.8", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.11.8.tgz", - "integrity": "sha512-EyhO6U+QdoGYC1MeHOR0pyaaSaKYyNuT4FQNZ1eZIbnuueXpuICC7iNmLIOfr3LE5bVWcZ7NKGVPlM2StJEcgA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.11.8", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.11.8.tgz", - "integrity": "sha512-QU6wOkZnS6/QuBN1MHD6G2BgFxB0AclvTVGbqYkRA7MsVkcC29PffESqzTXnypzB252/XkhQjoB2JIt9rPYf6A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.11.8", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.11.8.tgz", - "integrity": "sha512-r72onUEIU1iJi9EUws3R28pztQ/eM3EshNpsPRBfuLwKy+qn3et55vXOyDhIjGCUph5Eg2Yn8H3h6MTxDdLd+w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-musl": { - "version": "1.11.8", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.11.8.tgz", - "integrity": "sha512-294k8cLpO103++f4ZUEDr3vnBeUfPitW6G0a3qeVZuoXFhFgaW7ANZIWknUc14WiLOMfMecphJAEiy9C8OeYSw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.11.8", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.11.8.tgz", - "integrity": "sha512-EbjOzQ+B85rumHyeesBYxZ+hq3ZQn+YAAT1ZNE9xW1/8SuLoBmHy/K9YniRGVDq/2NRmp5kI5+5h5TX0asIS9A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.11.8", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.11.8.tgz", - "integrity": "sha512-Z+FF5kgLHfQWIZ1KPdeInToXLzbY0sMAashjd/igKeP1Lz0qKXVAK+rpn6ASJi85Fn8wTftCGCyQUkRVn0bTDg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.11.8", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.11.8.tgz", - "integrity": "sha512-j6B6N0hChCeAISS6xp/hh6zR5CSCr037BAjCxNLsT8TGe5D+gYZ57heswUWXRH8eMKiRDGiLCYpPB2pkTqxCSw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "Apache-2.0 AND MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/counter": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", - "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/@swc/helpers": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.3.tgz", - "integrity": "sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==", - "dev": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@swc/types": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.19.tgz", - "integrity": "sha512-WkAZaAfj44kh/UFdAQcrMP1I0nwRqpt27u+08LMBYMqmQfwwMofYoMh/48NGkMMRfC4ynpfwRbJuu8ErfNloeA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@swc/counter": "^0.1.3" - } - }, - "node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "dev": true, - "dependencies": { - "defer-to-connect": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@textlint/ast-node-types": { - "version": "14.8.4", - "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.8.4.tgz", - "integrity": "sha512-+fI7miec/r9VeniFV9ppL4jRCmHNsTxieulTUf/4tvGII3db5hGriKHC4p/diq1SkQ9Sgs7kg6UyydxZtpTz1Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@textlint/linter-formatter": { - "version": "14.8.4", - "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-14.8.4.tgz", - "integrity": "sha512-sZ0UfYRDBNHnfMVBqLqqYnqTB7Ec169ljlmo+SEHR1T+dHUPYy1/DZK4p7QREXlBSFL4cnkswETCbc9xRodm4Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azu/format-text": "^1.0.2", - "@azu/style-format": "^1.0.1", - "@textlint/module-interop": "14.8.4", - "@textlint/resolver": "14.8.4", - "@textlint/types": "14.8.4", - "chalk": "^4.1.2", - "debug": "^4.4.1", - "js-yaml": "^3.14.1", - "lodash": "^4.17.21", - "pluralize": "^2.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "table": "^6.9.0", - "text-table": "^0.2.0" - } - }, - "node_modules/@textlint/linter-formatter/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@textlint/linter-formatter/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/@textlint/linter-formatter/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@textlint/linter-formatter/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@textlint/linter-formatter/node_modules/pluralize": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-2.0.0.tgz", - "integrity": "sha512-TqNZzQCD4S42De9IfnnBvILN7HAW7riLqsCyp8lgjXeysyPlX5HhqKAcJHHHb9XskE4/a+7VGC9zzx8Ls0jOAw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@textlint/linter-formatter/node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "dev": true, - "license": "BSD-3-Clause" - }, - "node_modules/@textlint/linter-formatter/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@textlint/module-interop": { - "version": "14.8.4", - "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-14.8.4.tgz", - "integrity": "sha512-1LdPYLAVpa27NOt6EqvuFO99s4XLB0c19Hw9xKSG6xQ1K82nUEyuWhzTQKb3KJ5Qx7qj14JlXZLfnEuL6A16Bw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@textlint/resolver": { - "version": "14.8.4", - "resolved": "https://registry.npmjs.org/@textlint/resolver/-/resolver-14.8.4.tgz", - "integrity": "sha512-nMDOgDAVwNU9ommh+Db0U+MCMNDPbQ/1HBNjbnHwxZkCpcT6hsAJwBe38CW/DtWVUv8yeR4R40IYNPT84srNwA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@textlint/types": { - "version": "14.8.4", - "resolved": "https://registry.npmjs.org/@textlint/types/-/types-14.8.4.tgz", - "integrity": "sha512-9nyY8vVXlr8hHKxa6+37omJhXWCwovMQcgMteuldYd4dOxGm14AK2nXdkgtKEUQnzLGaXy46xwLCfhQy7V7/YA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@textlint/ast-node-types": "14.8.4" - } - }, - "node_modules/@tybys/wasm-util": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", - "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/cacheable-request": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", - "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", - "dev": true, - "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" - } - }, - "node_modules/@types/chai": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz", - "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/deep-eql": "*" - } - }, - "node_modules/@types/deep-eql": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", - "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/eslint": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", - "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/expect": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", - "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==", - "dev": true - }, - "node_modules/@types/google-protobuf": { - "version": "3.15.12", - "resolved": "https://registry.npmjs.org/@types/google-protobuf/-/google-protobuf-3.15.12.tgz", - "integrity": "sha512-40um9QqwHjRS92qnOaDpL7RmDK15NuZYo9HihiJRbYkMQZlWnuH8AdvbMy8/o6lgLmKbDUKa+OALCltHdbOTpQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/hast": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", - "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.2.tgz", - "integrity": "sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw==", - "dev": true - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "dev": true - }, - "node_modules/@types/js-yaml": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", - "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/markdown-it": { - "version": "14.1.2", - "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", - "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/linkify-it": "^5", - "@types/mdurl": "^2" - } - }, - "node_modules/@types/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", - "dev": true - }, - "node_modules/@types/mocha": { - "version": "10.0.10", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", - "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/node": { - "version": "22.16.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.16.3.tgz", - "integrity": "sha512-sr4Xz74KOUeYadexo1r8imhRtlVXcs+j3XK3TcoiYk7B1t3YRVJgtaD3cwX73NYb71pmVuMLNRhJ9XKdoDB74g==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/picomatch": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@types/picomatch/-/picomatch-4.0.0.tgz", - "integrity": "sha512-J1Bng+wlyEERWSgJQU1Pi0HObCLVcr994xT/M+1wcl/yNRTGBupsCxthgkdYG+GCOMaQH7iSVUY3LJVBBqG7MQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/prop-types": { - "version": "15.7.8", - "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.8.tgz", - "integrity": "sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ==", - "dev": true - }, - "node_modules/@types/react": { - "version": "17.0.44", - "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.44.tgz", - "integrity": "sha512-Ye0nlw09GeMp2Suh8qoOv0odfgCoowfM/9MG6WeRD60Gq9wS90bdkdRtYbRkNhXOpG4H+YXGvj4wOWhAC0LJ1g==", - "dev": true, - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, - "node_modules/@types/react-dom": { - "version": "18.2.17", - "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.17.tgz", - "integrity": "sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==", - "dev": true, - "dependencies": { - "@types/react": "*" - } - }, - "node_modules/@types/responselike": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.1.tgz", - "integrity": "sha512-TiGnitEDxj2X0j+98Eqk5lv/Cij8oHd32bU4D/Yw6AOq7vvTk0gSD2GPj0G/HkvhMoVsdlhYF4yqqlyPBTM6Sg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/sarif": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@types/sarif/-/sarif-2.1.7.tgz", - "integrity": "sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/scheduler": { - "version": "0.16.4", - "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.4.tgz", - "integrity": "sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==", - "dev": true - }, - "node_modules/@types/shimmer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.0.3.tgz", - "integrity": "sha512-F/IjUGnV6pIN7R4ZV4npHJVoNtaLZWvb+2/9gctxjb99wkpI7Ozg8VPogwDiTRyjLwZXAYxjvdg1KS8LTHKdDA==" - }, - "node_modules/@types/sinon": { - "version": "17.0.4", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.4.tgz", - "integrity": "sha512-RHnIrhfPO3+tJT0s7cFaXGZvsL4bbR3/k7z3P312qMS4JaS2Tk+KiwiLx1S0rQ56ERj00u1/BtdyVd0FY+Pdew==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/sinonjs__fake-timers": "*" - } - }, - "node_modules/@types/sinonjs__fake-timers": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.3.tgz", - "integrity": "sha512-4g+2YyWe0Ve+LBh+WUm1697PD0Kdi6coG1eU0YjQbwx61AZ8XbEpL1zIT6WjuUKrCMCROpEaYQPDjBnDouBVAQ==", - "dev": true - }, - "node_modules/@types/source-map-support": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/@types/source-map-support/-/source-map-support-0.5.10.tgz", - "integrity": "sha512-tgVP2H469x9zq34Z0m/fgPewGhg/MLClalNOiPIzQlXrSS2YrKu/xCdSCKnEDwkFha51VKEKB6A9wW26/ZNwzA==", - "dev": true, - "dependencies": { - "source-map": "^0.6.0" - } - }, - "node_modules/@types/stack-trace": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/stack-trace/-/stack-trace-0.0.29.tgz", - "integrity": "sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g==", - "dev": true - }, - "node_modules/@types/tar": { - "version": "6.1.13", - "resolved": "https://registry.npmjs.org/@types/tar/-/tar-6.1.13.tgz", - "integrity": "sha512-IznnlmU5f4WcGTh2ltRu/Ijpmk8wiWXfF0VA4s+HPjHZgvFggk1YaIkbo5krX/zUCzWF8N/l4+W/LNxnvAJ8nw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "minipass": "^4.0.0" - } - }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", - "license": "MIT", - "optional": true - }, - "node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/vinyl": { - "version": "2.0.12", - "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.12.tgz", - "integrity": "sha512-Sr2fYMBUVGYq8kj3UthXFAu5UN6ZW+rYr4NACjZQJvHvj+c8lYv0CahmZ2P/r7iUkN44gGUBwqxZkrKXYPb7cw==", - "dev": true, - "dependencies": { - "@types/expect": "^1.20.4", - "@types/node": "*" - } - }, - "node_modules/@types/vscode": { - "version": "1.102.0", - "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.102.0.tgz", - "integrity": "sha512-V9sFXmcXz03FtYTSUsYsu5K0Q9wH9w9V25slddcxrh5JgORD14LpnOA7ov0L9ALi+6HrTjskLJ/tY5zeRF3TFA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/vscode-webview": { - "version": "1.57.5", - "resolved": "https://registry.npmjs.org/@types/vscode-webview/-/vscode-webview-1.57.5.tgz", - "integrity": "sha512-iBAUYNYkz+uk1kdsq05fEcoh8gJmwT3lqqFPN7MGyjQ3HVloViMdo7ZJ8DFIP8WOK74PjOEilosqAyxV2iUFUw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/yauzl": { - "version": "2.10.1", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.1.tgz", - "integrity": "sha512-CHzgNU3qYBnp/O4S3yv2tXPlvMTq0YWSTVg2/JYLqWZGHwwgJGAwd00poay/11asPq8wLFwHzubyInqHIFmmiw==", - "dev": true, - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.36.0.tgz", - "integrity": "sha512-lZNihHUVB6ZZiPBNgOQGSxUASI7UJWhT8nHyUGCnaQ28XFCw98IfrMCG3rUl1uwUWoAvodJQby2KTs79UTcrAg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "8.36.0", - "@typescript-eslint/type-utils": "8.36.0", - "@typescript-eslint/utils": "8.36.0", - "@typescript-eslint/visitor-keys": "8.36.0", - "graphemer": "^1.4.0", - "ignore": "^7.0.0", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.36.0", - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.36.0.tgz", - "integrity": "sha512-FuYgkHwZLuPbZjQHzJXrtXreJdFMKl16BFYyRrLxDhWr6Qr7Kbcu2s1Yhu8tsiMXw1S0W1pjfFfYEt+R604s+Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/scope-manager": "8.36.0", - "@typescript-eslint/types": "8.36.0", - "@typescript-eslint/typescript-estree": "8.36.0", - "@typescript-eslint/visitor-keys": "8.36.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.36.0.tgz", - "integrity": "sha512-JAhQFIABkWccQYeLMrHadu/fhpzmSQ1F1KXkpzqiVxA/iYI6UnRt2trqXHt1sYEcw1mxLnB9rKMsOxXPxowN/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.36.0", - "@typescript-eslint/types": "^8.36.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.36.0.tgz", - "integrity": "sha512-wCnapIKnDkN62fYtTGv2+RY8FlnBYA3tNm0fm91kc2BjPhV2vIjwwozJ7LToaLAyb1ca8BxrS7vT+Pvvf7RvqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.36.0", - "@typescript-eslint/visitor-keys": "8.36.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.36.0.tgz", - "integrity": "sha512-Nhh3TIEgN18mNbdXpd5Q8mSCBnrZQeY9V7Ca3dqYvNDStNIGRmJA6dmrIPMJ0kow3C7gcQbpsG2rPzy1Ks/AnA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.36.0.tgz", - "integrity": "sha512-5aaGYG8cVDd6cxfk/ynpYzxBRZJk7w/ymto6uiyUFtdCozQIsQWh7M28/6r57Fwkbweng8qAzoMCPwSJfWlmsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "8.36.0", - "@typescript-eslint/utils": "8.36.0", - "debug": "^4.3.4", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.36.0.tgz", - "integrity": "sha512-xGms6l5cTJKQPZOKM75Dl9yBfNdGeLRsIyufewnxT4vZTrjC0ImQT4fj8QmtJK84F58uSh5HVBSANwcfiXxABQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.36.0.tgz", - "integrity": "sha512-JaS8bDVrfVJX4av0jLpe4ye0BpAaUW7+tnS4Y4ETa3q7NoZgzYbN9zDQTJ8kPb5fQ4n0hliAt9tA4Pfs2zA2Hg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.36.0", - "@typescript-eslint/tsconfig-utils": "8.36.0", - "@typescript-eslint/types": "8.36.0", - "@typescript-eslint/visitor-keys": "8.36.0", - "debug": "^4.3.4", - "fast-glob": "^3.3.2", - "is-glob": "^4.0.3", - "minimatch": "^9.0.4", - "semver": "^7.6.0", - "ts-api-utils": "^2.1.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.36.0.tgz", - "integrity": "sha512-VOqmHu42aEMT+P2qYjylw6zP/3E/HvptRwdn/PZxyV27KhZg2IOszXod4NcXisWzPAGSS4trE/g4moNj6XmH2g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.7.0", - "@typescript-eslint/scope-manager": "8.36.0", - "@typescript-eslint/types": "8.36.0", - "@typescript-eslint/typescript-estree": "8.36.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.36.0.tgz", - "integrity": "sha512-vZrhV2lRPWDuGoxcmrzRZyxAggPL+qp3WzUrlZD+slFueDiYHxeBa34dUXPuC0RmGKzl4lS5kFJYvKCq9cnNDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.36.0", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@typespec/ts-http-runtime": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.2.3.tgz", - "integrity": "sha512-oRhjSzcVjX8ExyaF8hC0zzTqxlVuRlgMHL/Bh4w3xB9+wjbm0FpXylVU/lBrn+kgphwYTrOk3tp+AVShGmlYCg==", - "dev": true, - "license": "MIT", - "dependencies": { - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@unrs/resolver-binding-android-arm-eabi": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.9.2.tgz", - "integrity": "sha512-tS+lqTU3N0kkthU+rYp0spAYq15DU8ld9kXkaKg9sbQqJNF+WPMuNHZQGCgdxrUOEO0j22RKMwRVhF1HTl+X8A==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-android-arm64": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.9.2.tgz", - "integrity": "sha512-MffGiZULa/KmkNjHeuuflLVqfhqLv1vZLm8lWIyeADvlElJ/GLSOkoUX+5jf4/EGtfwrNFcEaB8BRas03KT0/Q==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-arm64": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.9.2.tgz", - "integrity": "sha512-dzJYK5rohS1sYl1DHdJ3mwfwClJj5BClQnQSyAgEfggbUwA9RlROQSSbKBLqrGfsiC/VyrDPtbO8hh56fnkbsQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-darwin-x64": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.9.2.tgz", - "integrity": "sha512-gaIMWK+CWtXcg9gUyznkdV54LzQ90S3X3dn8zlh+QR5Xy7Y+Efqw4Rs4im61K1juy4YNb67vmJsCDAGOnIeffQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@unrs/resolver-binding-freebsd-x64": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.9.2.tgz", - "integrity": "sha512-S7QpkMbVoVJb0xwHFwujnwCAEDe/596xqY603rpi/ioTn9VDgBHnCCxh+UFrr5yxuMH+dliHfjwCZJXOPJGPnw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.9.2.tgz", - "integrity": "sha512-+XPUMCuCCI80I46nCDFbGum0ZODP5NWGiwS3Pj8fOgsG5/ctz+/zzuBlq/WmGa+EjWZdue6CF0aWWNv84sE1uw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.9.2.tgz", - "integrity": "sha512-sqvUyAd1JUpwbz33Ce2tuTLJKM+ucSsYpPGl2vuFwZnEIg0CmdxiZ01MHQ3j6ExuRqEDUCy8yvkDKvjYFPb8Zg==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.9.2.tgz", - "integrity": "sha512-UYA0MA8ajkEDCFRQdng/FVx3F6szBvk3EPnkTTQuuO9lV1kPGuTB+V9TmbDxy5ikaEgyWKxa4CI3ySjklZ9lFA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-arm64-musl": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.9.2.tgz", - "integrity": "sha512-P/CO3ODU9YJIHFqAkHbquKtFst0COxdphc8TKGL5yCX75GOiVpGqd1d15ahpqu8xXVsqP4MGFP2C3LRZnnL5MA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.9.2.tgz", - "integrity": "sha512-uKStFlOELBxBum2s1hODPtgJhY4NxYJE9pAeyBgNEzHgTqTiVBPjfTlPFJkfxyTjQEuxZbbJlJnMCrRgD7ubzw==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.9.2.tgz", - "integrity": "sha512-LkbNnZlhINfY9gK30AHs26IIVEZ9PEl9qOScYdmY2o81imJYI4IMnJiW0vJVtXaDHvBvxeAgEy5CflwJFIl3tQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.9.2.tgz", - "integrity": "sha512-vI+e6FzLyZHSLFNomPi+nT+qUWN4YSj8pFtQZSFTtmgFoxqB6NyjxSjAxEC1m93qn6hUXhIsh8WMp+fGgxCoRg==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.9.2.tgz", - "integrity": "sha512-sSO4AlAYhSM2RAzBsRpahcJB1msc6uYLAtP6pesPbZtptF8OU/CbCPhSRW6cnYOGuVmEmWVW5xVboAqCnWTeHQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-gnu": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.9.2.tgz", - "integrity": "sha512-jkSkwch0uPFva20Mdu8orbQjv2A3G88NExTN2oPTI1AJ+7mZfYW3cDCTyoH6OnctBKbBVeJCEqh0U02lTkqD5w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-linux-x64-musl": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.9.2.tgz", - "integrity": "sha512-Uk64NoiTpQbkpl+bXsbeyOPRpUoMdcUqa+hDC1KhMW7aN1lfW8PBlBH4mJ3n3Y47dYE8qi0XTxy1mBACruYBaw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@unrs/resolver-binding-wasm32-wasi": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.9.2.tgz", - "integrity": "sha512-EpBGwkcjDicjR/ybC0g8wO5adPNdVuMrNalVgYcWi+gYtC1XYNuxe3rufcO7dA76OHGeVabcO6cSkPJKVcbCXQ==", - "cpu": [ - "wasm32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "@napi-rs/wasm-runtime": "^0.2.11" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.9.2.tgz", - "integrity": "sha512-EdFbGn7o1SxGmN6aZw9wAkehZJetFPao0VGZ9OMBwKx6TkvDuj6cNeLimF/Psi6ts9lMOe+Dt6z19fZQ9Ye2fw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.9.2.tgz", - "integrity": "sha512-JY9hi1p7AG+5c/dMU8o2kWemM8I6VZxfGwn1GCtf3c5i+IKcMo2NQ8OjZ4Z3/itvY/Si3K10jOBQn7qsD/whUA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@unrs/resolver-binding-win32-x64-msvc": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.9.2.tgz", - "integrity": "sha512-ryoo+EB19lMxAd80ln9BVf8pdOAxLb97amrQ3SFN9OCRn/5M5wvwDgAe4i8ZjhpbiHoDeP8yavcTEnpKBo7lZg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@vitest/coverage-v8": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.2.4.tgz", - "integrity": "sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@ampproject/remapping": "^2.3.0", - "@bcoe/v8-coverage": "^1.0.2", - "ast-v8-to-istanbul": "^0.3.3", - "debug": "^4.4.1", - "istanbul-lib-coverage": "^3.2.2", - "istanbul-lib-report": "^3.0.1", - "istanbul-lib-source-maps": "^5.0.6", - "istanbul-reports": "^3.1.7", - "magic-string": "^0.30.17", - "magicast": "^0.3.5", - "std-env": "^3.9.0", - "test-exclude": "^7.0.1", - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "@vitest/browser": "3.2.4", - "vitest": "3.2.4" - }, - "peerDependenciesMeta": { - "@vitest/browser": { - "optional": true - } - } - }, - "node_modules/@vitest/coverage-v8/node_modules/@bcoe/v8-coverage": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", - "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@vitest/expect": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", - "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/chai": "^5.2.2", - "@vitest/spy": "3.2.4", - "@vitest/utils": "3.2.4", - "chai": "^5.2.0", - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/mocker": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", - "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "3.2.4", - "estree-walker": "^3.0.3", - "magic-string": "^0.30.17" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "msw": "^2.4.9", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" - }, - "peerDependenciesMeta": { - "msw": { - "optional": true - }, - "vite": { - "optional": true - } - } - }, - "node_modules/@vitest/pretty-format": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", - "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/runner": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", - "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/utils": "3.2.4", - "pathe": "^2.0.3", - "strip-literal": "^3.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/snapshot": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.1.tgz", - "integrity": "sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "magic-string": "^0.30.5", - "pathe": "^1.1.1", - "pretty-format": "^29.7.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/snapshot/node_modules/pathe": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", - "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/@vitest/spy": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", - "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyspy": "^4.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/utils": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", - "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "3.2.4", - "loupe": "^3.1.4", - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vscode/copilot-api": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/@vscode/copilot-api/-/copilot-api-0.2.6.tgz", - "integrity": "sha512-I5CTQMaV1iIIczA2sew3E85O0qYvwGZhgQtzTxdBk7wclhLcDTVXoz/oAcY1vc5gTl+SzlwM720NDNt/5GpLZQ==", - "license": "SEE LICENSE" - }, - "node_modules/@vscode/debugadapter": { - "version": "1.68.0", - "resolved": "https://registry.npmjs.org/@vscode/debugadapter/-/debugadapter-1.68.0.tgz", - "integrity": "sha512-D6gk5Fw2y4FV8oYmltoXpj+VAZexxJFopN/mcZ6YcgzQE9dgq2L45Aj3GLxScJOD6GeLILcxJIaA8l3v11esGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vscode/debugprotocol": "1.68.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/@vscode/debugprotocol": { - "version": "1.68.0", - "resolved": "https://registry.npmjs.org/@vscode/debugprotocol/-/debugprotocol-1.68.0.tgz", - "integrity": "sha512-2J27dysaXmvnfuhFGhfeuxfHRXunqNPxtBoR3koiTOA9rdxWNDTa1zIFLCFMSHJ9MPTPKFcBeblsyaCJCIlQxg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@vscode/dts": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@vscode/dts/-/dts-0.4.1.tgz", - "integrity": "sha512-o8cI5Vqt6S6Y5mCI7yCkSQdiLQaLG5DMUpciJV3zReZwE+dA5KERxSVX8H3cPEhyKw21XwKGmIrg6YmN6M5uZA==", - "dev": true, - "dependencies": { - "https-proxy-agent": "^7.0.0", - "minimist": "^1.2.8", - "prompts": "^2.4.2" - }, - "bin": { - "dts": "index.js" - } - }, - "node_modules/@vscode/extension-telemetry": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@vscode/extension-telemetry/-/extension-telemetry-1.2.0.tgz", - "integrity": "sha512-En6dTwfy5NFzSMibvOpx/lKq2jtgWuR4++KJbi3SpQ2iT8gm+PHo9868/scocW122KDwTxl4ruxZ7i4rHmJJnQ==", - "license": "MIT", - "dependencies": { - "@microsoft/1ds-core-js": "^4.3.10", - "@microsoft/1ds-post-js": "^4.3.10", - "@microsoft/applicationinsights-web-basic": "^3.3.10" - }, - "engines": { - "vscode": "^1.75.0" - } - }, - "node_modules/@vscode/l10n": { - "version": "0.0.18", - "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.18.tgz", - "integrity": "sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==", - "license": "MIT" - }, - "node_modules/@vscode/lsif-language-service": { - "version": "0.1.0-pre.4", - "resolved": "https://registry.npmjs.org/@vscode/lsif-language-service/-/lsif-language-service-0.1.0-pre.4.tgz", - "integrity": "sha512-fo/BsgdBvCpNyK1qm8mwAxw8CG4mMGMBB4+EwWhWTbk0I7gGUVynNpCR/7LxfyXkw6WrFqnywliTDcyFx9uWKw==", - "dev": true, - "dependencies": { - "@vscode/lsif-protocol": "0.6.0-next.9", - "semver": "^7.6.2", - "vscode-uri": "^3.0.8" - }, - "engines": { - "node": ">=20.9.0" - } - }, - "node_modules/@vscode/lsif-protocol": { - "version": "0.6.0-next.9", - "resolved": "https://registry.npmjs.org/@vscode/lsif-protocol/-/lsif-protocol-0.6.0-next.9.tgz", - "integrity": "sha512-+0GpE8QzbfiwgIQ7kY1D8BO+TPZB0OwYIk03B1ByNV7VrxD+P923Mxp8uag2H2fvAs9GVGpmeewPczheOT1S6w==", - "dev": true, - "dependencies": { - "vscode-languageserver-types": "^3.17.5" - }, - "engines": { - "node": ">=20.9.0" - } - }, - "node_modules/@vscode/prompt-tsx": { - "version": "0.4.0-alpha.5", - "resolved": "https://registry.npmjs.org/@vscode/prompt-tsx/-/prompt-tsx-0.4.0-alpha.5.tgz", - "integrity": "sha512-Zc7osfYG4w+BWniZGK3Yd9d4LC7MS1AGSUMllhQboxvMT6aWWNo4YnoRlko4YbEY6OWJyNmSGgWEiuT8z8Bjcg==", - "license": "MIT" - }, - "node_modules/@vscode/test-cli": { - "version": "0.0.11", - "resolved": "https://registry.npmjs.org/@vscode/test-cli/-/test-cli-0.0.11.tgz", - "integrity": "sha512-qO332yvzFqGhBMJrp6TdwbIydiHgCtxXc2Nl6M58mbH/Z+0CyLR76Jzv4YWPEthhrARprzCRJUqzFvTHFhTj7Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/mocha": "^10.0.2", - "c8": "^9.1.0", - "chokidar": "^3.5.3", - "enhanced-resolve": "^5.15.0", - "glob": "^10.3.10", - "minimatch": "^9.0.3", - "mocha": "^11.1.0", - "supports-color": "^9.4.0", - "yargs": "^17.7.2" - }, - "bin": { - "vscode-test": "out/bin.mjs" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@vscode/test-cli/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/@vscode/test-cli/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@vscode/test-cli/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/@vscode/test-cli/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/@vscode/test-cli/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@vscode/test-cli/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/@vscode/test-cli/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@vscode/test-cli/node_modules/supports-color": { - "version": "9.4.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", - "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/@vscode/test-electron": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.5.2.tgz", - "integrity": "sha512-8ukpxv4wYe0iWMRQU18jhzJOHkeGKbnw7xWRX3Zw1WJA4cEKbHcmmLPdPrPtL6rhDcrlCZN+xKRpv09n4gRHYg==", - "dev": true, - "license": "MIT", - "dependencies": { - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.5", - "jszip": "^3.10.1", - "ora": "^8.1.0", - "semver": "^7.6.2" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@vscode/test-web": { - "version": "0.0.71", - "resolved": "https://registry.npmjs.org/@vscode/test-web/-/test-web-0.0.71.tgz", - "integrity": "sha512-uj9a3A3QD1qBOw1ZL19SKNSG6c6rvP9N4XrMvBVKSeAOkmOQftAZoBERLMJPEaJ8Z5dF7aLmA79drjOBk+VTRg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@koa/cors": "^5.0.0", - "@koa/router": "^13.1.0", - "@playwright/browser-chromium": "^1.53.1", - "gunzip-maybe": "^1.4.2", - "http-proxy-agent": "^7.0.2", - "https-proxy-agent": "^7.0.6", - "koa": "^3.0.0", - "koa-morgan": "^1.0.1", - "koa-mount": "^4.2.0", - "koa-static": "^5.0.0", - "minimist": "^1.2.8", - "playwright": "^1.53.1", - "tar-fs": "^3.1.0", - "tinyglobby": "0.2.14", - "vscode-uri": "^3.1.0" - }, - "bin": { - "vscode-test-web": "out/server/index.js" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@vscode/test-web/node_modules/tar-fs": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz", - "integrity": "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==", - "dev": true, - "license": "MIT", - "dependencies": { - "pump": "^3.0.0", - "tar-stream": "^3.1.5" - }, - "optionalDependencies": { - "bare-fs": "^4.0.1", - "bare-path": "^3.0.0" - } - }, - "node_modules/@vscode/test-web/node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, - "node_modules/@vscode/tree-sitter-wasm": { - "version": "0.0.5-php.2", - "resolved": "https://registry.npmjs.org/@vscode/tree-sitter-wasm/-/tree-sitter-wasm-0.0.5-php.2.tgz", - "integrity": "sha512-hEnCxsLqWSAZIRj16fjOJGFOsEQX7l1zYJK0cX4EnDyR+hsUJpYxotAaK5QPThzgqUHSExsfkSLfLkuy/nYjwA==", - "license": "MIT" - }, - "node_modules/@vscode/vsce": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-3.6.0.tgz", - "integrity": "sha512-u2ZoMfymRNJb14aHNawnXJtXHLXDVKc1oKZaH4VELKT/9iWKRVgtQOdwxCgtwSxJoqYvuK4hGlBWQJ05wxADhg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@azure/identity": "^4.1.0", - "@secretlint/node": "^10.1.1", - "@secretlint/secretlint-formatter-sarif": "^10.1.1", - "@secretlint/secretlint-rule-no-dotenv": "^10.1.1", - "@secretlint/secretlint-rule-preset-recommend": "^10.1.1", - "@vscode/vsce-sign": "^2.0.0", - "azure-devops-node-api": "^12.5.0", - "chalk": "^4.1.2", - "cheerio": "^1.0.0-rc.9", - "cockatiel": "^3.1.2", - "commander": "^12.1.0", - "form-data": "^4.0.0", - "glob": "^11.0.0", - "hosted-git-info": "^4.0.2", - "jsonc-parser": "^3.2.0", - "leven": "^3.1.0", - "markdown-it": "^14.1.0", - "mime": "^1.3.4", - "minimatch": "^3.0.3", - "parse-semver": "^1.1.1", - "read": "^1.0.7", - "secretlint": "^10.1.1", - "semver": "^7.5.2", - "tmp": "^0.2.3", - "typed-rest-client": "^1.8.4", - "url-join": "^4.0.1", - "xml2js": "^0.5.0", - "yauzl": "^2.3.1", - "yazl": "^2.2.2" - }, - "bin": { - "vsce": "vsce" - }, - "engines": { - "node": ">= 20" - }, - "optionalDependencies": { - "keytar": "^7.7.0" - } - }, - "node_modules/@vscode/vsce-sign": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign/-/vsce-sign-2.0.5.tgz", - "integrity": "sha512-GfYWrsT/vypTMDMgWDm75iDmAOMe7F71sZECJ+Ws6/xyIfmB3ELVnVN+LwMFAvmXY+e6eWhR2EzNGF/zAhWY3Q==", - "dev": true, - "hasInstallScript": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optionalDependencies": { - "@vscode/vsce-sign-alpine-arm64": "2.0.2", - "@vscode/vsce-sign-alpine-x64": "2.0.2", - "@vscode/vsce-sign-darwin-arm64": "2.0.2", - "@vscode/vsce-sign-darwin-x64": "2.0.2", - "@vscode/vsce-sign-linux-arm": "2.0.2", - "@vscode/vsce-sign-linux-arm64": "2.0.2", - "@vscode/vsce-sign-linux-x64": "2.0.2", - "@vscode/vsce-sign-win32-arm64": "2.0.2", - "@vscode/vsce-sign-win32-x64": "2.0.2" - } - }, - "node_modules/@vscode/vsce-sign-alpine-arm64": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.2.tgz", - "integrity": "sha512-E80YvqhtZCLUv3YAf9+tIbbqoinWLCO/B3j03yQPbjT3ZIHCliKZlsy1peNc4XNZ5uIb87Jn0HWx/ZbPXviuAQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optional": true, - "os": [ - "alpine" - ] - }, - "node_modules/@vscode/vsce-sign-alpine-x64": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.2.tgz", - "integrity": "sha512-n1WC15MSMvTaeJ5KjWCzo0nzjydwxLyoHiMJHu1Ov0VWTZiddasmOQHekA47tFRycnt4FsQrlkSCTdgHppn6bw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optional": true, - "os": [ - "alpine" - ] - }, - "node_modules/@vscode/vsce-sign-darwin-arm64": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.2.tgz", - "integrity": "sha512-rz8F4pMcxPj8fjKAJIfkUT8ycG9CjIp888VY/6pq6cuI2qEzQ0+b5p3xb74CJnBbSC0p2eRVoe+WgNCAxCLtzQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@vscode/vsce-sign-darwin-x64": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.2.tgz", - "integrity": "sha512-MCjPrQ5MY/QVoZ6n0D92jcRb7eYvxAujG/AH2yM6lI0BspvJQxp0o9s5oiAM9r32r9tkLpiy5s2icsbwefAQIw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@vscode/vsce-sign-linux-arm": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.2.tgz", - "integrity": "sha512-Fkb5jpbfhZKVw3xwR6t7WYfwKZktVGNXdg1m08uEx1anO0oUPUkoQRsNm4QniL3hmfw0ijg00YA6TrxCRkPVOQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@vscode/vsce-sign-linux-arm64": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.2.tgz", - "integrity": "sha512-Ybeu7cA6+/koxszsORXX0OJk9N0GgfHq70Wqi4vv2iJCZvBrOWwcIrxKjvFtwyDgdeQzgPheH5nhLVl5eQy7WA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@vscode/vsce-sign-linux-x64": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.2.tgz", - "integrity": "sha512-NsPPFVtLaTlVJKOiTnO8Cl78LZNWy0Q8iAg+LlBiCDEgC12Gt4WXOSs2pmcIjDYzj2kY4NwdeN1mBTaujYZaPg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@vscode/vsce-sign-win32-arm64": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.2.tgz", - "integrity": "sha512-wPs848ymZ3Ny+Y1Qlyi7mcT6VSigG89FWQnp2qRYCyMhdJxOpA4lDwxzlpL8fG6xC8GjQjGDkwbkWUcCobvksQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@vscode/vsce-sign-win32-x64": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.2.tgz", - "integrity": "sha512-pAiRN6qSAhDM5SVOIxgx+2xnoVUePHbRNC7OD2aOR3WltTKxxF25OfpK8h8UQ7A0BuRkSgREbB59DBlFk4iAeg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "SEE LICENSE IN LICENSE.txt", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@vscode/vsce/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@vscode/webview-ui-toolkit": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@vscode/webview-ui-toolkit/-/webview-ui-toolkit-1.4.0.tgz", - "integrity": "sha512-modXVHQkZLsxgmd5yoP3ptRC/G8NBDD+ob+ngPiWNQdlrH6H1xR/qgOBD85bfU3BhOB5sZzFWBwwhp9/SfoHww==", - "deprecated": "This package has been deprecated, https://github.com/microsoft/vscode-webview-ui-toolkit/issues/561", - "license": "MIT", - "dependencies": { - "@microsoft/fast-element": "^1.12.0", - "@microsoft/fast-foundation": "^2.49.4", - "@microsoft/fast-react-wrapper": "^0.3.22", - "tslib": "^2.6.2" - }, - "peerDependencies": { - "react": ">=16.9.0" - } - }, - "node_modules/@xterm/headless": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@xterm/headless/-/headless-5.5.0.tgz", - "integrity": "sha512-5xXB7kdQlFBP82ViMJTwwEc3gKCLGKR/eoxQm4zge7GPBl86tCdI0IdPJjoKd8mUSFXz5V7i/25sfsEkP4j46g==", - "license": "MIT" - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.15.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", - "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", - "peerDependencies": { - "acorn": "^8" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/agent-base": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", - "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ansi-escapes": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", - "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "environment": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/anymatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/applicationinsights": { - "version": "2.9.7", - "resolved": "https://registry.npmjs.org/applicationinsights/-/applicationinsights-2.9.7.tgz", - "integrity": "sha512-dxIVB2AAEMec3FDiYThgEbc9R4u1TatrzL+kFgOf+ABaEgHm8+i8ngVLHfKObjHvy2HHPf810OLWTrqyeWT/oA==", - "license": "MIT", - "dependencies": { - "@azure/core-auth": "1.7.2", - "@azure/core-rest-pipeline": "1.16.3", - "@azure/opentelemetry-instrumentation-azure-sdk": "^1.0.0-beta.5", - "@microsoft/applicationinsights-web-snippet": "1.0.1", - "@opentelemetry/api": "^1.7.0", - "@opentelemetry/core": "^1.19.0", - "@opentelemetry/sdk-trace-base": "^1.19.0", - "@opentelemetry/semantic-conventions": "^1.19.0", - "cls-hooked": "^4.2.2", - "continuation-local-storage": "^3.2.1", - "diagnostic-channel": "1.1.1", - "diagnostic-channel-publishers": "1.0.8" - }, - "engines": { - "node": ">=8.0.0" - }, - "peerDependencies": { - "applicationinsights-native-metrics": "*" - }, - "peerDependenciesMeta": { - "applicationinsights-native-metrics": { - "optional": true - } - } - }, - "node_modules/applicationinsights/node_modules/@azure/core-auth": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.7.2.tgz", - "integrity": "sha512-Igm/S3fDYmnMq1uKS38Ae1/m37B3zigdlZw+kocwEhh5GjyKjPrXKO2J6rzpC1wAxrNil/jX9BJRqBshyjnF3g==", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^2.0.0", - "@azure/core-util": "^1.1.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/applicationinsights/node_modules/@opentelemetry/api": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", - "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", - "license": "Apache-2.0", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/are-docs-informative": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", - "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", - "dev": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-includes": { - "version": "3.1.9", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", - "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.24.0", - "es-object-atoms": "^1.1.1", - "get-intrinsic": "^1.3.0", - "is-string": "^1.1.1", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/ast-v8-to-istanbul": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.3.tgz", - "integrity": "sha512-MuXMrSLVVoA6sYN/6Hke18vMzrT4TZNbZIj/hvh0fnYFpO+/kFXcLIaiPwXXWaQUPg4yJD8fj+lfJ7/1EBconw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "estree-walker": "^3.0.3", - "js-tokens": "^9.0.1" - } - }, - "node_modules/ast-v8-to-istanbul/node_modules/js-tokens": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", - "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/async-function": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/async-hook-jl": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/async-hook-jl/-/async-hook-jl-1.7.6.tgz", - "integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==", - "dependencies": { - "stack-chain": "^1.3.7" - }, - "engines": { - "node": "^4.7 || >=6.9 || >=7.3" - } - }, - "node_modules/async-listener": { - "version": "0.6.10", - "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz", - "integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==", - "dependencies": { - "semver": "^5.3.0", - "shimmer": "^1.1.0" - }, - "engines": { - "node": "<=0.11.8 || >0.11.10" - } - }, - "node_modules/async-listener/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/azure-devops-node-api": { - "version": "12.5.0", - "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz", - "integrity": "sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==", - "dev": true, - "license": "MIT", - "dependencies": { - "tunnel": "0.0.6", - "typed-rest-client": "^1.8.4" - } - }, - "node_modules/b4a": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", - "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/bare-events": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.6.0.tgz", - "integrity": "sha512-EKZ5BTXYExaNqi3I3f9RtEsaI/xBSGjE0XZCZilPzFAV/goswFHuPd9jEZlPIZ/iNZJwDSao9qRiScySz7MbQg==", - "dev": true, - "license": "Apache-2.0", - "optional": true - }, - "node_modules/bare-fs": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.6.tgz", - "integrity": "sha512-25RsLF33BqooOEFNdMcEhMpJy8EoR88zSMrnOQOaM3USnOK2VmaJ1uaQEwPA6AQjrv1lXChScosN6CzbwbO9OQ==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "bare-events": "^2.5.4", - "bare-path": "^3.0.0", - "bare-stream": "^2.6.4" - }, - "engines": { - "bare": ">=1.16.0" - }, - "peerDependencies": { - "bare-buffer": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - } - } - }, - "node_modules/bare-os": { - "version": "3.6.1", - "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz", - "integrity": "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "engines": { - "bare": ">=1.14.0" - } - }, - "node_modules/bare-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", - "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "bare-os": "^3.0.1" - } - }, - "node_modules/bare-stream": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz", - "integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "dependencies": { - "streamx": "^2.21.0" - }, - "peerDependencies": { - "bare-buffer": "*", - "bare-events": "*" - }, - "peerDependenciesMeta": { - "bare-buffer": { - "optional": true - }, - "bare-events": { - "optional": true - } - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/basic-auth": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", - "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "5.1.2" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/bignumber.js": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", - "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/binaryextensions": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-6.11.0.tgz", - "integrity": "sha512-sXnYK/Ij80TO3lcqZVV2YgfKN5QjUWIRk/XSm2J/4bd/lPko3lvk0O4ZppH6m+6hB2/GTu+ptNwVFe1xh+QLQw==", - "dev": true, - "license": "Artistic-2.0", - "dependencies": { - "editions": "^6.21.0" - }, - "engines": { - "node": ">=4" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "node_modules/boolean": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", - "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", - "dev": true, - "optional": true - }, - "node_modules/boundary": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/boundary/-/boundary-2.0.0.tgz", - "integrity": "sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "node_modules/browserify-zlib": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", - "integrity": "sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "pako": "~0.2.0" - } - }, - "node_modules/browserify-zlib/node_modules/pako": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", - "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", - "dev": true, - "license": "MIT" - }, - "node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "dev": true, - "engines": { - "node": "*" - } - }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/bundle-name": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", - "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", - "dev": true, - "dependencies": { - "run-applescript": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/c8": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/c8/-/c8-9.1.0.tgz", - "integrity": "sha512-mBWcT5iqNir1zIkzSPyI3NCR9EZCVI3WUD+AVO17MVWTSFNyUueXE82qTeampNtTr+ilN/5Ua3j24LgbCKjDVg==", - "dev": true, - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@istanbuljs/schema": "^0.1.3", - "find-up": "^5.0.0", - "foreground-child": "^3.1.1", - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-report": "^3.0.1", - "istanbul-reports": "^3.1.6", - "test-exclude": "^6.0.0", - "v8-to-istanbul": "^9.0.0", - "yargs": "^17.7.2", - "yargs-parser": "^21.1.1" - }, - "bin": { - "c8": "bin/c8.js" - }, - "engines": { - "node": ">=14.14.0" - } - }, - "node_modules/c8/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/c8/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/c8/node_modules/test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "dev": true, - "engines": { - "node": ">=10.6.0" - } - }, - "node_modules/cacheable-request": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", - "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", - "dev": true, - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/chai": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", - "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", - "dev": true, - "license": "MIT", - "dependencies": { - "assertion-error": "^2.0.1", - "check-error": "^2.1.1", - "deep-eql": "^5.0.1", - "loupe": "^3.1.0", - "pathval": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/charenc": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", - "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": "*" - } - }, - "node_modules/check-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", - "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 16" - } - }, - "node_modules/cheerio": { - "version": "1.0.0-rc.12", - "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", - "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", - "dev": true, - "dependencies": { - "cheerio-select": "^2.1.0", - "dom-serializer": "^2.0.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "htmlparser2": "^8.0.1", - "parse5": "^7.0.0", - "parse5-htmlparser2-tree-adapter": "^7.0.0" - }, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/cheeriojs/cheerio?sponsor=1" - } - }, - "node_modules/cheerio-select": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", - "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-select": "^5.1.0", - "css-what": "^6.1.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/cjs-module-lexer": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", - "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==" - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/cli-cursor": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", - "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", - "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", - "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", - "dev": true, - "license": "MIT", - "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/cli-truncate/node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "dev": true, - "license": "MIT" - }, - "node_modules/cli-truncate/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cls-hooked": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/cls-hooked/-/cls-hooked-4.2.2.tgz", - "integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==", - "dependencies": { - "async-hook-jl": "^1.7.6", - "emitter-listener": "^1.0.1", - "semver": "^5.4.1" - }, - "engines": { - "node": "^4.7 || >=6.9 || >=7.3 || >=8.2.1" - } - }, - "node_modules/cls-hooked/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/cockatiel": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/cockatiel/-/cockatiel-3.2.1.tgz", - "integrity": "sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=16" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/commandpost": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/commandpost/-/commandpost-1.4.0.tgz", - "integrity": "sha512-aE2Y4MTFJ870NuB/+2z1cXBhSBBzRydVVjzhFC4gtenEhpnj15yu0qptWGJsO9YGrcPZ3ezX8AWb1VA391MKpQ==", - "dev": true - }, - "node_modules/comment-parser": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", - "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-disposition/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/continuation-local-storage": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz", - "integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==", - "dependencies": { - "async-listener": "^0.6.0", - "emitter-listener": "^1.1.1" - } - }, - "node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true - }, - "node_modules/cookies": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.9.1.tgz", - "integrity": "sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "~2.0.0", - "keygrip": "~1.1.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/copyfiles": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz", - "integrity": "sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob": "^7.0.5", - "minimatch": "^3.0.3", - "mkdirp": "^1.0.4", - "noms": "0.0.0", - "through2": "^2.0.1", - "untildify": "^4.0.0", - "yargs": "^16.1.0" - }, - "bin": { - "copyfiles": "copyfiles", - "copyup": "copyfiles" - } - }, - "node_modules/copyfiles/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/copyfiles/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/copyfiles/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "dev": true, - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/copyfiles/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/copyfiles/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/copyfiles/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/copyfiles/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/copyfiles/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/copyfiles/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "dev": true - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crypt": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", - "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": "*" - } - }, - "node_modules/css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", - "dev": true, - "engines": { - "node": ">= 6" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" - } - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true, - "license": "MIT" - }, - "node_modules/csv-parse": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-6.0.0.tgz", - "integrity": "sha512-6aB9WrymEruVDwQOwa5AuYk4/Gb+HaJgLHGKOA9BXTqgsIFvbdHzQzZOuqNCOooTGciPDaHzTlGkU5P6kYVUYw==", - "dev": true, - "license": "MIT" - }, - "node_modules/data-view-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", - "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", - "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/inspect-js" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", - "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/debug": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", - "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-eql": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", - "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-equal": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", - "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==", - "dev": true, - "license": "MIT" - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "dev": true, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/default-browser": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", - "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", - "dev": true, - "dependencies": { - "bundle-name": "^4.1.0", - "default-browser-id": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser-id": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", - "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", - "dev": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "dev": true, - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "dev": true, - "optional": true - }, - "node_modules/diagnostic-channel": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/diagnostic-channel/-/diagnostic-channel-1.1.1.tgz", - "integrity": "sha512-r2HV5qFkUICyoaKlBEpLKHjxMXATUf/l+h8UZPGBHGLy4DDiY2sOLcIctax4eRnTw5wH2jTMExLntGPJ8eOJxw==", - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - } - }, - "node_modules/diagnostic-channel-publishers": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/diagnostic-channel-publishers/-/diagnostic-channel-publishers-1.0.8.tgz", - "integrity": "sha512-HmSm9hXxSPxA9BaLGY98QU1zsdjeCk113KjAYGPCen1ZP6mhVaTPzHd6UYv5r21DnWANi+f+NyPOHruGT9jpqQ==", - "license": "MIT", - "peerDependencies": { - "diagnostic-channel": "*" - } - }, - "node_modules/diff": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.2.tgz", - "integrity": "sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dom-helpers": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", - "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.8.7", - "csstype": "^3.0.2" - } - }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", - "dev": true, - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" - }, - "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" - } - }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] - }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", - "dev": true, - "dependencies": { - "domelementtype": "^2.3.0" - }, - "engines": { - "node": ">= 4" - }, - "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" - } - }, - "node_modules/dompurify": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.0.tgz", - "integrity": "sha512-r+f6MYR1gGN1eJv0TVQbhA7if/U7P87cdPl3HN5rikqaBSBxLiCb/b9O+2eG0cxz0ghyU+mU1QkbsOwERMYlWQ==", - "license": "(MPL-2.0 OR Apache-2.0)", - "optionalDependencies": { - "@types/trusted-types": "^2.0.7" - } - }, - "node_modules/domutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", - "dev": true, - "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" - }, - "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/dotenv": { - "version": "17.2.0", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.0.tgz", - "integrity": "sha512-Q4sgBT60gzd0BB0lSyYD3xM4YxrXA9y4uBDof1JNYGzOXrQdQ6yX+7XIAqoFOGQFOTK1D3Hts5OllpxMDZFONQ==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/duplexify": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", - "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/editions": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/editions/-/editions-6.21.0.tgz", - "integrity": "sha512-ofkXJtn7z0urokN62DI3SBo/5xAtF0rR7tn+S/bSYV79Ka8pTajIIl+fFQ1q88DQEImymmo97M4azY3WX/nUdg==", - "dev": true, - "license": "Artistic-2.0", - "dependencies": { - "version-range": "^4.13.0" - }, - "engines": { - "node": ">=4" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/editorconfig": { - "version": "0.15.3", - "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", - "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", - "dev": true, - "dependencies": { - "commander": "^2.19.0", - "lru-cache": "^4.1.5", - "semver": "^5.6.0", - "sigmund": "^1.0.1" - }, - "bin": { - "editorconfig": "bin/editorconfig" - } - }, - "node_modules/editorconfig/node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/editorconfig/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/editorconfig/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/editorconfig/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "dev": true - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "dev": true, - "license": "MIT" - }, - "node_modules/electron": { - "version": "37.8.0", - "resolved": "https://registry.npmjs.org/electron/-/electron-37.8.0.tgz", - "integrity": "sha512-R7fCCfp/foGvJjxReBpb01Fk0bEKAvUdbwXK4c2c2ttuHpPEV/k65GRkz5yYYVhE8EGIa/j5uh0uToOpsocsZw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "@electron/get": "^2.0.0", - "@types/node": "^22.7.7", - "extract-zip": "^2.0.1" - }, - "bin": { - "electron": "cli.js" - }, - "engines": { - "node": ">= 12.20.55" - } - }, - "node_modules/embla-carousel": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.6.0.tgz", - "integrity": "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==", - "dev": true, - "license": "MIT" - }, - "node_modules/embla-carousel-autoplay": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/embla-carousel-autoplay/-/embla-carousel-autoplay-8.6.0.tgz", - "integrity": "sha512-OBu5G3nwaSXkZCo1A6LTaFMZ8EpkYbwIaH+bPqdBnDGQ2fh4+NbzjXjs2SktoPNKCtflfVMc75njaDHOYXcrsA==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "embla-carousel": "8.6.0" - } - }, - "node_modules/embla-carousel-fade": { - "version": "8.6.0", - "resolved": "https://registry.npmjs.org/embla-carousel-fade/-/embla-carousel-fade-8.6.0.tgz", - "integrity": "sha512-qaYsx5mwCz72ZrjlsXgs1nKejSrW+UhkbOMwLgfRT7w2LtdEB03nPRI06GHuHv5ac2USvbEiX2/nAHctcDwvpg==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "embla-carousel": "8.6.0" - } - }, - "node_modules/emitter-listener": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", - "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", - "dependencies": { - "shimmer": "^1.2.0" - } - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enhanced-resolve": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/entities": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", - "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/environment": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", - "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.24.0", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", - "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.2", - "arraybuffer.prototype.slice": "^1.0.4", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "data-view-buffer": "^1.0.2", - "data-view-byte-length": "^1.0.2", - "data-view-byte-offset": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-set-tostringtag": "^2.1.0", - "es-to-primitive": "^1.3.0", - "function.prototype.name": "^1.1.8", - "get-intrinsic": "^1.3.0", - "get-proto": "^1.0.1", - "get-symbol-description": "^1.1.0", - "globalthis": "^1.0.4", - "gopd": "^1.2.0", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "internal-slot": "^1.1.0", - "is-array-buffer": "^3.0.5", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.2", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.2.1", - "is-set": "^2.0.3", - "is-shared-array-buffer": "^1.0.4", - "is-string": "^1.1.1", - "is-typed-array": "^1.1.15", - "is-weakref": "^1.1.1", - "math-intrinsics": "^1.1.0", - "object-inspect": "^1.13.4", - "object-keys": "^1.1.1", - "object.assign": "^4.1.7", - "own-keys": "^1.0.1", - "regexp.prototype.flags": "^1.5.4", - "safe-array-concat": "^1.1.3", - "safe-push-apply": "^1.0.0", - "safe-regex-test": "^1.1.0", - "set-proto": "^1.0.0", - "stop-iteration-iterator": "^1.1.0", - "string.prototype.trim": "^1.2.10", - "string.prototype.trimend": "^1.0.9", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.3", - "typed-array-byte-length": "^1.0.3", - "typed-array-byte-offset": "^1.0.4", - "typed-array-length": "^1.0.7", - "unbox-primitive": "^1.1.0", - "which-typed-array": "^1.1.19" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", - "dev": true, - "license": "MIT" - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", - "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "dev": true, - "optional": true - }, - "node_modules/esbuild": { - "version": "0.25.6", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.6.tgz", - "integrity": "sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.25.6", - "@esbuild/android-arm": "0.25.6", - "@esbuild/android-arm64": "0.25.6", - "@esbuild/android-x64": "0.25.6", - "@esbuild/darwin-arm64": "0.25.6", - "@esbuild/darwin-x64": "0.25.6", - "@esbuild/freebsd-arm64": "0.25.6", - "@esbuild/freebsd-x64": "0.25.6", - "@esbuild/linux-arm": "0.25.6", - "@esbuild/linux-arm64": "0.25.6", - "@esbuild/linux-ia32": "0.25.6", - "@esbuild/linux-loong64": "0.25.6", - "@esbuild/linux-mips64el": "0.25.6", - "@esbuild/linux-ppc64": "0.25.6", - "@esbuild/linux-riscv64": "0.25.6", - "@esbuild/linux-s390x": "0.25.6", - "@esbuild/linux-x64": "0.25.6", - "@esbuild/netbsd-arm64": "0.25.6", - "@esbuild/netbsd-x64": "0.25.6", - "@esbuild/openbsd-arm64": "0.25.6", - "@esbuild/openbsd-x64": "0.25.6", - "@esbuild/openharmony-arm64": "0.25.6", - "@esbuild/sunos-x64": "0.25.6", - "@esbuild/win32-arm64": "0.25.6", - "@esbuild/win32-ia32": "0.25.6", - "@esbuild/win32-x64": "0.25.6" - } - }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "dev": true, - "license": "MIT" - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "9.30.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.30.1.tgz", - "integrity": "sha512-zmxXPNMOXmwm9E0yQLi5uqXHs7uq2UIiqEKo3Gq+3fwo1XrJ+hijAZImyF7hclW3E6oHz43Yk3RP8at6OTKflQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.12.1", - "@eslint/config-array": "^0.21.0", - "@eslint/config-helpers": "^0.3.0", - "@eslint/core": "^0.14.0", - "@eslint/eslintrc": "^3.3.1", - "@eslint/js": "9.30.1", - "@eslint/plugin-kit": "^0.3.1", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "@types/json-schema": "^7.0.15", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^8.4.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.0", - "esquery": "^1.5.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/eslint-import-context": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/eslint-import-context/-/eslint-import-context-0.1.8.tgz", - "integrity": "sha512-bq+F7nyc65sKpZGT09dY0S0QrOnQtuDVIfyTGQ8uuvtMIF7oHp6CEP3mouN0rrnYF3Jqo6Ke0BfU/5wASZue1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-tsconfig": "^4.10.1", - "stable-hash-x": "^0.1.1" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-import-context" - }, - "peerDependencies": { - "unrs-resolver": "^1.0.0" - }, - "peerDependenciesMeta": { - "unrs-resolver": { - "optional": true - } - } - }, - "node_modules/eslint-import-context/node_modules/stable-hash-x": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/stable-hash-x/-/stable-hash-x-0.1.1.tgz", - "integrity": "sha512-l0x1D6vhnsNUGPFVDx45eif0y6eedVC8nm5uACTrVFJFtl2mLRW17aWtVyxFCpn5t94VUPkjU8vSLwIuwwqtJQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", - "dev": true, - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" - } - }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-import-resolver-typescript": { - "version": "4.4.4", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-4.4.4.tgz", - "integrity": "sha512-1iM2zeBvrYmUNTj2vSC/90JTHDth+dfOfiNKkxApWRsTJYNrc8rOdxxIf5vazX+BiAXTeOT0UvWpGI/7qIWQOw==", - "dev": true, - "license": "ISC", - "dependencies": { - "debug": "^4.4.1", - "eslint-import-context": "^0.1.8", - "get-tsconfig": "^4.10.1", - "is-bun-module": "^2.0.0", - "stable-hash-x": "^0.2.0", - "tinyglobby": "^0.2.14", - "unrs-resolver": "^1.7.11" - }, - "engines": { - "node": "^16.17.0 || >=18.6.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-import-resolver-typescript" - }, - "peerDependencies": { - "eslint": "*", - "eslint-plugin-import": "*", - "eslint-plugin-import-x": "*" - }, - "peerDependenciesMeta": { - "eslint-plugin-import": { - "optional": true - }, - "eslint-plugin-import-x": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", - "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.2.7" - }, - "engines": { - "node": ">=4" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-header": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-header/-/eslint-plugin-header-3.1.1.tgz", - "integrity": "sha512-9vlKxuJ4qf793CmeeSrZUvVClw6amtpghq3CuWcB5cUNnWHQhgcqy5eF8oVKFk1G3Y/CbchGfEaw3wiIJaNmVg==", - "dev": true, - "peerDependencies": { - "eslint": ">=7.7.0" - } - }, - "node_modules/eslint-plugin-import": { - "version": "2.32.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", - "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rtsao/scc": "^1.1.0", - "array-includes": "^3.1.9", - "array.prototype.findlastindex": "^1.2.6", - "array.prototype.flat": "^1.3.3", - "array.prototype.flatmap": "^1.3.3", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.12.1", - "hasown": "^2.0.2", - "is-core-module": "^2.16.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.8", - "object.groupby": "^1.0.3", - "object.values": "^1.2.1", - "semver": "^6.3.1", - "string.prototype.trimend": "^1.0.9", - "tsconfig-paths": "^3.15.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" - } - }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/eslint-plugin-jsdoc": { - "version": "51.3.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-51.3.4.tgz", - "integrity": "sha512-maz6qa95+sAjMr9m5oRyfejc+mnyQWsWSe9oyv9371bh4/T0kWOMryJNO4h8rEd97wo/9lbzwi3OOX4rDhnAzg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@es-joy/jsdoccomment": "~0.52.0", - "are-docs-informative": "^0.0.2", - "comment-parser": "1.4.1", - "debug": "^4.4.1", - "escape-string-regexp": "^4.0.0", - "espree": "^10.4.0", - "esquery": "^1.6.0", - "parse-imports-exports": "^0.2.4", - "semver": "^7.7.2", - "spdx-expression-parse": "^4.0.0" - }, - "engines": { - "node": ">=20.11.0" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" - } - }, - "node_modules/eslint-plugin-jsdoc/node_modules/spdx-expression-parse": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", - "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/eslint-plugin-no-only-tests": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.3.0.tgz", - "integrity": "sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=5.0.0" - } - }, - "node_modules/eslint-scope": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", - "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true, - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "dev": true, - "license": "MIT" - }, - "node_modules/exenv-es6": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/exenv-es6/-/exenv-es6-1.1.1.tgz", - "integrity": "sha512-vlVu3N8d6yEMpMsEm+7sUBAI81aqYYuEvfK0jNqmdb/OPXzzH7QWDDnVjMvDSY47JdHEqx/dfC/q8WkfoTmpGQ==", - "license": "MIT" - }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/expect-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz", - "integrity": "sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/exponential-backoff": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.2.tgz", - "integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==", - "dev": true, - "license": "Apache-2.0", - "optional": true - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "license": "MIT" - }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "dev": true, - "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-glob": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", - "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.8" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fast-uri": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.5.tgz", - "integrity": "sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "reusify": "^1.0.4" - } - }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "dev": true, - "dependencies": { - "pend": "~1.2.0" - } - }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "dev": true, - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/flat-cache/node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/flatted": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", - "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", - "dev": true, - "license": "ISC" - }, - "node_modules/for-each": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", - "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", - "dev": true, - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/form-data": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", - "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", - "dev": true, - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "dev": true - }, - "node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/fs-minipass/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "dev": true - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/gaxios": { - "version": "6.7.1", - "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz", - "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==", - "license": "Apache-2.0", - "dependencies": { - "extend": "^3.0.2", - "https-proxy-agent": "^7.0.1", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.9", - "uuid": "^9.0.1" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/gaxios/node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/gcp-metadata": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.1.tgz", - "integrity": "sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==", - "license": "Apache-2.0", - "dependencies": { - "gaxios": "^6.1.1", - "google-logging-utils": "^0.0.2", - "json-bigint": "^1.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-east-asian-width": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", - "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-symbol-description": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", - "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-tsconfig": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz", - "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" - } - }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", - "dev": true - }, - "node_modules/glob": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", - "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "foreground-child": "^3.3.1", - "jackspeak": "^4.1.1", - "minimatch": "^10.1.1", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/global-agent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", - "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", - "dev": true, - "optional": true, - "dependencies": { - "boolean": "^3.0.1", - "es6-error": "^4.1.1", - "matcher": "^3.0.0", - "roarr": "^2.15.3", - "semver": "^7.3.2", - "serialize-error": "^7.0.1" - }, - "engines": { - "node": ">=10.0" - } - }, - "node_modules/globals": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", - "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/globby": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz", - "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@sindresorhus/merge-streams": "^2.1.0", - "fast-glob": "^3.3.3", - "ignore": "^7.0.3", - "path-type": "^6.0.0", - "slash": "^5.1.0", - "unicorn-magic": "^0.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/google-auth-library": { - "version": "9.15.1", - "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.1.tgz", - "integrity": "sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==", - "license": "Apache-2.0", - "dependencies": { - "base64-js": "^1.3.0", - "ecdsa-sig-formatter": "^1.0.11", - "gaxios": "^6.1.1", - "gcp-metadata": "^6.1.0", - "gtoken": "^7.0.0", - "jws": "^4.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/google-logging-utils": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-0.0.2.tgz", - "integrity": "sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=14" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/got": { - "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", - "dev": true, - "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", - "dev": true - }, - "node_modules/gtoken": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", - "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", - "license": "MIT", - "dependencies": { - "gaxios": "^6.0.0", - "jws": "^4.0.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/gunzip-maybe": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/gunzip-maybe/-/gunzip-maybe-1.4.2.tgz", - "integrity": "sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "browserify-zlib": "^0.1.4", - "is-deflate": "^1.0.0", - "is-gzip": "^1.0.0", - "peek-stream": "^1.1.0", - "pumpify": "^1.3.3", - "through2": "^2.0.3" - }, - "bin": { - "gunzip-maybe": "bin.js" - } - }, - "node_modules/has-bigints": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", - "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", - "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "dev": true, - "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/hosted-git-info/node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true, - "license": "MIT" - }, - "node_modules/htmlparser2": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", - "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", - "dev": true, - "funding": [ - "https://github.com/fb55/htmlparser2?sponsor=1", - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ], - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3", - "domutils": "^3.0.1", - "entities": "^4.4.0" - } - }, - "node_modules/http-assert": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", - "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", - "dev": true, - "license": "MIT", - "dependencies": { - "deep-equal": "~1.0.1", - "http-errors": "~1.8.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-assert/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-assert/node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-assert/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "dev": true, - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, - "node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "license": "MIT", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/husky": { - "version": "9.1.7", - "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", - "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", - "dev": true, - "license": "MIT", - "bin": { - "husky": "bin.js" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/typicode" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/immediate": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", - "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", - "dev": true - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-in-the-middle": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.4.2.tgz", - "integrity": "sha512-9WOz1Yh/cvO/p69sxRmhyQwrIGGSp7EIdcb+fFNVi7CzQGQB8U1/1XrKVSbEd/GNOAeM0peJtmi7+qphe7NvAw==", - "dependencies": { - "acorn": "^8.8.2", - "acorn-import-assertions": "^1.9.0", - "cjs-module-lexer": "^1.2.2", - "module-details-from-path": "^1.0.3" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "dev": true, - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "dev": true - }, - "node_modules/internal-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", - "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.2", - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ip-address": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" - }, - "engines": { - "node": ">= 12" - } - }, - "node_modules/is-array-buffer": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", - "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "dev": true - }, - "node_modules/is-async-function": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", - "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "async-function": "^1.0.0", - "call-bound": "^1.0.3", - "get-proto": "^1.0.1", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-bigint": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", - "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-bigints": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-boolean-object": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", - "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-bun-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", - "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.7.1" - } - }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-core-module": { - "version": "2.16.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", - "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", - "license": "MIT", - "dependencies": { - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-data-view": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", - "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "is-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-date-object": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", - "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-deflate": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-deflate/-/is-deflate-1.0.0.tgz", - "integrity": "sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-finalizationregistry": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", - "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-generator-function": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", - "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-proto": "^1.0.0", - "has-tostringtag": "^1.0.2", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-gzip": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-gzip/-/is-gzip-1.0.0.tgz", - "integrity": "sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dev": true, - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-inside-container/node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "dev": true, - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-interactive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", - "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-number-object": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", - "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-regex": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", - "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", - "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-string": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", - "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-symbol": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", - "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "has-symbols": "^1.1.0", - "safe-regex-test": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-typed-array": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", - "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", - "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-weakset": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", - "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", - "dev": true, - "dependencies": { - "is-inside-container": "^1.0.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "dev": true - }, - "node_modules/isbinaryfile": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.4.tgz", - "integrity": "sha512-YKBKVkKhty7s8rxddb40oOkuP0NbaeXrQvLin6QMHL7Ypiy2RW9LwOVrVgZRyOrhQlayMd9t+D8yDy8MKFTSDQ==", - "license": "MIT", - "engines": { - "node": ">= 18.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/gjtorikian/" - } - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-lib-source-maps": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", - "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.23", - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/istextorbinary": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-9.5.0.tgz", - "integrity": "sha512-5mbUj3SiZXCuRf9fT3ibzbSSEWiy63gFfksmGfdOzujPjW3k+z8WvIBxcJHBoQNlaZaiyB25deviif2+osLmLw==", - "dev": true, - "license": "Artistic-2.0", - "dependencies": { - "binaryextensions": "^6.11.0", - "editions": "^6.21.0", - "textextensions": "^6.11.0" - }, - "engines": { - "node": ">=4" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/jackspeak": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", - "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" - }, - "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "dev": true, - "license": "MIT", - "optional": true - }, - "node_modules/jsdoc-type-pratt-parser": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz", - "integrity": "sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/json-bigint": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", - "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", - "license": "MIT", - "dependencies": { - "bignumber.js": "^9.0.0" - } - }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", - "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/json-schema-to-ts": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/json-schema-to-ts/-/json-schema-to-ts-3.1.1.tgz", - "integrity": "sha512-+DWg8jCJG2TEnpy7kOm/7/AxaYoaRbjVB4LFZLySZlWn8exGs3A4OLJR966cVvU26N7X9TWxl+Jsw7dzAqKT6g==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.18.3", - "ts-algebra": "^2.0.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", - "dev": true - }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "dev": true, - "optional": true - }, - "node_modules/json5": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", - "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", - "dev": true, - "license": "MIT", - "dependencies": { - "minimist": "^1.2.0" - }, - "bin": { - "json5": "lib/cli.js" - } - }, - "node_modules/jsonc-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", - "license": "MIT" - }, - "node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "dev": true, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonwebtoken": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", - "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=12", - "npm": ">=6" - } - }, - "node_modules/jsonwebtoken/node_modules/jwa": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.2.tgz", - "integrity": "sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-equal-constant-time": "^1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jsonwebtoken/node_modules/jws": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.3.tgz", - "integrity": "sha512-byiJ0FLRdLdSVSReO/U4E7RoEyOCKnEnEPMjq3HxWtvzLsV08/i5RQKsFVNkCldrCaPr2vDNAOMsfs8T/Hze7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "jwa": "^1.4.2", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jszip": { - "version": "3.10.1", - "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", - "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", - "dev": true, - "dependencies": { - "lie": "~3.3.0", - "pako": "~1.0.2", - "readable-stream": "~2.3.6", - "setimmediate": "^1.0.5" - } - }, - "node_modules/jwa": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", - "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", - "license": "MIT", - "dependencies": { - "buffer-equal-constant-time": "^1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jws": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", - "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", - "license": "MIT", - "dependencies": { - "jwa": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/keyborg": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/keyborg/-/keyborg-2.6.0.tgz", - "integrity": "sha512-o5kvLbuTF+o326CMVYpjlaykxqYP9DphFQZ2ZpgrvBouyvOxyEB7oqe8nOLFpiV5VCtz0D3pt8gXQYWpLpBnmA==", - "dev": true, - "license": "MIT" - }, - "node_modules/keygrip": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", - "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "tsscmp": "1.0.6" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/keytar": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", - "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "dependencies": { - "node-addon-api": "^4.3.0", - "prebuild-install": "^7.0.1" - } - }, - "node_modules/keyv": { - "version": "5.3.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.3.4.tgz", - "integrity": "sha512-ypEvQvInNpUe+u+w8BIcPkQvEqXquyyibWE/1NB5T2BTzIpS5cGEV1LZskDzPSTvNAaT4+5FutvzlvnkxOSKlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@keyv/serialize": "^1.0.3" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/koa": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/koa/-/koa-3.1.1.tgz", - "integrity": "sha512-KDDuvpfqSK0ZKEO2gCPedNjl5wYpfj+HNiuVRlbhd1A88S3M0ySkdf2V/EJ4NWt5dwh5PXCdcenrKK2IQJAxsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "accepts": "^1.3.8", - "content-disposition": "~0.5.4", - "content-type": "^1.0.5", - "cookies": "~0.9.1", - "delegates": "^1.0.0", - "destroy": "^1.2.0", - "encodeurl": "^2.0.0", - "escape-html": "^1.0.3", - "fresh": "~0.5.2", - "http-assert": "^1.5.0", - "http-errors": "^2.0.0", - "koa-compose": "^4.1.0", - "mime-types": "^3.0.1", - "on-finished": "^2.4.1", - "parseurl": "^1.3.3", - "statuses": "^2.0.1", - "type-is": "^2.0.1", - "vary": "^1.1.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/koa-compose": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", - "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", - "dev": true, - "license": "MIT" - }, - "node_modules/koa-morgan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/koa-morgan/-/koa-morgan-1.0.1.tgz", - "integrity": "sha512-JOUdCNlc21G50afBXfErUrr1RKymbgzlrO5KURY+wmDG1Uvd2jmxUJcHgylb/mYXy2SjiNZyYim/ptUBGsIi3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "morgan": "^1.6.1" - } - }, - "node_modules/koa-mount": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/koa-mount/-/koa-mount-4.2.0.tgz", - "integrity": "sha512-2iHQc7vbA9qLeVq5gKAYh3m5DOMMlMfIKjW/REPAS18Mf63daCJHHVXY9nbu7ivrnYn5PiPC4CE523Tf5qvjeQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.0.1", - "koa-compose": "^4.1.0" - }, - "engines": { - "node": ">= 7.6.0" - } - }, - "node_modules/koa-send": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/koa-send/-/koa-send-5.0.1.tgz", - "integrity": "sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.1.1", - "http-errors": "^1.7.3", - "resolve-path": "^1.4.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/koa-send/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/koa-send/node_modules/http-errors": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", - "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": ">= 1.5.0 < 2", - "toidentifier": "1.0.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/koa-send/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/koa-static": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz", - "integrity": "sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^3.1.0", - "koa-send": "^5.0.0" - }, - "engines": { - "node": ">= 7.6.0" - } - }, - "node_modules/koa-static/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "node_modules/koa/node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/koa/node_modules/mime-types": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lie": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", - "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", - "dev": true, - "dependencies": { - "immediate": "~3.0.5" - } - }, - "node_modules/lilconfig": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", - "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antonk52" - } - }, - "node_modules/lines-and-columns": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", - "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, - "node_modules/linkify-it": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", - "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", - "dependencies": { - "uc.micro": "^2.0.0" - } - }, - "node_modules/lint-staged": { - "version": "15.2.9", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.9.tgz", - "integrity": "sha512-BZAt8Lk3sEnxw7tfxM7jeZlPRuT4M68O0/CwZhhaw6eeWu0Lz5eERE3m386InivXB64fp/mDID452h48tvKlRQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "~5.3.0", - "commander": "~12.1.0", - "debug": "~4.3.6", - "execa": "~8.0.1", - "lilconfig": "~3.1.2", - "listr2": "~8.2.4", - "micromatch": "~4.0.7", - "pidtree": "~0.6.0", - "string-argv": "~0.3.2", - "yaml": "~2.5.0" - }, - "bin": { - "lint-staged": "bin/lint-staged.js" - }, - "engines": { - "node": ">=18.12.0" - }, - "funding": { - "url": "https://opencollective.com/lint-staged" - } - }, - "node_modules/lint-staged/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "dev": true, - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/lint-staged/node_modules/debug": { - "version": "4.3.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", - "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/lint-staged/node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/lint-staged/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "dev": true, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "dev": true, - "engines": { - "node": ">=16.17.0" - } - }, - "node_modules/lint-staged/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/npm-run-path": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", - "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", - "dev": true, - "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dev": true, - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/node_modules/yaml": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", - "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", - "dev": true, - "license": "ISC", - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/listr2": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.5.tgz", - "integrity": "sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "cli-truncate": "^4.0.0", - "colorette": "^2.0.20", - "eventemitter3": "^5.0.1", - "log-update": "^6.1.0", - "rfdc": "^1.4.1", - "wrap-ansi": "^9.0.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/listr2/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/listr2/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/listr2/node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "dev": true, - "license": "MIT" - }, - "node_modules/listr2/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/listr2/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/listr2/node_modules/wrap-ansi": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", - "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "dev": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", - "dev": true, - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", - "deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead.", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "dev": true, - "license": "MIT" - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true, - "license": "MIT" - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", - "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-escapes": "^7.0.0", - "cli-cursor": "^5.0.0", - "slice-ansi": "^7.1.0", - "strip-ansi": "^7.1.0", - "wrap-ansi": "^9.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/log-update/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-update/node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "dev": true, - "license": "MIT" - }, - "node_modules/log-update/node_modules/is-fullwidth-code-point": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", - "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-east-asian-width": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", - "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/log-update/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", - "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/loupe": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.4.tgz", - "integrity": "sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==", - "dev": true, - "license": "MIT" - }, - "node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/lru-cache": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", - "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==", - "license": "ISC", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/magic-string": { - "version": "0.30.17", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", - "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0" - } - }, - "node_modules/magicast": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz", - "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.25.4", - "@babel/types": "^7.25.4", - "source-map-js": "^1.2.0" - } - }, - "node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", - "dev": true, - "license": "MIT", - "dependencies": { - "semver": "^7.5.3" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/markdown-it": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", - "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1", - "entities": "^4.4.0", - "linkify-it": "^5.0.0", - "mdurl": "^2.0.0", - "punycode.js": "^2.3.1", - "uc.micro": "^2.1.0" - }, - "bin": { - "markdown-it": "bin/markdown-it.mjs" - } - }, - "node_modules/matcher": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", - "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", - "dev": true, - "optional": true, - "dependencies": { - "escape-string-regexp": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/md5": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", - "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "charenc": "0.0.2", - "crypt": "0.0.2", - "is-buffer": "~1.1.6" - } - }, - "node_modules/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==" - }, - "node_modules/media-typer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", - "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", - "dev": true, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, - "node_modules/micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/micromatch/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", - "dev": true, - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-function": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", - "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", - "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-collect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", - "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/minipass-collect/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "optional": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-flush/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-pipeline/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minipass-sized/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", - "dev": true, - "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/minizlib/node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "dev": true, - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true, - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "dev": true - }, - "node_modules/mobx": { - "version": "6.13.7", - "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.13.7.tgz", - "integrity": "sha512-aChaVU/DO5aRPmk1GX8L+whocagUUpBQqoPtJk+cm7UOXUk87J4PeWCh6nNmTTIfEhiR9DI/+FnA8dln/hTK7g==", - "dev": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mobx" - } - }, - "node_modules/mobx-react-lite": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mobx-react-lite/-/mobx-react-lite-4.1.0.tgz", - "integrity": "sha512-QEP10dpHHBeQNv1pks3WnHRCem2Zp636lq54M2nKO2Sarr13pL4u6diQXf65yzXUn0mkk18SyIDCm9UOJYTi1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "use-sync-external-store": "^1.4.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mobx" - }, - "peerDependencies": { - "mobx": "^6.9.0", - "react": "^16.8.0 || ^17 || ^18 || ^19" - }, - "peerDependenciesMeta": { - "react-dom": { - "optional": true - }, - "react-native": { - "optional": true - } - } - }, - "node_modules/mocha": { - "version": "11.7.1", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.1.tgz", - "integrity": "sha512-5EK+Cty6KheMS/YLPPMJC64g5V61gIR25KsRItHw6x4hEKT6Njp1n9LOlH4gpevuwMVS66SXaBBpg+RWZkza4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "browser-stdout": "^1.3.1", - "chokidar": "^4.0.1", - "debug": "^4.3.5", - "diff": "^7.0.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^10.4.5", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^9.0.5", - "ms": "^2.1.3", - "picocolors": "^1.1.1", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^9.2.0", - "yargs": "^17.7.2", - "yargs-parser": "^21.1.1", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - } - }, - "node_modules/mocha-junit-reporter": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/mocha-junit-reporter/-/mocha-junit-reporter-2.2.1.tgz", - "integrity": "sha512-iDn2tlKHn8Vh8o4nCzcUVW4q7iXp7cC4EB78N0cDHIobLymyHNwe0XG8HEHHjc3hJlXm0Vy6zcrxaIhnI2fWmw==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4", - "md5": "^2.3.0", - "mkdirp": "^3.0.0", - "strip-ansi": "^6.0.1", - "xml": "^1.0.1" - }, - "peerDependencies": { - "mocha": ">=2.2.5" - } - }, - "node_modules/mocha-junit-reporter/node_modules/mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", - "dev": true, - "license": "MIT", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mocha-multi-reporters": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/mocha-multi-reporters/-/mocha-multi-reporters-1.5.1.tgz", - "integrity": "sha512-Yb4QJOaGLIcmB0VY7Wif5AjvLMUFAdV57D2TWEva1Y0kU/3LjKpeRVmlMIfuO1SVbauve459kgtIizADqxMWPg==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.1.1", - "lodash": "^4.17.15" - }, - "engines": { - "node": ">=6.0.0" - }, - "peerDependencies": { - "mocha": ">=3.1.2" - } - }, - "node_modules/mocha/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/mocha/node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "license": "MIT", - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/mocha/node_modules/diff": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", - "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/mocha/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mocha/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/mocha/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/mocha/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mocha/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/mocha/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/mocha/node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/mocha/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/module-details-from-path": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", - "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==" - }, - "node_modules/monaco-editor": { - "version": "0.44.0", - "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.44.0.tgz", - "integrity": "sha512-5SmjNStN6bSuSE5WPT2ZV+iYn1/yI9sd4Igtk23ChvqB7kDk9lZbB9F5frsuvpB+2njdIeGGFf2G4gbE6rCC9Q==", - "dev": true, - "license": "MIT" - }, - "node_modules/morgan": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.1.tgz", - "integrity": "sha512-223dMRJtI/l25dJKWpgij2cMtywuG/WiUKXdvwfbhGKBhy1puASqXwFzmWZ7+K73vUPoR7SS2Qz2cI/g9MKw0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "basic-auth": "~2.0.1", - "debug": "2.6.9", - "depd": "~2.0.0", - "on-finished": "~2.3.0", - "on-headers": "~1.1.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/morgan/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/morgan/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "dev": true, - "license": "MIT" - }, - "node_modules/morgan/node_modules/on-finished": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", - "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", - "dev": true, - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "dev": true - }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", - "dev": true - }, - "node_modules/napi-postinstall": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.2.4.tgz", - "integrity": "sha512-ZEzHJwBhZ8qQSbknHqYcdtQVr8zUgGyM/q6h6qAyhtyVMNrSgDhrC4disf03dYW0e+czXyLnZINnCTEkWy0eJg==", - "dev": true, - "license": "MIT", - "bin": { - "napi-postinstall": "lib/cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/napi-postinstall" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node_modules/node-abi": { - "version": "3.47.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.47.0.tgz", - "integrity": "sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A==", - "dev": true, - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/node-addon-api": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", - "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", - "dev": true, - "optional": true - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/node-sarif-builder": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/node-sarif-builder/-/node-sarif-builder-2.0.3.tgz", - "integrity": "sha512-Pzr3rol8fvhG/oJjIq2NTVB0vmdNNlz22FENhhPojYRZ4/ee08CfK4YuKmuL54V9MLhI1kpzxfOJ/63LzmZzDg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/sarif": "^2.1.4", - "fs-extra": "^10.0.0" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/node-sarif-builder/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/node-sarif-builder/node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/node-sarif-builder/node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/noms": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", - "integrity": "sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==", - "dev": true, - "license": "ISC", - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "~1.0.31" - } - }, - "node_modules/noms/node_modules/isarray": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", - "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/noms/node_modules/readable-stream": { - "version": "1.0.34", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", - "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", - "dev": true, - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.1", - "isarray": "0.0.1", - "string_decoder": "~0.10.x" - } - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - }, - "bin": { - "npm-run-all": "bin/npm-run-all/index.js", - "run-p": "bin/run-p/index.js", - "run-s": "bin/run-s/index.js" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/npm-run-all/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/npm-run-all/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true - }, - "node_modules/npm-run-all/node_modules/cross-spawn": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", - "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", - "dev": true, - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "node_modules/npm-run-all/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/npm-run-all/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dev": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/npm-run-all/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/pidtree": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", - "dev": true, - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/npm-run-all/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/npm-run-all/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-all/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/npm-run-all/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", - "dev": true, - "dependencies": { - "boolbase": "^1.0.0" - }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" - } - }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/object-inspect": { - "version": "1.13.4", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", - "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.assign": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", - "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0", - "has-symbols": "^1.1.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/object.values": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", - "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/on-headers": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", - "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", - "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-function": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open": { - "version": "10.1.2", - "resolved": "https://registry.npmjs.org/open/-/open-10.1.2.tgz", - "integrity": "sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==", - "dev": true, - "license": "MIT", - "dependencies": { - "default-browser": "^5.2.1", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "is-wsl": "^3.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/openai": { - "version": "6.7.0", - "resolved": "https://registry.npmjs.org/openai/-/openai-6.7.0.tgz", - "integrity": "sha512-mgSQXa3O/UXTbA8qFzoa7aydbXBJR5dbLQXCRapAOtoNT+v69sLdKMZzgiakpqhclRnhPggPAXoniVGn2kMY2A==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "openai": "bin/cli" - }, - "peerDependencies": { - "ws": "^8.18.0", - "zod": "^3.25 || ^4.0" - }, - "peerDependenciesMeta": { - "ws": { - "optional": true - }, - "zod": { - "optional": true - } - } - }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/ora": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz", - "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^5.3.0", - "cli-cursor": "^5.0.0", - "cli-spinners": "^2.9.2", - "is-interactive": "^2.0.0", - "is-unicode-supported": "^2.0.0", - "log-symbols": "^6.0.0", - "stdin-discarder": "^0.2.2", - "string-width": "^7.2.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/ora/node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/ora/node_modules/emoji-regex": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", - "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", - "dev": true, - "license": "MIT" - }, - "node_modules/ora/node_modules/is-unicode-supported": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", - "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/log-symbols": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", - "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^5.3.0", - "is-unicode-supported": "^1.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/log-symbols/node_modules/is-unicode-supported": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", - "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/outdent": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/outdent/-/outdent-0.8.0.tgz", - "integrity": "sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==", - "dev": true - }, - "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.6", - "object-keys": "^1.1.1", - "safe-push-apply": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", - "dev": true, - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-map": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", - "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/package-json-from-dist": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", - "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", - "dev": true, - "license": "BlueOak-1.0.0" - }, - "node_modules/pako": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", - "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", - "dev": true - }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, - "license": "MIT", - "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-imports-exports": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz", - "integrity": "sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "parse-statements": "1.0.11" - } - }, - "node_modules/parse-json": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", - "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/code-frame": "^7.21.4", - "error-ex": "^1.3.2", - "json-parse-even-better-errors": "^3.0.0", - "lines-and-columns": "^2.0.3", - "type-fest": "^3.8.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse-json/node_modules/type-fest": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/parse-semver": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz", - "integrity": "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==", - "dev": true, - "dependencies": { - "semver": "^5.1.0" - } - }, - "node_modules/parse-semver/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/parse-statements": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/parse-statements/-/parse-statements-1.0.11.tgz", - "integrity": "sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==", - "dev": true, - "license": "MIT" - }, - "node_modules/parse5": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", - "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", - "dev": true, - "dependencies": { - "entities": "^4.4.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parse5-htmlparser2-tree-adapter": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", - "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", - "dev": true, - "dependencies": { - "domhandler": "^5.0.2", - "parse5": "^7.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/path-scurry": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", - "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/path-to-regexp": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", - "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/path-type": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz", - "integrity": "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, - "node_modules/pathval": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", - "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.16" - } - }, - "node_modules/peek-stream": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/peek-stream/-/peek-stream-1.1.3.tgz", - "integrity": "sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==", - "dev": true, - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "duplexify": "^3.5.0", - "through2": "^2.0.3" - } - }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", - "dev": true - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", - "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pidtree": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", - "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", - "dev": true, - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/playwright": { - "version": "1.56.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.56.1.tgz", - "integrity": "sha512-aFi5B0WovBHTEvpM3DzXTUaeN6eN0qWnTkKx4NQaH4Wvcmc153PdaY2UBdSYKaGYw+UyWXSVyxDUg5DoPEttjw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "playwright-core": "1.56.1" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "fsevents": "2.3.2" - } - }, - "node_modules/playwright-core": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.54.0.tgz", - "integrity": "sha512-uiWpWaJh3R3etpJ0QrpligEMl62Dk1iSAB6NUXylvmQz+e3eipXHDHvOvydDAssb5Oqo0E818qdn0L9GcJSTyA==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "playwright-core": "cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/playwright/node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/playwright/node_modules/playwright-core": { - "version": "1.56.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.56.1.tgz", - "integrity": "sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "playwright-core": "cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/pluralize": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", - "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/possible-typed-array-names": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", - "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/postcss": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", - "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/prebuild-install": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", - "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", - "dev": true, - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/prettier": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", - "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", - "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" - } - }, - "node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/pretty-format/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "dev": true - }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", - "dev": true, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/prompts": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", - "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", - "dev": true, - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, - "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" - } - }, - "node_modules/prop-types/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", - "dev": true - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/pumpify": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", - "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "node_modules/pumpify/node_modules/pump": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", - "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", - "dev": true, - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/punycode.js": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", - "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/qs": { - "version": "6.14.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", - "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.1.0" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "dev": true, - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "node_modules/rc-config-loader": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.3.tgz", - "integrity": "sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w==", - "dev": true, - "license": "MIT", - "dependencies": { - "debug": "^4.3.4", - "js-yaml": "^4.1.0", - "json5": "^2.2.2", - "require-from-string": "^2.0.2" - } - }, - "node_modules/rc-config-loader/node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", - "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/react-dom": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", - "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", - "dev": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1", - "scheduler": "^0.20.2" - }, - "peerDependencies": { - "react": "17.0.2" - } - }, - "node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true, - "license": "MIT" - }, - "node_modules/react-transition-group": { - "version": "4.4.5", - "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", - "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@babel/runtime": "^7.5.5", - "dom-helpers": "^5.0.1", - "loose-envify": "^1.4.0", - "prop-types": "^15.6.2" - }, - "peerDependencies": { - "react": ">=16.6.0", - "react-dom": ">=16.6.0" - } - }, - "node_modules/read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", - "dev": true, - "dependencies": { - "mute-stream": "~0.0.4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", - "dev": true, - "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "dev": true, - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, - "license": "MIT", - "dependencies": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/readdirp/node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", - "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.7", - "get-proto": "^1.0.1", - "which-builtin-type": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", - "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-in-the-middle": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.2.0.tgz", - "integrity": "sha512-3TLx5TGyAY6AOqLBoXmHkNql0HIf2RGbuMgCDT2WO/uGVAPJs6h7Kl+bN6TIZGd9bWhWPwnDnTHGtW8Iu77sdw==", - "dependencies": { - "debug": "^4.1.1", - "module-details-from-path": "^1.0.3", - "resolve": "^1.22.1" - }, - "engines": { - "node": ">=8.6.0" - } - }, - "node_modules/resolve": { - "version": "1.22.6", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", - "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/resolve-path": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz", - "integrity": "sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "http-errors": "~1.6.2", - "path-is-absolute": "1.0.1" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/resolve-path/node_modules/depd": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", - "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/resolve-path/node_modules/http-errors": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", - "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "depd": "~1.1.2", - "inherits": "2.0.3", - "setprototypeof": "1.1.0", - "statuses": ">= 1.4.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/resolve-path/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "dev": true, - "license": "ISC" - }, - "node_modules/resolve-path/node_modules/setprototypeof": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", - "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/resolve-path/node_modules/statuses": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", - "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", - "dev": true, - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" - } - }, - "node_modules/responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "dev": true, - "dependencies": { - "lowercase-keys": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/restore-cursor": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", - "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", - "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^7.0.0", - "signal-exit": "^4.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, - "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" - } - }, - "node_modules/rfdc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "dev": true, - "license": "MIT" - }, - "node_modules/rimraf": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", - "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^11.0.0", - "package-json-from-dist": "^1.0.0" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/roarr": { - "version": "2.15.4", - "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", - "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", - "dev": true, - "optional": true, - "dependencies": { - "boolean": "^3.0.1", - "detect-node": "^2.0.4", - "globalthis": "^1.0.1", - "json-stringify-safe": "^5.0.1", - "semver-compare": "^1.0.0", - "sprintf-js": "^1.1.2" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/rollup": { - "version": "4.52.5", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.5.tgz", - "integrity": "sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.8" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.52.5", - "@rollup/rollup-android-arm64": "4.52.5", - "@rollup/rollup-darwin-arm64": "4.52.5", - "@rollup/rollup-darwin-x64": "4.52.5", - "@rollup/rollup-freebsd-arm64": "4.52.5", - "@rollup/rollup-freebsd-x64": "4.52.5", - "@rollup/rollup-linux-arm-gnueabihf": "4.52.5", - "@rollup/rollup-linux-arm-musleabihf": "4.52.5", - "@rollup/rollup-linux-arm64-gnu": "4.52.5", - "@rollup/rollup-linux-arm64-musl": "4.52.5", - "@rollup/rollup-linux-loong64-gnu": "4.52.5", - "@rollup/rollup-linux-ppc64-gnu": "4.52.5", - "@rollup/rollup-linux-riscv64-gnu": "4.52.5", - "@rollup/rollup-linux-riscv64-musl": "4.52.5", - "@rollup/rollup-linux-s390x-gnu": "4.52.5", - "@rollup/rollup-linux-x64-gnu": "4.52.5", - "@rollup/rollup-linux-x64-musl": "4.52.5", - "@rollup/rollup-openharmony-arm64": "4.52.5", - "@rollup/rollup-win32-arm64-msvc": "4.52.5", - "@rollup/rollup-win32-ia32-msvc": "4.52.5", - "@rollup/rollup-win32-x64-gnu": "4.52.5", - "@rollup/rollup-win32-x64-msvc": "4.52.5", - "fsevents": "~2.3.2" - } - }, - "node_modules/rtl-css-js": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.16.1.tgz", - "integrity": "sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.1.2" - } - }, - "node_modules/run-applescript": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", - "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", - "dev": true, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" - } - }, - "node_modules/run-script-os": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/run-script-os/-/run-script-os-1.1.6.tgz", - "integrity": "sha512-ql6P2LzhBTTDfzKts+Qo4H94VUKpxKDFz6QxxwaUZN0mwvi7L3lpOI7BqPCq7lgDh3XLl0dpeXwfcVIitlrYrw==", - "dev": true, - "bin": { - "run-os": "index.js", - "run-script-os": "index.js" - } - }, - "node_modules/safe-array-concat": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", - "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "get-intrinsic": "^1.2.6", - "has-symbols": "^1.1.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-array-concat/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "node_modules/safe-push-apply": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", - "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "isarray": "^2.0.5" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/safe-push-apply/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/safe-regex-test": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", - "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "is-regex": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/sax": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", - "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", - "dev": true - }, - "node_modules/scheduler": { - "version": "0.20.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", - "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", - "dev": true, - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - } - }, - "node_modules/secretlint": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/secretlint/-/secretlint-10.1.1.tgz", - "integrity": "sha512-q50i+I9w6HH8P6o34LVq6M3hm5GZn2Eq5lYGHkEByOAbVqBHn8gsMGgyxjP1xSrSv1QjDtjxs/zKPm6JtkNzGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@secretlint/config-creator": "^10.1.1", - "@secretlint/formatter": "^10.1.1", - "@secretlint/node": "^10.1.1", - "@secretlint/profiler": "^10.1.1", - "debug": "^4.4.1", - "globby": "^14.1.0", - "read-pkg": "^8.1.0" - }, - "bin": { - "secretlint": "bin/secretlint.js" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/secretlint/node_modules/hosted-git-info": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", - "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", - "dev": true, - "license": "ISC", - "dependencies": { - "lru-cache": "^10.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/secretlint/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/secretlint/node_modules/normalize-package-data": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", - "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^7.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/secretlint/node_modules/read-pkg": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", - "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/normalize-package-data": "^2.4.1", - "normalize-package-data": "^6.0.0", - "parse-json": "^7.0.0", - "type-fest": "^4.2.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/secretlint/node_modules/type-fest": { - "version": "4.41.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", - "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", - "dev": true, - "optional": true - }, - "node_modules/serialize-error": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", - "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", - "dev": true, - "optional": true, - "dependencies": { - "type-fest": "^0.13.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/serialize-error/node_modules/type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "dev": true, - "optional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/set-function-length": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", - "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-function-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", - "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "es-errors": "^1.3.0", - "functions-have-names": "^1.2.3", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/set-proto": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", - "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", - "dev": true, - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/setimmediate": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", - "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", - "dev": true - }, - "node_modules/setprototypeof": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", - "dev": true, - "license": "ISC" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/shell-quote": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", - "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/shiki": { - "version": "1.15.2", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.15.2.tgz", - "integrity": "sha512-M+7QZQZiZw/cZeizrC/yryG3eeG8pTUhu7ZaHxVyzPNFIRIlN46YBciquoNPCiXiwLnx6JB62f3lSuSYQrus1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@shikijs/core": "1.15.2", - "@types/hast": "^3.0.4" - } - }, - "node_modules/shimmer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", - "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" - }, - "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/siginfo": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", - "dev": true, - "license": "ISC" - }, - "node_modules/sigmund": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", - "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==", - "dev": true - }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/simple-concat": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", - "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/simple-get": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", - "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "node_modules/sinon": { - "version": "21.0.0", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-21.0.0.tgz", - "integrity": "sha512-TOgRcwFPbfGtpqvZw+hyqJDvqfapr1qUlOizROIk4bBLjlsjlB00Pg6wMFXNtJRpu+eCZuVOaLatG7M8105kAw==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.1", - "@sinonjs/fake-timers": "^13.0.5", - "@sinonjs/samsam": "^8.0.1", - "diff": "^7.0.0", - "supports-color": "^7.2.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/sinon" - } - }, - "node_modules/sinon/node_modules/diff": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", - "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "node_modules/slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz", - "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "ip-address": "^9.0.5", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/socks-proxy-agent": { - "version": "8.0.5", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", - "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "agent-base": "^7.1.2", - "debug": "^4.3.4", - "socks": "^2.8.3" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", - "dev": true - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "dev": true, - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.16", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", - "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", - "dev": true - }, - "node_modules/sprintf-js": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", - "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", - "dev": true, - "optional": true - }, - "node_modules/sqlite3": { - "version": "5.1.7", - "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.7.tgz", - "integrity": "sha512-GGIyOiFaG+TUra3JIfkI/zGP8yZYLPQ0pl1bH+ODjiX57sPhrLU5sQJn1y9bDKZUFYkX1crlrPfSYt0BKKdkog==", - "dev": true, - "hasInstallScript": true, - "license": "BSD-3-Clause", - "dependencies": { - "bindings": "^1.5.0", - "node-addon-api": "^7.0.0", - "prebuild-install": "^7.1.1", - "tar": "^6.1.11" - }, - "optionalDependencies": { - "node-gyp": "8.x" - }, - "peerDependencies": { - "node-gyp": "8.x" - }, - "peerDependenciesMeta": { - "node-gyp": { - "optional": true - } - } - }, - "node_modules/sqlite3/node_modules/@npmcli/agent": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", - "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "agent-base": "^7.1.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.1", - "lru-cache": "^10.0.1", - "socks-proxy-agent": "^8.0.3" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/sqlite3/node_modules/@npmcli/fs": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", - "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/sqlite3/node_modules/abbrev": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", - "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", - "dev": true, - "license": "ISC", - "optional": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/sqlite3/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/sqlite3/node_modules/cacache": { - "version": "18.0.4", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz", - "integrity": "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "@npmcli/fs": "^3.1.0", - "fs-minipass": "^3.0.0", - "glob": "^10.2.2", - "lru-cache": "^10.0.1", - "minipass": "^7.0.3", - "minipass-collect": "^2.0.1", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "p-map": "^4.0.0", - "ssri": "^10.0.0", - "tar": "^6.1.11", - "unique-filename": "^3.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/sqlite3/node_modules/cacache/node_modules/fs-minipass": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", - "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/sqlite3/node_modules/cacache/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "optional": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/sqlite3/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sqlite3/node_modules/glob/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "optional": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/sqlite3/node_modules/isexe": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", - "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", - "dev": true, - "license": "ISC", - "optional": true, - "engines": { - "node": ">=16" - } - }, - "node_modules/sqlite3/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "optional": true, - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/sqlite3/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC", - "optional": true - }, - "node_modules/sqlite3/node_modules/make-fetch-happen": { - "version": "13.0.1", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz", - "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "@npmcli/agent": "^2.0.0", - "cacache": "^18.0.0", - "http-cache-semantics": "^4.1.1", - "is-lambda": "^1.0.1", - "minipass": "^7.0.2", - "minipass-fetch": "^3.0.0", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "proc-log": "^4.2.0", - "promise-retry": "^2.0.1", - "ssri": "^10.0.0" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/sqlite3/node_modules/make-fetch-happen/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "optional": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/sqlite3/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sqlite3/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=8" - } - }, - "node_modules/sqlite3/node_modules/minipass-fetch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", - "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "minipass": "^7.0.3", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/sqlite3/node_modules/minipass-fetch/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "optional": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/sqlite3/node_modules/negotiator": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", - "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", - "dev": true, - "license": "MIT", - "optional": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/sqlite3/node_modules/node-addon-api": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", - "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/sqlite3/node_modules/node-gyp": { - "version": "10.3.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.3.1.tgz", - "integrity": "sha512-Pp3nFHBThHzVtNY7U6JfPjvT/DTE8+o/4xKsLQtBoU+j2HLsGlhcfzflAoUreaJbNmYnX+LlLi0qjV8kpyO6xQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "env-paths": "^2.2.0", - "exponential-backoff": "^3.1.1", - "glob": "^10.3.10", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^13.0.0", - "nopt": "^7.0.0", - "proc-log": "^4.1.0", - "semver": "^7.3.5", - "tar": "^6.2.1", - "which": "^4.0.0" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/sqlite3/node_modules/nopt": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", - "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "abbrev": "^2.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/sqlite3/node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "license": "MIT", - "optional": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/sqlite3/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "optional": true, - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/sqlite3/node_modules/proc-log": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", - "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", - "dev": true, - "license": "ISC", - "optional": true, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/sqlite3/node_modules/ssri": { - "version": "10.0.6", - "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", - "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "minipass": "^7.0.3" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/sqlite3/node_modules/ssri/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "optional": true, - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/sqlite3/node_modules/tar": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", - "dev": true, - "license": "ISC", - "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sqlite3/node_modules/unique-filename": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", - "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "unique-slug": "^4.0.0" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/sqlite3/node_modules/unique-slug": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", - "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "imurmurhash": "^0.1.4" - }, - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/sqlite3/node_modules/which": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", - "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", - "dev": true, - "license": "ISC", - "optional": true, - "dependencies": { - "isexe": "^3.1.1" - }, - "bin": { - "node-which": "bin/which.js" - }, - "engines": { - "node": "^16.13.0 || >=18.0.0" - } - }, - "node_modules/stable-hash-x": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/stable-hash-x/-/stable-hash-x-0.2.0.tgz", - "integrity": "sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/stack-chain": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz", - "integrity": "sha512-D8cWtWVdIe/jBA7v5p5Hwl5yOSOrmZPWDPe2KxQ5UAGD+nxbxU0lKXA4h85Ta6+qgdKVL3vUxsbIZjc1kBG7ug==" - }, - "node_modules/stackback": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dev": true, - "license": "MIT" - }, - "node_modules/statuses": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", - "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/std-env": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", - "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", - "dev": true, - "license": "MIT" - }, - "node_modules/stdin-discarder": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", - "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/stop-iteration-iterator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", - "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "internal-slot": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/stream-shift": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", - "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/streamx": { - "version": "2.22.1", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz", - "integrity": "sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-fifo": "^1.3.2", - "text-decoder": "^1.1.0" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" - } - }, - "node_modules/string_decoder": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", - "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/string-argv": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", - "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", - "dev": true, - "engines": { - "node": ">=0.6.19" - } - }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/string.prototype.padend": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.5.tgz", - "integrity": "sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", - "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-literal": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz", - "integrity": "sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^9.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/strip-literal/node_modules/js-tokens": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", - "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/structured-source": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/structured-source/-/structured-source-4.0.0.tgz", - "integrity": "sha512-qGzRFNJDjFieQkl/sVOI2dUjHKRyL9dAJi2gCPGJLbJHBIkyOHxjuocpIEfbLioX+qSJpvbYdT49/YCdMznKxA==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boundary": "^2.0.0" - } - }, - "node_modules/stylis": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", - "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/sumchecker": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", - "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", - "dev": true, - "dependencies": { - "debug": "^4.1.0" - }, - "engines": { - "node": ">= 8.0" - } - }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tabbable": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-5.3.3.tgz", - "integrity": "sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==", - "license": "MIT" - }, - "node_modules/table": { - "version": "6.9.0", - "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", - "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/table/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/table/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/table/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/table/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tabster": { - "version": "8.5.6", - "resolved": "https://registry.npmjs.org/tabster/-/tabster-8.5.6.tgz", - "integrity": "sha512-2vfrRGrx8O9BjdrtSlVA5fvpmbq5HQBRN13XFRg6LAvZ1Fr3QdBnswgT4YgFS5Bhoo5nxwgjRaRueI2Us/dv7g==", - "dev": true, - "license": "MIT", - "dependencies": { - "keyborg": "2.6.0", - "tslib": "^2.8.1" - }, - "optionalDependencies": { - "@rollup/rollup-linux-x64-gnu": "4.40.0" - } - }, - "node_modules/tabster/node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.40.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.0.tgz", - "integrity": "sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", - "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", - "dev": true, - "license": "ISC", - "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.0.1", - "mkdirp": "^3.0.1", - "yallist": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/tar-fs": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", - "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "node_modules/tar-fs/node_modules/chownr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", - "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", - "dev": true - }, - "node_modules/tar-stream": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", - "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", - "dev": true, - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/tar-stream/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/tar/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/tar/node_modules/chownr": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/tar/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/tar/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/tar/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/tar/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/tar/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/tar/node_modules/minizlib": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.1.tgz", - "integrity": "sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==", - "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.0.4", - "rimraf": "^5.0.5" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/tar/node_modules/mkdirp": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", - "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", - "dev": true, - "license": "MIT", - "bin": { - "mkdirp": "dist/cjs/src/bin.js" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/tar/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/tar/node_modules/rimraf": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", - "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/tar/node_modules/yallist": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", - "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/tas-client": { - "version": "0.2.33", - "resolved": "https://registry.npmjs.org/tas-client/-/tas-client-0.2.33.tgz", - "integrity": "sha512-V+uqV66BOQnWxvI6HjDnE4VkInmYZUQ4dgB7gzaDyFyFSK1i1nF/j7DpS9UbQAgV9NaF1XpcyuavnM1qOeiEIg==" - }, - "node_modules/terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terminal-link/node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/terminal-link/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/test-exclude": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", - "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", - "dev": true, - "license": "ISC", - "dependencies": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^10.4.1", - "minimatch": "^9.0.4" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", - "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/test-exclude/node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/test-exclude/node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/test-exclude/node_modules/lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/test-exclude/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/test-exclude/node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/test-exclude/node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/text-decoder": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", - "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.4" - } - }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", - "dev": true - }, - "node_modules/textextensions": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-6.11.0.tgz", - "integrity": "sha512-tXJwSr9355kFJI3lbCkPpUH5cP8/M0GGy2xLO34aZCjMXBaK3SoPnZwr/oWmo1FdCnELcs4npdCIOFtq9W3ruQ==", - "dev": true, - "license": "Artistic-2.0", - "dependencies": { - "editions": "^6.21.0" - }, - "engines": { - "node": ">=4" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/tinybench": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", - "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinyexec": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinyglobby": { - "version": "0.2.14", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", - "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.4.4", - "picomatch": "^4.0.2" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tinypool": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", - "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.0.0 || >=20.0.0" - } - }, - "node_modules/tinyrainbow": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", - "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tinyspy": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.3.tgz", - "integrity": "sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/tmp": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.4.tgz", - "integrity": "sha512-UdiSoX6ypifLmrfQ/XfiawN6hkjSBpCjhKxxZcWlUUmoXLaCKQU0bx4HF/tdDK2uzRuchf1txGvrWBzYREssoQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "node_modules/toidentifier": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", - "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", - "license": "MIT" - }, - "node_modules/ts-algebra": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ts-algebra/-/ts-algebra-2.0.0.tgz", - "integrity": "sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw==", - "license": "MIT" - }, - "node_modules/ts-api-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", - "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18.12" - }, - "peerDependencies": { - "typescript": ">=4.8.4" - } - }, - "node_modules/ts-dedent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", - "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", - "dev": true, - "engines": { - "node": ">=6.10" - } - }, - "node_modules/tsconfig-paths": { - "version": "3.15.0", - "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", - "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/json5": "^0.0.29", - "json5": "^1.0.2", - "minimist": "^1.2.6", - "strip-bom": "^3.0.0" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "license": "0BSD" - }, - "node_modules/tsscmp": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", - "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6.x" - } - }, - "node_modules/tsx": { - "version": "4.20.3", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.3.tgz", - "integrity": "sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "~0.25.0", - "get-tsconfig": "^4.7.5" - }, - "bin": { - "tsx": "dist/cli.mjs" - }, - "engines": { - "node": ">=18.0.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - } - }, - "node_modules/tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" - } - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/type-is": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", - "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", - "dev": true, - "license": "MIT", - "dependencies": { - "content-type": "^1.0.5", - "media-typer": "^1.1.0", - "mime-types": "^3.0.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/type-is/node_modules/mime-db": { - "version": "1.54.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", - "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/type-is/node_modules/mime-types": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", - "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", - "dev": true, - "license": "MIT", - "dependencies": { - "mime-db": "^1.54.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/typed-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", - "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "es-errors": "^1.3.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/typed-array-byte-length": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", - "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-byte-offset": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", - "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "for-each": "^0.3.3", - "gopd": "^1.2.0", - "has-proto": "^1.2.0", - "is-typed-array": "^1.1.15", - "reflect.getprototypeof": "^1.0.9" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-array-length": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", - "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "is-typed-array": "^1.1.13", - "possible-typed-array-names": "^1.0.0", - "reflect.getprototypeof": "^1.0.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/typed-rest-client": { - "version": "1.8.11", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz", - "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==", - "dev": true, - "license": "MIT", - "dependencies": { - "qs": "^6.9.1", - "tunnel": "0.0.6", - "underscore": "^1.12.1" - } - }, - "node_modules/typescript": { - "version": "5.8.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", - "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/typescript-eslint": { - "version": "8.36.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.36.0.tgz", - "integrity": "sha512-fTCqxthY+h9QbEgSIBfL9iV6CvKDFuoxg6bHPNpJ9HIUzS+jy2lCEyCmGyZRWEBSaykqcDPf1SJ+BfCI8DRopA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.36.0", - "@typescript-eslint/parser": "8.36.0", - "@typescript-eslint/utils": "8.36.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0", - "typescript": ">=4.8.4 <5.9.0" - } - }, - "node_modules/typescript-formatter": { - "version": "7.2.2", - "resolved": "git+ssh://git@github.com/jrieken/typescript-formatter.git#497efb26bc40b5fa59a350e6eab17bce650a7e4b", - "integrity": "sha512-/yCrq503wFMjRYdBVEa1JO3h5J9uXu8pQVyQp8YHQesxWxk74GltWsv9bhyR+fJdaziiVnOXtTG3+vQ2+r2yyQ==", - "dev": true, - "dependencies": { - "commandpost": "^1.0.0", - "editorconfig": "^0.15.0" - }, - "bin": { - "tsfmt": "bin/tsfmt" - }, - "engines": { - "node": ">= 4.2.0" - } - }, - "node_modules/uc.micro": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", - "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", - "license": "MIT" - }, - "node_modules/unbox-primitive": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", - "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.3", - "has-bigints": "^1.0.2", - "has-symbols": "^1.1.0", - "which-boxed-primitive": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/underscore": { - "version": "1.13.7", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", - "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", - "dev": true, - "license": "MIT" - }, - "node_modules/undici": { - "version": "7.11.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-7.11.0.tgz", - "integrity": "sha512-heTSIac3iLhsmZhUCjyS3JQEkZELateufzZuBaVM5RHXdSBMb1LPMQf5x+FH7qjsZYDP0ttAc3nnVpUB+wYbOg==", - "license": "MIT", - "engines": { - "node": ">=20.18.1" - } - }, - "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true, - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/unrs-resolver": { - "version": "1.9.2", - "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.9.2.tgz", - "integrity": "sha512-VUyWiTNQD7itdiMuJy+EuLEErLj3uwX/EpHQF8EOf33Dq3Ju6VW1GXm+swk6+1h7a49uv9fKZ+dft9jU7esdLA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "dependencies": { - "napi-postinstall": "^0.2.4" - }, - "funding": { - "url": "https://opencollective.com/unrs-resolver" - }, - "optionalDependencies": { - "@unrs/resolver-binding-android-arm-eabi": "1.9.2", - "@unrs/resolver-binding-android-arm64": "1.9.2", - "@unrs/resolver-binding-darwin-arm64": "1.9.2", - "@unrs/resolver-binding-darwin-x64": "1.9.2", - "@unrs/resolver-binding-freebsd-x64": "1.9.2", - "@unrs/resolver-binding-linux-arm-gnueabihf": "1.9.2", - "@unrs/resolver-binding-linux-arm-musleabihf": "1.9.2", - "@unrs/resolver-binding-linux-arm64-gnu": "1.9.2", - "@unrs/resolver-binding-linux-arm64-musl": "1.9.2", - "@unrs/resolver-binding-linux-ppc64-gnu": "1.9.2", - "@unrs/resolver-binding-linux-riscv64-gnu": "1.9.2", - "@unrs/resolver-binding-linux-riscv64-musl": "1.9.2", - "@unrs/resolver-binding-linux-s390x-gnu": "1.9.2", - "@unrs/resolver-binding-linux-x64-gnu": "1.9.2", - "@unrs/resolver-binding-linux-x64-musl": "1.9.2", - "@unrs/resolver-binding-wasm32-wasi": "1.9.2", - "@unrs/resolver-binding-win32-arm64-msvc": "1.9.2", - "@unrs/resolver-binding-win32-ia32-msvc": "1.9.2", - "@unrs/resolver-binding-win32-x64-msvc": "1.9.2" - } - }, - "node_modules/untildify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", - "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", - "dev": true - }, - "node_modules/use-disposable": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/use-disposable/-/use-disposable-1.0.4.tgz", - "integrity": "sha512-j83t6AMLWUyb5zwlTDqf6dP9LezM9R0yTbI/b6olmdaGtCKQUe9pgJWV6dRaaQLcozypjIEp4EmZr2DkZGKLSg==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "@types/react": ">=16.8.0 <19.0.0", - "@types/react-dom": ">=16.8.0 <19.0.0", - "react": ">=16.8.0 <19.0.0", - "react-dom": ">=16.8.0 <19.0.0" - } - }, - "node_modules/use-sync-external-store": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz", - "integrity": "sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true - }, - "node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "dev": true, - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/v8-to-istanbul": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/vary": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", - "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/version-range": { - "version": "4.14.0", - "resolved": "https://registry.npmjs.org/version-range/-/version-range-4.14.0.tgz", - "integrity": "sha512-gjb0ARm9qlcBAonU4zPwkl9ecKkas+tC2CGwFfptTCWWIVTWY1YUbT2zZKsOAF1jR/tNxxyLwwG0cb42XlYcTg==", - "dev": true, - "license": "Artistic-2.0", - "engines": { - "node": ">=4" - }, - "funding": { - "url": "https://bevry.me/fund" - } - }, - "node_modules/vite": { - "version": "7.1.12", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.12.tgz", - "integrity": "sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.25.0", - "fdir": "^6.5.0", - "picomatch": "^4.0.3", - "postcss": "^8.5.6", - "rollup": "^4.43.0", - "tinyglobby": "^0.2.15" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^20.19.0 || >=22.12.0", - "jiti": ">=1.21.0", - "less": "^4.0.0", - "lightningcss": "^1.21.0", - "sass": "^1.70.0", - "sass-embedded": "^1.70.0", - "stylus": ">=0.54.8", - "sugarss": "^5.0.0", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/vite-node": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", - "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cac": "^6.7.14", - "debug": "^4.4.1", - "es-module-lexer": "^1.7.0", - "pathe": "^2.0.3", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" - }, - "bin": { - "vite-node": "vite-node.mjs" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/vite-plugin-top-level-await": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.5.0.tgz", - "integrity": "sha512-r/DtuvHrSqUVk23XpG2cl8gjt1aATMG5cjExXL1BUTcSNab6CzkcPua9BPEc9fuTP5UpwClCxUe3+dNGL0yrgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@rollup/plugin-virtual": "^3.0.2", - "@swc/core": "^1.10.16", - "uuid": "^10.0.0" - }, - "peerDependencies": { - "vite": ">=2.8" - } - }, - "node_modules/vite-plugin-top-level-await/node_modules/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", - "dev": true, - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/vite-plugin-wasm": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/vite-plugin-wasm/-/vite-plugin-wasm-3.5.0.tgz", - "integrity": "sha512-X5VWgCnqiQEGb+omhlBVsvTfxikKtoOgAzQ95+BZ8gQ+VfMHIjSHr0wyvXFQCa0eKQ0fKyaL0kWcEnYqBac4lQ==", - "dev": true, - "license": "MIT", - "peerDependencies": { - "vite": "^2 || ^3 || ^4 || ^5 || ^6 || ^7" - } - }, - "node_modules/vite/node_modules/tinyglobby": { - "version": "0.2.15", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", - "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.3" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/vitest": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", - "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/chai": "^5.2.2", - "@vitest/expect": "3.2.4", - "@vitest/mocker": "3.2.4", - "@vitest/pretty-format": "^3.2.4", - "@vitest/runner": "3.2.4", - "@vitest/snapshot": "3.2.4", - "@vitest/spy": "3.2.4", - "@vitest/utils": "3.2.4", - "chai": "^5.2.0", - "debug": "^4.4.1", - "expect-type": "^1.2.1", - "magic-string": "^0.30.17", - "pathe": "^2.0.3", - "picomatch": "^4.0.2", - "std-env": "^3.9.0", - "tinybench": "^2.9.0", - "tinyexec": "^0.3.2", - "tinyglobby": "^0.2.14", - "tinypool": "^1.1.1", - "tinyrainbow": "^2.0.0", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", - "vite-node": "3.2.4", - "why-is-node-running": "^2.3.0" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@types/debug": "^4.1.12", - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.2.4", - "@vitest/ui": "3.2.4", - "happy-dom": "*", - "jsdom": "*" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@types/debug": { - "optional": true - }, - "@types/node": { - "optional": true - }, - "@vitest/browser": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - } - } - }, - "node_modules/vitest/node_modules/@vitest/snapshot": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", - "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "3.2.4", - "magic-string": "^0.30.17", - "pathe": "^2.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/vscode-jsonrpc": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", - "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/vscode-languageserver-protocol": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", - "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", - "dev": true, - "license": "MIT", - "dependencies": { - "vscode-jsonrpc": "8.2.0", - "vscode-languageserver-types": "3.17.5" - } - }, - "node_modules/vscode-languageserver-textdocument": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", - "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", - "dev": true, - "license": "MIT" - }, - "node_modules/vscode-languageserver-types": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", - "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", - "dev": true - }, - "node_modules/vscode-tas-client": { - "version": "0.1.84", - "resolved": "https://registry.npmjs.org/vscode-tas-client/-/vscode-tas-client-0.1.84.tgz", - "integrity": "sha512-rUTrUopV+70hvx1hW5ebdw1nd6djxubkLvVxjGdyD/r5v/wcVF41LIfiAtbm5qLZDtQdsMH1IaCuDoluoIa88w==", - "dependencies": { - "tas-client": "0.2.33" - }, - "engines": { - "vscode": "^1.85.0" - } - }, - "node_modules/vscode-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", - "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/web-tree-sitter": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/web-tree-sitter/-/web-tree-sitter-0.23.2.tgz", - "integrity": "sha512-BMZtm7sKtnmTGO7L4pcFOBidVlBxL+aUxm0O5yr3nKf5Fqz8RyvTOSjWFtqmzScyak/YFq9f5PSMRdhg2WXAJQ==", - "license": "MIT" - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", - "license": "BSD-2-Clause" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/which-boxed-primitive": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", - "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-bigint": "^1.1.0", - "is-boolean-object": "^1.2.1", - "is-number-object": "^1.1.1", - "is-string": "^1.1.1", - "is-symbol": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", - "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "function.prototype.name": "^1.1.6", - "has-tostringtag": "^1.0.2", - "is-async-function": "^2.0.0", - "is-date-object": "^1.1.0", - "is-finalizationregistry": "^1.1.0", - "is-generator-function": "^1.0.10", - "is-regex": "^1.2.1", - "is-weakref": "^1.0.2", - "isarray": "^2.0.5", - "which-boxed-primitive": "^1.1.0", - "which-collection": "^1.0.2", - "which-typed-array": "^1.1.16" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-builtin-type/node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "dev": true, - "license": "MIT" - }, - "node_modules/which-collection": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", - "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-map": "^2.0.3", - "is-set": "^2.0.3", - "is-weakmap": "^2.0.2", - "is-weakset": "^2.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/which-typed-array": { - "version": "1.1.19", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", - "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", - "dev": true, - "license": "MIT", - "dependencies": { - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "for-each": "^0.3.5", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-tostringtag": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/why-is-node-running": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", - "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "siginfo": "^2.0.0", - "stackback": "0.0.2" - }, - "bin": { - "why-is-node-running": "cli.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/workerpool": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.3.2.tgz", - "integrity": "sha512-Xz4Nm9c+LiBHhDR5bDLnNzmj6+5F+cyEAWPMkbs2awq/dYazR/efelZzUAjB/y3kNHL+uzkHvxVVpaOfGCPV7A==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true, - "license": "MIT" - }, - "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi-cjs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/xml": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", - "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", - "dev": true, - "license": "MIT" - }, - "node_modules/xml2js": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", - "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", - "dev": true, - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~11.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/xmlbuilder": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "dev": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", - "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", - "dev": true - }, - "node_modules/yaml": { - "version": "2.8.0", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", - "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", - "dev": true, - "license": "ISC", - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14.6" - } - }, - "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", - "dev": true, - "dependencies": { - "cliui": "^8.0.1", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.3", - "y18n": "^5.0.5", - "yargs-parser": "^21.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-parser": { - "version": "21.1.1", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", - "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yargs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/yargs/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/yargs/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "dev": true, - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "node_modules/yazl": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", - "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", - "dev": true, - "dependencies": { - "buffer-crc32": "~0.2.3" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zod": { - "version": "3.25.76", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", - "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", - "license": "MIT", - "peer": true, - "funding": { - "url": "https://github.com/sponsors/colinhacks" - } - } - } + "name": "copilot-chat", + "version": "0.36.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "copilot-chat", + "version": "0.36.0", + "hasInstallScript": true, + "license": "SEE LICENSE IN LICENSE.txt", + "dependencies": { + "@anthropic-ai/claude-agent-sdk": "0.1.55", + "@anthropic-ai/sdk": "^0.68.0", + "@github/blackbird-external-ingest-utils": "^0.1.0", + "@github/copilot": "^0.0.366", + "@google/genai": "^1.22.0", + "@humanwhocodes/gitignore-to-minimatch": "1.0.2", + "@microsoft/tiktokenizer": "^1.0.10", + "@sinclair/typebox": "^0.34.41", + "@vscode/copilot-api": "^0.2.6", + "@vscode/extension-telemetry": "^1.2.0", + "@vscode/l10n": "^0.0.18", + "@vscode/prompt-tsx": "^0.4.0-alpha.5", + "@vscode/tree-sitter-wasm": "0.0.5-php.2", + "@vscode/webview-ui-toolkit": "^1.3.1", + "@xterm/headless": "^5.5.0", + "ajv": "^8.17.1", + "applicationinsights": "^2.9.7", + "diff": "^8.0.2", + "dompurify": "^3.3.0", + "ignore": "^7.0.5", + "isbinaryfile": "^5.0.4", + "jsonc-parser": "^3.3.1", + "lru-cache": "^11.1.0", + "markdown-it": "^14.1.0", + "minimatch": "^10.0.3", + "undici": "^7.11.0", + "vscode-tas-client": "^0.1.84", + "web-tree-sitter": "^0.23.0" + }, + "devDependencies": { + "@azure/identity": "4.9.1", + "@azure/keyvault-secrets": "^4.10.0", + "@azure/msal-node": "^3.6.3", + "@c4312/scip": "^0.1.0", + "@fluentui/react-components": "^9.66.6", + "@fluentui/react-icons": "^2.0.305", + "@hediet/node-reload": "^0.8.0", + "@keyv/sqlite": "^4.0.5", + "@octokit/types": "^14.1.0", + "@parcel/watcher": "^2.5.1", + "@stylistic/eslint-plugin": "^3.0.1", + "@types/eslint": "^9.0.0", + "@types/google-protobuf": "^3.15.12", + "@types/js-yaml": "^4.0.9", + "@types/markdown-it": "^14.0.0", + "@types/minimist": "^1.2.5", + "@types/mocha": "^10.0.10", + "@types/node": "^22.16.3", + "@types/picomatch": "^4.0.0", + "@types/react": "17.0.44", + "@types/react-dom": "^18.2.17", + "@types/sinon": "^17.0.4", + "@types/source-map-support": "^0.5.10", + "@types/tar": "^6.1.13", + "@types/vinyl": "^2.0.12", + "@types/vscode": "^1.102.0", + "@types/vscode-webview": "^1.57.4", + "@types/yargs": "^17.0.24", + "@typescript-eslint/eslint-plugin": "^8.35.0", + "@typescript-eslint/parser": "^8.32.0", + "@typescript-eslint/typescript-estree": "^8.26.1", + "@vitest/coverage-v8": "^3.2.4", + "@vitest/snapshot": "^1.5.0", + "@vscode/debugadapter": "^1.68.0", + "@vscode/debugprotocol": "^1.68.0", + "@vscode/dts": "^0.4.1", + "@vscode/lsif-language-service": "^0.1.0-pre.4", + "@vscode/test-cli": "^0.0.11", + "@vscode/test-electron": "^2.5.2", + "@vscode/test-web": "^0.0.71", + "@vscode/vsce": "3.6.0", + "copyfiles": "^2.4.1", + "csv-parse": "^6.0.0", + "dotenv": "^17.2.0", + "electron": "^37.2.1", + "esbuild": "^0.25.6", + "eslint": "^9.30.0", + "eslint-import-resolver-typescript": "^4.4.4", + "eslint-plugin-header": "^3.1.1", + "eslint-plugin-import": "^2.32.0", + "eslint-plugin-jsdoc": "^51.3.4", + "eslint-plugin-no-only-tests": "^3.3.0", + "fastq": "^1.19.1", + "glob": "^11.1.0", + "husky": "^9.1.7", + "js-yaml": "^4.1.1", + "keyv": "^5.3.2", + "lint-staged": "15.2.9", + "minimist": "^1.2.8", + "mobx": "^6.13.7", + "mobx-react-lite": "^4.1.0", + "mocha": "^11.7.1", + "mocha-junit-reporter": "^2.2.1", + "mocha-multi-reporters": "^1.5.1", + "monaco-editor": "0.44.0", + "npm-run-all": "^4.1.5", + "open": "^10.1.2", + "openai": "^6.7.0", + "outdent": "^0.8.0", + "picomatch": "^4.0.2", + "playwright": "^1.56.1", + "prettier": "^3.6.2", + "react": "^17.0.2", + "react-dom": "17.0.2", + "rimraf": "^6.0.1", + "run-script-os": "^1.1.6", + "shiki": "~1.15.0", + "sinon": "^21.0.0", + "source-map-support": "^0.5.21", + "tar": "^7.4.3", + "ts-dedent": "^2.2.0", + "tsx": "^4.20.3", + "typescript": "^5.8.3", + "typescript-eslint": "^8.36.0", + "typescript-formatter": "github:jrieken/typescript-formatter#497efb26bc40b5fa59a350e6eab17bce650a7e4b", + "vite-plugin-top-level-await": "^1.5.0", + "vite-plugin-wasm": "^3.5.0", + "vitest": "^3.0.5", + "vscode-languageserver-protocol": "^3.17.5", + "vscode-languageserver-textdocument": "^1.0.12", + "vscode-languageserver-types": "^3.17.5", + "yaml": "^2.8.0", + "yargs": "^17.7.2" + }, + "engines": { + "node": ">=22.14.0", + "npm": ">=9.0.0", + "vscode": "^1.108.0" + } + }, + "node_modules/@aashutoshrathi/word-wrap": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", + "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@anthropic-ai/claude-agent-sdk": { + "version": "0.1.55", + "resolved": "https://registry.npmjs.org/@anthropic-ai/claude-agent-sdk/-/claude-agent-sdk-0.1.55.tgz", + "integrity": "sha512-nwlxPjn/gc7I+iOGYY7AGtM2xcjzJFCxF9Bnr0xH1JNaNx+QXLM3h/wmzSvuEOKeJgPymf1GMBs4DZ3jyd/Z7Q==", + "license": "SEE LICENSE IN README.md", + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "^0.33.5", + "@img/sharp-darwin-x64": "^0.33.5", + "@img/sharp-linux-arm": "^0.33.5", + "@img/sharp-linux-arm64": "^0.33.5", + "@img/sharp-linux-x64": "^0.33.5", + "@img/sharp-linuxmusl-arm64": "^0.33.5", + "@img/sharp-linuxmusl-x64": "^0.33.5", + "@img/sharp-win32-x64": "^0.33.5" + }, + "peerDependencies": { + "zod": "^3.24.1" + } + }, + "node_modules/@anthropic-ai/sdk": { + "version": "0.68.0", + "resolved": "https://registry.npmjs.org/@anthropic-ai/sdk/-/sdk-0.68.0.tgz", + "integrity": "sha512-SMYAmbbiprG8k1EjEPMTwaTqssDT7Ae+jxcR5kWXiqTlbwMR2AthXtscEVWOHkRfyAV5+y3PFYTJRNa3OJWIEw==", + "license": "MIT", + "dependencies": { + "json-schema-to-ts": "^3.1.1" + }, + "bin": { + "anthropic-ai-sdk": "bin/cli" + }, + "peerDependencies": { + "zod": "^3.25.0 || ^4.0.0" + }, + "peerDependenciesMeta": { + "zod": { + "optional": true + } + } + }, + "node_modules/@azu/format-text": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@azu/format-text/-/format-text-1.0.2.tgz", + "integrity": "sha512-Swi4N7Edy1Eqq82GxgEECXSSLyn6GOb5htRFPzBDdUkECGXtlf12ynO5oJSpWKPwCaUssOu7NfhDcCWpIC6Ywg==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@azu/style-format": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@azu/style-format/-/style-format-1.0.1.tgz", + "integrity": "sha512-AHcTojlNBdD/3/KxIKlg8sxIWHfOtQszLvOpagLTO+bjC3u7SAszu1lf//u7JJC50aUSH+BVWDD/KvaA6Gfn5g==", + "dev": true, + "license": "WTFPL", + "dependencies": { + "@azu/format-text": "^1.0.1" + } + }, + "node_modules/@azure-rest/core-client": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@azure-rest/core-client/-/core-client-2.4.0.tgz", + "integrity": "sha512-CjMFBcmnt0YNdRcxSSoZbtZNXudLlicdml7UrPsV03nHiWB+Bq5cu5ctieyaCuRtU7jm7+SOFtiE/g4pBFPKKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.3.0", + "@azure/core-rest-pipeline": "^1.5.0", + "@azure/core-tracing": "^1.0.1", + "@typespec/ts-http-runtime": "^0.2.2", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-auth": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.9.0.tgz", + "integrity": "sha512-FPwHpZywuyasDSLMqJ6fhbOK3TqUdviZNF8OqRGA4W5Ewib2lEEZ+pBsYcBa88B2NGO/SEnYPGhyBqNlE8ilSw==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-util": "^1.11.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-client": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.9.2.tgz", + "integrity": "sha512-kRdry/rav3fUKHl/aDLd/pDLcB+4pOFwPPTVEExuMyaI5r+JBbMWqRbCY1pn5BniDaU3lRxO9eaQ1AmSMehl/w==", + "dev": true, + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-rest-pipeline": "^1.9.1", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.6.1", + "@azure/logger": "^1.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-http-compat": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@azure/core-http-compat/-/core-http-compat-2.3.0.tgz", + "integrity": "sha512-qLQujmUypBBG0gxHd0j6/Jdmul6ttl24c8WGiLXIk7IHXdBlfoBqW27hyz3Xn6xbfdyVSarl1Ttbk0AwnZBYCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-client": "^1.3.0", + "@azure/core-rest-pipeline": "^1.20.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-http-compat/node_modules/@azure/core-rest-pipeline": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.21.0.tgz", + "integrity": "sha512-a4MBwe/5WKbq9MIxikzgxLBbruC5qlkFYlBdI7Ev50Y7ib5Vo/Jvt5jnJo7NaWeJ908LCHL0S1Us4UMf1VoTfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.8.0", + "@azure/core-tracing": "^1.0.1", + "@azure/core-util": "^1.11.0", + "@azure/logger": "^1.0.0", + "@typespec/ts-http-runtime": "^0.2.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-lro": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@azure/core-lro/-/core-lro-2.7.2.tgz", + "integrity": "sha512-0YIpccoX8m/k00O7mDDMdJpbr6mf1yWo2dfmxt5A8XVZVVMz2SSKaEbMCeJRvgQ0IaSlqhjT47p4hVIRRy90xw==", + "dev": true, + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-util": "^1.2.0", + "@azure/logger": "^1.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-paging": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/@azure/core-paging/-/core-paging-1.6.2.tgz", + "integrity": "sha512-YKWi9YuCU04B55h25cnOYZHxXYtEvQEbKST5vqRga7hWY9ydd3FZHdeQF8pyh+acWZvppw13M/LMGx0LABUVMA==", + "dev": true, + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.16.3.tgz", + "integrity": "sha512-VxLk4AHLyqcHsfKe4MZ6IQ+D+ShuByy+RfStKfSjxJoL3WBWq17VNmrz8aT8etKzqc2nAeIyLxScjpzsS4fz8w==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.4.0", + "@azure/core-tracing": "^1.0.1", + "@azure/core-util": "^1.9.0", + "@azure/logger": "^1.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-tracing": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.2.0.tgz", + "integrity": "sha512-UKTiEJPkWcESPYJz3X5uKRYyOcJD+4nYph+KpfdPRnQJVrZfk0KJgdnaAWKfhsBBtAf/D58Az4AvCJEmWgIBAg==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-util": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.11.0.tgz", + "integrity": "sha512-DxOSLua+NdpWoSqULhjDyAZTXFdP/LKkqtYuxxz1SCN289zk3OG8UOpnCQAz/tygyACBtWp/BoO72ptK7msY8g==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/identity": { + "version": "4.9.1", + "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-4.9.1.tgz", + "integrity": "sha512-986D7Cf1AOwYqSDtO/FnMAyk/Jc8qpftkGsxuehoh4F85MhQ4fICBGX/44+X1y78lN4Sqib3Bsoaoh/FvOGgmg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.9.0", + "@azure/core-client": "^1.9.2", + "@azure/core-rest-pipeline": "^1.17.0", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.11.0", + "@azure/logger": "^1.0.0", + "@azure/msal-browser": "^4.2.0", + "@azure/msal-node": "^3.5.0", + "open": "^10.1.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/identity/node_modules/@azure/core-rest-pipeline": { + "version": "1.19.0", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.19.0.tgz", + "integrity": "sha512-bM3308LRyg5g7r3Twprtqww0R/r7+GyVxj4BafcmVPo4WQoGt5JXuaqxHEFjw2o3rvFZcUPiqJMg6WuvEEeVUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.8.0", + "@azure/core-tracing": "^1.0.1", + "@azure/core-util": "^1.11.0", + "@azure/logger": "^1.0.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/keyvault-common": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@azure/keyvault-common/-/keyvault-common-2.0.0.tgz", + "integrity": "sha512-wRLVaroQtOqfg60cxkzUkGKrKMsCP6uYXAOomOIysSMyt1/YM0eUn9LqieAWM8DLcU4+07Fio2YGpPeqUbpP9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.3.0", + "@azure/core-client": "^1.5.0", + "@azure/core-rest-pipeline": "^1.8.0", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.10.0", + "@azure/logger": "^1.1.4", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/keyvault-secrets": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@azure/keyvault-secrets/-/keyvault-secrets-4.10.0.tgz", + "integrity": "sha512-WvXc3h2hqHL1pMzUU7ANE2RBKoxjK3JQc0YNn6GUFvOWQtf2ZR+sH4/5cZu8zAg62v9qLCduBN7065nHKl+AOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure-rest/core-client": "^2.3.3", + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.9.0", + "@azure/core-http-compat": "^2.2.0", + "@azure/core-lro": "^2.7.2", + "@azure/core-paging": "^1.6.2", + "@azure/core-rest-pipeline": "^1.19.0", + "@azure/core-tracing": "^1.2.0", + "@azure/core-util": "^1.11.0", + "@azure/keyvault-common": "^2.0.0", + "@azure/logger": "^1.1.4", + "tslib": "^2.8.1" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/keyvault-secrets/node_modules/@azure/core-rest-pipeline": { + "version": "1.21.0", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.21.0.tgz", + "integrity": "sha512-a4MBwe/5WKbq9MIxikzgxLBbruC5qlkFYlBdI7Ev50Y7ib5Vo/Jvt5jnJo7NaWeJ908LCHL0S1Us4UMf1VoTfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-auth": "^1.8.0", + "@azure/core-tracing": "^1.0.1", + "@azure/core-util": "^1.11.0", + "@azure/logger": "^1.0.0", + "@typespec/ts-http-runtime": "^0.2.3", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/logger": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.1.4.tgz", + "integrity": "sha512-4IXXzcCdLdlXuCG+8UKEwLA1T1NHqUfanhXYHiQTn+6sfWCZXduqbtXDGceg3Ce5QxTGo7EqmbV6Bi+aqKuClQ==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/msal-browser": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-4.12.0.tgz", + "integrity": "sha512-WD1lmVWchg7wn1mI7Tr4v7QPyTwK+8Nuyje3jRpOFENLRLEBsdK8VVdTw3C+TypZmYn4cOAdj3zREnuFXgvfIA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/msal-common": "15.6.0" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-common": { + "version": "15.6.0", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.6.0.tgz", + "integrity": "sha512-EotmBz42apYGjqiIV9rDUdptaMptpTn4TdGf3JfjLvFvinSe9BJ6ywU92K9ky+t/b0ghbeTSe9RfqlgLh8f2jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-node": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.6.3.tgz", + "integrity": "sha512-95wjsKGyUcAd5tFmQBo5Ug/kOj+hFh/8FsXuxluEvdfbgg6xCimhSP9qnyq6+xIg78/jREkBD1/BSqd7NIDDYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/msal-common": "15.8.1", + "jsonwebtoken": "^9.0.0", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@azure/msal-node/node_modules/@azure/msal-common": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.8.1.tgz", + "integrity": "sha512-ltIlFK5VxeJ5BurE25OsJIfcx1Q3H/IZg2LjV9d4vmH+5t4c1UCyRQ/HgKLgXuCZShs7qfc/TC95GYZfsUsJUQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/opentelemetry-instrumentation-azure-sdk": { + "version": "1.0.0-beta.5", + "resolved": "https://registry.npmjs.org/@azure/opentelemetry-instrumentation-azure-sdk/-/opentelemetry-instrumentation-azure-sdk-1.0.0-beta.5.tgz", + "integrity": "sha512-fsUarKQDvjhmBO4nIfaZkfNSApm1hZBzcvpNbSrXdcUBxu7lRvKsV5DnwszX7cnhLyVOW9yl1uigtRQ1yDANjA==", + "dependencies": { + "@azure/core-tracing": "^1.0.0", + "@azure/logger": "^1.0.0", + "@opentelemetry/api": "^1.4.1", + "@opentelemetry/core": "^1.15.2", + "@opentelemetry/instrumentation": "^0.41.2", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.27.1.tgz", + "integrity": "sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.27.1", + "js-tokens": "^4.0.0", + "picocolors": "^1.1.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz", + "integrity": "sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.26.7.tgz", + "integrity": "sha512-kEvgGGgEjRUutvdVvZhbn/BxVt+5VSpwXz1j3WYXQbXDo8KzFOPNG2GQbdAiNq8g6wn1yKk7C/qrke03a84V+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.26.7" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/runtime": { + "version": "7.27.1", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.1.tgz", + "integrity": "sha512-1x3D2xEk2fRo3PAhwQwu5UubzgiVWSXTBfWpVd2Mx2AzRqJuDJCsgaDVZ7HB5iGzDW1Hl1sWN2mFyKjmR9uAog==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/types": { + "version": "7.26.7", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.26.7.tgz", + "integrity": "sha512-t8kDRGrKXyp6+tjUh7hw2RLyclsW4TRoRvRHtSyAX9Bb5ldlFh+90YAYY6awRXrlB4G5G2izNeGySpATlFzmOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@bufbuild/protobuf": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@bufbuild/protobuf/-/protobuf-2.0.0.tgz", + "integrity": "sha512-sw2JhwJyvyL0zlhG61aDzOVryEfJg2PDZFSV7i7IdC7nAE41WuXCru3QWLGiP87At0BMzKOoKO/FqEGoKygGZQ==", + "dev": true + }, + "node_modules/@c4312/scip": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@c4312/scip/-/scip-0.1.0.tgz", + "integrity": "sha512-V1VIq3rB1tIj7n3NHIg+VgbKEYl75O+yM30GD4K5wQgdgC7taOsJU7itQdMvtkKhyCWHHuR3WZ0ijUUqPELR3g==", + "dev": true, + "dependencies": { + "@bufbuild/protobuf": "^2.0.0" + } + }, + "node_modules/@ctrl/tinycolor": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz", + "integrity": "sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + } + }, + "node_modules/@electron/get": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz", + "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "env-paths": "^2.2.0", + "fs-extra": "^8.1.0", + "got": "^11.8.5", + "progress": "^2.0.3", + "semver": "^6.2.0", + "sumchecker": "^3.0.1" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "global-agent": "^3.0.0" + } + }, + "node_modules/@electron/get/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@emnapi/core": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.3.tgz", + "integrity": "sha512-4m62DuCE07lw01soJwPiBGC0nAww0Q+RY70VZ+n49yDIO13yyinhbWCeNnaob0lakDtWQzSdtNWzJeOJt2ma+g==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/wasi-threads": "1.0.2", + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.5.0.tgz", + "integrity": "sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emnapi/wasi-threads": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.0.2.tgz", + "integrity": "sha512-5n3nTJblwRi8LlXkJ9eBzu+kZR8Yxcc7ubakyQTFzPMtIhFpUBRbsnc2Dv88IZDIbCDlBiWrknhB4Lsz7mg6BA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@es-joy/jsdoccomment": { + "version": "0.52.0", + "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.52.0.tgz", + "integrity": "sha512-BXuN7BII+8AyNtn57euU2Yxo9yA/KUDNzrpXyi3pfqKmBhhysR6ZWOebFh3vyPoqA3/j1SOvGgucElMGwlXing==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.8", + "@typescript-eslint/types": "^8.34.1", + "comment-parser": "1.4.1", + "esquery": "^1.6.0", + "jsdoc-type-pratt-parser": "~4.1.0" + }, + "engines": { + "node": ">=20.11.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.6.tgz", + "integrity": "sha512-ShbM/3XxwuxjFiuVBHA+d3j5dyac0aEVVq1oluIDf71hUw0aRF59dV/efUsIwFnR6m8JNM2FjZOzmaZ8yG61kw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.6.tgz", + "integrity": "sha512-S8ToEOVfg++AU/bHwdksHNnyLyVM+eMVAOf6yRKFitnwnbwwPNqKr3srzFRe7nzV69RQKb5DgchIX5pt3L53xg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.6.tgz", + "integrity": "sha512-hd5zdUarsK6strW+3Wxi5qWws+rJhCCbMiC9QZyzoxfk5uHRIE8T287giQxzVpEvCwuJ9Qjg6bEjcRJcgfLqoA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.6.tgz", + "integrity": "sha512-0Z7KpHSr3VBIO9A/1wcT3NTy7EB4oNC4upJ5ye3R7taCc2GUdeynSLArnon5G8scPwaU866d3H4BCrE5xLW25A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.6.tgz", + "integrity": "sha512-FFCssz3XBavjxcFxKsGy2DYK5VSvJqa6y5HXljKzhRZ87LvEi13brPrf/wdyl/BbpbMKJNOr1Sd0jtW4Ge1pAA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.6.tgz", + "integrity": "sha512-GfXs5kry/TkGM2vKqK2oyiLFygJRqKVhawu3+DOCk7OxLy/6jYkWXhlHwOoTb0WqGnWGAS7sooxbZowy+pK9Yg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.6.tgz", + "integrity": "sha512-aoLF2c3OvDn2XDTRvn8hN6DRzVVpDlj2B/F66clWd/FHLiHaG3aVZjxQX2DYphA5y/evbdGvC6Us13tvyt4pWg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.6.tgz", + "integrity": "sha512-2SkqTjTSo2dYi/jzFbU9Plt1vk0+nNg8YC8rOXXea+iA3hfNJWebKYPs3xnOUf9+ZWhKAaxnQNUf2X9LOpeiMQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.6.tgz", + "integrity": "sha512-SZHQlzvqv4Du5PrKE2faN0qlbsaW/3QQfUUc6yO2EjFcA83xnwm91UbEEVx4ApZ9Z5oG8Bxz4qPE+HFwtVcfyw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.6.tgz", + "integrity": "sha512-b967hU0gqKd9Drsh/UuAm21Khpoh6mPBSgz8mKRq4P5mVK8bpA+hQzmm/ZwGVULSNBzKdZPQBRT3+WuVavcWsQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.6.tgz", + "integrity": "sha512-aHWdQ2AAltRkLPOsKdi3xv0mZ8fUGPdlKEjIEhxCPm5yKEThcUjHpWB1idN74lfXGnZ5SULQSgtr5Qos5B0bPw==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.6.tgz", + "integrity": "sha512-VgKCsHdXRSQ7E1+QXGdRPlQ/e08bN6WMQb27/TMfV+vPjjTImuT9PmLXupRlC90S1JeNNW5lzkAEO/McKeJ2yg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.6.tgz", + "integrity": "sha512-WViNlpivRKT9/py3kCmkHnn44GkGXVdXfdc4drNmRl15zVQ2+D2uFwdlGh6IuK5AAnGTo2qPB1Djppj+t78rzw==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.6.tgz", + "integrity": "sha512-wyYKZ9NTdmAMb5730I38lBqVu6cKl4ZfYXIs31Baf8aoOtB4xSGi3THmDYt4BTFHk7/EcVixkOV2uZfwU3Q2Jw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.6.tgz", + "integrity": "sha512-KZh7bAGGcrinEj4qzilJ4hqTY3Dg2U82c8bv+e1xqNqZCrCyc+TL9AUEn5WGKDzm3CfC5RODE/qc96OcbIe33w==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.6.tgz", + "integrity": "sha512-9N1LsTwAuE9oj6lHMyyAM+ucxGiVnEqUdp4v7IaMmrwb06ZTEVCIs3oPPplVsnjPfyjmxwHxHMF8b6vzUVAUGw==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.6.tgz", + "integrity": "sha512-A6bJB41b4lKFWRKNrWoP2LHsjVzNiaurf7wyj/XtFNTsnPuxwEBWHLty+ZE0dWBKuSK1fvKgrKaNjBS7qbFKig==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.6.tgz", + "integrity": "sha512-IjA+DcwoVpjEvyxZddDqBY+uJ2Snc6duLpjmkXm/v4xuS3H+3FkLZlDm9ZsAbF9rsfP3zeA0/ArNDORZgrxR/Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.6.tgz", + "integrity": "sha512-dUXuZr5WenIDlMHdMkvDc1FAu4xdWixTCRgP7RQLBOkkGgwuuzaGSYcOpW4jFxzpzL1ejb8yF620UxAqnBrR9g==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.6.tgz", + "integrity": "sha512-l8ZCvXP0tbTJ3iaqdNf3pjaOSd5ex/e6/omLIQCVBLmHTlfXW3zAxQ4fnDmPLOB1x9xrcSi/xtCWFwCZRIaEwg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.6.tgz", + "integrity": "sha512-hKrmDa0aOFOr71KQ/19JC7az1P0GWtCN1t2ahYAf4O007DHZt/dW8ym5+CUdJhQ/qkZmI1HAF8KkJbEFtCL7gw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openharmony-arm64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.6.tgz", + "integrity": "sha512-+SqBcAWoB1fYKmpWoQP4pGtx+pUUC//RNYhFdbcSA16617cchuryuhOCRpPsjCblKukAckWsV+aQ3UKT/RMPcA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.6.tgz", + "integrity": "sha512-dyCGxv1/Br7MiSC42qinGL8KkG4kX0pEsdb0+TKhmJZgCUDBGmyo1/ArCjNGiOLiIAgdbWgmWgib4HoCi5t7kA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.6.tgz", + "integrity": "sha512-42QOgcZeZOvXfsCBJF5Afw73t4veOId//XD3i+/9gSkhSV6Gk3VPlWncctI+JcOyERv85FUo7RxuxGy+z8A43Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.6.tgz", + "integrity": "sha512-4AWhgXmDuYN7rJI6ORB+uU9DHLq/erBbuMoAuB4VWJTu5KtCgcKYPynF0YI1VkBNuEfjNlLrFr9KZPJzrtLkrQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.6.tgz", + "integrity": "sha512-NgJPHHbEpLQgDH2MjQu90pzW/5vvXIZ7KOnPyNBm92A6WgZ/7b6fJyUBjoumLqeOQQGqY2QjQxRo97ah4Sj0cA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.7.0.tgz", + "integrity": "sha512-dyybb3AcajC7uha6CvhdVRJqaKyn7w2YKqKyAN37NKYgZT36w+iRb0Dymmc5qEJ549c/S31cMMSFd75bteCpCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.1.tgz", + "integrity": "sha512-CCZCDJuduB9OUkFkY2IgppNZMi2lBQgD2qzwXkEia16cge2pijY/aXi96CJMquDMn3nJdlPV1A5KrJEXwfLNzQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.21.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.21.0.tgz", + "integrity": "sha512-ENIdc4iLu0d93HeYirvKmrzshzofPw6VkZRKQGe9Nv46ZnWUzcF1xV01dcvEg/1wXUR61OmmlSfyeyO7EvjLxQ==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.6", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/config-helpers": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.3.0.tgz", + "integrity": "sha512-ViuymvFmcJi04qdZeDc2whTHryouGcDlaxPqarTD0ZE10ISpxGUVZGZDx4w01upyIynL3iu6IXH2bS1NhclQMw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.14.0.tgz", + "integrity": "sha512-qIbV0/JZr7iSDjqAc60IqbLdsj9GDt16xQtWD+B78d/HAlvysGdZZ6rpJHGAc2T0FQx1X6thsSPdnoiGKdNtdg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.3.1.tgz", + "integrity": "sha512-gtF186CXhIl1p4pJNGZw8Yc6RlshoePRvE0X91oPGb3vZ8pM3qOS9W9NGPat9LziaBV7XrJWGylNQXkGcnM3IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/@eslint/eslintrc/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/@eslint/eslintrc/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "9.30.1", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.30.1.tgz", + "integrity": "sha512-zXhuECFlyep42KZUhWjfvsmXGX39W8K8LFb8AWXM9gSV9dQB+MrJGLKvW6Zw0Ggnbpw0VHTtrhFXYe3Gym18jg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.6.tgz", + "integrity": "sha512-RBMg5FRL0I0gs51M/guSAj5/e14VQ4tpZnQNWwuDT66P14I43ItmPfIZRhO9fUVIPOAQXU47atlywZ/czoqFPA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.3.4", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.3.4.tgz", + "integrity": "sha512-Ul5l+lHEcw3L5+k8POx6r74mxEYKG5kOb6Xpy2gCRW6zweT6TEhAf8vhxGgjhqrd/VO/Dirhsb+1hNpD1ue9hw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/core": "^0.15.1", + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit/node_modules/@eslint/core": { + "version": "0.15.1", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.15.1.tgz", + "integrity": "sha512-bkOp+iumZCCbt1K1CmWf0R9pM5yKpDv+ZXtvSyQpudrI9kuFLp+bM2WOPXImuD/ceQuaa8f5pj93Y7zyECIGNA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@types/json-schema": "^7.0.15" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.2.tgz", + "integrity": "sha512-wNB5ooIKHQc+Kui96jE/n69rHFWAVoxn5CAzL1Xdd8FG03cgY3MLO+GF9U3W737fYDSgPWA6MReKhBQBop6Pcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/devtools": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@floating-ui/devtools/-/devtools-0.2.1.tgz", + "integrity": "sha512-8PHJLbD6VhBh+LJ1uty/Bz30qs02NXCE5u8WpOhSewlYXUWl03GNXknr9AS2yaAWJEQaY27x7eByJs44gODBcw==", + "dev": true, + "peerDependencies": { + "@floating-ui/dom": ">=1.5.4" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.2.tgz", + "integrity": "sha512-7cfaOQuCS27HD7DX+6ib2OrnW+b4ZBwDNnCcT0uTyidcmyWb03FnQqJybDBoCnpdxwBSfA94UAYlRCt7mV+TbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@floating-ui/core": "^1.7.2", + "@floating-ui/utils": "^0.2.10" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.10", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.10.tgz", + "integrity": "sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@fluentui/keyboard-keys": { + "version": "9.0.8", + "resolved": "https://registry.npmjs.org/@fluentui/keyboard-keys/-/keyboard-keys-9.0.8.tgz", + "integrity": "sha512-iUSJUUHAyTosnXK8O2Ilbfxma+ZyZPMua5vB028Ys96z80v+LFwntoehlFsdH3rMuPsA8GaC1RE7LMezwPBPdw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@swc/helpers": "^0.5.1" + } + }, + "node_modules/@fluentui/priority-overflow": { + "version": "9.1.15", + "resolved": "https://registry.npmjs.org/@fluentui/priority-overflow/-/priority-overflow-9.1.15.tgz", + "integrity": "sha512-/3jPBBq64hRdA416grVj+ZeMBUIaKZk2S5HiRg7CKCAV1JuyF84Do0rQI6ns8Vb9XOGuc4kurMcL/UEftoEVrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@swc/helpers": "^0.5.1" + } + }, + "node_modules/@fluentui/react-accordion": { + "version": "9.7.3", + "resolved": "https://registry.npmjs.org/@fluentui/react-accordion/-/react-accordion-9.7.3.tgz", + "integrity": "sha512-RgmBfctL41DRMyHjEmTW3+850La6wk+4DziAmY/3ltciO0qjjxra5UxgTQzJGLKbkdRa0/aOfzulCtJqMo4nWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-aria": "^9.15.3", + "@fluentui/react-context-selector": "^9.2.2", + "@fluentui/react-icons": "^2.0.245", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-motion": "^9.9.0", + "@fluentui/react-motion-components-preview": "^0.6.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-alert": { + "version": "9.0.0-beta.124", + "resolved": "https://registry.npmjs.org/@fluentui/react-alert/-/react-alert-9.0.0-beta.124.tgz", + "integrity": "sha512-yFBo3B5H9hnoaXxlkuz8wRz04DEyQ+ElYA/p5p+Vojf19Zuta8DmFZZ6JtWdtxcdnnQ4LvAfC5OYYlzdReozPA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-avatar": "^9.6.29", + "@fluentui/react-button": "^9.3.83", + "@fluentui/react-icons": "^2.0.239", + "@fluentui/react-jsx-runtime": "^9.0.39", + "@fluentui/react-tabster": "^9.21.5", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.10", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-aria": { + "version": "9.15.3", + "resolved": "https://registry.npmjs.org/@fluentui/react-aria/-/react-aria-9.15.3.tgz", + "integrity": "sha512-4M+wrimplTIXpJrxyodHO2y0ncjiERd3EuGMF+LvUWqIYgyEqvShAV3qFrJ1rHKQx0F0k64Sl6dd0W7OuRSARQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.8", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-utilities": "^9.22.0", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-avatar": { + "version": "9.8.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-avatar/-/react-avatar-9.8.6.tgz", + "integrity": "sha512-V084fMhMBKZQd6Dua9g7V8DuZPAOghl2iz1XA7MeqE71nmDv0HHvkALv7GocSgquNu1zZPhwo46DcLvFGUbwsw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-badge": "^9.3.2", + "@fluentui/react-context-selector": "^9.2.2", + "@fluentui/react-icons": "^2.0.245", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-popover": "^9.11.6", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-tooltip": "^9.7.6", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-badge": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@fluentui/react-badge/-/react-badge-9.3.2.tgz", + "integrity": "sha512-uMcSRPvb7iU9/8qt2zJiWIikmItfBMdcDEDhGPQzRf+Zp1krzEKSrkDOwF4kEMo+wPoyBWs37RMAAdLuSJPFCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-icons": "^2.0.245", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-breadcrumb": { + "version": "9.2.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-breadcrumb/-/react-breadcrumb-9.2.6.tgz", + "integrity": "sha512-3ANVFDNkXQpmVHJF7Cotq404SWL/lv2NRcIcqg8zv6aCjUSC4dl8fx3QGxGsMrGZ+ckbxgcFMhsSi9XgrJVvNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-aria": "^9.15.3", + "@fluentui/react-button": "^9.5.3", + "@fluentui/react-icons": "^2.0.245", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-link": "^9.5.3", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-button": { + "version": "9.5.3", + "resolved": "https://registry.npmjs.org/@fluentui/react-button/-/react-button-9.5.3.tgz", + "integrity": "sha512-xkP2/+5Mwxk8kCdJkcTgP1yETvk5kKy7dM+QXCIXeOvY2BF4/eEaWTcIYL0rAuytaRPc9uMG285yXjw7gb+lSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.8", + "@fluentui/react-aria": "^9.15.3", + "@fluentui/react-icons": "^2.0.245", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-card": { + "version": "9.3.3", + "resolved": "https://registry.npmjs.org/@fluentui/react-card/-/react-card-9.3.3.tgz", + "integrity": "sha512-a2i7unGaEOUHr0Yn4Da2Ul6QlVeX7vlfpyjng25lOIoYbCFB55QiZX8WYyN5mnUDA+maC/nP6xCEUmjYzPongg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.8", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-text": "^9.5.2", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-carousel": { + "version": "9.7.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-carousel/-/react-carousel-9.7.6.tgz", + "integrity": "sha512-6Z52YlhXd8VzTBrT7IJqHvrxKNHt0PMiaKP9OPjRevEJggTuVAoo2uzL6H7i8DY9diuGGffZC9BuDiNts/8ULw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-aria": "^9.15.3", + "@fluentui/react-button": "^9.5.3", + "@fluentui/react-context-selector": "^9.2.2", + "@fluentui/react-icons": "^2.0.245", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-tooltip": "^9.7.6", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1", + "embla-carousel": "^8.5.1", + "embla-carousel-autoplay": "^8.5.1", + "embla-carousel-fade": "^8.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-checkbox": { + "version": "9.4.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-checkbox/-/react-checkbox-9.4.6.tgz", + "integrity": "sha512-f74lYgmL8ENh4erg7v9FMBHJEm48rn2TRLKIHaDmI66w788iN3Txi5RA2a1NpQzuRu0Bqzbbuz+8neqrfnHfXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-field": "^9.3.6", + "@fluentui/react-icons": "^2.0.245", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-label": "^9.2.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-color-picker": { + "version": "9.1.3", + "resolved": "https://registry.npmjs.org/@fluentui/react-color-picker/-/react-color-picker-9.1.3.tgz", + "integrity": "sha512-Q/OcaAcNq8jLaeZgO4MfDLXrPr3E6VNXtQ+6j55odZCX4iDAbjD84omf8IRjPkGAKm64fI4Rdqb5gSC1q3x+hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ctrl/tinycolor": "^3.3.4", + "@fluentui/react-context-selector": "^9.2.2", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-combobox": { + "version": "9.15.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-combobox/-/react-combobox-9.15.6.tgz", + "integrity": "sha512-F9TqfN5hFakgXkEa6QKEOjOi+kr9qDbRA0JjeDdTsw4UqXEP3SjSktKxpcaucgwBE2Sz2YeE0Ush50f7ZpsZ7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.8", + "@fluentui/react-aria": "^9.15.3", + "@fluentui/react-context-selector": "^9.2.2", + "@fluentui/react-field": "^9.3.6", + "@fluentui/react-icons": "^2.0.245", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-portal": "^9.6.4", + "@fluentui/react-positioning": "^9.18.5", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-components": { + "version": "9.66.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-components/-/react-components-9.66.6.tgz", + "integrity": "sha512-wcXIYlyvWMrwofGbhTl/XImwvqCI91kVf/NwqyGQw3/YKB1gWkp0ioJj37FxmYLADtTNpB5oBg2/IcsUfwUU5Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-accordion": "^9.7.3", + "@fluentui/react-alert": "9.0.0-beta.124", + "@fluentui/react-aria": "^9.15.3", + "@fluentui/react-avatar": "^9.8.6", + "@fluentui/react-badge": "^9.3.2", + "@fluentui/react-breadcrumb": "^9.2.6", + "@fluentui/react-button": "^9.5.3", + "@fluentui/react-card": "^9.3.3", + "@fluentui/react-carousel": "^9.7.6", + "@fluentui/react-checkbox": "^9.4.6", + "@fluentui/react-color-picker": "^9.1.3", + "@fluentui/react-combobox": "^9.15.6", + "@fluentui/react-dialog": "^9.13.6", + "@fluentui/react-divider": "^9.3.2", + "@fluentui/react-drawer": "^9.8.6", + "@fluentui/react-field": "^9.3.6", + "@fluentui/react-image": "^9.2.2", + "@fluentui/react-infobutton": "9.0.0-beta.102", + "@fluentui/react-infolabel": "^9.3.6", + "@fluentui/react-input": "^9.6.6", + "@fluentui/react-label": "^9.2.2", + "@fluentui/react-link": "^9.5.3", + "@fluentui/react-list": "^9.2.6", + "@fluentui/react-menu": "^9.17.6", + "@fluentui/react-message-bar": "^9.5.3", + "@fluentui/react-motion": "^9.9.0", + "@fluentui/react-nav": "^9.2.2", + "@fluentui/react-overflow": "^9.4.6", + "@fluentui/react-persona": "^9.4.6", + "@fluentui/react-popover": "^9.11.6", + "@fluentui/react-portal": "^9.6.4", + "@fluentui/react-positioning": "^9.18.5", + "@fluentui/react-progress": "^9.3.6", + "@fluentui/react-provider": "^9.21.3", + "@fluentui/react-radio": "^9.4.6", + "@fluentui/react-rating": "^9.2.3", + "@fluentui/react-search": "^9.2.6", + "@fluentui/react-select": "^9.3.6", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-skeleton": "^9.3.6", + "@fluentui/react-slider": "^9.4.6", + "@fluentui/react-spinbutton": "^9.4.6", + "@fluentui/react-spinner": "^9.6.2", + "@fluentui/react-swatch-picker": "^9.3.6", + "@fluentui/react-switch": "^9.3.6", + "@fluentui/react-table": "^9.17.6", + "@fluentui/react-tabs": "^9.8.3", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-tag-picker": "^9.6.6", + "@fluentui/react-tags": "^9.6.6", + "@fluentui/react-teaching-popover": "^9.5.6", + "@fluentui/react-text": "^9.5.2", + "@fluentui/react-textarea": "^9.5.6", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-toast": "^9.5.4", + "@fluentui/react-toolbar": "^9.5.6", + "@fluentui/react-tooltip": "^9.7.6", + "@fluentui/react-tree": "^9.11.6", + "@fluentui/react-utilities": "^9.22.0", + "@fluentui/react-virtualizer": "9.0.0-alpha.100", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-context-selector": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@fluentui/react-context-selector/-/react-context-selector-9.2.2.tgz", + "integrity": "sha512-R9710dBH2AYNbdQz0UpvSqoA8YZ8vVicyqGvWPKvDGCNbZB6GY1Cu5LbODpeAthylLXhgXxIlGEcoOpjBBpRbA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-utilities": "^9.22.0", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0", + "scheduler": ">=0.19.0 <=0.23.0" + } + }, + "node_modules/@fluentui/react-dialog": { + "version": "9.13.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-dialog/-/react-dialog-9.13.6.tgz", + "integrity": "sha512-IC5fP3VGQtO0XO08DWD9uneBdqsyCE5TIdlDsiA5rypBINGpoZ41OrNQIop1wAzT9VGSxXdTmPZkWXY8HRR6sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.8", + "@fluentui/react-aria": "^9.15.3", + "@fluentui/react-context-selector": "^9.2.2", + "@fluentui/react-icons": "^2.0.245", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-motion": "^9.9.0", + "@fluentui/react-motion-components-preview": "^0.6.2", + "@fluentui/react-portal": "^9.6.4", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-divider": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/@fluentui/react-divider/-/react-divider-9.3.2.tgz", + "integrity": "sha512-YCaPVDhwQ3jYui0oc+R2rWnOGBS+iQqMkz7oxk3Uu+rDfH259daCkX5Wmvnvlb0sk2J9l3+cpEq++cf54Ierog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-drawer": { + "version": "9.8.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-drawer/-/react-drawer-9.8.6.tgz", + "integrity": "sha512-ef0jfuZtHpehWosb0RONBq1wE+kSc5SUOwyytBgt8MQnOnET9nWE0x6Hg1iOLVHp56iwqzGn7s4lJQhlhZSIFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-dialog": "^9.13.6", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-motion": "^9.9.0", + "@fluentui/react-portal": "^9.6.4", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-field": { + "version": "9.3.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-field/-/react-field-9.3.6.tgz", + "integrity": "sha512-17v+WkFVeSbl70Dq0z35G8iP6kQ92S1WNjJKXSHToYDWpaMhBlwVYm7NsQQ5Veb425+q4o5bBk59KYNryOMwXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-context-selector": "^9.2.2", + "@fluentui/react-icons": "^2.0.245", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-label": "^9.2.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-icons": { + "version": "2.0.305", + "resolved": "https://registry.npmjs.org/@fluentui/react-icons/-/react-icons-2.0.305.tgz", + "integrity": "sha512-lxJZsW4IKaPaIrlaZlvDFujztKwWXSR3tUMBUBG0WtEGoQkbrWhrt8fqzhQ9BEbq02FtifLFUpaIqiJ326//Rw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@griffel/react": "^1.0.0", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "react": ">=16.8.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-image": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@fluentui/react-image/-/react-image-9.2.2.tgz", + "integrity": "sha512-HYBQdaYr7xt1tSlPUEGyu/U3+TF3z2s2qxN41WQwjo93fhFwnVsYR1hDYQqVFa0tIOY1/ZGG3BIvgNINAFe/hw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-infobutton": { + "version": "9.0.0-beta.102", + "resolved": "https://registry.npmjs.org/@fluentui/react-infobutton/-/react-infobutton-9.0.0-beta.102.tgz", + "integrity": "sha512-3kA4F0Vga8Ds6JGlBajLCCDOo/LmPuS786Wg7ui4ZTDYVIMzy1yp2XuVcZniifBFvEp0HQCUoDPWUV0VI3FfzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-icons": "^2.0.237", + "@fluentui/react-jsx-runtime": "^9.0.36", + "@fluentui/react-label": "^9.1.68", + "@fluentui/react-popover": "^9.9.6", + "@fluentui/react-tabster": "^9.21.0", + "@fluentui/react-theme": "^9.1.19", + "@fluentui/react-utilities": "^9.18.7", + "@griffel/react": "^1.5.14", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-infolabel": { + "version": "9.3.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-infolabel/-/react-infolabel-9.3.6.tgz", + "integrity": "sha512-19MNvTjipkieN4i6kWlaSSg1ijrfOuj3lVJ/Xsa1W7MjJUMkjKWLB0wHbJqPPu916s/k5AIvAtmoUyQoMN6x8Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-icons": "^2.0.245", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-label": "^9.2.2", + "@fluentui/react-popover": "^9.11.6", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <19.0.0", + "@types/react-dom": ">=16.8.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.8.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-input": { + "version": "9.6.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-input/-/react-input-9.6.6.tgz", + "integrity": "sha512-YDpbmg7Xjpkyjc1F9Xk9FmSeK8smnUhKktMMKkXJAzNnXhHebtVBra5qAGC0z2LlboROo6ZNbn4CuFmd0dCdsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-field": "^9.3.6", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-jsx-runtime": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/@fluentui/react-jsx-runtime/-/react-jsx-runtime-9.1.2.tgz", + "integrity": "sha512-igGuh0P7Gd09Kk3g6JwjnaRIRk+mluCbpf+KcAUde6bxZ/5qB50HGX+DOGWa3+RPd5240+HLBxpT3Y985INgqw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-utilities": "^9.22.0", + "@swc/helpers": "^0.5.1", + "react-is": "^17.0.2" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "react": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-jsx-runtime/node_modules/react-is": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@fluentui/react-label": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@fluentui/react-label/-/react-label-9.2.2.tgz", + "integrity": "sha512-4SOSVCFzl5Of4D9OBkz0K4+jpkkuLBmurRzwTvgNkArMYYW7NpZZoVzxsGJLtXYMB+Uf2zIRyHUUM0CDTtGOjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-link": { + "version": "9.5.3", + "resolved": "https://registry.npmjs.org/@fluentui/react-link/-/react-link-9.5.3.tgz", + "integrity": "sha512-sEOU1jQoZODD2kVgyjYY/h5ylicj0ojVnLW2AaXnAK6kgkUiioDGDXz7rHsmVhTqKkLfUV2ZClFjc+DHI4b64A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.8", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-list": { + "version": "9.2.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-list/-/react-list-9.2.6.tgz", + "integrity": "sha512-28QmexNGjsPiDQHmvgUnRssiM9XxjaoXkAcAn0AruW5vE4kd966A4jJp4LVkGf3N40lS6HePuEqKzJseQkuDRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.8", + "@fluentui/react-checkbox": "^9.4.6", + "@fluentui/react-context-selector": "^9.2.2", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <19.0.0", + "@types/react-dom": ">=16.8.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.8.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-menu": { + "version": "9.17.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-menu/-/react-menu-9.17.6.tgz", + "integrity": "sha512-qM63MDY1ueJSlZwP1M4dVM91QpZt7YdhIKTkyVWLVIjCVwU+GAmxHk0B+23u5yjTjAEBfZvSqUaW8b33OBNv5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.8", + "@fluentui/react-aria": "^9.15.3", + "@fluentui/react-context-selector": "^9.2.2", + "@fluentui/react-icons": "^2.0.245", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-portal": "^9.6.4", + "@fluentui/react-positioning": "^9.18.5", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-message-bar": { + "version": "9.5.3", + "resolved": "https://registry.npmjs.org/@fluentui/react-message-bar/-/react-message-bar-9.5.3.tgz", + "integrity": "sha512-w6AQIz/O3HQX2S8LFnH7qNbhybG5KXv19BY8xeOchQJ+NAw3U1GgKX5+7UxKU/DNsBSL5adQoe3SUvexALfSUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-button": "^9.5.3", + "@fluentui/react-icons": "^2.0.245", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-link": "^9.5.3", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1", + "react-transition-group": "^4.4.1" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <19.0.0", + "@types/react-dom": ">=16.8.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.8.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-motion": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-motion/-/react-motion-9.9.0.tgz", + "integrity": "sha512-xgm/CkU1UvemooplEFKJL9mfGJFvzId2DJ1WYTFAa5TSZMtzOAZuPuwS/PrPNFuwjnhvCMShDj8zazgvR5i37A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-utilities": "^9.22.0", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <19.0.0", + "@types/react-dom": ">=16.8.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.8.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-motion-components-preview": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/@fluentui/react-motion-components-preview/-/react-motion-components-preview-0.6.2.tgz", + "integrity": "sha512-vVFnNXQESs2VbLQMx7Quu/49D+aUmXTS6/oTEfkK5fW5CCec11K4BNYkaQMorhMudbdBIPz4d4thzNx7YenHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-motion": "*", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-nav": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/@fluentui/react-nav/-/react-nav-9.2.2.tgz", + "integrity": "sha512-29+lwuzoBBm8G8twuMaC3drwfqMKSy0y7VNwMmBYYrAYKyQDl2G3zNQwkeSp2FlsW+lt9CpGXhOVqRgMX6nvMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-aria": "^9.15.3", + "@fluentui/react-button": "^9.5.3", + "@fluentui/react-context-selector": "^9.2.2", + "@fluentui/react-divider": "^9.3.2", + "@fluentui/react-drawer": "^9.8.6", + "@fluentui/react-icons": "^2.0.245", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-motion": "^9.9.0", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-tooltip": "^9.7.6", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-overflow": { + "version": "9.4.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-overflow/-/react-overflow-9.4.6.tgz", + "integrity": "sha512-7a3Wf21lPSmMnmxYNyIPEEEne5SJCsd0f/3Jhmx32w1t0xW69dErq+za6MGuKo5n3B0aNGX+ItH9q8UmnzLXOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/priority-overflow": "^9.1.15", + "@fluentui/react-context-selector": "^9.2.2", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-persona": { + "version": "9.4.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-persona/-/react-persona-9.4.6.tgz", + "integrity": "sha512-2tC3YzzOrOHcGS0XD0+WMmnm3l25qfxp+1xGStOKE59WgDDRWILZ8Cpr16TdmQFtw4b1z7xxLt44yMV0560m0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-avatar": "^9.8.6", + "@fluentui/react-badge": "^9.3.2", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-popover": { + "version": "9.11.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-popover/-/react-popover-9.11.6.tgz", + "integrity": "sha512-JgyM5gugBzx5F2ZB0pNuK0tG7DtLUInIHUtRdYv2jS+liUdDt+6KICSHZl/xNK1Tv+fNUtbWWXpvXtw/BMCnNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.8", + "@fluentui/react-aria": "^9.15.3", + "@fluentui/react-context-selector": "^9.2.2", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-portal": "^9.6.4", + "@fluentui/react-positioning": "^9.18.5", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-portal": { + "version": "9.6.4", + "resolved": "https://registry.npmjs.org/@fluentui/react-portal/-/react-portal-9.6.4.tgz", + "integrity": "sha512-7NTxAZ0rMjbD0bvZUdcicbSHmbf/WnTT5YOhmevHWapEuBG4is/mZkMnn0s+x8heUrkE3Xa0NOaVpZvzG2p/ew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1", + "use-disposable": "^1.0.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-positioning": { + "version": "9.18.5", + "resolved": "https://registry.npmjs.org/@fluentui/react-positioning/-/react-positioning-9.18.5.tgz", + "integrity": "sha512-cm3ZyLFpI9zOvO66UAT45Kn2f332Vw2WXUsUF4G+8WcnXroh/9kX4Wm0CfIbM5X7OOZW08mdq6LFi+MPbD+HhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@floating-ui/devtools": "0.2.1", + "@floating-ui/dom": "^1.6.12", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1", + "use-sync-external-store": "^1.2.0" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-progress": { + "version": "9.3.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-progress/-/react-progress-9.3.6.tgz", + "integrity": "sha512-/wgg8D+Rtq4HyOWgrehXNh1NPONivivXQaR7vO+1g6A2O8kCAqKhcxGDLFDrVTz2ngbqkVKpnBaJcTYBUO9+1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-field": "^9.3.6", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-provider": { + "version": "9.21.3", + "resolved": "https://registry.npmjs.org/@fluentui/react-provider/-/react-provider-9.21.3.tgz", + "integrity": "sha512-2f6hvro9o3xrIuV2LsTd4CsIPIv49J3uyDjN3psA83KSKc8LxmmduJrj5SMfZvlXLgdd8pL+Vy6ugwUCUysVDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-icons": "^2.0.245", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/core": "^1.16.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-radio": { + "version": "9.4.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-radio/-/react-radio-9.4.6.tgz", + "integrity": "sha512-/9J4JqSK82+tYKyVRe+F6ClEGbjXGSXghQxZu7Yy6pGzGIkrOjTSN43fY7NBUZTO0gj+kGhGc/ouVT7StNzCiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-field": "^9.3.6", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-label": "^9.2.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-rating": { + "version": "9.2.3", + "resolved": "https://registry.npmjs.org/@fluentui/react-rating/-/react-rating-9.2.3.tgz", + "integrity": "sha512-hm2bgdkQKBPpxao3ktHD1G45g76nYaBWxXkG2k5oxXCfFAZlaFumk0Wj8R5FnkHT56HRxpElIHXwcJp/izmMKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-icons": "^2.0.245", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <19.0.0", + "@types/react-dom": ">=16.8.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.8.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-search": { + "version": "9.2.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-search/-/react-search-9.2.6.tgz", + "integrity": "sha512-EnD94bhVWmMfI7wxjfl/ZZOwlwkZidCzi8kZTnv+TVx3BsxzScnig7H2YKubomON0gNDuxLttRuE6uPwu0llhQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-icons": "^2.0.245", + "@fluentui/react-input": "^9.6.6", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-select": { + "version": "9.3.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-select/-/react-select-9.3.6.tgz", + "integrity": "sha512-Ivbbx8MNTfd9ikgKZAKYljDbvcVfrEl4CnpRqPcLgHcRFzAQzM1Ys1Dii08iYjKkSYj1FK7haMtthQc5P21eKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-field": "^9.3.6", + "@fluentui/react-icons": "^2.0.245", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-shared-contexts": { + "version": "9.24.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-shared-contexts/-/react-shared-contexts-9.24.0.tgz", + "integrity": "sha512-GA+uLv711E+YGrAP/aVB15ozvNCiuB2ZrPDC9aYF+A6sRDxoZZG8VgHjhQ/YWJfVjDXLky4ihirknzsW1sjGtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-theme": "^9.1.24", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "react": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-skeleton": { + "version": "9.3.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-skeleton/-/react-skeleton-9.3.6.tgz", + "integrity": "sha512-K8aPQCV7ayHC4bC3NLsTKvNR7w+HoFrEQsTDf73W4BlAhJ2AbI/r6aIBVzV11olOvIkOHqE7w52rc3Lc+4B52Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-field": "^9.3.6", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-slider": { + "version": "9.4.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-slider/-/react-slider-9.4.6.tgz", + "integrity": "sha512-yKqq2grLjQiNBq1EApZb0N8msX/u9U/4Bbq0Fo/+bhf11pa+hCMQ5UkQLkrKjik5v/pF3ZSO7EOyMKxmlrB8zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-field": "^9.3.6", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-spinbutton": { + "version": "9.4.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-spinbutton/-/react-spinbutton-9.4.6.tgz", + "integrity": "sha512-LF95WmP8DZ6wq07Z4jMoTmEf81WPn21ubysURBmBEXmA5zSRD61jutW2ferpWxxXGQKtZ/NFnovFqX/AhR6Nug==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.8", + "@fluentui/react-field": "^9.3.6", + "@fluentui/react-icons": "^2.0.245", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-spinner": { + "version": "9.6.2", + "resolved": "https://registry.npmjs.org/@fluentui/react-spinner/-/react-spinner-9.6.2.tgz", + "integrity": "sha512-HxgUQ2ZJtiGqMFlln5WicE/++89NRCELQbkxRvmJapqbYkXI108Cz/JF2RaLyWSYMEyaxHUd1sdxbCEOuRegpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-label": "^9.2.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-swatch-picker": { + "version": "9.3.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-swatch-picker/-/react-swatch-picker-9.3.6.tgz", + "integrity": "sha512-XD0RxoTH5kDuOlrXwt/BI8ZdIAoprabN+sc6Yu8JE9W9jzXMDWlpqHYwECj3QmvSWRBgJ5B3hHNcDEdhjMpwhw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-context-selector": "^9.2.2", + "@fluentui/react-field": "^9.3.6", + "@fluentui/react-icons": "^2.0.245", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <19.0.0", + "@types/react-dom": ">=16.8.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.8.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-switch": { + "version": "9.3.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-switch/-/react-switch-9.3.6.tgz", + "integrity": "sha512-yP+tXmsChEy2UJYf5SHP8ssfxjyVdavikb/SD2QAlZYutNSimuUdA1mypxkdzkv7li98fEnaYHqDSj3NTAQt3Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-field": "^9.3.6", + "@fluentui/react-icons": "^2.0.245", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-label": "^9.2.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-table": { + "version": "9.17.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-table/-/react-table-9.17.6.tgz", + "integrity": "sha512-YhAlzD8Cf8A59vKsf9xtpqbcH7hHbtPBWzFyLCP/y/VVYZ0fAlcwULbrvvgc+PpdBur7XeczxGGIqe589w6vuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.8", + "@fluentui/react-aria": "^9.15.3", + "@fluentui/react-avatar": "^9.8.6", + "@fluentui/react-checkbox": "^9.4.6", + "@fluentui/react-context-selector": "^9.2.2", + "@fluentui/react-icons": "^2.0.245", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-radio": "^9.4.6", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-tabs": { + "version": "9.8.3", + "resolved": "https://registry.npmjs.org/@fluentui/react-tabs/-/react-tabs-9.8.3.tgz", + "integrity": "sha512-UGcJoz6hbYmxC0yPmGJ3wls3bm3p/ROF6p/PzRvk3ceKXpQHiXElC2TIDgm0VPwIaA0HvYl+9AptSlLtdQe6EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-context-selector": "^9.2.2", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-tabster": { + "version": "9.25.3", + "resolved": "https://registry.npmjs.org/@fluentui/react-tabster/-/react-tabster-9.25.3.tgz", + "integrity": "sha512-y5sNkYqZP3CaQLRfWwqqlenb5TGjb8lAExr68QYkuwzAgvqlNguxTbYM2PSgWG14tfqmW8cG9UxQdp9LGw2Nfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1", + "keyborg": "^2.6.0", + "tabster": "^8.5.5" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-tag-picker": { + "version": "9.6.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-tag-picker/-/react-tag-picker-9.6.6.tgz", + "integrity": "sha512-AsuPgk5+BrEMRbVSHdvt7B623jeY5o64f2CAXKeOBzEjskOQLLETLRd1vZo1nkJLweh2kHE3rI4H9WQcEGarmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.8", + "@fluentui/react-aria": "^9.15.3", + "@fluentui/react-combobox": "^9.15.6", + "@fluentui/react-context-selector": "^9.2.2", + "@fluentui/react-field": "^9.3.6", + "@fluentui/react-icons": "^2.0.245", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-portal": "^9.6.4", + "@fluentui/react-positioning": "^9.18.5", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-tags": "^9.6.6", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-tags": { + "version": "9.6.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-tags/-/react-tags-9.6.6.tgz", + "integrity": "sha512-IESredJstOTuoWJasCNdfvtUh/LLs6mYeVqn3C4mkHyngP/vepXyvvcP/e/ZI2mZi1SWE7MhrM1ubNIUOrVCIQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.8", + "@fluentui/react-aria": "^9.15.3", + "@fluentui/react-avatar": "^9.8.6", + "@fluentui/react-icons": "^2.0.245", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-teaching-popover": { + "version": "9.5.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-teaching-popover/-/react-teaching-popover-9.5.6.tgz", + "integrity": "sha512-IugbjJbyqWOflGg11hvvlRfdiOVvJT8wCS2BIGIwWxEZa31EdHXEHhrCg2DjEAtT+d3FEyGhEO7v31mHczIEsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-aria": "^9.15.3", + "@fluentui/react-button": "^9.5.3", + "@fluentui/react-context-selector": "^9.2.2", + "@fluentui/react-icons": "^2.0.245", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-popover": "^9.11.6", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1", + "use-sync-external-store": "^1.2.0" + }, + "peerDependencies": { + "@types/react": ">=16.8.0 <19.0.0", + "@types/react-dom": ">=16.8.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.8.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-text": { + "version": "9.5.2", + "resolved": "https://registry.npmjs.org/@fluentui/react-text/-/react-text-9.5.2.tgz", + "integrity": "sha512-zhTBiy6k61e/my3VbTvFGlvOO6sQ3umFA3CTrvTuTB093giN6OqQ5rvHky2XwEQiVad9WoQ14MPgO0K0ORLluQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-textarea": { + "version": "9.5.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-textarea/-/react-textarea-9.5.6.tgz", + "integrity": "sha512-yLUntuLjNvrLJ+g2OjtImdkYNAqPdTfG5X9xPvt6h447c0yFzAd6oW9NqjAahDoEYTwMwWUb5+zv7cR88MHbUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-field": "^9.3.6", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-theme": { + "version": "9.1.24", + "resolved": "https://registry.npmjs.org/@fluentui/react-theme/-/react-theme-9.1.24.tgz", + "integrity": "sha512-OhVKYD7CMYHxzJEn4PtIszledj8hbQJNWBMfIZsp4Sytdp9vCi0txIQUx4BhS1WqtQPhNGCF16eW9Q3NRrnIrQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/tokens": "1.0.0-alpha.21", + "@swc/helpers": "^0.5.1" + } + }, + "node_modules/@fluentui/react-toast": { + "version": "9.5.4", + "resolved": "https://registry.npmjs.org/@fluentui/react-toast/-/react-toast-9.5.4.tgz", + "integrity": "sha512-iLcNrtu3iVp4h8pw9KumhXwUrM8uUm3EU57hBU1FxXQpreEpnPuJLxQx1NmuNCeiBMFg2S0rtfsqI/aTWvG2nQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.8", + "@fluentui/react-aria": "^9.15.3", + "@fluentui/react-icons": "^2.0.245", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-motion": "^9.9.0", + "@fluentui/react-motion-components-preview": "^0.6.2", + "@fluentui/react-portal": "^9.6.4", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-toolbar": { + "version": "9.5.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-toolbar/-/react-toolbar-9.5.6.tgz", + "integrity": "sha512-nDujwd9vLwykAeF3lOVBuXZmGcyDLjwRcLHuvTKUGNvykr8TDbxeCq9ln2ZvfNhXHCzYvNnWPBIJKbndOVK+oQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-button": "^9.5.3", + "@fluentui/react-context-selector": "^9.2.2", + "@fluentui/react-divider": "^9.3.2", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-radio": "^9.4.6", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-tooltip": { + "version": "9.7.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-tooltip/-/react-tooltip-9.7.6.tgz", + "integrity": "sha512-xtkJ0A20jmmqw5KFypJZXpubHyKK4vQekjbr9IUFdHaxbyAo+9yxrYcdGQS0MdNnYwSlf8x8ShdwsUU3VccqVA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.8", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-portal": "^9.6.4", + "@fluentui/react-positioning": "^9.18.5", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-tree": { + "version": "9.11.6", + "resolved": "https://registry.npmjs.org/@fluentui/react-tree/-/react-tree-9.11.6.tgz", + "integrity": "sha512-H14/IT0g77Z8DSMCwD88fXqeqOeot+ajh49FKgfU6K+xefz1/YgYNJ/Xy3ukODHkZoznS+XfvjRXnlHer5U/1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.8", + "@fluentui/react-aria": "^9.15.3", + "@fluentui/react-avatar": "^9.8.6", + "@fluentui/react-button": "^9.5.3", + "@fluentui/react-checkbox": "^9.4.6", + "@fluentui/react-context-selector": "^9.2.2", + "@fluentui/react-icons": "^2.0.245", + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-motion": "^9.9.0", + "@fluentui/react-motion-components-preview": "^0.6.2", + "@fluentui/react-radio": "^9.4.6", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-tabster": "^9.25.3", + "@fluentui/react-theme": "^9.1.24", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-utilities": { + "version": "9.22.0", + "resolved": "https://registry.npmjs.org/@fluentui/react-utilities/-/react-utilities-9.22.0.tgz", + "integrity": "sha512-O4D51FUyn5670SjduzzN1usmwWAmFPQA00Gu6jJrbDXvOXTpOAO/ApkLpSW87HChKGrj8Y0gjFHtK8xpC3qOCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/keyboard-keys": "^9.0.8", + "@fluentui/react-shared-contexts": "^9.24.0", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "react": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/react-virtualizer": { + "version": "9.0.0-alpha.100", + "resolved": "https://registry.npmjs.org/@fluentui/react-virtualizer/-/react-virtualizer-9.0.0-alpha.100.tgz", + "integrity": "sha512-e7u3SP2Smv5+9Adey+pOerGmHq2D6Nd0ek/iWbc/o0CKX5QMeHwbUlZAbVVsrX/vwIeeZ3+qJMt+UH3hHI+wdw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@fluentui/react-jsx-runtime": "^9.1.2", + "@fluentui/react-shared-contexts": "^9.24.0", + "@fluentui/react-utilities": "^9.22.0", + "@griffel/react": "^1.5.22", + "@swc/helpers": "^0.5.1" + }, + "peerDependencies": { + "@types/react": ">=16.14.0 <19.0.0", + "@types/react-dom": ">=16.9.0 <19.0.0", + "react": ">=16.14.0 <19.0.0", + "react-dom": ">=16.14.0 <19.0.0" + } + }, + "node_modules/@fluentui/tokens": { + "version": "1.0.0-alpha.21", + "resolved": "https://registry.npmjs.org/@fluentui/tokens/-/tokens-1.0.0-alpha.21.tgz", + "integrity": "sha512-xQ1T56sNgDFGl+kJdIwhz67mHng8vcwO7Dvx5Uja4t+NRULQBgMcJ4reUo4FGF3TjufHj08pP0/OnKQgnOaSVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@swc/helpers": "^0.5.1" + } + }, + "node_modules/@github/blackbird-external-ingest-utils": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@github/blackbird-external-ingest-utils/-/blackbird-external-ingest-utils-0.1.0.tgz", + "integrity": "sha512-JM3ofzZS5SMQOeFlMPhxgLmT/BcMz2PI5QxQa/N5CzKX7TWmXBI4jMmsXTQ4MlKg0jR2f4F7+VCRHXuzffnwYQ==", + "license": "MIT" + }, + "node_modules/@github/copilot": { + "version": "0.0.366", + "resolved": "https://registry.npmjs.org/@github/copilot/-/copilot-0.0.366.tgz", + "integrity": "sha512-mJ3wAvn4/yCrQBG5kcn2SOvWQSlrftkbpaAUBXX4l42y6Xsi4d9teuEdcwKOsUWLNDavpt3ecoCDnZUaCb/81A==", + "license": "SEE LICENSE IN LICENSE.md", + "bin": { + "copilot": "index.js" + }, + "engines": { + "node": ">=22" + } + }, + "node_modules/@google/genai": { + "version": "1.25.0", + "resolved": "https://registry.npmjs.org/@google/genai/-/genai-1.25.0.tgz", + "integrity": "sha512-IBNyel/umavam98SQUfvQSvh/Rp6Ql2fysQLqPyWZr5K8d768X9AO+JZU4o+3qvFDUBA0dVYUSkxyYonVcICvA==", + "license": "Apache-2.0", + "dependencies": { + "google-auth-library": "^9.14.2", + "ws": "^8.18.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "@modelcontextprotocol/sdk": "^1.11.4" + }, + "peerDependenciesMeta": { + "@modelcontextprotocol/sdk": { + "optional": true + } + } + }, + "node_modules/@griffel/core": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/@griffel/core/-/core-1.19.1.tgz", + "integrity": "sha512-ZItAAOm8YH1FW0ebzOxS3jwENqd+Dz4CGiPEdgkL4kr7D6mBpjjBbQC6VRXxnA+VqHeEQGy69Ll4M1peY8MX/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@emotion/hash": "^0.9.0", + "@griffel/style-types": "^1.3.0", + "csstype": "^3.1.3", + "rtl-css-js": "^1.16.1", + "stylis": "^4.2.0", + "tslib": "^2.1.0" + } + }, + "node_modules/@griffel/react": { + "version": "1.5.29", + "resolved": "https://registry.npmjs.org/@griffel/react/-/react-1.5.29.tgz", + "integrity": "sha512-xKenEIfV2PnLKVsM8yp2ZCUTknh2790937XlI88zDaO9TC8ylG10mZ3MrcgCdSecrVjKq9JKmm24tsODpkh4pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@griffel/core": "^1.19.1", + "tslib": "^2.1.0" + }, + "peerDependencies": { + "react": ">=16.8.0 <19.0.0" + } + }, + "node_modules/@griffel/style-types": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@griffel/style-types/-/style-types-1.3.0.tgz", + "integrity": "sha512-bHwD3sUE84Xwv4dH011gOKe1jul77M1S6ZFN9Tnq8pvZ48UMdY//vtES6fv7GRS5wXYT4iqxQPBluAiYAfkpmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "csstype": "^3.1.3" + } + }, + "node_modules/@hediet/node-reload": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@hediet/node-reload/-/node-reload-0.8.0.tgz", + "integrity": "sha512-TX+RrahcrMAPdJAE4V3rD2rggHJHJ/jJoedx7vmDVBn8/NQRhXLc+9OqXQAu28toiSP5p9cJ77bVcrv1xr4Mmg==", + "dev": true, + "dependencies": { + "@types/node": "^12.0.7", + "@types/stack-trace": "^0.0.29" + } + }, + "node_modules/@hediet/node-reload/node_modules/@types/node": { + "version": "12.20.55", + "resolved": "https://registry.npmjs.org/@types/node/-/node-12.20.55.tgz", + "integrity": "sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==", + "dev": true + }, + "node_modules/@humanfs/core": { + "version": "0.19.1", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", + "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.6", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", + "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.1", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/gitignore-to-minimatch": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@humanwhocodes/gitignore-to-minimatch/-/gitignore-to-minimatch-1.0.2.tgz", + "integrity": "sha512-rSqmMJDdLFUsyxR6FMtD00nfQKKLFb1kv+qBbOVKqErvloEIJLo5bDTJTQNTYgeyp78JsA7u/NPi5jT1GR/MuA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.3.tgz", + "integrity": "sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.33.5.tgz", + "integrity": "sha512-UT4p+iz/2H4twwAoLCqfA9UH5pI6DggwKEGuaPy7nCVQ8ZsiY5PIcrRvD1DzuY3qYL07NtIQcWnBSY/heikIFQ==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.33.5.tgz", + "integrity": "sha512-fyHac4jIc1ANYGRDxtiqelIbdWkIuQaI84Mv45KvGRRxSAa7o7d1ZKAOBaYbnepLC1WqxfpimdeWfvqqSGwR2Q==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.0.4.tgz", + "integrity": "sha512-XblONe153h0O2zuFfTAbQYAX2JhYmDHeWikp1LM9Hul9gVPjFY427k6dFEcOL72O01QxQsWi761svJ/ev9xEDg==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.0.4.tgz", + "integrity": "sha512-xnGR8YuZYfJGmWPvmlunFaWJsb9T/AO2ykoP3Fz/0X5XV2aoYBPkX6xqCQvUTKKiLddarLaxpzNe+b1hjeWHAQ==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "darwin" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.0.5.tgz", + "integrity": "sha512-gvcC4ACAOPRNATg/ov8/MnbxFDJqf/pDePbBnuBDcjsI8PssmjoKMAz4LtLaVi+OnSb5FK/yIOamqDwGmXW32g==", + "cpu": [ + "arm" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.0.4.tgz", + "integrity": "sha512-9B+taZ8DlyyqzZQnoeIvDVR/2F4EbMepXMc/NdVbkzsJbzkUjhXv/70GQJ7tdLA4YJgNP25zukcxpX2/SueNrA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.0.4.tgz", + "integrity": "sha512-MmWmQ3iPFZr0Iev+BAgVMb3ZyC4KeFc3jFxnNbEPas60e1cIfevbtuyf9nDGIzOaW9PdnDciJm+wFFaTlj5xYw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.0.4.tgz", + "integrity": "sha512-9Ti+BbTYDcsbp4wfYib8Ctm1ilkugkA/uscUn6UXK1ldpC1JjiXbLfFZtRlBhjPZ5o1NCLiDbg8fhUPKStHoTA==", + "cpu": [ + "arm64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.0.4.tgz", + "integrity": "sha512-viYN1KX9m+/hGkJtvYYp+CCLgnJXwiQB39damAO7WMdKWlIhmYTfHjwSbQeUK/20vY154mwezd9HflVFM1wVSw==", + "cpu": [ + "x64" + ], + "license": "LGPL-3.0-or-later", + "optional": true, + "os": [ + "linux" + ], + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.33.5.tgz", + "integrity": "sha512-JTS1eldqZbJxjvKaAkxhZmBqPRGmxgu+qFKSInv8moZ2AmT5Yib3EQ1c6gp493HvrvV8QgdOXdyaIBrhvFhBMQ==", + "cpu": [ + "arm" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.0.5" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.33.5.tgz", + "integrity": "sha512-JMVv+AMRyGOHtO1RFBiJy/MBsgz0x4AWrT6QoEVVTyh1E39TrCUpTRI7mx9VksGX4awWASxqCYLCV4wBZHAYxA==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.33.5.tgz", + "integrity": "sha512-opC+Ok5pRNAzuvq1AG0ar+1owsu842/Ab+4qvU879ippJBHvyY5n2mxF1izXqkPYlGuP/M556uh53jRLJmzTWA==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.33.5.tgz", + "integrity": "sha512-XrHMZwGQGvJg2V/oRSUfSAfjfPxO+4DkiRh6p2AFjLQztWUuY/o8Mq0eMQVIY7HJ1CDQUJlxGGZRw1a5bqmd1g==", + "cpu": [ + "arm64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.0.4" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.33.5.tgz", + "integrity": "sha512-WT+d/cgqKkkKySYmqoZ8y3pxx7lx9vVejxW/W4DOFMYVSkErR+w7mf2u8m/y4+xHe7yY9DAXQMWQhpnMuFfScw==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.0.4" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.33.5", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.33.5.tgz", + "integrity": "sha512-MpY/o8/8kj+EcnxwvrP4aTJSWw/aZ7JIGR4aBeZkZw5B7/Jn+tY9/VNwtcoGmdT7GfggGIU4kygOMSbYnOrAbg==", + "cpu": [ + "x64" + ], + "license": "Apache-2.0 AND LGPL-3.0-or-later", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@isaacs/balanced-match": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", + "integrity": "sha512-yzMTt9lEb8Gv7zRioUilSglI0c0smZ9k5D65677DLWLtWJaXIS3CqcGyUFByYKlnUj6TkjLVs54fBl6+TiGQDQ==", + "license": "MIT", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/brace-expansion": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", + "integrity": "sha512-ZT55BDLV0yv0RBm2czMiZ+SqCGO7AvmOM3G/w2xhVPH+te0aKgFjmBvGlL1dH+ql2tgGO3MVrbb3jCKyvpgnxA==", + "license": "MIT", + "dependencies": { + "@isaacs/balanced-match": "^4.0.1" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", + "dev": true, + "license": "ISC", + "dependencies": { + "minipass": "^7.0.4" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@isaacs/fs-minipass/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/schemas/node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@keyv/serialize": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@keyv/serialize/-/serialize-1.0.3.tgz", + "integrity": "sha512-qnEovoOp5Np2JDGonIDL6Ayihw0RhnRh6vxPuHo4RDn1UOzwEo4AeIfpL6UGIrsceWrCMiVPgwRjbHu4vYFc3g==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer": "^6.0.3" + } + }, + "node_modules/@keyv/serialize/node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/@keyv/sqlite": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/@keyv/sqlite/-/sqlite-4.0.5.tgz", + "integrity": "sha512-Q7Ye2p+wDA1ufQ4SHuWfZk0c4oZJ5y73AZ28zHLWeMqgPbIDItK0dMvM5lL+B1Tl4nBPbPO00F+f7dQrS9u/IQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "sqlite3": "^5.1.7" + }, + "engines": { + "node": ">= 18" + }, + "peerDependencies": { + "keyv": "^5.3.4" + } + }, + "node_modules/@koa/cors": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@koa/cors/-/cors-5.0.0.tgz", + "integrity": "sha512-x/iUDjcS90W69PryLDIMgFyV21YLTnG9zOpPXS7Bkt2b8AsY3zZsIpOLBkYr9fBcF3HbkKaER5hOBZLfpLgYNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/@koa/router": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/@koa/router/-/router-13.1.0.tgz", + "integrity": "sha512-mNVu1nvkpSd8Q8gMebGbCkDWJ51ODetrFvLKYusej+V0ByD4btqHYnPIzTBLXnQMVUlm/oxVwqmWBY3zQfZilw==", + "dev": true, + "license": "MIT", + "dependencies": { + "http-errors": "^2.0.0", + "koa-compose": "^4.1.0", + "path-to-regexp": "^6.3.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@microsoft/1ds-core-js": { + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/@microsoft/1ds-core-js/-/1ds-core-js-4.3.10.tgz", + "integrity": "sha512-5fSZmkGwWkH+mrIA5M1GYPZdPM+SjXwCCl2Am7VhFoVwOBJNhRnwvIpAdzw6sFjiebN/rz+/YH0NdxztGZSa9Q==", + "license": "MIT", + "dependencies": { + "@microsoft/applicationinsights-core-js": "3.3.10", + "@microsoft/applicationinsights-shims": "3.0.1", + "@microsoft/dynamicproto-js": "^2.0.3", + "@nevware21/ts-async": ">= 0.5.4 < 2.x", + "@nevware21/ts-utils": ">= 0.11.8 < 2.x" + } + }, + "node_modules/@microsoft/1ds-post-js": { + "version": "4.3.10", + "resolved": "https://registry.npmjs.org/@microsoft/1ds-post-js/-/1ds-post-js-4.3.10.tgz", + "integrity": "sha512-VSLjc9cT+Y+eTiSfYltJHJCejn8oYr0E6Pq2BMhOEO7F6IyLGYIxzKKvo78ze9x+iHX7KPTATcZ+PFgjGXuNqg==", + "license": "MIT", + "dependencies": { + "@microsoft/1ds-core-js": "4.3.10", + "@microsoft/applicationinsights-shims": "3.0.1", + "@microsoft/dynamicproto-js": "^2.0.3", + "@nevware21/ts-async": ">= 0.5.4 < 2.x", + "@nevware21/ts-utils": ">= 0.11.8 < 2.x" + } + }, + "node_modules/@microsoft/applicationinsights-channel-js": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-channel-js/-/applicationinsights-channel-js-3.3.10.tgz", + "integrity": "sha512-iolFLz1ocWAzIQqHIEjjov3gNTPkgFQ4ArHnBcJEYoffOGWlJt6copaevS5YPI5rHzmbySsengZ8cLJJBBrXzQ==", + "license": "MIT", + "dependencies": { + "@microsoft/applicationinsights-common": "3.3.10", + "@microsoft/applicationinsights-core-js": "3.3.10", + "@microsoft/applicationinsights-shims": "3.0.1", + "@microsoft/dynamicproto-js": "^2.0.3", + "@nevware21/ts-async": ">= 0.5.4 < 2.x", + "@nevware21/ts-utils": ">= 0.11.8 < 2.x" + }, + "peerDependencies": { + "tslib": ">= 1.0.0" + } + }, + "node_modules/@microsoft/applicationinsights-common": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-common/-/applicationinsights-common-3.3.10.tgz", + "integrity": "sha512-RVIenPIvNgZCbjJdALvLM4rNHgAFuHI7faFzHCgnI6S2WCUNGHeXlQTs9EUUrL+n2TPp9/cd0KKMILU5VVyYiA==", + "license": "MIT", + "dependencies": { + "@microsoft/applicationinsights-core-js": "3.3.10", + "@microsoft/applicationinsights-shims": "3.0.1", + "@microsoft/dynamicproto-js": "^2.0.3", + "@nevware21/ts-utils": ">= 0.11.8 < 2.x" + }, + "peerDependencies": { + "tslib": ">= 1.0.0" + } + }, + "node_modules/@microsoft/applicationinsights-core-js": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-core-js/-/applicationinsights-core-js-3.3.10.tgz", + "integrity": "sha512-5yKeyassZTq2l+SAO4npu6LPnbS++UD+M+Ghjm9uRzoBwD8tumFx0/F8AkSVqbniSREd+ztH/2q2foewa2RZyg==", + "license": "MIT", + "dependencies": { + "@microsoft/applicationinsights-shims": "3.0.1", + "@microsoft/dynamicproto-js": "^2.0.3", + "@nevware21/ts-async": ">= 0.5.4 < 2.x", + "@nevware21/ts-utils": ">= 0.11.8 < 2.x" + }, + "peerDependencies": { + "tslib": ">= 1.0.0" + } + }, + "node_modules/@microsoft/applicationinsights-shims": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-shims/-/applicationinsights-shims-3.0.1.tgz", + "integrity": "sha512-DKwboF47H1nb33rSUfjqI6ryX29v+2QWcTrRvcQDA32AZr5Ilkr7whOOSsD1aBzwqX0RJEIP1Z81jfE3NBm/Lg==", + "license": "MIT", + "dependencies": { + "@nevware21/ts-utils": ">= 0.9.4 < 2.x" + } + }, + "node_modules/@microsoft/applicationinsights-web-basic": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web-basic/-/applicationinsights-web-basic-3.3.10.tgz", + "integrity": "sha512-AZib5DAT3NU0VT0nLWEwXrnoMDDgZ/5S4dso01CNU5ELNxLdg+1fvchstlVdMy4FrAnxzs8Wf/GIQNFYOVgpAw==", + "license": "MIT", + "dependencies": { + "@microsoft/applicationinsights-channel-js": "3.3.10", + "@microsoft/applicationinsights-common": "3.3.10", + "@microsoft/applicationinsights-core-js": "3.3.10", + "@microsoft/applicationinsights-shims": "3.0.1", + "@microsoft/dynamicproto-js": "^2.0.3", + "@nevware21/ts-async": ">= 0.5.4 < 2.x", + "@nevware21/ts-utils": ">= 0.11.8 < 2.x" + }, + "peerDependencies": { + "tslib": ">= 1.0.0" + } + }, + "node_modules/@microsoft/applicationinsights-web-snippet": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@microsoft/applicationinsights-web-snippet/-/applicationinsights-web-snippet-1.0.1.tgz", + "integrity": "sha512-2IHAOaLauc8qaAitvWS+U931T+ze+7MNWrDHY47IENP5y2UA0vqJDu67kWZDdpCN1fFC77sfgfB+HV7SrKshnQ==" + }, + "node_modules/@microsoft/dynamicproto-js": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@microsoft/dynamicproto-js/-/dynamicproto-js-2.0.3.tgz", + "integrity": "sha512-JTWTU80rMy3mdxOjjpaiDQsTLZ6YSGGqsjURsY6AUQtIj0udlF/jYmhdLZu8693ZIC0T1IwYnFa0+QeiMnziBA==", + "license": "MIT", + "dependencies": { + "@nevware21/ts-utils": ">= 0.10.4 < 2.x" + } + }, + "node_modules/@microsoft/fast-element": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/@microsoft/fast-element/-/fast-element-1.14.0.tgz", + "integrity": "sha512-zXvuSOzvsu8zDTy9eby8ix8VqLop2rwKRgp++ZN2kTCsoB3+QJVoaGD2T/Cyso2ViZQFXNpiNCVKfnmxBvmWkQ==", + "license": "MIT" + }, + "node_modules/@microsoft/fast-foundation": { + "version": "2.50.0", + "resolved": "https://registry.npmjs.org/@microsoft/fast-foundation/-/fast-foundation-2.50.0.tgz", + "integrity": "sha512-8mFYG88Xea1jZf2TI9Lm/jzZ6RWR8x29r24mGuLojNYqIR2Bl8+hnswoV6laApKdCbGMPKnsAL/O68Q0sRxeVg==", + "license": "MIT", + "dependencies": { + "@microsoft/fast-element": "^1.14.0", + "@microsoft/fast-web-utilities": "^5.4.1", + "tabbable": "^5.2.0", + "tslib": "^1.13.0" + } + }, + "node_modules/@microsoft/fast-foundation/node_modules/tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "license": "0BSD" + }, + "node_modules/@microsoft/fast-react-wrapper": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@microsoft/fast-react-wrapper/-/fast-react-wrapper-0.3.25.tgz", + "integrity": "sha512-jKzmk2xJV93RL/jEFXEZgBvXlKIY4N4kXy3qrjmBfFpqNi3VjY+oUTWyMnHRMC5EUhIFxD+Y1VD4u9uIPX3jQw==", + "license": "MIT", + "dependencies": { + "@microsoft/fast-element": "^1.14.0", + "@microsoft/fast-foundation": "^2.50.0" + }, + "peerDependencies": { + "react": ">=16.9.0" + } + }, + "node_modules/@microsoft/fast-web-utilities": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/@microsoft/fast-web-utilities/-/fast-web-utilities-5.4.1.tgz", + "integrity": "sha512-ReWYncndjV3c8D8iq9tp7NcFNc1vbVHvcBFPME2nNFKNbS1XCesYZGlIlf3ot5EmuOXPlrzUHOWzQ2vFpIkqDg==", + "license": "MIT", + "dependencies": { + "exenv-es6": "^1.1.1" + } + }, + "node_modules/@microsoft/tiktokenizer": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/@microsoft/tiktokenizer/-/tiktokenizer-1.0.10.tgz", + "integrity": "sha512-k6ujcOTZEEjvb5CWHA3LTVfwLw+if6rW9fp0JfYRez0Ex3wKq42tnovoXs107pGMS39qPdiV1+Dv8dJgROshJg==", + "license": "MIT", + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@napi-rs/wasm-runtime": { + "version": "0.2.11", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-0.2.11.tgz", + "integrity": "sha512-9DPkXtvHydrcOsopiYpUgPHpmj0HWZKMUnL2dZqpvC42lsratuBG06V5ipyno0fUek5VlFsNQ+AcFATSrJXgMA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@emnapi/core": "^1.4.3", + "@emnapi/runtime": "^1.4.3", + "@tybys/wasm-util": "^0.9.0" + } + }, + "node_modules/@nevware21/ts-async": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@nevware21/ts-async/-/ts-async-0.5.4.tgz", + "integrity": "sha512-IBTyj29GwGlxfzXw2NPnzty+w0Adx61Eze1/lknH/XIVdxtF9UnOpk76tnrHXWa6j84a1RR9hsOcHQPFv9qJjA==", + "license": "MIT", + "dependencies": { + "@nevware21/ts-utils": ">= 0.11.6 < 2.x" + } + }, + "node_modules/@nevware21/ts-utils": { + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/@nevware21/ts-utils/-/ts-utils-0.12.5.tgz", + "integrity": "sha512-JPQZWPKQJjj7kAftdEZL0XDFfbMgXCGiUAZe0d7EhLC3QlXTlZdSckGqqRIQ2QNl0VTEZyZUvRBw6Ednw089Fw==", + "license": "MIT" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@octokit/openapi-types": { + "version": "25.1.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-25.1.0.tgz", + "integrity": "sha512-idsIggNXUKkk0+BExUn1dQ92sfysJrje03Q0bv0e+KPLrvyqZF8MnBpFz8UNfYDwB3Ie7Z0TByjWfzxt7vseaA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@octokit/types": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-14.1.0.tgz", + "integrity": "sha512-1y6DgTy8Jomcpu33N+p5w58l6xyt55Ar2I91RPiIA0xCJBXyUAhXCcmZaDWSANiha7R9a6qJJ2CRomGPZ6f46g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/openapi-types": "^25.1.0" + } + }, + "node_modules/@opentelemetry/api": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.6.0.tgz", + "integrity": "sha512-OWlrQAnWn9577PhVgqjUvMr1pg57Bc4jv0iL4w0PRuOSRvq67rvHW9Ie/dZVMvCzhSCB+UxhcY/PmCmFj33Q+g==", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/@opentelemetry/core": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/core/-/core-1.30.1.tgz", + "integrity": "sha512-OOCM2C/QIURhJMuKaekP3TRBxBKxG/TWWA0TL2J6nXUtDnuCtccy49LUJF8xPFXMX+0LMcxFpCo8M9cGY1W6rQ==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/core/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/instrumentation": { + "version": "0.41.2", + "resolved": "https://registry.npmjs.org/@opentelemetry/instrumentation/-/instrumentation-0.41.2.tgz", + "integrity": "sha512-rxU72E0pKNH6ae2w5+xgVYZLzc5mlxAbGzF4shxMVK8YC2QQsfN38B2GPbj0jvrKWWNUElfclQ+YTykkNg/grw==", + "dependencies": { + "@types/shimmer": "^1.0.2", + "import-in-the-middle": "1.4.2", + "require-in-the-middle": "^7.1.1", + "semver": "^7.5.1", + "shimmer": "^1.2.1" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.3.0" + } + }, + "node_modules/@opentelemetry/resources": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/resources/-/resources-1.30.1.tgz", + "integrity": "sha512-5UxZqiAgLYGFjS4s9qm5mBVo433u+dSPUFWVWXmLAD4wB65oMCoXaJP1KJa9DIYYMeHu3z4BZcStG3LC593cWA==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.30.1", + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/resources/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/sdk-trace-base": { + "version": "1.30.1", + "resolved": "https://registry.npmjs.org/@opentelemetry/sdk-trace-base/-/sdk-trace-base-1.30.1.tgz", + "integrity": "sha512-jVPgBbH1gCy2Lb7X0AVQ8XAfgg0pJ4nvl8/IiQA6nxOsPvS+0zMJaFSs2ltXe0J6C8dqjcnpyqINDJmU30+uOg==", + "license": "Apache-2.0", + "dependencies": { + "@opentelemetry/core": "1.30.1", + "@opentelemetry/resources": "1.30.1", + "@opentelemetry/semantic-conventions": "1.28.0" + }, + "engines": { + "node": ">=14" + }, + "peerDependencies": { + "@opentelemetry/api": ">=1.0.0 <1.10.0" + } + }, + "node_modules/@opentelemetry/sdk-trace-base/node_modules/@opentelemetry/semantic-conventions": { + "version": "1.28.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.28.0.tgz", + "integrity": "sha512-lp4qAiMTD4sNWW4DbKLBkfiMZ4jbAboJIGOQr5DvciMRI494OapieI9qiODpOt0XBr1LjIDy1xAGAnVs5supTA==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@opentelemetry/semantic-conventions": { + "version": "1.30.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/semantic-conventions/-/semantic-conventions-1.30.0.tgz", + "integrity": "sha512-4VlGgo32k2EQ2wcCY3vEU28A0O13aOtHz3Xt2/2U5FAh9EfhD6t6DqL5Z6yAnRCntbTFDU4YfbpyzSlHNWycPw==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/@parcel/watcher": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher/-/watcher-2.5.1.tgz", + "integrity": "sha512-dfUnCxiN9H4ap84DvD2ubjw+3vUNpstxa0TneY/Paat8a3R4uQZDLSvWjmznAY/DoahqTHl9V46HF/Zs3F29pg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "detect-libc": "^1.0.3", + "is-glob": "^4.0.3", + "micromatch": "^4.0.5", + "node-addon-api": "^7.0.0" + }, + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + }, + "optionalDependencies": { + "@parcel/watcher-android-arm64": "2.5.1", + "@parcel/watcher-darwin-arm64": "2.5.1", + "@parcel/watcher-darwin-x64": "2.5.1", + "@parcel/watcher-freebsd-x64": "2.5.1", + "@parcel/watcher-linux-arm-glibc": "2.5.1", + "@parcel/watcher-linux-arm-musl": "2.5.1", + "@parcel/watcher-linux-arm64-glibc": "2.5.1", + "@parcel/watcher-linux-arm64-musl": "2.5.1", + "@parcel/watcher-linux-x64-glibc": "2.5.1", + "@parcel/watcher-linux-x64-musl": "2.5.1", + "@parcel/watcher-win32-arm64": "2.5.1", + "@parcel/watcher-win32-ia32": "2.5.1", + "@parcel/watcher-win32-x64": "2.5.1" + } + }, + "node_modules/@parcel/watcher-android-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.5.1.tgz", + "integrity": "sha512-KF8+j9nNbUN8vzOFDpRMsaKBHZ/mcjEjMToVMJOhTozkDonQFFrRcfdLWn6yWKCmJKmdVxSgHiYvTCef4/qcBA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.5.1.tgz", + "integrity": "sha512-eAzPv5osDmZyBhou8PoF4i6RQXAfeKL9tjb3QzYuccXFMQU0ruIc/POh30ePnaOyD1UXdlKguHBmsTs53tVoPw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-darwin-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.5.1.tgz", + "integrity": "sha512-1ZXDthrnNmwv10A0/3AJNZ9JGlzrF82i3gNQcWOzd7nJ8aj+ILyW1MTxVk35Db0u91oD5Nlk9MBiujMlwmeXZg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-freebsd-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.5.1.tgz", + "integrity": "sha512-SI4eljM7Flp9yPuKi8W0ird8TI/JK6CSxju3NojVI6BjHsTyK7zxA9urjVjEKJ5MBYC+bLmMcbAWlZ+rFkLpJQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.5.1.tgz", + "integrity": "sha512-RCdZlEyTs8geyBkkcnPWvtXLY44BCeZKmGYRtSgtwwnHR4dxfHRG3gR99XdMEdQ7KeiDdasJwwvNSF5jKtDwdA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-musl/-/watcher-linux-arm-musl-2.5.1.tgz", + "integrity": "sha512-6E+m/Mm1t1yhB8X412stiKFG3XykmgdIOqhjWj+VL8oHkKABfu/gjFj8DvLrYVHSBNC+/u5PeNrujiSQ1zwd1Q==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.5.1.tgz", + "integrity": "sha512-LrGp+f02yU3BN9A+DGuY3v3bmnFUggAITBGriZHUREfNEzZh/GO06FF5u2kx8x+GBEUYfyTGamol4j3m9ANe8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-arm64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.5.1.tgz", + "integrity": "sha512-cFOjABi92pMYRXS7AcQv9/M1YuKRw8SZniCDw0ssQb/noPkRzA+HBDkwmyOJYp5wXcsTrhxO0zq1U11cK9jsFg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-glibc": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.5.1.tgz", + "integrity": "sha512-GcESn8NZySmfwlTsIur+49yDqSny2IhPeZfXunQi48DMugKeZ7uy1FX83pO0X22sHntJ4Ub+9k34XQCX+oHt2A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-linux-x64-musl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.5.1.tgz", + "integrity": "sha512-n0E2EQbatQ3bXhcH2D1XIAANAcTZkQICBPVaxMeaCVBtOpBZpWJuf7LwyWPSBDITb7In8mqQgJ7gH8CILCURXg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-arm64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.5.1.tgz", + "integrity": "sha512-RFzklRvmc3PkjKjry3hLF9wD7ppR4AKcWNzH7kXR7GUe0Igb3Nz8fyPwtZCSquGrhU5HhUNDr/mKBqj7tqA2Vw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-ia32": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.5.1.tgz", + "integrity": "sha512-c2KkcVN+NJmuA7CGlaGD1qJh1cLfDnQsHjE89E60vUEMlqduHGCdCLJCID5geFVM0dOtA3ZiIO8BoEQmzQVfpQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher-win32-x64": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.5.1.tgz", + "integrity": "sha512-9lHBdJITeNR++EvSQVUcaZoWupyHfXe1jZvGZ06O/5MflPcuPLtEphScIBL+AiCWBO46tDSHzWyD0uDmmZqsgA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">= 10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/parcel" + } + }, + "node_modules/@parcel/watcher/node_modules/detect-libc": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz", + "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==", + "dev": true, + "bin": { + "detect-libc": "bin/detect-libc.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/@parcel/watcher/node_modules/node-addon-api": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.0.tgz", + "integrity": "sha512-mNcltoe1R8o7STTegSOHdnJNN7s5EUvhoS7ShnTHDyOSd+8H+UdWODq6qSv67PjC8Zc5JRT8+oLAMCr0SIXw7g==", + "dev": true, + "engines": { + "node": "^16 || ^18 || >= 20" + } + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@playwright/browser-chromium": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/@playwright/browser-chromium/-/browser-chromium-1.54.0.tgz", + "integrity": "sha512-MVBsWtRCliYq2w+fxWbNx0p9DG6yKD4Ca51D9I/mC3AwGg8SwWttZ3dp96W0TnRtmxQAVFNBJm/297fsZ50hSw==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.54.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@rollup/plugin-virtual": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@rollup/plugin-virtual/-/plugin-virtual-3.0.2.tgz", + "integrity": "sha512-10monEYsBp3scM4/ND4LNH5Rxvh3e/cVeL3jWTgZ2SrQ+BmUoQcopVQvnaMcOnykb1VkxUFuDAN+0FnpTFRy2A==", + "dev": true, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" + }, + "peerDependenciesMeta": { + "rollup": { + "optional": true + } + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.5.tgz", + "integrity": "sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.5.tgz", + "integrity": "sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.5.tgz", + "integrity": "sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.5.tgz", + "integrity": "sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.5.tgz", + "integrity": "sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.5.tgz", + "integrity": "sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.5.tgz", + "integrity": "sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.5.tgz", + "integrity": "sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.5.tgz", + "integrity": "sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.5.tgz", + "integrity": "sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loong64-gnu": { + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.5.tgz", + "integrity": "sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-ppc64-gnu": { + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.5.tgz", + "integrity": "sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.5.tgz", + "integrity": "sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-musl": { + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.5.tgz", + "integrity": "sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.5.tgz", + "integrity": "sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.5.tgz", + "integrity": "sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.5.tgz", + "integrity": "sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-openharmony-arm64": { + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.5.tgz", + "integrity": "sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openharmony" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.5.tgz", + "integrity": "sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.5.tgz", + "integrity": "sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-gnu": { + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.5.tgz", + "integrity": "sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.5.tgz", + "integrity": "sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true, + "license": "MIT" + }, + "node_modules/@secretlint/config-creator": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@secretlint/config-creator/-/config-creator-10.1.1.tgz", + "integrity": "sha512-TJ42CHZqqnEe9ORvIXVVMqdu3KAtyZRxLspjFexo6XgrwJ6CoFHQYzIihilqRjo2sJh9HMrpnYSj/5hopofGrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@secretlint/types": "^10.1.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@secretlint/config-loader": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@secretlint/config-loader/-/config-loader-10.1.1.tgz", + "integrity": "sha512-jBClVFmS6Yu/zI5ejBCRF5a5ASYsE4gOjogjB+WsaHbQHtGvnyY7I26Qtdg4ihCc/VPKYQg0LdM75pLTXzwsjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@secretlint/profiler": "^10.1.1", + "@secretlint/resolver": "^10.1.1", + "@secretlint/types": "^10.1.1", + "ajv": "^8.17.1", + "debug": "^4.4.1", + "rc-config-loader": "^4.1.3" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@secretlint/core": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@secretlint/core/-/core-10.1.1.tgz", + "integrity": "sha512-COLCxSoH/iVQdLeaZPVtBj0UWKOagO09SqYkCQgfFfZ+soGxKVK405dL317r4PnH9Pm8/s8xQC6OSY5rWTRObQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@secretlint/profiler": "^10.1.1", + "@secretlint/types": "^10.1.1", + "debug": "^4.4.1", + "structured-source": "^4.0.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@secretlint/formatter": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@secretlint/formatter/-/formatter-10.1.1.tgz", + "integrity": "sha512-Gpd8gTPN121SJ0h/9e6nWlZU7PitfhXUiEzW7Kyswg6kNGs+bSqmgTgWFtbo1VQ4ygJYiveWPNT05RCImBexJw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@secretlint/resolver": "^10.1.1", + "@secretlint/types": "^10.1.1", + "@textlint/linter-formatter": "^14.8.4", + "@textlint/module-interop": "^14.8.4", + "@textlint/types": "^14.8.4", + "chalk": "^4.1.2", + "debug": "^4.4.1", + "pluralize": "^8.0.0", + "strip-ansi": "^6.0.1", + "table": "^6.9.0", + "terminal-link": "^2.1.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@secretlint/node": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@secretlint/node/-/node-10.1.1.tgz", + "integrity": "sha512-AhN+IGqljVObm8a+B33b23FY79wihu5E61Nd3oYSoZV7SxUvMjpafqhLfpt4frNSY7Ghf/pirWu7JY7GMujFrA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@secretlint/config-loader": "^10.1.1", + "@secretlint/core": "^10.1.1", + "@secretlint/formatter": "^10.1.1", + "@secretlint/profiler": "^10.1.1", + "@secretlint/source-creator": "^10.1.1", + "@secretlint/types": "^10.1.1", + "debug": "^4.4.1", + "p-map": "^7.0.3" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@secretlint/profiler": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@secretlint/profiler/-/profiler-10.1.1.tgz", + "integrity": "sha512-kReI+Wr7IQz0LbVwYByzlnPbx4BEF2oEWJBc4Oa45g24alCjHu+jD9h9mzkTJqYUgMnVYD3o7HfzeqxFrV+9XA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@secretlint/resolver": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@secretlint/resolver/-/resolver-10.1.1.tgz", + "integrity": "sha512-GdQzxnBtdBRjBULvZ8ERkaRqDp0njVwXrzBCav1pb0XshVk76C1cjeDqtTqM4RJ1Awo/g5U5MIWYztYv67v5Gg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@secretlint/secretlint-formatter-sarif": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@secretlint/secretlint-formatter-sarif/-/secretlint-formatter-sarif-10.1.1.tgz", + "integrity": "sha512-Dyq8nzy6domjSlZKX1E5PEzuWxeTqjQJWrlXBmVmOjwLBLfRZDlm5Vq+AduBmEk03KEIKIZi4cZQwsniuRPO9Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "node-sarif-builder": "^2.0.3" + } + }, + "node_modules/@secretlint/secretlint-rule-no-dotenv": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@secretlint/secretlint-rule-no-dotenv/-/secretlint-rule-no-dotenv-10.1.1.tgz", + "integrity": "sha512-a3/sOUUtEHuw1HCadtxUjViNeomiiohfJj+rwtHxJkCq4pjITS3HSYhQBXnNvkctQNljKIzFm7JUA/4QJ6I4sQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@secretlint/types": "^10.1.1" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@secretlint/secretlint-rule-preset-recommend": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@secretlint/secretlint-rule-preset-recommend/-/secretlint-rule-preset-recommend-10.1.1.tgz", + "integrity": "sha512-+GeISCXVgpnoeRZE4ZPsuO97+fm6z8Ge23LNq6LvR9ZJAq018maXVftkJhHj4hnvYB5URUAEerBBkPGNk5/Ong==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@secretlint/source-creator": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@secretlint/source-creator/-/source-creator-10.1.1.tgz", + "integrity": "sha512-IWjvHcE0bhC/x88a9M9jbZlFRZGUEbBzujxrs2KzI5IQ2BXTBRBRhRSjE/BEpWqDHILB22c3mfam8X+UjukphA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@secretlint/types": "^10.1.1", + "istextorbinary": "^9.5.0" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@secretlint/types": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/@secretlint/types/-/types-10.1.1.tgz", + "integrity": "sha512-/JGAvVkurVHkargk3AC7UxRy+Ymc+52AVBO/fZA5pShuLW2dX4O/rKc4n8cyhQiOb/3ym5ACSlLQuQ8apPfxrQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@shikijs/core": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.15.2.tgz", + "integrity": "sha512-hi6XZuwHYn6bU4wtXZxST8ynM55aiU2+rVU9aPIrSxqKmEKl4d65puwGsggwcZWTET+7zGXKe7AUj46iQ8Aq8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.4" + } + }, + "node_modules/@sinclair/typebox": { + "version": "0.34.41", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.41.tgz", + "integrity": "sha512-6gS8pZzSXdyRHTIqoqSVknxolr1kzfy4/CeDnrzsVz8TTIWUbOBr6gnzOmTYJ3eXQNh4IYHIGi5aIL7sOZ2G/g==", + "license": "MIT" + }, + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1" + } + }, + "node_modules/@sinonjs/samsam": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.2.tgz", + "integrity": "sha512-v46t/fwnhejRSFTGqbpn9u+LQ9xJDse10gNnPgAcxgdoCDMXj/G2asWAC/8Qs+BAZDicX+MNZouXT1A7c83kVw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1", + "lodash.get": "^4.4.2", + "type-detect": "^4.1.0" + } + }, + "node_modules/@sinonjs/samsam/node_modules/type-detect": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", + "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@stylistic/eslint-plugin": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-3.1.0.tgz", + "integrity": "sha512-pA6VOrOqk0+S8toJYhQGv2MWpQQR0QpeUo9AhNkC49Y26nxBQ/nH1rta9bUU1rPw2fJ1zZEMV5oCX5AazT7J2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/utils": "^8.13.0", + "eslint-visitor-keys": "^4.2.0", + "espree": "^10.3.0", + "estraverse": "^5.3.0", + "picomatch": "^4.0.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "peerDependencies": { + "eslint": ">=8.40.0" + } + }, + "node_modules/@stylistic/eslint-plugin/node_modules/eslint-visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.0.tgz", + "integrity": "sha512-UyLnSehNt62FFhSwjZlHmeokpRK59rcz29j+F1/aDgbkbRTk7wIc9XzdoasMUbRNKDM0qQt/+BJ4BrpFeABemw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@swc/core": { + "version": "1.11.8", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.11.8.tgz", + "integrity": "sha512-UAL+EULxrc0J73flwYHfu29mO8CONpDJiQv1QPDXsyCvDUcEhqAqUROVTgC+wtJCFFqMQdyr4stAA5/s0KSOmA==", + "dev": true, + "hasInstallScript": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3", + "@swc/types": "^0.1.19" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.11.8", + "@swc/core-darwin-x64": "1.11.8", + "@swc/core-linux-arm-gnueabihf": "1.11.8", + "@swc/core-linux-arm64-gnu": "1.11.8", + "@swc/core-linux-arm64-musl": "1.11.8", + "@swc/core-linux-x64-gnu": "1.11.8", + "@swc/core-linux-x64-musl": "1.11.8", + "@swc/core-win32-arm64-msvc": "1.11.8", + "@swc/core-win32-ia32-msvc": "1.11.8", + "@swc/core-win32-x64-msvc": "1.11.8" + }, + "peerDependencies": { + "@swc/helpers": "*" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.11.8", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.11.8.tgz", + "integrity": "sha512-rrSsunyJWpHN+5V1zumndwSSifmIeFQBK9i2RMQQp15PgbgUNxHK5qoET1n20pcUrmZeT6jmJaEWlQchkV//Og==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.11.8", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.11.8.tgz", + "integrity": "sha512-44goLqQuuo0HgWnG8qC+ZFw/qnjCVVeqffhzFr9WAXXotogVaxM8ze6egE58VWrfEc8me8yCcxOYL9RbtjhS/Q==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.11.8", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.11.8.tgz", + "integrity": "sha512-Mzo8umKlhTWwF1v8SLuTM1z2A+P43UVhf4R8RZDhzIRBuB2NkeyE+c0gexIOJBuGSIATryuAF4O4luDu727D1w==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "Apache-2.0", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.11.8", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.11.8.tgz", + "integrity": "sha512-EyhO6U+QdoGYC1MeHOR0pyaaSaKYyNuT4FQNZ1eZIbnuueXpuICC7iNmLIOfr3LE5bVWcZ7NKGVPlM2StJEcgA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.11.8", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.11.8.tgz", + "integrity": "sha512-QU6wOkZnS6/QuBN1MHD6G2BgFxB0AclvTVGbqYkRA7MsVkcC29PffESqzTXnypzB252/XkhQjoB2JIt9rPYf6A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.11.8", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.11.8.tgz", + "integrity": "sha512-r72onUEIU1iJi9EUws3R28pztQ/eM3EshNpsPRBfuLwKy+qn3et55vXOyDhIjGCUph5Eg2Yn8H3h6MTxDdLd+w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.11.8", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.11.8.tgz", + "integrity": "sha512-294k8cLpO103++f4ZUEDr3vnBeUfPitW6G0a3qeVZuoXFhFgaW7ANZIWknUc14WiLOMfMecphJAEiy9C8OeYSw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.11.8", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.11.8.tgz", + "integrity": "sha512-EbjOzQ+B85rumHyeesBYxZ+hq3ZQn+YAAT1ZNE9xW1/8SuLoBmHy/K9YniRGVDq/2NRmp5kI5+5h5TX0asIS9A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.11.8", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.11.8.tgz", + "integrity": "sha512-Z+FF5kgLHfQWIZ1KPdeInToXLzbY0sMAashjd/igKeP1Lz0qKXVAK+rpn6ASJi85Fn8wTftCGCyQUkRVn0bTDg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.11.8", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.11.8.tgz", + "integrity": "sha512-j6B6N0hChCeAISS6xp/hh6zR5CSCr037BAjCxNLsT8TGe5D+gYZ57heswUWXRH8eMKiRDGiLCYpPB2pkTqxCSw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "Apache-2.0 AND MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/@swc/helpers": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.3.tgz", + "integrity": "sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==", + "dev": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@swc/types": { + "version": "0.1.19", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.19.tgz", + "integrity": "sha512-WkAZaAfj44kh/UFdAQcrMP1I0nwRqpt27u+08LMBYMqmQfwwMofYoMh/48NGkMMRfC4ynpfwRbJuu8ErfNloeA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@swc/counter": "^0.1.3" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@textlint/ast-node-types": { + "version": "14.8.4", + "resolved": "https://registry.npmjs.org/@textlint/ast-node-types/-/ast-node-types-14.8.4.tgz", + "integrity": "sha512-+fI7miec/r9VeniFV9ppL4jRCmHNsTxieulTUf/4tvGII3db5hGriKHC4p/diq1SkQ9Sgs7kg6UyydxZtpTz1Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@textlint/linter-formatter": { + "version": "14.8.4", + "resolved": "https://registry.npmjs.org/@textlint/linter-formatter/-/linter-formatter-14.8.4.tgz", + "integrity": "sha512-sZ0UfYRDBNHnfMVBqLqqYnqTB7Ec169ljlmo+SEHR1T+dHUPYy1/DZK4p7QREXlBSFL4cnkswETCbc9xRodm4Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azu/format-text": "^1.0.2", + "@azu/style-format": "^1.0.1", + "@textlint/module-interop": "14.8.4", + "@textlint/resolver": "14.8.4", + "@textlint/types": "14.8.4", + "chalk": "^4.1.2", + "debug": "^4.4.1", + "js-yaml": "^3.14.1", + "lodash": "^4.17.21", + "pluralize": "^2.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "table": "^6.9.0", + "text-table": "^0.2.0" + } + }, + "node_modules/@textlint/linter-formatter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@textlint/linter-formatter/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/@textlint/linter-formatter/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/@textlint/linter-formatter/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@textlint/linter-formatter/node_modules/pluralize": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-2.0.0.tgz", + "integrity": "sha512-TqNZzQCD4S42De9IfnnBvILN7HAW7riLqsCyp8lgjXeysyPlX5HhqKAcJHHHb9XskE4/a+7VGC9zzx8Ls0jOAw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@textlint/linter-formatter/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@textlint/linter-formatter/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@textlint/module-interop": { + "version": "14.8.4", + "resolved": "https://registry.npmjs.org/@textlint/module-interop/-/module-interop-14.8.4.tgz", + "integrity": "sha512-1LdPYLAVpa27NOt6EqvuFO99s4XLB0c19Hw9xKSG6xQ1K82nUEyuWhzTQKb3KJ5Qx7qj14JlXZLfnEuL6A16Bw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@textlint/resolver": { + "version": "14.8.4", + "resolved": "https://registry.npmjs.org/@textlint/resolver/-/resolver-14.8.4.tgz", + "integrity": "sha512-nMDOgDAVwNU9ommh+Db0U+MCMNDPbQ/1HBNjbnHwxZkCpcT6hsAJwBe38CW/DtWVUv8yeR4R40IYNPT84srNwA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@textlint/types": { + "version": "14.8.4", + "resolved": "https://registry.npmjs.org/@textlint/types/-/types-14.8.4.tgz", + "integrity": "sha512-9nyY8vVXlr8hHKxa6+37omJhXWCwovMQcgMteuldYd4dOxGm14AK2nXdkgtKEUQnzLGaXy46xwLCfhQy7V7/YA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@textlint/ast-node-types": "14.8.4" + } + }, + "node_modules/@tybys/wasm-util": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", + "integrity": "sha512-6+7nlbMVX/PVDCwaIQ8nTOPveOcFLSt8GcXdx8hD0bt39uWxYT88uXzqTd4fTvqta7oeUJqudepapKNt2DYJFw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "dev": true, + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "node_modules/@types/chai": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.2.tgz", + "integrity": "sha512-8kB30R7Hwqf40JPiKhVzodJs2Qc1ZJ5zuT3uzw5Hq/dhNCl3G3l83jfpdI1e20BP348+fV7VIL/+FxaXkqBmWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/deep-eql": "*" + } + }, + "node_modules/@types/deep-eql": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", + "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", + "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/expect": { + "version": "1.20.4", + "resolved": "https://registry.npmjs.org/@types/expect/-/expect-1.20.4.tgz", + "integrity": "sha512-Q5Vn3yjTDyCMV50TB6VRIbQNxSE4OmZR86VSbGaNpfUolm0iePBB4KdEEHmxoY5sT2+2DIvXW0rvMDP2nHZ4Mg==", + "dev": true + }, + "node_modules/@types/google-protobuf": { + "version": "3.15.12", + "resolved": "https://registry.npmjs.org/@types/google-protobuf/-/google-protobuf-3.15.12.tgz", + "integrity": "sha512-40um9QqwHjRS92qnOaDpL7RmDK15NuZYo9HihiJRbYkMQZlWnuH8AdvbMy8/o6lgLmKbDUKa+OALCltHdbOTpQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.2.tgz", + "integrity": "sha512-FD+nQWA2zJjh4L9+pFXqWOi0Hs1ryBCfI+985NjluQ1p8EYtoLvjLOKidXBtZ4/IcxDX4o8/E8qDS3540tNliw==", + "dev": true + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/js-yaml": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", + "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-sVDA58zAw4eWAffKOaQH5/5j3XeayukzDk+ewSsnv3p4yJEZHCCzMDiZM8e0OUrRvmpGZ85jf4yDHkHsgBNr9Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/markdown-it": { + "version": "14.1.2", + "resolved": "https://registry.npmjs.org/@types/markdown-it/-/markdown-it-14.1.2.tgz", + "integrity": "sha512-promo4eFwuiW+TfGxhi+0x3czqTYJkG8qB17ZUJiVF10Xm7NLVRSLUsfRTU/6h1e24VvRnXCx+hG7li58lkzog==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/linkify-it": "^5", + "@types/mdurl": "^2" + } + }, + "node_modules/@types/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-RGdgjQUZba5p6QEFAVx2OGb8rQDL/cPRG7GiedRzMcJ1tYnUANBncjbSB1NRGwbvjcPeikRABz2nshyPk1bhWg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", + "dev": true + }, + "node_modules/@types/mocha": { + "version": "10.0.10", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", + "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "22.16.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.16.3.tgz", + "integrity": "sha512-sr4Xz74KOUeYadexo1r8imhRtlVXcs+j3XK3TcoiYk7B1t3YRVJgtaD3cwX73NYb71pmVuMLNRhJ9XKdoDB74g==", + "dev": true, + "license": "MIT", + "dependencies": { + "undici-types": "~6.21.0" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/picomatch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/picomatch/-/picomatch-4.0.0.tgz", + "integrity": "sha512-J1Bng+wlyEERWSgJQU1Pi0HObCLVcr994xT/M+1wcl/yNRTGBupsCxthgkdYG+GCOMaQH7iSVUY3LJVBBqG7MQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.8", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.8.tgz", + "integrity": "sha512-kMpQpfZKSCBqltAJwskgePRaYRFukDkm1oItcAbC3gNELR20XIBcN9VRgg4+m8DKsTfkWeA4m4Imp4DDuWy7FQ==", + "dev": true + }, + "node_modules/@types/react": { + "version": "17.0.44", + "resolved": "https://registry.npmjs.org/@types/react/-/react-17.0.44.tgz", + "integrity": "sha512-Ye0nlw09GeMp2Suh8qoOv0odfgCoowfM/9MG6WeRD60Gq9wS90bdkdRtYbRkNhXOpG4H+YXGvj4wOWhAC0LJ1g==", + "dev": true, + "dependencies": { + "@types/prop-types": "*", + "@types/scheduler": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.2.17", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.17.tgz", + "integrity": "sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==", + "dev": true, + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@types/responselike": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.1.tgz", + "integrity": "sha512-TiGnitEDxj2X0j+98Eqk5lv/Cij8oHd32bU4D/Yw6AOq7vvTk0gSD2GPj0G/HkvhMoVsdlhYF4yqqlyPBTM6Sg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/sarif": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@types/sarif/-/sarif-2.1.7.tgz", + "integrity": "sha512-kRz0VEkJqWLf1LLVN4pT1cg1Z9wAuvI6L97V3m2f5B76Tg8d413ddvLBPTEHAZJlnn4XSvu0FkZtViCQGVyrXQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/scheduler": { + "version": "0.16.4", + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.4.tgz", + "integrity": "sha512-2L9ifAGl7wmXwP4v3pN4p2FLhD0O1qsJpvKmNin5VA8+UvNVb447UDaAEV6UdrkA+m/Xs58U1RFps44x6TFsVQ==", + "dev": true + }, + "node_modules/@types/shimmer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@types/shimmer/-/shimmer-1.0.3.tgz", + "integrity": "sha512-F/IjUGnV6pIN7R4ZV4npHJVoNtaLZWvb+2/9gctxjb99wkpI7Ozg8VPogwDiTRyjLwZXAYxjvdg1KS8LTHKdDA==" + }, + "node_modules/@types/sinon": { + "version": "17.0.4", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.4.tgz", + "integrity": "sha512-RHnIrhfPO3+tJT0s7cFaXGZvsL4bbR3/k7z3P312qMS4JaS2Tk+KiwiLx1S0rQ56ERj00u1/BtdyVd0FY+Pdew==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/sinonjs__fake-timers": "*" + } + }, + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.3", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.3.tgz", + "integrity": "sha512-4g+2YyWe0Ve+LBh+WUm1697PD0Kdi6coG1eU0YjQbwx61AZ8XbEpL1zIT6WjuUKrCMCROpEaYQPDjBnDouBVAQ==", + "dev": true + }, + "node_modules/@types/source-map-support": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/@types/source-map-support/-/source-map-support-0.5.10.tgz", + "integrity": "sha512-tgVP2H469x9zq34Z0m/fgPewGhg/MLClalNOiPIzQlXrSS2YrKu/xCdSCKnEDwkFha51VKEKB6A9wW26/ZNwzA==", + "dev": true, + "dependencies": { + "source-map": "^0.6.0" + } + }, + "node_modules/@types/stack-trace": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/stack-trace/-/stack-trace-0.0.29.tgz", + "integrity": "sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g==", + "dev": true + }, + "node_modules/@types/tar": { + "version": "6.1.13", + "resolved": "https://registry.npmjs.org/@types/tar/-/tar-6.1.13.tgz", + "integrity": "sha512-IznnlmU5f4WcGTh2ltRu/Ijpmk8wiWXfF0VA4s+HPjHZgvFggk1YaIkbo5krX/zUCzWF8N/l4+W/LNxnvAJ8nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/node": "*", + "minipass": "^4.0.0" + } + }, + "node_modules/@types/trusted-types": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", + "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", + "license": "MIT", + "optional": true + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/vinyl": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@types/vinyl/-/vinyl-2.0.12.tgz", + "integrity": "sha512-Sr2fYMBUVGYq8kj3UthXFAu5UN6ZW+rYr4NACjZQJvHvj+c8lYv0CahmZ2P/r7iUkN44gGUBwqxZkrKXYPb7cw==", + "dev": true, + "dependencies": { + "@types/expect": "^1.20.4", + "@types/node": "*" + } + }, + "node_modules/@types/vscode": { + "version": "1.102.0", + "resolved": "https://registry.npmjs.org/@types/vscode/-/vscode-1.102.0.tgz", + "integrity": "sha512-V9sFXmcXz03FtYTSUsYsu5K0Q9wH9w9V25slddcxrh5JgORD14LpnOA7ov0L9ALi+6HrTjskLJ/tY5zeRF3TFA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/vscode-webview": { + "version": "1.57.5", + "resolved": "https://registry.npmjs.org/@types/vscode-webview/-/vscode-webview-1.57.5.tgz", + "integrity": "sha512-iBAUYNYkz+uk1kdsq05fEcoh8gJmwT3lqqFPN7MGyjQ3HVloViMdo7ZJ8DFIP8WOK74PjOEilosqAyxV2iUFUw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/yauzl": { + "version": "2.10.1", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.1.tgz", + "integrity": "sha512-CHzgNU3qYBnp/O4S3yv2tXPlvMTq0YWSTVg2/JYLqWZGHwwgJGAwd00poay/11asPq8wLFwHzubyInqHIFmmiw==", + "dev": true, + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.36.0.tgz", + "integrity": "sha512-lZNihHUVB6ZZiPBNgOQGSxUASI7UJWhT8nHyUGCnaQ28XFCw98IfrMCG3rUl1uwUWoAvodJQby2KTs79UTcrAg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "8.36.0", + "@typescript-eslint/type-utils": "8.36.0", + "@typescript-eslint/utils": "8.36.0", + "@typescript-eslint/visitor-keys": "8.36.0", + "graphemer": "^1.4.0", + "ignore": "^7.0.0", + "natural-compare": "^1.4.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^8.36.0", + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.36.0.tgz", + "integrity": "sha512-FuYgkHwZLuPbZjQHzJXrtXreJdFMKl16BFYyRrLxDhWr6Qr7Kbcu2s1Yhu8tsiMXw1S0W1pjfFfYEt+R604s+Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/scope-manager": "8.36.0", + "@typescript-eslint/types": "8.36.0", + "@typescript-eslint/typescript-estree": "8.36.0", + "@typescript-eslint/visitor-keys": "8.36.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/project-service": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.36.0.tgz", + "integrity": "sha512-JAhQFIABkWccQYeLMrHadu/fhpzmSQ1F1KXkpzqiVxA/iYI6UnRt2trqXHt1sYEcw1mxLnB9rKMsOxXPxowN/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/tsconfig-utils": "^8.36.0", + "@typescript-eslint/types": "^8.36.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.36.0.tgz", + "integrity": "sha512-wCnapIKnDkN62fYtTGv2+RY8FlnBYA3tNm0fm91kc2BjPhV2vIjwwozJ7LToaLAyb1ca8BxrS7vT+Pvvf7RvqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.36.0", + "@typescript-eslint/visitor-keys": "8.36.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/tsconfig-utils": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.36.0.tgz", + "integrity": "sha512-Nhh3TIEgN18mNbdXpd5Q8mSCBnrZQeY9V7Ca3dqYvNDStNIGRmJA6dmrIPMJ0kow3C7gcQbpsG2rPzy1Ks/AnA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.36.0.tgz", + "integrity": "sha512-5aaGYG8cVDd6cxfk/ynpYzxBRZJk7w/ymto6uiyUFtdCozQIsQWh7M28/6r57Fwkbweng8qAzoMCPwSJfWlmsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/typescript-estree": "8.36.0", + "@typescript-eslint/utils": "8.36.0", + "debug": "^4.3.4", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/types": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.36.0.tgz", + "integrity": "sha512-xGms6l5cTJKQPZOKM75Dl9yBfNdGeLRsIyufewnxT4vZTrjC0ImQT4fj8QmtJK84F58uSh5HVBSANwcfiXxABQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.36.0.tgz", + "integrity": "sha512-JaS8bDVrfVJX4av0jLpe4ye0BpAaUW7+tnS4Y4ETa3q7NoZgzYbN9zDQTJ8kPb5fQ4n0hliAt9tA4Pfs2zA2Hg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/project-service": "8.36.0", + "@typescript-eslint/tsconfig-utils": "8.36.0", + "@typescript-eslint/types": "8.36.0", + "@typescript-eslint/visitor-keys": "8.36.0", + "debug": "^4.3.4", + "fast-glob": "^3.3.2", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^2.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.36.0.tgz", + "integrity": "sha512-VOqmHu42aEMT+P2qYjylw6zP/3E/HvptRwdn/PZxyV27KhZg2IOszXod4NcXisWzPAGSS4trE/g4moNj6XmH2g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.7.0", + "@typescript-eslint/scope-manager": "8.36.0", + "@typescript-eslint/types": "8.36.0", + "@typescript-eslint/typescript-estree": "8.36.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.36.0.tgz", + "integrity": "sha512-vZrhV2lRPWDuGoxcmrzRZyxAggPL+qp3WzUrlZD+slFueDiYHxeBa34dUXPuC0RmGKzl4lS5kFJYvKCq9cnNDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/types": "8.36.0", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@typespec/ts-http-runtime": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.2.3.tgz", + "integrity": "sha512-oRhjSzcVjX8ExyaF8hC0zzTqxlVuRlgMHL/Bh4w3xB9+wjbm0FpXylVU/lBrn+kgphwYTrOk3tp+AVShGmlYCg==", + "dev": true, + "license": "MIT", + "dependencies": { + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@unrs/resolver-binding-android-arm-eabi": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm-eabi/-/resolver-binding-android-arm-eabi-1.9.2.tgz", + "integrity": "sha512-tS+lqTU3N0kkthU+rYp0spAYq15DU8ld9kXkaKg9sbQqJNF+WPMuNHZQGCgdxrUOEO0j22RKMwRVhF1HTl+X8A==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-android-arm64": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-android-arm64/-/resolver-binding-android-arm64-1.9.2.tgz", + "integrity": "sha512-MffGiZULa/KmkNjHeuuflLVqfhqLv1vZLm8lWIyeADvlElJ/GLSOkoUX+5jf4/EGtfwrNFcEaB8BRas03KT0/Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-arm64": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-arm64/-/resolver-binding-darwin-arm64-1.9.2.tgz", + "integrity": "sha512-dzJYK5rohS1sYl1DHdJ3mwfwClJj5BClQnQSyAgEfggbUwA9RlROQSSbKBLqrGfsiC/VyrDPtbO8hh56fnkbsQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-darwin-x64": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-darwin-x64/-/resolver-binding-darwin-x64-1.9.2.tgz", + "integrity": "sha512-gaIMWK+CWtXcg9gUyznkdV54LzQ90S3X3dn8zlh+QR5Xy7Y+Efqw4Rs4im61K1juy4YNb67vmJsCDAGOnIeffQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@unrs/resolver-binding-freebsd-x64": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-freebsd-x64/-/resolver-binding-freebsd-x64-1.9.2.tgz", + "integrity": "sha512-S7QpkMbVoVJb0xwHFwujnwCAEDe/596xqY603rpi/ioTn9VDgBHnCCxh+UFrr5yxuMH+dliHfjwCZJXOPJGPnw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-gnueabihf": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-gnueabihf/-/resolver-binding-linux-arm-gnueabihf-1.9.2.tgz", + "integrity": "sha512-+XPUMCuCCI80I46nCDFbGum0ZODP5NWGiwS3Pj8fOgsG5/ctz+/zzuBlq/WmGa+EjWZdue6CF0aWWNv84sE1uw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm-musleabihf": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm-musleabihf/-/resolver-binding-linux-arm-musleabihf-1.9.2.tgz", + "integrity": "sha512-sqvUyAd1JUpwbz33Ce2tuTLJKM+ucSsYpPGl2vuFwZnEIg0CmdxiZ01MHQ3j6ExuRqEDUCy8yvkDKvjYFPb8Zg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-gnu": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-gnu/-/resolver-binding-linux-arm64-gnu-1.9.2.tgz", + "integrity": "sha512-UYA0MA8ajkEDCFRQdng/FVx3F6szBvk3EPnkTTQuuO9lV1kPGuTB+V9TmbDxy5ikaEgyWKxa4CI3ySjklZ9lFA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-arm64-musl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-arm64-musl/-/resolver-binding-linux-arm64-musl-1.9.2.tgz", + "integrity": "sha512-P/CO3ODU9YJIHFqAkHbquKtFst0COxdphc8TKGL5yCX75GOiVpGqd1d15ahpqu8xXVsqP4MGFP2C3LRZnnL5MA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-ppc64-gnu": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-ppc64-gnu/-/resolver-binding-linux-ppc64-gnu-1.9.2.tgz", + "integrity": "sha512-uKStFlOELBxBum2s1hODPtgJhY4NxYJE9pAeyBgNEzHgTqTiVBPjfTlPFJkfxyTjQEuxZbbJlJnMCrRgD7ubzw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-gnu": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-gnu/-/resolver-binding-linux-riscv64-gnu-1.9.2.tgz", + "integrity": "sha512-LkbNnZlhINfY9gK30AHs26IIVEZ9PEl9qOScYdmY2o81imJYI4IMnJiW0vJVtXaDHvBvxeAgEy5CflwJFIl3tQ==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-riscv64-musl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-riscv64-musl/-/resolver-binding-linux-riscv64-musl-1.9.2.tgz", + "integrity": "sha512-vI+e6FzLyZHSLFNomPi+nT+qUWN4YSj8pFtQZSFTtmgFoxqB6NyjxSjAxEC1m93qn6hUXhIsh8WMp+fGgxCoRg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-s390x-gnu": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-s390x-gnu/-/resolver-binding-linux-s390x-gnu-1.9.2.tgz", + "integrity": "sha512-sSO4AlAYhSM2RAzBsRpahcJB1msc6uYLAtP6pesPbZtptF8OU/CbCPhSRW6cnYOGuVmEmWVW5xVboAqCnWTeHQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-gnu": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-gnu/-/resolver-binding-linux-x64-gnu-1.9.2.tgz", + "integrity": "sha512-jkSkwch0uPFva20Mdu8orbQjv2A3G88NExTN2oPTI1AJ+7mZfYW3cDCTyoH6OnctBKbBVeJCEqh0U02lTkqD5w==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-linux-x64-musl": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-linux-x64-musl/-/resolver-binding-linux-x64-musl-1.9.2.tgz", + "integrity": "sha512-Uk64NoiTpQbkpl+bXsbeyOPRpUoMdcUqa+hDC1KhMW7aN1lfW8PBlBH4mJ3n3Y47dYE8qi0XTxy1mBACruYBaw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@unrs/resolver-binding-wasm32-wasi": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-wasm32-wasi/-/resolver-binding-wasm32-wasi-1.9.2.tgz", + "integrity": "sha512-EpBGwkcjDicjR/ybC0g8wO5adPNdVuMrNalVgYcWi+gYtC1XYNuxe3rufcO7dA76OHGeVabcO6cSkPJKVcbCXQ==", + "cpu": [ + "wasm32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "@napi-rs/wasm-runtime": "^0.2.11" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@unrs/resolver-binding-win32-arm64-msvc": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-arm64-msvc/-/resolver-binding-win32-arm64-msvc-1.9.2.tgz", + "integrity": "sha512-EdFbGn7o1SxGmN6aZw9wAkehZJetFPao0VGZ9OMBwKx6TkvDuj6cNeLimF/Psi6ts9lMOe+Dt6z19fZQ9Ye2fw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-ia32-msvc": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-ia32-msvc/-/resolver-binding-win32-ia32-msvc-1.9.2.tgz", + "integrity": "sha512-JY9hi1p7AG+5c/dMU8o2kWemM8I6VZxfGwn1GCtf3c5i+IKcMo2NQ8OjZ4Z3/itvY/Si3K10jOBQn7qsD/whUA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@unrs/resolver-binding-win32-x64-msvc": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/@unrs/resolver-binding-win32-x64-msvc/-/resolver-binding-win32-x64-msvc-1.9.2.tgz", + "integrity": "sha512-ryoo+EB19lMxAd80ln9BVf8pdOAxLb97amrQ3SFN9OCRn/5M5wvwDgAe4i8ZjhpbiHoDeP8yavcTEnpKBo7lZg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@vitest/coverage-v8": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/coverage-v8/-/coverage-v8-3.2.4.tgz", + "integrity": "sha512-EyF9SXU6kS5Ku/U82E259WSnvg6c8KTjppUncuNdm5QHpe17mwREHnjDzozC8x9MZ0xfBUFSaLkRv4TMA75ALQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.3.0", + "@bcoe/v8-coverage": "^1.0.2", + "ast-v8-to-istanbul": "^0.3.3", + "debug": "^4.4.1", + "istanbul-lib-coverage": "^3.2.2", + "istanbul-lib-report": "^3.0.1", + "istanbul-lib-source-maps": "^5.0.6", + "istanbul-reports": "^3.1.7", + "magic-string": "^0.30.17", + "magicast": "^0.3.5", + "std-env": "^3.9.0", + "test-exclude": "^7.0.1", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@vitest/browser": "3.2.4", + "vitest": "3.2.4" + }, + "peerDependenciesMeta": { + "@vitest/browser": { + "optional": true + } + } + }, + "node_modules/@vitest/coverage-v8/node_modules/@bcoe/v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-1.0.2.tgz", + "integrity": "sha512-6zABk/ECA/QYSCQ1NGiVwwbQerUCZ+TQbp64Q3AgmfNvurHH0j8TtXa1qbShXA6qqkpAj4V5W8pP6mLe1mcMqA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@vitest/expect": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", + "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/mocker": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", + "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/spy": "3.2.4", + "estree-walker": "^3.0.3", + "magic-string": "^0.30.17" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "msw": "^2.4.9", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "peerDependenciesMeta": { + "msw": { + "optional": true + }, + "vite": { + "optional": true + } + } + }, + "node_modules/@vitest/pretty-format": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", + "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/runner": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", + "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/utils": "3.2.4", + "pathe": "^2.0.3", + "strip-literal": "^3.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-1.6.1.tgz", + "integrity": "sha512-WvidQuWAzU2p95u8GAKlRMqMyN1yOJkGHnx3M1PL9Raf7AQ1kwLKg04ADlCa3+OXUZE7BceOhVZiuWAbzCKcUQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "magic-string": "^0.30.5", + "pathe": "^1.1.1", + "pretty-format": "^29.7.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/snapshot/node_modules/pathe": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-1.1.2.tgz", + "integrity": "sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vitest/spy": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", + "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", + "dev": true, + "license": "MIT", + "dependencies": { + "tinyspy": "^4.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vitest/utils": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", + "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.4", + "loupe": "^3.1.4", + "tinyrainbow": "^2.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/@vscode/copilot-api": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@vscode/copilot-api/-/copilot-api-0.2.6.tgz", + "integrity": "sha512-I5CTQMaV1iIIczA2sew3E85O0qYvwGZhgQtzTxdBk7wclhLcDTVXoz/oAcY1vc5gTl+SzlwM720NDNt/5GpLZQ==", + "license": "SEE LICENSE" + }, + "node_modules/@vscode/debugadapter": { + "version": "1.68.0", + "resolved": "https://registry.npmjs.org/@vscode/debugadapter/-/debugadapter-1.68.0.tgz", + "integrity": "sha512-D6gk5Fw2y4FV8oYmltoXpj+VAZexxJFopN/mcZ6YcgzQE9dgq2L45Aj3GLxScJOD6GeLILcxJIaA8l3v11esGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vscode/debugprotocol": "1.68.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/@vscode/debugprotocol": { + "version": "1.68.0", + "resolved": "https://registry.npmjs.org/@vscode/debugprotocol/-/debugprotocol-1.68.0.tgz", + "integrity": "sha512-2J27dysaXmvnfuhFGhfeuxfHRXunqNPxtBoR3koiTOA9rdxWNDTa1zIFLCFMSHJ9MPTPKFcBeblsyaCJCIlQxg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@vscode/dts": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@vscode/dts/-/dts-0.4.1.tgz", + "integrity": "sha512-o8cI5Vqt6S6Y5mCI7yCkSQdiLQaLG5DMUpciJV3zReZwE+dA5KERxSVX8H3cPEhyKw21XwKGmIrg6YmN6M5uZA==", + "dev": true, + "dependencies": { + "https-proxy-agent": "^7.0.0", + "minimist": "^1.2.8", + "prompts": "^2.4.2" + }, + "bin": { + "dts": "index.js" + } + }, + "node_modules/@vscode/extension-telemetry": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@vscode/extension-telemetry/-/extension-telemetry-1.2.0.tgz", + "integrity": "sha512-En6dTwfy5NFzSMibvOpx/lKq2jtgWuR4++KJbi3SpQ2iT8gm+PHo9868/scocW122KDwTxl4ruxZ7i4rHmJJnQ==", + "license": "MIT", + "dependencies": { + "@microsoft/1ds-core-js": "^4.3.10", + "@microsoft/1ds-post-js": "^4.3.10", + "@microsoft/applicationinsights-web-basic": "^3.3.10" + }, + "engines": { + "vscode": "^1.75.0" + } + }, + "node_modules/@vscode/l10n": { + "version": "0.0.18", + "resolved": "https://registry.npmjs.org/@vscode/l10n/-/l10n-0.0.18.tgz", + "integrity": "sha512-KYSIHVmslkaCDyw013pphY+d7x1qV8IZupYfeIfzNA+nsaWHbn5uPuQRvdRFsa9zFzGeudPuoGoZ1Op4jrJXIQ==", + "license": "MIT" + }, + "node_modules/@vscode/lsif-language-service": { + "version": "0.1.0-pre.4", + "resolved": "https://registry.npmjs.org/@vscode/lsif-language-service/-/lsif-language-service-0.1.0-pre.4.tgz", + "integrity": "sha512-fo/BsgdBvCpNyK1qm8mwAxw8CG4mMGMBB4+EwWhWTbk0I7gGUVynNpCR/7LxfyXkw6WrFqnywliTDcyFx9uWKw==", + "dev": true, + "dependencies": { + "@vscode/lsif-protocol": "0.6.0-next.9", + "semver": "^7.6.2", + "vscode-uri": "^3.0.8" + }, + "engines": { + "node": ">=20.9.0" + } + }, + "node_modules/@vscode/lsif-protocol": { + "version": "0.6.0-next.9", + "resolved": "https://registry.npmjs.org/@vscode/lsif-protocol/-/lsif-protocol-0.6.0-next.9.tgz", + "integrity": "sha512-+0GpE8QzbfiwgIQ7kY1D8BO+TPZB0OwYIk03B1ByNV7VrxD+P923Mxp8uag2H2fvAs9GVGpmeewPczheOT1S6w==", + "dev": true, + "dependencies": { + "vscode-languageserver-types": "^3.17.5" + }, + "engines": { + "node": ">=20.9.0" + } + }, + "node_modules/@vscode/prompt-tsx": { + "version": "0.4.0-alpha.5", + "resolved": "https://registry.npmjs.org/@vscode/prompt-tsx/-/prompt-tsx-0.4.0-alpha.5.tgz", + "integrity": "sha512-Zc7osfYG4w+BWniZGK3Yd9d4LC7MS1AGSUMllhQboxvMT6aWWNo4YnoRlko4YbEY6OWJyNmSGgWEiuT8z8Bjcg==", + "license": "MIT" + }, + "node_modules/@vscode/test-cli": { + "version": "0.0.11", + "resolved": "https://registry.npmjs.org/@vscode/test-cli/-/test-cli-0.0.11.tgz", + "integrity": "sha512-qO332yvzFqGhBMJrp6TdwbIydiHgCtxXc2Nl6M58mbH/Z+0CyLR76Jzv4YWPEthhrARprzCRJUqzFvTHFhTj7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/mocha": "^10.0.2", + "c8": "^9.1.0", + "chokidar": "^3.5.3", + "enhanced-resolve": "^5.15.0", + "glob": "^10.3.10", + "minimatch": "^9.0.3", + "mocha": "^11.1.0", + "supports-color": "^9.4.0", + "yargs": "^17.7.2" + }, + "bin": { + "vscode-test": "out/bin.mjs" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@vscode/test-cli/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/@vscode/test-cli/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vscode/test-cli/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/@vscode/test-cli/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/@vscode/test-cli/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vscode/test-cli/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@vscode/test-cli/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vscode/test-cli/node_modules/supports-color": { + "version": "9.4.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-9.4.0.tgz", + "integrity": "sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/@vscode/test-electron": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/@vscode/test-electron/-/test-electron-2.5.2.tgz", + "integrity": "sha512-8ukpxv4wYe0iWMRQU18jhzJOHkeGKbnw7xWRX3Zw1WJA4cEKbHcmmLPdPrPtL6rhDcrlCZN+xKRpv09n4gRHYg==", + "dev": true, + "license": "MIT", + "dependencies": { + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.5", + "jszip": "^3.10.1", + "ora": "^8.1.0", + "semver": "^7.6.2" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@vscode/test-web": { + "version": "0.0.71", + "resolved": "https://registry.npmjs.org/@vscode/test-web/-/test-web-0.0.71.tgz", + "integrity": "sha512-uj9a3A3QD1qBOw1ZL19SKNSG6c6rvP9N4XrMvBVKSeAOkmOQftAZoBERLMJPEaJ8Z5dF7aLmA79drjOBk+VTRg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@koa/cors": "^5.0.0", + "@koa/router": "^13.1.0", + "@playwright/browser-chromium": "^1.53.1", + "gunzip-maybe": "^1.4.2", + "http-proxy-agent": "^7.0.2", + "https-proxy-agent": "^7.0.6", + "koa": "^3.0.0", + "koa-morgan": "^1.0.1", + "koa-mount": "^4.2.0", + "koa-static": "^5.0.0", + "minimist": "^1.2.8", + "playwright": "^1.53.1", + "tar-fs": "^3.1.0", + "tinyglobby": "0.2.14", + "vscode-uri": "^3.1.0" + }, + "bin": { + "vscode-test-web": "out/server/index.js" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@vscode/test-web/node_modules/tar-fs": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.1.1.tgz", + "integrity": "sha512-LZA0oaPOc2fVo82Txf3gw+AkEd38szODlptMYejQUhndHMLQ9M059uXR+AfS7DNo0NpINvSqDsvyaCrBVkptWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + }, + "optionalDependencies": { + "bare-fs": "^4.0.1", + "bare-path": "^3.0.0" + } + }, + "node_modules/@vscode/test-web/node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/@vscode/tree-sitter-wasm": { + "version": "0.0.5-php.2", + "resolved": "https://registry.npmjs.org/@vscode/tree-sitter-wasm/-/tree-sitter-wasm-0.0.5-php.2.tgz", + "integrity": "sha512-hEnCxsLqWSAZIRj16fjOJGFOsEQX7l1zYJK0cX4EnDyR+hsUJpYxotAaK5QPThzgqUHSExsfkSLfLkuy/nYjwA==", + "license": "MIT" + }, + "node_modules/@vscode/vsce": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/@vscode/vsce/-/vsce-3.6.0.tgz", + "integrity": "sha512-u2ZoMfymRNJb14aHNawnXJtXHLXDVKc1oKZaH4VELKT/9iWKRVgtQOdwxCgtwSxJoqYvuK4hGlBWQJ05wxADhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@azure/identity": "^4.1.0", + "@secretlint/node": "^10.1.1", + "@secretlint/secretlint-formatter-sarif": "^10.1.1", + "@secretlint/secretlint-rule-no-dotenv": "^10.1.1", + "@secretlint/secretlint-rule-preset-recommend": "^10.1.1", + "@vscode/vsce-sign": "^2.0.0", + "azure-devops-node-api": "^12.5.0", + "chalk": "^4.1.2", + "cheerio": "^1.0.0-rc.9", + "cockatiel": "^3.1.2", + "commander": "^12.1.0", + "form-data": "^4.0.0", + "glob": "^11.0.0", + "hosted-git-info": "^4.0.2", + "jsonc-parser": "^3.2.0", + "leven": "^3.1.0", + "markdown-it": "^14.1.0", + "mime": "^1.3.4", + "minimatch": "^3.0.3", + "parse-semver": "^1.1.1", + "read": "^1.0.7", + "secretlint": "^10.1.1", + "semver": "^7.5.2", + "tmp": "^0.2.3", + "typed-rest-client": "^1.8.4", + "url-join": "^4.0.1", + "xml2js": "^0.5.0", + "yauzl": "^2.3.1", + "yazl": "^2.2.2" + }, + "bin": { + "vsce": "vsce" + }, + "engines": { + "node": ">= 20" + }, + "optionalDependencies": { + "keytar": "^7.7.0" + } + }, + "node_modules/@vscode/vsce-sign": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign/-/vsce-sign-2.0.5.tgz", + "integrity": "sha512-GfYWrsT/vypTMDMgWDm75iDmAOMe7F71sZECJ+Ws6/xyIfmB3ELVnVN+LwMFAvmXY+e6eWhR2EzNGF/zAhWY3Q==", + "dev": true, + "hasInstallScript": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optionalDependencies": { + "@vscode/vsce-sign-alpine-arm64": "2.0.2", + "@vscode/vsce-sign-alpine-x64": "2.0.2", + "@vscode/vsce-sign-darwin-arm64": "2.0.2", + "@vscode/vsce-sign-darwin-x64": "2.0.2", + "@vscode/vsce-sign-linux-arm": "2.0.2", + "@vscode/vsce-sign-linux-arm64": "2.0.2", + "@vscode/vsce-sign-linux-x64": "2.0.2", + "@vscode/vsce-sign-win32-arm64": "2.0.2", + "@vscode/vsce-sign-win32-x64": "2.0.2" + } + }, + "node_modules/@vscode/vsce-sign-alpine-arm64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-arm64/-/vsce-sign-alpine-arm64-2.0.2.tgz", + "integrity": "sha512-E80YvqhtZCLUv3YAf9+tIbbqoinWLCO/B3j03yQPbjT3ZIHCliKZlsy1peNc4XNZ5uIb87Jn0HWx/ZbPXviuAQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "alpine" + ] + }, + "node_modules/@vscode/vsce-sign-alpine-x64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-alpine-x64/-/vsce-sign-alpine-x64-2.0.2.tgz", + "integrity": "sha512-n1WC15MSMvTaeJ5KjWCzo0nzjydwxLyoHiMJHu1Ov0VWTZiddasmOQHekA47tFRycnt4FsQrlkSCTdgHppn6bw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "alpine" + ] + }, + "node_modules/@vscode/vsce-sign-darwin-arm64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-arm64/-/vsce-sign-darwin-arm64-2.0.2.tgz", + "integrity": "sha512-rz8F4pMcxPj8fjKAJIfkUT8ycG9CjIp888VY/6pq6cuI2qEzQ0+b5p3xb74CJnBbSC0p2eRVoe+WgNCAxCLtzQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@vscode/vsce-sign-darwin-x64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-darwin-x64/-/vsce-sign-darwin-x64-2.0.2.tgz", + "integrity": "sha512-MCjPrQ5MY/QVoZ6n0D92jcRb7eYvxAujG/AH2yM6lI0BspvJQxp0o9s5oiAM9r32r9tkLpiy5s2icsbwefAQIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@vscode/vsce-sign-linux-arm": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm/-/vsce-sign-linux-arm-2.0.2.tgz", + "integrity": "sha512-Fkb5jpbfhZKVw3xwR6t7WYfwKZktVGNXdg1m08uEx1anO0oUPUkoQRsNm4QniL3hmfw0ijg00YA6TrxCRkPVOQ==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@vscode/vsce-sign-linux-arm64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-arm64/-/vsce-sign-linux-arm64-2.0.2.tgz", + "integrity": "sha512-Ybeu7cA6+/koxszsORXX0OJk9N0GgfHq70Wqi4vv2iJCZvBrOWwcIrxKjvFtwyDgdeQzgPheH5nhLVl5eQy7WA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@vscode/vsce-sign-linux-x64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-linux-x64/-/vsce-sign-linux-x64-2.0.2.tgz", + "integrity": "sha512-NsPPFVtLaTlVJKOiTnO8Cl78LZNWy0Q8iAg+LlBiCDEgC12Gt4WXOSs2pmcIjDYzj2kY4NwdeN1mBTaujYZaPg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@vscode/vsce-sign-win32-arm64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-arm64/-/vsce-sign-win32-arm64-2.0.2.tgz", + "integrity": "sha512-wPs848ymZ3Ny+Y1Qlyi7mcT6VSigG89FWQnp2qRYCyMhdJxOpA4lDwxzlpL8fG6xC8GjQjGDkwbkWUcCobvksQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@vscode/vsce-sign-win32-x64": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@vscode/vsce-sign-win32-x64/-/vsce-sign-win32-x64-2.0.2.tgz", + "integrity": "sha512-pAiRN6qSAhDM5SVOIxgx+2xnoVUePHbRNC7OD2aOR3WltTKxxF25OfpK8h8UQ7A0BuRkSgREbB59DBlFk4iAeg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "SEE LICENSE IN LICENSE.txt", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@vscode/vsce/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@vscode/webview-ui-toolkit": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@vscode/webview-ui-toolkit/-/webview-ui-toolkit-1.4.0.tgz", + "integrity": "sha512-modXVHQkZLsxgmd5yoP3ptRC/G8NBDD+ob+ngPiWNQdlrH6H1xR/qgOBD85bfU3BhOB5sZzFWBwwhp9/SfoHww==", + "deprecated": "This package has been deprecated, https://github.com/microsoft/vscode-webview-ui-toolkit/issues/561", + "license": "MIT", + "dependencies": { + "@microsoft/fast-element": "^1.12.0", + "@microsoft/fast-foundation": "^2.49.4", + "@microsoft/fast-react-wrapper": "^0.3.22", + "tslib": "^2.6.2" + }, + "peerDependencies": { + "react": ">=16.9.0" + } + }, + "node_modules/@xterm/headless": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@xterm/headless/-/headless-5.5.0.tgz", + "integrity": "sha512-5xXB7kdQlFBP82ViMJTwwEc3gKCLGKR/eoxQm4zge7GPBl86tCdI0IdPJjoKd8mUSFXz5V7i/25sfsEkP4j46g==", + "license": "MIT" + }, + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/acorn": { + "version": "8.15.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz", + "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.3.tgz", + "integrity": "sha512-jRR5wdylq8CkOe6hei19GGZnxM6rBGwFl3Bg0YItGDimvjGtAvdZk4Pu6Cl4u4Igsws4a1fd1Vq3ezrhn4KmFw==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-escapes": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", + "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", + "dev": true, + "license": "MIT", + "dependencies": { + "environment": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "license": "ISC", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/applicationinsights": { + "version": "2.9.7", + "resolved": "https://registry.npmjs.org/applicationinsights/-/applicationinsights-2.9.7.tgz", + "integrity": "sha512-dxIVB2AAEMec3FDiYThgEbc9R4u1TatrzL+kFgOf+ABaEgHm8+i8ngVLHfKObjHvy2HHPf810OLWTrqyeWT/oA==", + "license": "MIT", + "dependencies": { + "@azure/core-auth": "1.7.2", + "@azure/core-rest-pipeline": "1.16.3", + "@azure/opentelemetry-instrumentation-azure-sdk": "^1.0.0-beta.5", + "@microsoft/applicationinsights-web-snippet": "1.0.1", + "@opentelemetry/api": "^1.7.0", + "@opentelemetry/core": "^1.19.0", + "@opentelemetry/sdk-trace-base": "^1.19.0", + "@opentelemetry/semantic-conventions": "^1.19.0", + "cls-hooked": "^4.2.2", + "continuation-local-storage": "^3.2.1", + "diagnostic-channel": "1.1.1", + "diagnostic-channel-publishers": "1.0.8" + }, + "engines": { + "node": ">=8.0.0" + }, + "peerDependencies": { + "applicationinsights-native-metrics": "*" + }, + "peerDependenciesMeta": { + "applicationinsights-native-metrics": { + "optional": true + } + } + }, + "node_modules/applicationinsights/node_modules/@azure/core-auth": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.7.2.tgz", + "integrity": "sha512-Igm/S3fDYmnMq1uKS38Ae1/m37B3zigdlZw+kocwEhh5GjyKjPrXKO2J6rzpC1wAxrNil/jX9BJRqBshyjnF3g==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.0.0", + "@azure/core-util": "^1.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/applicationinsights/node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "license": "Apache-2.0", + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/are-docs-informative": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/are-docs-informative/-/are-docs-informative-0.0.2.tgz", + "integrity": "sha512-ixiS0nLNNG5jNQzgZJNoUpBKdo9yTYZMGJ+QgT2jmjR7G7+QHRCc4v6LQ3NgE7EBJq+o0ams3waJwkrlBom8Ig==", + "dev": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.9", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.9.tgz", + "integrity": "sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.24.0", + "es-object-atoms": "^1.1.1", + "get-intrinsic": "^1.3.0", + "is-string": "^1.1.1", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + } + }, + "node_modules/ast-v8-to-istanbul": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/ast-v8-to-istanbul/-/ast-v8-to-istanbul-0.3.3.tgz", + "integrity": "sha512-MuXMrSLVVoA6sYN/6Hke18vMzrT4TZNbZIj/hvh0fnYFpO+/kFXcLIaiPwXXWaQUPg4yJD8fj+lfJ7/1EBconw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "estree-walker": "^3.0.3", + "js-tokens": "^9.0.1" + } + }, + "node_modules/ast-v8-to-istanbul/node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/async-hook-jl": { + "version": "1.7.6", + "resolved": "https://registry.npmjs.org/async-hook-jl/-/async-hook-jl-1.7.6.tgz", + "integrity": "sha512-gFaHkFfSxTjvoxDMYqDuGHlcRyUuamF8s+ZTtJdDzqjws4mCt7v0vuV79/E2Wr2/riMQgtG4/yUtXWs1gZ7JMg==", + "dependencies": { + "stack-chain": "^1.3.7" + }, + "engines": { + "node": "^4.7 || >=6.9 || >=7.3" + } + }, + "node_modules/async-listener": { + "version": "0.6.10", + "resolved": "https://registry.npmjs.org/async-listener/-/async-listener-0.6.10.tgz", + "integrity": "sha512-gpuo6xOyF4D5DE5WvyqZdPA3NGhiT6Qf07l7DCB0wwDEsLvDIbCr6j9S5aj5Ch96dLace5tXVzWBZkxU/c5ohw==", + "dependencies": { + "semver": "^5.3.0", + "shimmer": "^1.1.0" + }, + "engines": { + "node": "<=0.11.8 || >0.11.10" + } + }, + "node_modules/async-listener/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/azure-devops-node-api": { + "version": "12.5.0", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-12.5.0.tgz", + "integrity": "sha512-R5eFskGvOm3U/GzeAuxRkUsAl0hrAwGgWn6zAd2KrZmrEhWZVqLew4OOupbQlXUuojUzpGtq62SmdhJ06N88og==", + "dev": true, + "license": "MIT", + "dependencies": { + "tunnel": "0.0.6", + "typed-rest-client": "^1.8.4" + } + }, + "node_modules/b4a": { + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", + "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/bare-events": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.6.0.tgz", + "integrity": "sha512-EKZ5BTXYExaNqi3I3f9RtEsaI/xBSGjE0XZCZilPzFAV/goswFHuPd9jEZlPIZ/iNZJwDSao9qRiScySz7MbQg==", + "dev": true, + "license": "Apache-2.0", + "optional": true + }, + "node_modules/bare-fs": { + "version": "4.1.6", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.6.tgz", + "integrity": "sha512-25RsLF33BqooOEFNdMcEhMpJy8EoR88zSMrnOQOaM3USnOK2VmaJ1uaQEwPA6AQjrv1lXChScosN6CzbwbO9OQ==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-events": "^2.5.4", + "bare-path": "^3.0.0", + "bare-stream": "^2.6.4" + }, + "engines": { + "bare": ">=1.16.0" + }, + "peerDependencies": { + "bare-buffer": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + } + } + }, + "node_modules/bare-os": { + "version": "3.6.1", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz", + "integrity": "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "engines": { + "bare": ">=1.14.0" + } + }, + "node_modules/bare-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz", + "integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "bare-os": "^3.0.1" + } + }, + "node_modules/bare-stream": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz", + "integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==", + "dev": true, + "license": "Apache-2.0", + "optional": true, + "dependencies": { + "streamx": "^2.21.0" + }, + "peerDependencies": { + "bare-buffer": "*", + "bare-events": "*" + }, + "peerDependenciesMeta": { + "bare-buffer": { + "optional": true + }, + "bare-events": { + "optional": true + } + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/basic-auth": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/basic-auth/-/basic-auth-2.0.1.tgz", + "integrity": "sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.1.2" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/bignumber.js": { + "version": "9.3.1", + "resolved": "https://registry.npmjs.org/bignumber.js/-/bignumber.js-9.3.1.tgz", + "integrity": "sha512-Ko0uX15oIUS7wJ3Rb30Fs6SkVbLmPBAKdlm7q9+ak9bbIeFf0MwuBsQV6z7+X768/cHsfg+WlysDWJcmthjsjQ==", + "license": "MIT", + "engines": { + "node": "*" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/binaryextensions": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/binaryextensions/-/binaryextensions-6.11.0.tgz", + "integrity": "sha512-sXnYK/Ij80TO3lcqZVV2YgfKN5QjUWIRk/XSm2J/4bd/lPko3lvk0O4ZppH6m+6hB2/GTu+ptNwVFe1xh+QLQw==", + "dev": true, + "license": "Artistic-2.0", + "dependencies": { + "editions": "^6.21.0" + }, + "engines": { + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/bl/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/boolean": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", + "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", + "dev": true, + "optional": true + }, + "node_modules/boundary": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/boundary/-/boundary-2.0.0.tgz", + "integrity": "sha512-rJKn5ooC9u8q13IMCrW0RSp31pxBCHE3y9V/tp3TdWSLf8Em3p6Di4NBpfzbJge9YjjFEsD0RtFEjtvHL5VyEA==", + "dev": true, + "license": "BSD-2-Clause" + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true + }, + "node_modules/browserify-zlib": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/browserify-zlib/-/browserify-zlib-0.1.4.tgz", + "integrity": "sha512-19OEpq7vWgsH6WkvkBJQDFvJS1uPcbFOQ4v9CU839dO+ZZXUZO6XpE6hNCqvlIIj+4fZvRiJ6DsAQ382GwiyTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "pako": "~0.2.0" + } + }, + "node_modules/browserify-zlib/node_modules/pako": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/pako/-/pako-0.2.9.tgz", + "integrity": "sha512-NUcwaKxUxWrZLpDG+z/xZaCgQITkA/Dv4V/T6bw7VON6l1Xz/VnrBqrYjZQ12TamKHzITTfOEIYUj48y2KXImA==", + "dev": true, + "license": "MIT" + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "dev": true, + "engines": { + "node": "*" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/c8": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/c8/-/c8-9.1.0.tgz", + "integrity": "sha512-mBWcT5iqNir1zIkzSPyI3NCR9EZCVI3WUD+AVO17MVWTSFNyUueXE82qTeampNtTr+ilN/5Ua3j24LgbCKjDVg==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@istanbuljs/schema": "^0.1.3", + "find-up": "^5.0.0", + "foreground-child": "^3.1.1", + "istanbul-lib-coverage": "^3.2.0", + "istanbul-lib-report": "^3.0.1", + "istanbul-reports": "^3.1.6", + "test-exclude": "^6.0.0", + "v8-to-istanbul": "^9.0.0", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1" + }, + "bin": { + "c8": "bin/c8.js" + }, + "engines": { + "node": ">=14.14.0" + } + }, + "node_modules/c8/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/c8/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/c8/node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true, + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", + "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/chai": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", + "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", + "dev": true, + "license": "MIT", + "dependencies": { + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/charenc": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/charenc/-/charenc-0.0.2.tgz", + "integrity": "sha512-yrLQ/yVUFXkzg7EDQsPieE/53+0RlaWTs+wBrvW36cyilJ2SaDWfl4Yj7MtLTXleV9uEKefbAGUPv2/iWSooRA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 16" + } + }, + "node_modules/cheerio": { + "version": "1.0.0-rc.12", + "resolved": "https://registry.npmjs.org/cheerio/-/cheerio-1.0.0-rc.12.tgz", + "integrity": "sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==", + "dev": true, + "dependencies": { + "cheerio-select": "^2.1.0", + "dom-serializer": "^2.0.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "htmlparser2": "^8.0.1", + "parse5": "^7.0.0", + "parse5-htmlparser2-tree-adapter": "^7.0.0" + }, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/cheeriojs/cheerio?sponsor=1" + } + }, + "node_modules/cheerio-select": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cheerio-select/-/cheerio-select-2.1.0.tgz", + "integrity": "sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-select": "^5.1.0", + "css-what": "^6.1.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==" + }, + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/cli-cursor": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", + "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", + "dev": true, + "license": "MIT", + "dependencies": { + "restore-cursor": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", + "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", + "dev": true, + "license": "MIT", + "dependencies": { + "slice-ansi": "^5.0.0", + "string-width": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/cli-truncate/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true, + "license": "MIT" + }, + "node_modules/cli-truncate/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-truncate/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cls-hooked": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/cls-hooked/-/cls-hooked-4.2.2.tgz", + "integrity": "sha512-J4Xj5f5wq/4jAvcdgoGsL3G103BtWpZrMo8NEinRltN+xpTZdI+M38pyQqhuFU/P792xkMFvnKSf+Lm81U1bxw==", + "dependencies": { + "async-hook-jl": "^1.7.6", + "emitter-listener": "^1.0.1", + "semver": "^5.4.1" + }, + "engines": { + "node": "^4.7 || >=6.9 || >=7.3 || >=8.2.1" + } + }, + "node_modules/cls-hooked/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/cockatiel": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/cockatiel/-/cockatiel-3.2.1.tgz", + "integrity": "sha512-gfrHV6ZPkquExvMh9IOkKsBzNDk6sDuZ6DdBGUBkvFnTCqCxzpuq48RySgP0AnaqQkw2zynOFj9yly6T1Q2G5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/commandpost": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/commandpost/-/commandpost-1.4.0.tgz", + "integrity": "sha512-aE2Y4MTFJ870NuB/+2z1cXBhSBBzRydVVjzhFC4gtenEhpnj15yu0qptWGJsO9YGrcPZ3ezX8AWb1VA391MKpQ==", + "dev": true + }, + "node_modules/comment-parser": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.4.1.tgz", + "integrity": "sha512-buhp5kePrmda3vhc5B9t7pUQXAb2Tnd0qgpkIhPhkHXxJpiPJ11H0ZEU0oBpJ2QztSbzG/ZxMj/CHsYJqRHmyg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 12.0.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/continuation-local-storage": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/continuation-local-storage/-/continuation-local-storage-3.2.1.tgz", + "integrity": "sha512-jx44cconVqkCEEyLSKWwkvUXwO561jXMa3LPjTPsm5QR22PA0/mhe33FT4Xb5y74JDvt/Cq+5lm8S8rskLv9ZA==", + "dependencies": { + "async-listener": "^0.6.0", + "emitter-listener": "^1.1.1" + } + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/cookies": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/cookies/-/cookies-0.9.1.tgz", + "integrity": "sha512-TG2hpqe4ELx54QER/S3HQ9SRVnQnGBtKUz5bLQWtYAQ+o6GpgMs6sYUvaiJjVxb+UXwhRhAEP3m7LbsIZ77Hmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~2.0.0", + "keygrip": "~1.1.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/copyfiles": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/copyfiles/-/copyfiles-2.4.1.tgz", + "integrity": "sha512-fereAvAvxDrQDOXybk3Qu3dPbOoKoysFMWtkY3mv5BsL8//OSZVL5DCLYqgRfY5cWirgRzlC+WSrxp6Bo3eNZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob": "^7.0.5", + "minimatch": "^3.0.3", + "mkdirp": "^1.0.4", + "noms": "0.0.0", + "through2": "^2.0.1", + "untildify": "^4.0.0", + "yargs": "^16.1.0" + }, + "bin": { + "copyfiles": "copyfiles", + "copyup": "copyfiles" + } + }, + "node_modules/copyfiles/node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "node_modules/copyfiles/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/copyfiles/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/copyfiles/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/copyfiles/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/copyfiles/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/copyfiles/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/copyfiles/node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "dev": true, + "license": "MIT", + "dependencies": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.0", + "y18n": "^5.0.5", + "yargs-parser": "^20.2.2" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/copyfiles/node_modules/yargs-parser": { + "version": "20.2.9", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "dev": true + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypt": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/crypt/-/crypt-0.0.2.tgz", + "integrity": "sha512-mCxBlsHFYh9C+HVpiEacem8FEBnMXgU9gy4zmNC+SXAZNB/1idgp/aulFJ4FgCi7GPEVbfyng092GqL2k2rmow==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": "*" + } + }, + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "dev": true, + "engines": { + "node": ">= 6" + }, + "funding": { + "url": "https://github.com/sponsors/fb55" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/csv-parse": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/csv-parse/-/csv-parse-6.0.0.tgz", + "integrity": "sha512-6aB9WrymEruVDwQOwa5AuYk4/Gb+HaJgLHGKOA9BXTqgsIFvbdHzQzZOuqNCOooTGciPDaHzTlGkU5P6kYVUYw==", + "dev": true, + "license": "MIT" + }, + "node_modules/data-view-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.2.tgz", + "integrity": "sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz", + "integrity": "sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/inspect-js" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz", + "integrity": "sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/deep-equal": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-1.0.1.tgz", + "integrity": "sha512-bHtC0iYvWhyaTzvV3CZgPeZQqCOBGyGsVV7v4eevpdkLHfiSrXUdBG+qAuSz4RI70sszvjQ1QSZ98An1yNwpSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "dev": true, + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/detect-libc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", + "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true, + "optional": true + }, + "node_modules/diagnostic-channel": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/diagnostic-channel/-/diagnostic-channel-1.1.1.tgz", + "integrity": "sha512-r2HV5qFkUICyoaKlBEpLKHjxMXATUf/l+h8UZPGBHGLy4DDiY2sOLcIctax4eRnTw5wH2jTMExLntGPJ8eOJxw==", + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + } + }, + "node_modules/diagnostic-channel-publishers": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/diagnostic-channel-publishers/-/diagnostic-channel-publishers-1.0.8.tgz", + "integrity": "sha512-HmSm9hXxSPxA9BaLGY98QU1zsdjeCk113KjAYGPCen1ZP6mhVaTPzHd6UYv5r21DnWANi+f+NyPOHruGT9jpqQ==", + "license": "MIT", + "peerDependencies": { + "diagnostic-channel": "*" + } + }, + "node_modules/diff": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-8.0.2.tgz", + "integrity": "sha512-sSuxWU5j5SR9QQji/o2qMvqRNYRDOcBTgsJ/DeCf4iSN4gW+gNMXM7wFIP+fdXZxoNiAnHUTGjCr+TSWXdRDKg==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" + }, + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + } + }, + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "dev": true, + "dependencies": { + "domelementtype": "^2.3.0" + }, + "engines": { + "node": ">= 4" + }, + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" + } + }, + "node_modules/dompurify": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.3.0.tgz", + "integrity": "sha512-r+f6MYR1gGN1eJv0TVQbhA7if/U7P87cdPl3HN5rikqaBSBxLiCb/b9O+2eG0cxz0ghyU+mU1QkbsOwERMYlWQ==", + "license": "(MPL-2.0 OR Apache-2.0)", + "optionalDependencies": { + "@types/trusted-types": "^2.0.7" + } + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "dev": true, + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" + }, + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" + } + }, + "node_modules/dotenv": { + "version": "17.2.0", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.2.0.tgz", + "integrity": "sha512-Q4sgBT60gzd0BB0lSyYD3xM4YxrXA9y4uBDof1JNYGzOXrQdQ6yX+7XIAqoFOGQFOTK1D3Hts5OllpxMDZFONQ==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/editions": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/editions/-/editions-6.21.0.tgz", + "integrity": "sha512-ofkXJtn7z0urokN62DI3SBo/5xAtF0rR7tn+S/bSYV79Ka8pTajIIl+fFQ1q88DQEImymmo97M4azY3WX/nUdg==", + "dev": true, + "license": "Artistic-2.0", + "dependencies": { + "version-range": "^4.13.0" + }, + "engines": { + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/editorconfig": { + "version": "0.15.3", + "resolved": "https://registry.npmjs.org/editorconfig/-/editorconfig-0.15.3.tgz", + "integrity": "sha512-M9wIMFx96vq0R4F+gRpY3o2exzb8hEj/n9S8unZtHSvYjibBp/iMufSzvmOcV/laG0ZtuTVGtiJggPOSW2r93g==", + "dev": true, + "dependencies": { + "commander": "^2.19.0", + "lru-cache": "^4.1.5", + "semver": "^5.6.0", + "sigmund": "^1.0.1" + }, + "bin": { + "editorconfig": "bin/editorconfig" + } + }, + "node_modules/editorconfig/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/editorconfig/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "dev": true, + "dependencies": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "node_modules/editorconfig/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/editorconfig/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", + "dev": true + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "dev": true, + "license": "MIT" + }, + "node_modules/electron": { + "version": "37.8.0", + "resolved": "https://registry.npmjs.org/electron/-/electron-37.8.0.tgz", + "integrity": "sha512-R7fCCfp/foGvJjxReBpb01Fk0bEKAvUdbwXK4c2c2ttuHpPEV/k65GRkz5yYYVhE8EGIa/j5uh0uToOpsocsZw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "@electron/get": "^2.0.0", + "@types/node": "^22.7.7", + "extract-zip": "^2.0.1" + }, + "bin": { + "electron": "cli.js" + }, + "engines": { + "node": ">= 12.20.55" + } + }, + "node_modules/embla-carousel": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel/-/embla-carousel-8.6.0.tgz", + "integrity": "sha512-SjWyZBHJPbqxHOzckOfo8lHisEaJWmwd23XppYFYVh10bU66/Pn5tkVkbkCMZVdbUE5eTCI2nD8OyIP4Z+uwkA==", + "dev": true, + "license": "MIT" + }, + "node_modules/embla-carousel-autoplay": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel-autoplay/-/embla-carousel-autoplay-8.6.0.tgz", + "integrity": "sha512-OBu5G3nwaSXkZCo1A6LTaFMZ8EpkYbwIaH+bPqdBnDGQ2fh4+NbzjXjs2SktoPNKCtflfVMc75njaDHOYXcrsA==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "embla-carousel": "8.6.0" + } + }, + "node_modules/embla-carousel-fade": { + "version": "8.6.0", + "resolved": "https://registry.npmjs.org/embla-carousel-fade/-/embla-carousel-fade-8.6.0.tgz", + "integrity": "sha512-qaYsx5mwCz72ZrjlsXgs1nKejSrW+UhkbOMwLgfRT7w2LtdEB03nPRI06GHuHv5ac2USvbEiX2/nAHctcDwvpg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "embla-carousel": "8.6.0" + } + }, + "node_modules/emitter-listener": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/emitter-listener/-/emitter-listener-1.1.2.tgz", + "integrity": "sha512-Bt1sBAGFHY9DKY+4/2cV6izcKJUf5T7/gkdmkxzX/qv9CcGH8xSwVRW5mtX03SWJtRTWSOpzCuWN9rBFYZepZQ==", + "dependencies": { + "shimmer": "^1.2.0" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/environment": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", + "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.24.0", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.24.0.tgz", + "integrity": "sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.2", + "arraybuffer.prototype.slice": "^1.0.4", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "data-view-buffer": "^1.0.2", + "data-view-byte-length": "^1.0.2", + "data-view-byte-offset": "^1.0.1", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-set-tostringtag": "^2.1.0", + "es-to-primitive": "^1.3.0", + "function.prototype.name": "^1.1.8", + "get-intrinsic": "^1.3.0", + "get-proto": "^1.0.1", + "get-symbol-description": "^1.1.0", + "globalthis": "^1.0.4", + "gopd": "^1.2.0", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "internal-slot": "^1.1.0", + "is-array-buffer": "^3.0.5", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.2", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.2.1", + "is-set": "^2.0.3", + "is-shared-array-buffer": "^1.0.4", + "is-string": "^1.1.1", + "is-typed-array": "^1.1.15", + "is-weakref": "^1.1.1", + "math-intrinsics": "^1.1.0", + "object-inspect": "^1.13.4", + "object-keys": "^1.1.1", + "object.assign": "^4.1.7", + "own-keys": "^1.0.1", + "regexp.prototype.flags": "^1.5.4", + "safe-array-concat": "^1.1.3", + "safe-push-apply": "^1.0.0", + "safe-regex-test": "^1.1.0", + "set-proto": "^1.0.0", + "stop-iteration-iterator": "^1.1.0", + "string.prototype.trim": "^1.2.10", + "string.prototype.trimend": "^1.0.9", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.3", + "typed-array-byte-length": "^1.0.3", + "typed-array-byte-offset": "^1.0.4", + "typed-array-length": "^1.0.7", + "unbox-primitive": "^1.1.0", + "which-typed-array": "^1.1.19" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.1.0.tgz", + "integrity": "sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-to-primitive": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", + "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7", + "is-date-object": "^1.0.5", + "is-symbol": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true, + "optional": true + }, + "node_modules/esbuild": { + "version": "0.25.6", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.6.tgz", + "integrity": "sha512-GVuzuUwtdsghE3ocJ9Bs8PNoF13HNQ5TXbEi2AhvVb8xU1Iwt9Fos9FEamfoee+u/TOsn7GUWc04lz46n2bbTg==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.6", + "@esbuild/android-arm": "0.25.6", + "@esbuild/android-arm64": "0.25.6", + "@esbuild/android-x64": "0.25.6", + "@esbuild/darwin-arm64": "0.25.6", + "@esbuild/darwin-x64": "0.25.6", + "@esbuild/freebsd-arm64": "0.25.6", + "@esbuild/freebsd-x64": "0.25.6", + "@esbuild/linux-arm": "0.25.6", + "@esbuild/linux-arm64": "0.25.6", + "@esbuild/linux-ia32": "0.25.6", + "@esbuild/linux-loong64": "0.25.6", + "@esbuild/linux-mips64el": "0.25.6", + "@esbuild/linux-ppc64": "0.25.6", + "@esbuild/linux-riscv64": "0.25.6", + "@esbuild/linux-s390x": "0.25.6", + "@esbuild/linux-x64": "0.25.6", + "@esbuild/netbsd-arm64": "0.25.6", + "@esbuild/netbsd-x64": "0.25.6", + "@esbuild/openbsd-arm64": "0.25.6", + "@esbuild/openbsd-x64": "0.25.6", + "@esbuild/openharmony-arm64": "0.25.6", + "@esbuild/sunos-x64": "0.25.6", + "@esbuild/win32-arm64": "0.25.6", + "@esbuild/win32-ia32": "0.25.6", + "@esbuild/win32-x64": "0.25.6" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "dev": true, + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "9.30.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.30.1.tgz", + "integrity": "sha512-zmxXPNMOXmwm9E0yQLi5uqXHs7uq2UIiqEKo3Gq+3fwo1XrJ+hijAZImyF7hclW3E6oHz43Yk3RP8at6OTKflQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.12.1", + "@eslint/config-array": "^0.21.0", + "@eslint/config-helpers": "^0.3.0", + "@eslint/core": "^0.14.0", + "@eslint/eslintrc": "^3.3.1", + "@eslint/js": "9.30.1", + "@eslint/plugin-kit": "^0.3.1", + "@humanfs/node": "^0.16.6", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.4.2", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.6", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.4.0", + "eslint-visitor-keys": "^4.2.1", + "espree": "^10.4.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-import-context": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/eslint-import-context/-/eslint-import-context-0.1.8.tgz", + "integrity": "sha512-bq+F7nyc65sKpZGT09dY0S0QrOnQtuDVIfyTGQ8uuvtMIF7oHp6CEP3mouN0rrnYF3Jqo6Ke0BfU/5wASZue1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-tsconfig": "^4.10.1", + "stable-hash-x": "^0.1.1" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-context" + }, + "peerDependencies": { + "unrs-resolver": "^1.0.0" + }, + "peerDependenciesMeta": { + "unrs-resolver": { + "optional": true + } + } + }, + "node_modules/eslint-import-context/node_modules/stable-hash-x": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/stable-hash-x/-/stable-hash-x-0.1.1.tgz", + "integrity": "sha512-l0x1D6vhnsNUGPFVDx45eif0y6eedVC8nm5uACTrVFJFtl2mLRW17aWtVyxFCpn5t94VUPkjU8vSLwIuwwqtJQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "4.4.4", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-4.4.4.tgz", + "integrity": "sha512-1iM2zeBvrYmUNTj2vSC/90JTHDth+dfOfiNKkxApWRsTJYNrc8rOdxxIf5vazX+BiAXTeOT0UvWpGI/7qIWQOw==", + "dev": true, + "license": "ISC", + "dependencies": { + "debug": "^4.4.1", + "eslint-import-context": "^0.1.8", + "get-tsconfig": "^4.10.1", + "is-bun-module": "^2.0.0", + "stable-hash-x": "^0.2.0", + "tinyglobby": "^0.2.14", + "unrs-resolver": "^1.7.11" + }, + "engines": { + "node": "^16.17.0 || >=18.6.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-import-resolver-typescript" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.12.1.tgz", + "integrity": "sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-header": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-header/-/eslint-plugin-header-3.1.1.tgz", + "integrity": "sha512-9vlKxuJ4qf793CmeeSrZUvVClw6amtpghq3CuWcB5cUNnWHQhgcqy5eF8oVKFk1G3Y/CbchGfEaw3wiIJaNmVg==", + "dev": true, + "peerDependencies": { + "eslint": ">=7.7.0" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.32.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.32.0.tgz", + "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.9", + "array.prototype.findlastindex": "^1.2.6", + "array.prototype.flat": "^1.3.3", + "array.prototype.flatmap": "^1.3.3", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.12.1", + "hasown": "^2.0.2", + "is-core-module": "^2.16.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.1", + "semver": "^6.3.1", + "string.prototype.trimend": "^1.0.9", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jsdoc": { + "version": "51.3.4", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-51.3.4.tgz", + "integrity": "sha512-maz6qa95+sAjMr9m5oRyfejc+mnyQWsWSe9oyv9371bh4/T0kWOMryJNO4h8rEd97wo/9lbzwi3OOX4rDhnAzg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@es-joy/jsdoccomment": "~0.52.0", + "are-docs-informative": "^0.0.2", + "comment-parser": "1.4.1", + "debug": "^4.4.1", + "escape-string-regexp": "^4.0.0", + "espree": "^10.4.0", + "esquery": "^1.6.0", + "parse-imports-exports": "^0.2.4", + "semver": "^7.7.2", + "spdx-expression-parse": "^4.0.0" + }, + "engines": { + "node": ">=20.11.0" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-jsdoc/node_modules/spdx-expression-parse": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-4.0.0.tgz", + "integrity": "sha512-Clya5JIij/7C6bRR22+tnGXbc4VKlibKSVj2iHvVeX5iMW7s1SIQlqu699JkODJJIhh/pUu8L0/VLh8xflD+LQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/eslint-plugin-no-only-tests": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-3.3.0.tgz", + "integrity": "sha512-brcKcxGnISN2CcVhXJ/kEQlNa0MEfGRtwKtWA16SkqXHKitaKIMrfemJKLKX1YqDU5C/5JY3PvZXd5jEW04e0Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=5.0.0" + } + }, + "node_modules/eslint-scope": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.4.0.tgz", + "integrity": "sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/eslint/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/eslint/node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/espree": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", + "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.15.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.2.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", + "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true, + "license": "MIT" + }, + "node_modules/exenv-es6": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/exenv-es6/-/exenv-es6-1.1.1.tgz", + "integrity": "sha512-vlVu3N8d6yEMpMsEm+7sUBAI81aqYYuEvfK0jNqmdb/OPXzzH7QWDDnVjMvDSY47JdHEqx/dfC/q8WkfoTmpGQ==", + "license": "MIT" + }, + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/expect-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.2.1.tgz", + "integrity": "sha512-/kP8CAwxzLVEeFrMm4kMmy4CCDlpipyA7MYLVrdJIkV0fYF0UaigQHRsxHiuY/GEea+bh4KSv3TIlgr+2UL6bw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/exponential-backoff": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/exponential-backoff/-/exponential-backoff-3.1.2.tgz", + "integrity": "sha512-8QxYTVXUkuy7fIIoitQkPwGonB8F3Zj8eEO8Sqg9Zv/bkI7RJAzowee4gr81Hak/dUTpA2Z7VfQgoijjPNlUZA==", + "dev": true, + "license": "Apache-2.0", + "optional": true + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "license": "MIT" + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fast-uri": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.5.tgz", + "integrity": "sha512-5JnBCWpFlMo0a3ciDy/JckMzzv1U9coZrIhedq+HXxxUfDTAiS0LA8OKVao4G9BxmCVck/jtA5r3KAtRWEyD8Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dev": true, + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flat-cache/node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/flatted": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.3.tgz", + "integrity": "sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.5.tgz", + "integrity": "sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, + "license": "ISC", + "dependencies": { + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/form-data": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.4.tgz", + "integrity": "sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==", + "dev": true, + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "dev": true + }, + "node_modules/fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/fs-minipass/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", + "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "functions-have-names": "^1.2.3", + "hasown": "^2.0.2", + "is-callable": "^1.2.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gaxios": { + "version": "6.7.1", + "resolved": "https://registry.npmjs.org/gaxios/-/gaxios-6.7.1.tgz", + "integrity": "sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==", + "license": "Apache-2.0", + "dependencies": { + "extend": "^3.0.2", + "https-proxy-agent": "^7.0.1", + "is-stream": "^2.0.0", + "node-fetch": "^2.6.9", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/gaxios/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/gcp-metadata": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/gcp-metadata/-/gcp-metadata-6.1.1.tgz", + "integrity": "sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==", + "license": "Apache-2.0", + "dependencies": { + "gaxios": "^6.1.1", + "google-logging-utils": "^0.0.2", + "json-bigint": "^1.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", + "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.1.0.tgz", + "integrity": "sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.10.1.tgz", + "integrity": "sha512-auHyJ4AgMz7vgS8Hp3N6HXSmlMdUyhSUrfBF16w153rxtLIEOE+HGqaBppczZvnHLqQJfiHotCYpNhl0lUROFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "dev": true + }, + "node_modules/glob": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", + "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/global-agent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", + "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", + "dev": true, + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "es6-error": "^4.1.1", + "matcher": "^3.0.0", + "roarr": "^2.15.3", + "semver": "^7.3.2", + "serialize-error": "^7.0.1" + }, + "engines": { + "node": ">=10.0" + } + }, + "node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.1.0.tgz", + "integrity": "sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.3", + "ignore": "^7.0.3", + "path-type": "^6.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/google-auth-library": { + "version": "9.15.1", + "resolved": "https://registry.npmjs.org/google-auth-library/-/google-auth-library-9.15.1.tgz", + "integrity": "sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==", + "license": "Apache-2.0", + "dependencies": { + "base64-js": "^1.3.0", + "ecdsa-sig-formatter": "^1.0.11", + "gaxios": "^6.1.1", + "gcp-metadata": "^6.1.0", + "gtoken": "^7.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/google-logging-utils": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/google-logging-utils/-/google-logging-utils-0.0.2.tgz", + "integrity": "sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=14" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=10.19.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/gtoken": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/gtoken/-/gtoken-7.1.0.tgz", + "integrity": "sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==", + "license": "MIT", + "dependencies": { + "gaxios": "^6.0.0", + "jws": "^4.0.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/gunzip-maybe": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/gunzip-maybe/-/gunzip-maybe-1.4.2.tgz", + "integrity": "sha512-4haO1M4mLO91PW57BMsDFf75UmwoRX0GkdD+Faw+Lr+r/OZrOCS0pIBwOL1xCKQqnQzbNFGgK2V2CpBUPeFNTw==", + "dev": true, + "license": "MIT", + "dependencies": { + "browserify-zlib": "^0.1.4", + "is-deflate": "^1.0.0", + "is-gzip": "^1.0.0", + "peek-stream": "^1.1.0", + "pumpify": "^1.3.3", + "through2": "^2.0.3" + }, + "bin": { + "gunzip-maybe": "bin.js" + } + }, + "node_modules/has-bigints": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", + "integrity": "sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.2.0.tgz", + "integrity": "sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/hosted-git-info": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", + "dev": true, + "dependencies": { + "lru-cache": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/hosted-git-info/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" + }, + "node_modules/htmlparser2": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-8.0.2.tgz", + "integrity": "sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==", + "dev": true, + "funding": [ + "https://github.com/fb55/htmlparser2?sponsor=1", + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ], + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3", + "domutils": "^3.0.1", + "entities": "^4.4.0" + } + }, + "node_modules/http-assert": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/http-assert/-/http-assert-1.5.0.tgz", + "integrity": "sha512-uPpH7OKX4H25hBmU6G1jWNaqJGpTXxey+YOUizJUAgu0AjLUeC8D73hTrhvDS5D+GJN1DN1+hhc/eF/wpxtp0w==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-equal": "~1.0.1", + "http-errors": "~1.8.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-assert/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-assert/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-assert/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "dev": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/husky": { + "version": "9.1.7", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.7.tgz", + "integrity": "sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==", + "dev": true, + "license": "MIT", + "bin": { + "husky": "bin.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", + "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/immediate": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==", + "dev": true + }, + "node_modules/import-fresh": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", + "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-in-the-middle": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/import-in-the-middle/-/import-in-the-middle-1.4.2.tgz", + "integrity": "sha512-9WOz1Yh/cvO/p69sxRmhyQwrIGGSp7EIdcb+fFNVi7CzQGQB8U1/1XrKVSbEd/GNOAeM0peJtmi7+qphe7NvAw==", + "dependencies": { + "acorn": "^8.8.2", + "acorn-import-assertions": "^1.9.0", + "cjs-module-lexer": "^1.2.2", + "module-details-from-path": "^1.0.3" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/internal-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.1.0.tgz", + "integrity": "sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.2", + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.5.tgz", + "integrity": "sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-async-function": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.1.1.tgz", + "integrity": "sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "async-function": "^1.0.0", + "call-bound": "^1.0.3", + "get-proto": "^1.0.1", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.1.0.tgz", + "integrity": "sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-boolean-object": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.2.2.tgz", + "integrity": "sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-bun-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", + "integrity": "sha512-gNCGbnnnnFAUGKeZ9PdbyeGYJqewpmc2aKHUEMO5nQPWU9lOmv7jcmQIv+qHD8fXW6W7qfuCwX4rY9LNRjXrkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.7.1" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.2.tgz", + "integrity": "sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.1.0.tgz", + "integrity": "sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-deflate": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-deflate/-/is-deflate-1.0.0.tgz", + "integrity": "sha512-YDoFpuZWu1VRXlsnlYMzKyVRITXj7Ej/V9gXQ2/pAe7X1J7M/RNOqaIYi6qUn+B7nGyB9pDXrv02dsB58d2ZAQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz", + "integrity": "sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", + "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-generator-function": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.1.0.tgz", + "integrity": "sha512-nPUB5km40q9e8UfN/Zc24eLlzdSf9OfKByBw9CIdw4H1giPMeA0OIJvbchsCu4npfI2QcMVBsGEBHKZ7wLTWmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-proto": "^1.0.0", + "has-tostringtag": "^1.0.2", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-gzip": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-gzip/-/is-gzip-1.0.0.tgz", + "integrity": "sha512-rcfALRIb1YewtnksfRIHGcIY93QnK8BIQ/2c9yDYcG/Y6+vRoJuTWBmmSEbyLLYtXm7q35pHOHbZFQBaLrhlWQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.1.1.tgz", + "integrity": "sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-regex": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", + "integrity": "sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz", + "integrity": "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.1.1.tgz", + "integrity": "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.1.1.tgz", + "integrity": "sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "has-symbols": "^1.1.0", + "safe-regex-test": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.15.tgz", + "integrity": "sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.1.1.tgz", + "integrity": "sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.4.tgz", + "integrity": "sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "get-intrinsic": "^1.2.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "dev": true, + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true + }, + "node_modules/isbinaryfile": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/isbinaryfile/-/isbinaryfile-5.0.4.tgz", + "integrity": "sha512-YKBKVkKhty7s8rxddb40oOkuP0NbaeXrQvLin6QMHL7Ypiy2RW9LwOVrVgZRyOrhQlayMd9t+D8yDy8MKFTSDQ==", + "license": "MIT", + "engines": { + "node": ">= 18.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/gjtorikian/" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-5.0.6.tgz", + "integrity": "sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.23", + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istextorbinary": { + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/istextorbinary/-/istextorbinary-9.5.0.tgz", + "integrity": "sha512-5mbUj3SiZXCuRf9fT3ibzbSSEWiy63gFfksmGfdOzujPjW3k+z8WvIBxcJHBoQNlaZaiyB25deviif2+osLmLw==", + "dev": true, + "license": "Artistic-2.0", + "dependencies": { + "binaryextensions": "^6.11.0", + "editions": "^6.21.0", + "textextensions": "^6.11.0" + }, + "engines": { + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/jackspeak": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", + "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true, + "license": "MIT", + "optional": true + }, + "node_modules/jsdoc-type-pratt-parser": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-4.1.0.tgz", + "integrity": "sha512-Hicd6JK5Njt2QB6XYFS7ok9e37O8AYk3jTcppG4YVQnYjOemymvTcmc7OWsmq/Qqj5TdRFO5/x/tIPmBeRtGHg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/json-bigint": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-bigint/-/json-bigint-1.0.0.tgz", + "integrity": "sha512-SiPv/8VpZuWbvLSMtTDU8hEfrZWg/mH/nV/b4o0CYbSxu1UIQPLdwKOCIyLQX+VIPO5vrLX3i8qtqFyhdPSUSQ==", + "license": "MIT", + "dependencies": { + "bignumber.js": "^9.0.0" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/json-schema-to-ts": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/json-schema-to-ts/-/json-schema-to-ts-3.1.1.tgz", + "integrity": "sha512-+DWg8jCJG2TEnpy7kOm/7/AxaYoaRbjVB4LFZLySZlWn8exGs3A4OLJR966cVvU26N7X9TWxl+Jsw7dzAqKT6g==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "ts-algebra": "^2.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true, + "optional": true + }, + "node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/jsonc-parser": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", + "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "license": "MIT" + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "dev": true, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/node_modules/jwa": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.2.tgz", + "integrity": "sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jsonwebtoken/node_modules/jws": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.3.tgz", + "integrity": "sha512-byiJ0FLRdLdSVSReO/U4E7RoEyOCKnEnEPMjq3HxWtvzLsV08/i5RQKsFVNkCldrCaPr2vDNAOMsfs8T/Hze7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "jwa": "^1.4.2", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jszip": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "dev": true, + "dependencies": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.1.tgz", + "integrity": "sha512-EKI/M/yqPncGUUh44xz0PxSidXFr/+r0pA70+gIYhjv+et7yxM+s29Y+VGDkovRofQem0fs7Uvf4+YmAdyRduA==", + "license": "MIT", + "dependencies": { + "jwa": "^2.0.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/keyborg": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/keyborg/-/keyborg-2.6.0.tgz", + "integrity": "sha512-o5kvLbuTF+o326CMVYpjlaykxqYP9DphFQZ2ZpgrvBouyvOxyEB7oqe8nOLFpiV5VCtz0D3pt8gXQYWpLpBnmA==", + "dev": true, + "license": "MIT" + }, + "node_modules/keygrip": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", + "integrity": "sha512-iYSchDJ+liQ8iwbSI2QqsQOvqv58eJCEanyJPJi+Khyu8smkcKSFUCbPwzFcL7YVtZ6eONjqRX/38caJ7QjRAQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "tsscmp": "1.0.6" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/keytar": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/keytar/-/keytar-7.9.0.tgz", + "integrity": "sha512-VPD8mtVtm5JNtA2AErl6Chp06JBfy7diFQ7TQQhdpWOl6MrCRB+eRbvAZUsbGQS9kiMq0coJsy0W0vHpDCkWsQ==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "dependencies": { + "node-addon-api": "^4.3.0", + "prebuild-install": "^7.0.1" + } + }, + "node_modules/keyv": { + "version": "5.3.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-5.3.4.tgz", + "integrity": "sha512-ypEvQvInNpUe+u+w8BIcPkQvEqXquyyibWE/1NB5T2BTzIpS5cGEV1LZskDzPSTvNAaT4+5FutvzlvnkxOSKlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@keyv/serialize": "^1.0.3" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/koa": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/koa/-/koa-3.1.1.tgz", + "integrity": "sha512-KDDuvpfqSK0ZKEO2gCPedNjl5wYpfj+HNiuVRlbhd1A88S3M0ySkdf2V/EJ4NWt5dwh5PXCdcenrKK2IQJAxsg==", + "dev": true, + "license": "MIT", + "dependencies": { + "accepts": "^1.3.8", + "content-disposition": "~0.5.4", + "content-type": "^1.0.5", + "cookies": "~0.9.1", + "delegates": "^1.0.0", + "destroy": "^1.2.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "fresh": "~0.5.2", + "http-assert": "^1.5.0", + "http-errors": "^2.0.0", + "koa-compose": "^4.1.0", + "mime-types": "^3.0.1", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/koa-compose": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/koa-compose/-/koa-compose-4.1.0.tgz", + "integrity": "sha512-8ODW8TrDuMYvXRwra/Kh7/rJo9BtOfPc6qO8eAfC80CnCvSjSl0bkRM24X6/XBBEyj0v1nRUQ1LyOy3dbqOWXw==", + "dev": true, + "license": "MIT" + }, + "node_modules/koa-morgan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/koa-morgan/-/koa-morgan-1.0.1.tgz", + "integrity": "sha512-JOUdCNlc21G50afBXfErUrr1RKymbgzlrO5KURY+wmDG1Uvd2jmxUJcHgylb/mYXy2SjiNZyYim/ptUBGsIi3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "morgan": "^1.6.1" + } + }, + "node_modules/koa-mount": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/koa-mount/-/koa-mount-4.2.0.tgz", + "integrity": "sha512-2iHQc7vbA9qLeVq5gKAYh3m5DOMMlMfIKjW/REPAS18Mf63daCJHHVXY9nbu7ivrnYn5PiPC4CE523Tf5qvjeQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.0.1", + "koa-compose": "^4.1.0" + }, + "engines": { + "node": ">= 7.6.0" + } + }, + "node_modules/koa-send": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/koa-send/-/koa-send-5.0.1.tgz", + "integrity": "sha512-tmcyQ/wXXuxpDxyNXv5yNNkdAMdFRqwtegBXUaowiQzUKqJehttS0x2j0eOZDQAyloAth5w6wwBImnFzkUz3pQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "http-errors": "^1.7.3", + "resolve-path": "^1.4.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/koa-send/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa-send/node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa-send/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa-static": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/koa-static/-/koa-static-5.0.0.tgz", + "integrity": "sha512-UqyYyH5YEXaJrf9S8E23GoJFQZXkBVJ9zYYMPGz919MSX1KuvAcycIuS0ci150HCoPf4XQVhQ84Qf8xRPWxFaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^3.1.0", + "koa-send": "^5.0.0" + }, + "engines": { + "node": ">= 7.6.0" + } + }, + "node_modules/koa-static/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/koa/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/koa/node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lie": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "dev": true, + "dependencies": { + "immediate": "~3.0.5" + } + }, + "node_modules/lilconfig": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", + "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/linkify-it": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.0.tgz", + "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==", + "dependencies": { + "uc.micro": "^2.0.0" + } + }, + "node_modules/lint-staged": { + "version": "15.2.9", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.2.9.tgz", + "integrity": "sha512-BZAt8Lk3sEnxw7tfxM7jeZlPRuT4M68O0/CwZhhaw6eeWu0Lz5eERE3m386InivXB64fp/mDID452h48tvKlRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "~5.3.0", + "commander": "~12.1.0", + "debug": "~4.3.6", + "execa": "~8.0.1", + "lilconfig": "~3.1.2", + "listr2": "~8.2.4", + "micromatch": "~4.0.7", + "pidtree": "~0.6.0", + "string-argv": "~0.3.2", + "yaml": "~2.5.0" + }, + "bin": { + "lint-staged": "bin/lint-staged.js" + }, + "engines": { + "node": ">=18.12.0" + }, + "funding": { + "url": "https://opencollective.com/lint-staged" + } + }, + "node_modules/lint-staged/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/lint-staged/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/lint-staged/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/lint-staged/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/npm-run-path": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", + "integrity": "sha512-sJOdmRGrY2sjNTRMbSvluQqg+8X7ZK61yvzBEIDhz4f8z1TZFYABsqjjCBd/0PUNE9M6QDgHJXQkGUEm7Q+l9Q==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lint-staged/node_modules/yaml": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.5.1.tgz", + "integrity": "sha512-bLQOjaX/ADgQ20isPJRvF0iRUHIxVhYvr53Of7wGcWlO2jvtUlH5m87DsmulFVxRpNLOnI4tB6p/oh8D7kpn9Q==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/listr2": { + "version": "8.2.5", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.5.tgz", + "integrity": "sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "cli-truncate": "^4.0.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^6.1.0", + "rfdc": "^1.4.1", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/listr2/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/listr2/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/listr2/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true, + "license": "MIT" + }, + "node_modules/listr2/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/listr2/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/listr2/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "dev": true, + "dependencies": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead.", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", + "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^7.0.0", + "cli-cursor": "^5.0.0", + "slice-ansi": "^7.1.0", + "strip-ansi": "^7.1.0", + "wrap-ansi": "^9.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/log-update/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/log-update/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true, + "license": "MIT" + }, + "node_modules/log-update/node_modules/is-fullwidth-code-point": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", + "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-east-asian-width": "^1.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/slice-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", + "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "is-fullwidth-code-point": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-update/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/log-update/node_modules/wrap-ansi": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", + "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/loupe": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.4.tgz", + "integrity": "sha512-wJzkKwJrheKtknCOKNEtDK4iqg/MxmZheEMtSTYvnzRdEYaZzmgH976nenp8WdJRdx5Vc1X/9MO0Oszl6ezeXg==", + "dev": true, + "license": "MIT" + }, + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/lru-cache": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", + "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==", + "license": "ISC", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/magic-string": { + "version": "0.30.17", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.17.tgz", + "integrity": "sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/magicast": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/magicast/-/magicast-0.3.5.tgz", + "integrity": "sha512-L0WhttDl+2BOsybvEOLK7fW3UA0OQ0IQ2d6Zl2x/a6vVRs3bAY0ECOSHHeL5jD+SbOpOCUEi0y1DgHEn9Qn1AQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.25.4", + "@babel/types": "^7.25.4", + "source-map-js": "^1.2.0" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "license": "MIT", + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdown-it": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.0.tgz", + "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==", + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1", + "entities": "^4.4.0", + "linkify-it": "^5.0.0", + "mdurl": "^2.0.0", + "punycode.js": "^2.3.1", + "uc.micro": "^2.1.0" + }, + "bin": { + "markdown-it": "bin/markdown-it.mjs" + } + }, + "node_modules/matcher": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", + "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", + "dev": true, + "optional": true, + "dependencies": { + "escape-string-regexp": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/md5": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/md5/-/md5-2.3.0.tgz", + "integrity": "sha512-T1GITYmFaKuO91vxyoQMFETst+O71VUPEU3ze5GNzDm0OWdP8v1ziTaAEPUr/3kLsY3Sftgz242A1SetQiDL7g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "charenc": "0.0.2", + "crypt": "0.0.2", + "is-buffer": "~1.1.6" + } + }, + "node_modules/mdurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", + "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==" + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "dev": true, + "engines": { + "node": ">= 0.10.0" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-function": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", + "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/minimatch": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.1.1.tgz", + "integrity": "sha512-enIvLvRAFZYXJzkCYG5RKmPfrFArdLv+R+lbQ53BmIMLIry74bjKzX6iHAm8WYamJkhSSEabrWN5D97XnKObjQ==", + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/brace-expansion": "^5.0.0" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/minipass": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-4.2.8.tgz", + "integrity": "sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-collect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-2.0.1.tgz", + "integrity": "sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-collect/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "optional": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minipass-flush/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-pipeline/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minipass-sized/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, + "dependencies": { + "minipass": "^3.0.0", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/minizlib/node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, + "bin": { + "mkdirp": "bin/cmd.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "dev": true + }, + "node_modules/mobx": { + "version": "6.13.7", + "resolved": "https://registry.npmjs.org/mobx/-/mobx-6.13.7.tgz", + "integrity": "sha512-aChaVU/DO5aRPmk1GX8L+whocagUUpBQqoPtJk+cm7UOXUk87J4PeWCh6nNmTTIfEhiR9DI/+FnA8dln/hTK7g==", + "dev": true, + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mobx" + } + }, + "node_modules/mobx-react-lite": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mobx-react-lite/-/mobx-react-lite-4.1.0.tgz", + "integrity": "sha512-QEP10dpHHBeQNv1pks3WnHRCem2Zp636lq54M2nKO2Sarr13pL4u6diQXf65yzXUn0mkk18SyIDCm9UOJYTi1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "use-sync-external-store": "^1.4.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mobx" + }, + "peerDependencies": { + "mobx": "^6.9.0", + "react": "^16.8.0 || ^17 || ^18 || ^19" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + }, + "react-native": { + "optional": true + } + } + }, + "node_modules/mocha": { + "version": "11.7.1", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.7.1.tgz", + "integrity": "sha512-5EK+Cty6KheMS/YLPPMJC64g5V61gIR25KsRItHw6x4hEKT6Njp1n9LOlH4gpevuwMVS66SXaBBpg+RWZkza4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "browser-stdout": "^1.3.1", + "chokidar": "^4.0.1", + "debug": "^4.3.5", + "diff": "^7.0.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^10.4.5", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^9.0.5", + "ms": "^2.1.3", + "picocolors": "^1.1.1", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^9.2.0", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1", + "yargs-unparser": "^2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/mocha-junit-reporter": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/mocha-junit-reporter/-/mocha-junit-reporter-2.2.1.tgz", + "integrity": "sha512-iDn2tlKHn8Vh8o4nCzcUVW4q7iXp7cC4EB78N0cDHIobLymyHNwe0XG8HEHHjc3hJlXm0Vy6zcrxaIhnI2fWmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "md5": "^2.3.0", + "mkdirp": "^3.0.0", + "strip-ansi": "^6.0.1", + "xml": "^1.0.1" + }, + "peerDependencies": { + "mocha": ">=2.2.5" + } + }, + "node_modules/mocha-junit-reporter/node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha-multi-reporters": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/mocha-multi-reporters/-/mocha-multi-reporters-1.5.1.tgz", + "integrity": "sha512-Yb4QJOaGLIcmB0VY7Wif5AjvLMUFAdV57D2TWEva1Y0kU/3LjKpeRVmlMIfuO1SVbauve459kgtIizADqxMWPg==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.1.1", + "lodash": "^4.17.15" + }, + "engines": { + "node": ">=6.0.0" + }, + "peerDependencies": { + "mocha": ">=3.1.2" + } + }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/mocha/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/mocha/node_modules/diff": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", + "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/mocha/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/mocha/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/mocha/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/module-details-from-path": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/module-details-from-path/-/module-details-from-path-1.0.3.tgz", + "integrity": "sha512-ySViT69/76t8VhE1xXHK6Ch4NcDd26gx0MzKXLO+F7NOtnqH68d9zF94nT8ZWSxXh8ELOERsnJO/sWt1xZYw5A==" + }, + "node_modules/monaco-editor": { + "version": "0.44.0", + "resolved": "https://registry.npmjs.org/monaco-editor/-/monaco-editor-0.44.0.tgz", + "integrity": "sha512-5SmjNStN6bSuSE5WPT2ZV+iYn1/yI9sd4Igtk23ChvqB7kDk9lZbB9F5frsuvpB+2njdIeGGFf2G4gbE6rCC9Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/morgan": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/morgan/-/morgan-1.10.1.tgz", + "integrity": "sha512-223dMRJtI/l25dJKWpgij2cMtywuG/WiUKXdvwfbhGKBhy1puASqXwFzmWZ7+K73vUPoR7SS2Qz2cI/g9MKw0A==", + "dev": true, + "license": "MIT", + "dependencies": { + "basic-auth": "~2.0.1", + "debug": "2.6.9", + "depd": "~2.0.0", + "on-finished": "~2.3.0", + "on-headers": "~1.1.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/morgan/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/morgan/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true, + "license": "MIT" + }, + "node_modules/morgan/node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/mute-stream": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", + "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", + "dev": true + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", + "dev": true + }, + "node_modules/napi-postinstall": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/napi-postinstall/-/napi-postinstall-0.2.4.tgz", + "integrity": "sha512-ZEzHJwBhZ8qQSbknHqYcdtQVr8zUgGyM/q6h6qAyhtyVMNrSgDhrC4disf03dYW0e+czXyLnZINnCTEkWy0eJg==", + "dev": true, + "license": "MIT", + "bin": { + "napi-postinstall": "lib/cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/napi-postinstall" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/node-abi": { + "version": "3.47.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.47.0.tgz", + "integrity": "sha512-2s6B2CWZM//kPgwnuI0KrYwNjfdByE25zvAaEpq9IH4zcNsarH8Ihu/UuX6XMPEogDAxkuUFeZn60pXNHAqn3A==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/node-addon-api": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-4.3.0.tgz", + "integrity": "sha512-73sE9+3UaLYYFmDsFZnqCInzPyh3MqIwZO9cw58yIqAZhONrrabrYyYe3TuIqtIiOuTXVhsGau8hcrhhwSsDIQ==", + "dev": true, + "optional": true + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/node-sarif-builder": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/node-sarif-builder/-/node-sarif-builder-2.0.3.tgz", + "integrity": "sha512-Pzr3rol8fvhG/oJjIq2NTVB0vmdNNlz22FENhhPojYRZ4/ee08CfK4YuKmuL54V9MLhI1kpzxfOJ/63LzmZzDg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/sarif": "^2.1.4", + "fs-extra": "^10.0.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/node-sarif-builder/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/node-sarif-builder/node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/node-sarif-builder/node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/noms": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/noms/-/noms-0.0.0.tgz", + "integrity": "sha512-lNDU9VJaOPxUmXcLb+HQFeUgQQPtMI24Gt6hgfuMHRJgMRHMF/qZ4HJD3GDru4sSw9IQl2jPjAYnQrdIeLbwow==", + "dev": true, + "license": "ISC", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "~1.0.31" + } + }, + "node_modules/noms/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/noms/node_modules/readable-stream": { + "version": "1.0.34", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", + "dev": true, + "license": "MIT", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "dependencies": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "node_modules/normalize-package-data/node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, + "engines": { + "node": ">= 4" + } + }, + "node_modules/npm-run-all/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/npm-run-all/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/npm-run-all/node_modules/cross-spawn": { + "version": "6.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", + "dev": true, + "dependencies": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + }, + "engines": { + "node": ">=4.8" + } + }, + "node_modules/npm-run-all/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/npm-run-all/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/npm-run-all/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/npm-run-all/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/npm-run-all/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "dev": true, + "dependencies": { + "shebang-regex": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-all/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/npm-run-all/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.7", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.7.tgz", + "integrity": "sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0", + "has-symbols": "^1.1.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.1.tgz", + "integrity": "sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.3", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "dev": true, + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.1.0.tgz", + "integrity": "sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", + "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "mimic-function": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/open/-/open-10.1.2.tgz", + "integrity": "sha512-cxN6aIDPz6rm8hbebcP7vrQNhvRcveZoJU72Y7vskh4oIm+BZwBECnx5nTmrlres1Qapvx27Qo1Auukpf8PKXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/openai": { + "version": "6.7.0", + "resolved": "https://registry.npmjs.org/openai/-/openai-6.7.0.tgz", + "integrity": "sha512-mgSQXa3O/UXTbA8qFzoa7aydbXBJR5dbLQXCRapAOtoNT+v69sLdKMZzgiakpqhclRnhPggPAXoniVGn2kMY2A==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "openai": "bin/cli" + }, + "peerDependencies": { + "ws": "^8.18.0", + "zod": "^3.25 || ^4.0" + }, + "peerDependenciesMeta": { + "ws": { + "optional": true + }, + "zod": { + "optional": true + } + } + }, + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "dev": true, + "dependencies": { + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/ora": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-8.2.0.tgz", + "integrity": "sha512-weP+BZ8MVNnlCm8c0Qdc1WSWq4Qn7I+9CJGm7Qali6g44e/PUzbjNqJX5NJ9ljlNMosfJvg1fKEGILklK9cwnw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "cli-cursor": "^5.0.0", + "cli-spinners": "^2.9.2", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^2.0.0", + "log-symbols": "^6.0.0", + "stdin-discarder": "^0.2.2", + "string-width": "^7.2.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ora/node_modules/chalk": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", + "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/ora/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true, + "license": "MIT" + }, + "node_modules/ora/node_modules/is-unicode-supported": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", + "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/log-symbols": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", + "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", + "dev": true, + "license": "MIT", + "dependencies": { + "chalk": "^5.3.0", + "is-unicode-supported": "^1.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/outdent": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/outdent/-/outdent-0.8.0.tgz", + "integrity": "sha512-KiOAIsdpUTcAXuykya5fnVVT+/5uS0Q1mrkRHcF89tpieSmY33O/tmc54CqwA+bfhbtEfZUNLHaPUiB9X3jt1A==", + "dev": true + }, + "node_modules/own-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", + "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.6", + "object-keys": "^1.1.1", + "safe-push-apply": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-map": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-7.0.3.tgz", + "integrity": "sha512-VkndIv2fIB99swvQoA65bm+fsmt6UNdGeIB0oxBs+WhAhdh08QA04JXpI7rbB9r08/nkbysKoya9rtDERYOYMA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/package-json-from-dist": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz", + "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==", + "dev": true, + "license": "BlueOak-1.0.0" + }, + "node_modules/pako": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==", + "dev": true + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-imports-exports": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/parse-imports-exports/-/parse-imports-exports-0.2.4.tgz", + "integrity": "sha512-4s6vd6dx1AotCx/RCI2m7t7GCh5bDRUtGNvRfHSP2wbBQdMi67pPe7mtzmgwcaQ8VKK/6IB7Glfyu3qdZJPybQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-statements": "1.0.11" + } + }, + "node_modules/parse-json": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", + "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.21.4", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^3.0.0", + "lines-and-columns": "^2.0.3", + "type-fest": "^3.8.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-json/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-semver": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/parse-semver/-/parse-semver-1.1.1.tgz", + "integrity": "sha512-Eg1OuNntBMH0ojvEKSrvDSnwLmvVuUOSdylH/pSCPNMIspLlweJyIWXCE+k/5hm3cj/EBUYwmWkjhBALNP4LXQ==", + "dev": true, + "dependencies": { + "semver": "^5.1.0" + } + }, + "node_modules/parse-semver/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/parse-statements": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/parse-statements/-/parse-statements-1.0.11.tgz", + "integrity": "sha512-HlsyYdMBnbPQ9Jr/VgJ1YF4scnldvJpJxCVx6KgqPL4dxppsWrJHCIIxQXMJrqGnsRkNPATbeMJ8Yxu7JMsYcA==", + "dev": true, + "license": "MIT" + }, + "node_modules/parse5": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", + "dev": true, + "dependencies": { + "entities": "^4.4.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parse5-htmlparser2-tree-adapter": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse5-htmlparser2-tree-adapter/-/parse5-htmlparser2-tree-adapter-7.0.0.tgz", + "integrity": "sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==", + "dev": true, + "dependencies": { + "domhandler": "^5.0.2", + "parse5": "^7.0.0" + }, + "funding": { + "url": "https://github.com/inikulin/parse5?sponsor=1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-scurry": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.0.tgz", + "integrity": "sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^11.0.0", + "minipass": "^7.1.2" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/path-type": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-6.0.0.tgz", + "integrity": "sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pathe": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", + "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", + "dev": true, + "license": "MIT" + }, + "node_modules/pathval": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", + "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 14.16" + } + }, + "node_modules/peek-stream": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/peek-stream/-/peek-stream-1.1.3.tgz", + "integrity": "sha512-FhJ+YbOSBb9/rIl2ZeE/QHEsWn7PqNYt8ARAY3kIgNGOk13g9FGyIY6JIl/xB/3TFRVoTv5as0l11weORrTekA==", + "dev": true, + "license": "MIT", + "dependencies": { + "buffer-from": "^1.0.0", + "duplexify": "^3.5.0", + "through2": "^2.0.3" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "dev": true + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true, + "license": "ISC" + }, + "node_modules/picomatch": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", + "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pidtree": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.6.0.tgz", + "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", + "dev": true, + "bin": { + "pidtree": "bin/pidtree.js" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/playwright": { + "version": "1.56.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.56.1.tgz", + "integrity": "sha512-aFi5B0WovBHTEvpM3DzXTUaeN6eN0qWnTkKx4NQaH4Wvcmc153PdaY2UBdSYKaGYw+UyWXSVyxDUg5DoPEttjw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "playwright-core": "1.56.1" + }, + "bin": { + "playwright": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "fsevents": "2.3.2" + } + }, + "node_modules/playwright-core": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.54.0.tgz", + "integrity": "sha512-uiWpWaJh3R3etpJ0QrpligEMl62Dk1iSAB6NUXylvmQz+e3eipXHDHvOvydDAssb5Oqo0E818qdn0L9GcJSTyA==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/playwright/node_modules/fsevents": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", + "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/playwright/node_modules/playwright-core": { + "version": "1.56.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.56.1.tgz", + "integrity": "sha512-hutraynyn31F+Bifme+Ps9Vq59hKuUCz7H1kDOcBs+2oGguKkWTU50bBWrtz34OUWmIwpBTWDxaRPXrIXkgvmQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "playwright-core": "cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/pluralize": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/pluralize/-/pluralize-8.0.0.tgz", + "integrity": "sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz", + "integrity": "sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.6.tgz", + "integrity": "sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.11", + "picocolors": "^1.1.1", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prebuild-install": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.1.tgz", + "integrity": "sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==", + "dev": true, + "dependencies": { + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prettier": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.6.2.tgz", + "integrity": "sha512-I7AIg5boAr5R0FFtJ6rCfD+LFsWHp81dolrFD8S79U9tb8Az2nGrJncnMSnys+bpQJfRUzqs9hnA81OAA3hCuQ==", + "dev": true, + "license": "MIT", + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "err-code": "^2.0.2", + "retry": "^0.12.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "dev": true + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + } + }, + "node_modules/pumpify/node_modules/pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/punycode.js": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode.js/-/punycode.js-2.3.1.tgz", + "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc-config-loader": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/rc-config-loader/-/rc-config-loader-4.1.3.tgz", + "integrity": "sha512-kD7FqML7l800i6pS6pvLyIE2ncbk9Du8Q0gp/4hMPhJU6ZxApkoLcGD8ZeqgiAlfwZ6BlETq6qqe+12DUL207w==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4", + "js-yaml": "^4.1.0", + "json5": "^2.2.2", + "require-from-string": "^2.0.2" + } + }, + "node_modules/rc-config-loader/node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react/-/react-17.0.2.tgz", + "integrity": "sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==", + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "17.0.2", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-17.0.2.tgz", + "integrity": "sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1", + "scheduler": "^0.20.2" + }, + "peerDependencies": { + "react": "17.0.2" + } + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true, + "license": "MIT" + }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, + "node_modules/read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", + "dev": true, + "dependencies": { + "mute-stream": "~0.0.4" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "dev": true, + "dependencies": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/read-pkg/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dev": true, + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz", + "integrity": "sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.7", + "get-proto": "^1.0.1", + "which-builtin-type": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz", + "integrity": "sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-in-the-middle": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/require-in-the-middle/-/require-in-the-middle-7.2.0.tgz", + "integrity": "sha512-3TLx5TGyAY6AOqLBoXmHkNql0HIf2RGbuMgCDT2WO/uGVAPJs6h7Kl+bN6TIZGd9bWhWPwnDnTHGtW8Iu77sdw==", + "dependencies": { + "debug": "^4.1.1", + "module-details-from-path": "^1.0.3", + "resolve": "^1.22.1" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/resolve": { + "version": "1.22.6", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.6.tgz", + "integrity": "sha512-njhxM7mV12JfufShqGy3Rz8j11RPdLy4xi15UurGJeoHLfJpVXKdh3ueuOqbYUcDZnffr6X739JBo5LzyahEsw==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-path": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/resolve-path/-/resolve-path-1.4.0.tgz", + "integrity": "sha512-i1xevIst/Qa+nA9olDxLWnLk8YZbi8R/7JPbCMcgyWaFR6bKWaexgJgEB5oc2PKMjYdrHynyz0NY+if+H98t1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "http-errors": "~1.6.2", + "path-is-absolute": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/resolve-path/node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/resolve-path/node_modules/http-errors": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", + "dev": true, + "license": "MIT", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.3", + "setprototypeof": "1.1.0", + "statuses": ">= 1.4.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/resolve-path/node_modules/inherits": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true, + "license": "ISC" + }, + "node_modules/resolve-path/node_modules/setprototypeof": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/resolve-path/node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "dev": true, + "dependencies": { + "lowercase-keys": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", + "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", + "dev": true, + "license": "MIT", + "dependencies": { + "onetime": "^7.0.0", + "signal-exit": "^4.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rfdc": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", + "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/rimraf": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-6.0.1.tgz", + "integrity": "sha512-9dkvaxAsk/xNXSJzMgFqqMCuFgt2+KsOFek3TMLfo8NCPfWpBmqwyNn5Y+NX56QUYfCtsyhF3ayiboEoUmJk/A==", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^11.0.0", + "package-json-from-dist": "^1.0.0" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/roarr": { + "version": "2.15.4", + "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", + "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", + "dev": true, + "optional": true, + "dependencies": { + "boolean": "^3.0.1", + "detect-node": "^2.0.4", + "globalthis": "^1.0.1", + "json-stringify-safe": "^5.0.1", + "semver-compare": "^1.0.0", + "sprintf-js": "^1.1.2" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/rollup": { + "version": "4.52.5", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.52.5.tgz", + "integrity": "sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.8" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.52.5", + "@rollup/rollup-android-arm64": "4.52.5", + "@rollup/rollup-darwin-arm64": "4.52.5", + "@rollup/rollup-darwin-x64": "4.52.5", + "@rollup/rollup-freebsd-arm64": "4.52.5", + "@rollup/rollup-freebsd-x64": "4.52.5", + "@rollup/rollup-linux-arm-gnueabihf": "4.52.5", + "@rollup/rollup-linux-arm-musleabihf": "4.52.5", + "@rollup/rollup-linux-arm64-gnu": "4.52.5", + "@rollup/rollup-linux-arm64-musl": "4.52.5", + "@rollup/rollup-linux-loong64-gnu": "4.52.5", + "@rollup/rollup-linux-ppc64-gnu": "4.52.5", + "@rollup/rollup-linux-riscv64-gnu": "4.52.5", + "@rollup/rollup-linux-riscv64-musl": "4.52.5", + "@rollup/rollup-linux-s390x-gnu": "4.52.5", + "@rollup/rollup-linux-x64-gnu": "4.52.5", + "@rollup/rollup-linux-x64-musl": "4.52.5", + "@rollup/rollup-openharmony-arm64": "4.52.5", + "@rollup/rollup-win32-arm64-msvc": "4.52.5", + "@rollup/rollup-win32-ia32-msvc": "4.52.5", + "@rollup/rollup-win32-x64-gnu": "4.52.5", + "@rollup/rollup-win32-x64-msvc": "4.52.5", + "fsevents": "~2.3.2" + } + }, + "node_modules/rtl-css-js": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/rtl-css-js/-/rtl-css-js-1.16.1.tgz", + "integrity": "sha512-lRQgou1mu19e+Ya0LsTvKrVJ5TYUbqCVPAiImX3UfLTenarvPUl1QFdvu5Z3PYmHT9RCcwIfbjRQBntExyj3Zg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.1.2" + } + }, + "node_modules/run-applescript": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", + "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/run-script-os": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/run-script-os/-/run-script-os-1.1.6.tgz", + "integrity": "sha512-ql6P2LzhBTTDfzKts+Qo4H94VUKpxKDFz6QxxwaUZN0mwvi7L3lpOI7BqPCq7lgDh3XLl0dpeXwfcVIitlrYrw==", + "dev": true, + "bin": { + "run-os": "index.js", + "run-script-os": "index.js" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.3.tgz", + "integrity": "sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "get-intrinsic": "^1.2.6", + "has-symbols": "^1.1.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-array-concat/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/safe-push-apply": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", + "integrity": "sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-push-apply/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/safe-regex-test": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.1.0.tgz", + "integrity": "sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "is-regex": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", + "dev": true + }, + "node_modules/scheduler": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.20.2.tgz", + "integrity": "sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==", + "dev": true, + "dependencies": { + "loose-envify": "^1.1.0", + "object-assign": "^4.1.1" + } + }, + "node_modules/secretlint": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/secretlint/-/secretlint-10.1.1.tgz", + "integrity": "sha512-q50i+I9w6HH8P6o34LVq6M3hm5GZn2Eq5lYGHkEByOAbVqBHn8gsMGgyxjP1xSrSv1QjDtjxs/zKPm6JtkNzGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@secretlint/config-creator": "^10.1.1", + "@secretlint/formatter": "^10.1.1", + "@secretlint/node": "^10.1.1", + "@secretlint/profiler": "^10.1.1", + "debug": "^4.4.1", + "globby": "^14.1.0", + "read-pkg": "^8.1.0" + }, + "bin": { + "secretlint": "bin/secretlint.js" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/secretlint/node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dev": true, + "license": "ISC", + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/secretlint/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/secretlint/node_modules/normalize-package-data": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", + "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "hosted-git-info": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/secretlint/node_modules/read-pkg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", + "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^6.0.0", + "parse-json": "^7.0.0", + "type-fest": "^4.2.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/secretlint/node_modules/type-fest": { + "version": "4.41.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.41.0.tgz", + "integrity": "sha512-TeTSQ6H5YHvpqVwBRcnLDCBnDOHWYu7IvGbHT6N8AOymcr9PJGjc1GTtiWZTYg0NCgYwvnYWEkVChQAr9bjfwA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", + "dev": true, + "optional": true + }, + "node_modules/serialize-error": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", + "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", + "dev": true, + "optional": true, + "dependencies": { + "type-fest": "^0.13.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serialize-error/node_modules/type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-proto": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/set-proto/-/set-proto-1.0.0.tgz", + "integrity": "sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/setimmediate": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==", + "dev": true + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "dev": true, + "license": "ISC" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/shiki": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.15.2.tgz", + "integrity": "sha512-M+7QZQZiZw/cZeizrC/yryG3eeG8pTUhu7ZaHxVyzPNFIRIlN46YBciquoNPCiXiwLnx6JB62f3lSuSYQrus1w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@shikijs/core": "1.15.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/shimmer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/shimmer/-/shimmer-1.2.1.tgz", + "integrity": "sha512-sQTKC1Re/rM6XyFM6fIAGHRPVGvyXfgzIDvzoq608vM+jeyVD0Tu1E6Np0Kc2zAIFWIj963V2800iF/9LPieQw==" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/siginfo": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", + "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", + "dev": true, + "license": "ISC" + }, + "node_modules/sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha512-fCvEXfh6NWpm+YSuY2bpXb/VIihqWA6hLsgboC+0nl71Q7N7o2eaCW8mJa/NLvQhs6jpd3VZV4UiUQlV6+lc8g==", + "dev": true + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/simple-concat": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", + "integrity": "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/simple-get": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/simple-get/-/simple-get-4.0.1.tgz", + "integrity": "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "decompress-response": "^6.0.0", + "once": "^1.3.1", + "simple-concat": "^1.0.0" + } + }, + "node_modules/sinon": { + "version": "21.0.0", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-21.0.0.tgz", + "integrity": "sha512-TOgRcwFPbfGtpqvZw+hyqJDvqfapr1qUlOizROIk4bBLjlsjlB00Pg6wMFXNtJRpu+eCZuVOaLatG7M8105kAw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "@sinonjs/commons": "^3.0.1", + "@sinonjs/fake-timers": "^13.0.5", + "@sinonjs/samsam": "^8.0.1", + "diff": "^7.0.0", + "supports-color": "^7.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" + } + }, + "node_modules/sinon/node_modules/diff": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", + "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/slice-ansi": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", + "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.0.0", + "is-fullwidth-code-point": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/slice-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.4", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.4.tgz", + "integrity": "sha512-D3YaD0aRxR3mEcqnidIs7ReYJFVzWdd6fXJYUM8ixcQcJRGTka/b3saV0KflYhyVJXKhb947GndU35SxYNResQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.5", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.5.tgz", + "integrity": "sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "agent-base": "^7.1.2", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.16", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "dev": true + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true, + "optional": true + }, + "node_modules/sqlite3": { + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.1.7.tgz", + "integrity": "sha512-GGIyOiFaG+TUra3JIfkI/zGP8yZYLPQ0pl1bH+ODjiX57sPhrLU5sQJn1y9bDKZUFYkX1crlrPfSYt0BKKdkog==", + "dev": true, + "hasInstallScript": true, + "license": "BSD-3-Clause", + "dependencies": { + "bindings": "^1.5.0", + "node-addon-api": "^7.0.0", + "prebuild-install": "^7.1.1", + "tar": "^6.1.11" + }, + "optionalDependencies": { + "node-gyp": "8.x" + }, + "peerDependencies": { + "node-gyp": "8.x" + }, + "peerDependenciesMeta": { + "node-gyp": { + "optional": true + } + } + }, + "node_modules/sqlite3/node_modules/@npmcli/agent": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@npmcli/agent/-/agent-2.2.2.tgz", + "integrity": "sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "agent-base": "^7.1.0", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.1", + "lru-cache": "^10.0.1", + "socks-proxy-agent": "^8.0.3" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/sqlite3/node_modules/@npmcli/fs": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-3.1.1.tgz", + "integrity": "sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sqlite3/node_modules/abbrev": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-2.0.0.tgz", + "integrity": "sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==", + "dev": true, + "license": "ISC", + "optional": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sqlite3/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/sqlite3/node_modules/cacache": { + "version": "18.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-18.0.4.tgz", + "integrity": "sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "@npmcli/fs": "^3.1.0", + "fs-minipass": "^3.0.0", + "glob": "^10.2.2", + "lru-cache": "^10.0.1", + "minipass": "^7.0.3", + "minipass-collect": "^2.0.1", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "p-map": "^4.0.0", + "ssri": "^10.0.0", + "tar": "^6.1.11", + "unique-filename": "^3.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/sqlite3/node_modules/cacache/node_modules/fs-minipass": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-3.0.3.tgz", + "integrity": "sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sqlite3/node_modules/cacache/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "optional": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sqlite3/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sqlite3/node_modules/glob/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "optional": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sqlite3/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "dev": true, + "license": "ISC", + "optional": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/sqlite3/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "optional": true, + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/sqlite3/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC", + "optional": true + }, + "node_modules/sqlite3/node_modules/make-fetch-happen": { + "version": "13.0.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-13.0.1.tgz", + "integrity": "sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "@npmcli/agent": "^2.0.0", + "cacache": "^18.0.0", + "http-cache-semantics": "^4.1.1", + "is-lambda": "^1.0.1", + "minipass": "^7.0.2", + "minipass-fetch": "^3.0.0", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.3", + "proc-log": "^4.2.0", + "promise-retry": "^2.0.1", + "ssri": "^10.0.0" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/sqlite3/node_modules/make-fetch-happen/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "optional": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sqlite3/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sqlite3/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=8" + } + }, + "node_modules/sqlite3/node_modules/minipass-fetch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-3.0.5.tgz", + "integrity": "sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "minipass": "^7.0.3", + "minipass-sized": "^1.0.3", + "minizlib": "^2.1.2" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + }, + "optionalDependencies": { + "encoding": "^0.1.13" + } + }, + "node_modules/sqlite3/node_modules/minipass-fetch/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "optional": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sqlite3/node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "dev": true, + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/sqlite3/node_modules/node-addon-api": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", + "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/sqlite3/node_modules/node-gyp": { + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-10.3.1.tgz", + "integrity": "sha512-Pp3nFHBThHzVtNY7U6JfPjvT/DTE8+o/4xKsLQtBoU+j2HLsGlhcfzflAoUreaJbNmYnX+LlLi0qjV8kpyO6xQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "env-paths": "^2.2.0", + "exponential-backoff": "^3.1.1", + "glob": "^10.3.10", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^13.0.0", + "nopt": "^7.0.0", + "proc-log": "^4.1.0", + "semver": "^7.3.5", + "tar": "^6.2.1", + "which": "^4.0.0" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/sqlite3/node_modules/nopt": { + "version": "7.2.1", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-7.2.1.tgz", + "integrity": "sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "abbrev": "^2.0.0" + }, + "bin": { + "nopt": "bin/nopt.js" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sqlite3/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "license": "MIT", + "optional": true, + "dependencies": { + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/sqlite3/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "optional": true, + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sqlite3/node_modules/proc-log": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/proc-log/-/proc-log-4.2.0.tgz", + "integrity": "sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==", + "dev": true, + "license": "ISC", + "optional": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sqlite3/node_modules/ssri": { + "version": "10.0.6", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-10.0.6.tgz", + "integrity": "sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^7.0.3" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sqlite3/node_modules/ssri/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "optional": true, + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sqlite3/node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dev": true, + "license": "ISC", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sqlite3/node_modules/unique-filename": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-3.0.0.tgz", + "integrity": "sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "unique-slug": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sqlite3/node_modules/unique-slug": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-4.0.0.tgz", + "integrity": "sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "imurmurhash": "^0.1.4" + }, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/sqlite3/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dev": true, + "license": "ISC", + "optional": true, + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/stable-hash-x": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/stable-hash-x/-/stable-hash-x-0.2.0.tgz", + "integrity": "sha512-o3yWv49B/o4QZk5ZcsALc6t0+eCelPc44zZsLtCQnZPDwFpDYSWcDnrv2TtMmMbQ7uKo3J0HTURCqckw23czNQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/stack-chain": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/stack-chain/-/stack-chain-1.3.7.tgz", + "integrity": "sha512-D8cWtWVdIe/jBA7v5p5Hwl5yOSOrmZPWDPe2KxQ5UAGD+nxbxU0lKXA4h85Ta6+qgdKVL3vUxsbIZjc1kBG7ug==" + }, + "node_modules/stackback": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", + "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", + "dev": true, + "license": "MIT" + }, + "node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/std-env": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.9.0.tgz", + "integrity": "sha512-UGvjygr6F6tpH7o2qyqR6QYpwraIjKSdtzyBdyytFOHmPZY917kwdwLG0RbOjWOnKmnm3PeHjaoLLMie7kPLQw==", + "dev": true, + "license": "MIT" + }, + "node_modules/stdin-discarder": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", + "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz", + "integrity": "sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "internal-slot": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/stream-shift": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.3.tgz", + "integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/streamx": { + "version": "2.22.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.1.tgz", + "integrity": "sha512-znKXEBxfatz2GBNK02kRnCXjV+AA4kjZIUxeWSr3UGirZMJfTE9uiwKHobnbgxWyL/JWro8tTq+vOqAK1/qbSA==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-fifo": "^1.3.2", + "text-decoder": "^1.1.0" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" + } + }, + "node_modules/string_decoder": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.2.0.tgz", + "integrity": "sha512-6YqyX6ZWEYguAxgZzHGL7SsCeGx3V2TtOTqZz1xSTSWnqsbWwbptafNyvf/ACquZUXV3DANr5BDIwNYe1mN42w==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string-argv": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", + "dev": true, + "engines": { + "node": ">=0.6.19" + } + }, + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/string.prototype.padend": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.5.tgz", + "integrity": "sha512-DOB27b/2UTTD+4myKUFh+/fXWcu/UDyASIXfg+7VzoCNNGOfWvoyU/x5pvVHr++ztyt/oSYI1BcWBBG/hmlNjA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", + "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-object-atoms": "^1.0.0", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", + "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "call-bound": "^1.0.2", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-literal": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.0.0.tgz", + "integrity": "sha512-TcccoMhJOM3OebGhSBEmp3UZ2SfDMZUEBdRA/9ynfLi8yYajyWX3JiXArcJt4Umh4vISpspkQIY8ZZoCqjbviA==", + "dev": true, + "license": "MIT", + "dependencies": { + "js-tokens": "^9.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/antfu" + } + }, + "node_modules/strip-literal/node_modules/js-tokens": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", + "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/structured-source": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/structured-source/-/structured-source-4.0.0.tgz", + "integrity": "sha512-qGzRFNJDjFieQkl/sVOI2dUjHKRyL9dAJi2gCPGJLbJHBIkyOHxjuocpIEfbLioX+qSJpvbYdT49/YCdMznKxA==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "boundary": "^2.0.0" + } + }, + "node_modules/stylis": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", + "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/sumchecker": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", + "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", + "dev": true, + "dependencies": { + "debug": "^4.1.0" + }, + "engines": { + "node": ">= 8.0" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-hyperlinks": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", + "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0", + "supports-color": "^7.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tabbable": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-5.3.3.tgz", + "integrity": "sha512-QD9qKY3StfbZqWOPLp0++pOrAVb/HbUi5xCc8cUo4XjP19808oaMiDzn0leBY5mCespIBM0CIZePzZjgzR83kA==", + "license": "MIT" + }, + "node_modules/table": { + "version": "6.9.0", + "resolved": "https://registry.npmjs.org/table/-/table-6.9.0.tgz", + "integrity": "sha512-9kY+CygyYM6j02t5YFHbNz2FN5QmYGv9zAjVp4lCDjlCw7amdckXlEt/bjMhUIfj4ThGRE4gCUH5+yGnNuPo5A==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/table/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/table/node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/table/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/tabster": { + "version": "8.5.6", + "resolved": "https://registry.npmjs.org/tabster/-/tabster-8.5.6.tgz", + "integrity": "sha512-2vfrRGrx8O9BjdrtSlVA5fvpmbq5HQBRN13XFRg6LAvZ1Fr3QdBnswgT4YgFS5Bhoo5nxwgjRaRueI2Us/dv7g==", + "dev": true, + "license": "MIT", + "dependencies": { + "keyborg": "2.6.0", + "tslib": "^2.8.1" + }, + "optionalDependencies": { + "@rollup/rollup-linux-x64-gnu": "4.40.0" + } + }, + "node_modules/tabster/node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.40.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.40.0.tgz", + "integrity": "sha512-RcDGMtqF9EFN8i2RYN2W+64CdHruJ5rPqrlYw+cgM3uOVPSsnAQps7cpjXe9be/yDp8UC7VLoCoKC8J3Kn2FkQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", + "dev": true, + "license": "ISC", + "dependencies": { + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/tar-fs": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.4.tgz", + "integrity": "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "chownr": "^1.1.1", + "mkdirp-classic": "^0.5.2", + "pump": "^3.0.0", + "tar-stream": "^2.1.4" + } + }, + "node_modules/tar-fs/node_modules/chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "node_modules/tar-stream": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz", + "integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==", + "dev": true, + "dependencies": { + "bl": "^4.0.3", + "end-of-stream": "^1.4.1", + "fs-constants": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.1.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/tar-stream/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/tar/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/tar/node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/tar/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tar/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/tar/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/tar/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tar/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/tar/node_modules/minizlib": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.1.tgz", + "integrity": "sha512-umcy022ILvb5/3Djuu8LWeqUa8D68JaBzlttKeMWen48SjabqS3iY5w/vzeMzMUNhLDifyhbOwKDSznB1vvrwg==", + "dev": true, + "license": "MIT", + "dependencies": { + "minipass": "^7.0.4", + "rimraf": "^5.0.5" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/tar/node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "dev": true, + "license": "MIT", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tar/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tar/node_modules/rimraf": { + "version": "5.0.10", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", + "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "glob": "^10.3.7" + }, + "bin": { + "rimraf": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/tar/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, + "node_modules/tas-client": { + "version": "0.2.33", + "resolved": "https://registry.npmjs.org/tas-client/-/tas-client-0.2.33.tgz", + "integrity": "sha512-V+uqV66BOQnWxvI6HjDnE4VkInmYZUQ4dgB7gzaDyFyFSK1i1nF/j7DpS9UbQAgV9NaF1XpcyuavnM1qOeiEIg==" + }, + "node_modules/terminal-link": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", + "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-escapes": "^4.2.1", + "supports-hyperlinks": "^2.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terminal-link/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/terminal-link/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/test-exclude": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-7.0.1.tgz", + "integrity": "sha512-pFYqmTw68LXVjeWJMST4+borgQP2AyMNbg1BpZh9LbyhUeNkeaPF9gzfPGUAnSMV3qPYdWUwDIjjCLiSDOl7vg==", + "dev": true, + "license": "ISC", + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^10.4.1", + "minimatch": "^9.0.4" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.2.tgz", + "integrity": "sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/test-exclude/node_modules/glob": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "dev": true, + "license": "ISC", + "dependencies": { + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/test-exclude/node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, + "node_modules/test-exclude/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/test-exclude/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/test-exclude/node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/text-decoder": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", + "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "b4a": "^1.6.4" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/textextensions": { + "version": "6.11.0", + "resolved": "https://registry.npmjs.org/textextensions/-/textextensions-6.11.0.tgz", + "integrity": "sha512-tXJwSr9355kFJI3lbCkPpUH5cP8/M0GGy2xLO34aZCjMXBaK3SoPnZwr/oWmo1FdCnELcs4npdCIOFtq9W3ruQ==", + "dev": true, + "license": "Artistic-2.0", + "dependencies": { + "editions": "^6.21.0" + }, + "engines": { + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "node_modules/tinybench": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", + "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyexec": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", + "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/tinyglobby": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.14.tgz", + "integrity": "sha512-tX5e7OM1HnYr2+a2C/4V0htOcSQcoSTH9KgJnVvNm5zm/cyEWKJ7j7YutsH9CxMdtOkkLFy2AHrMci9IM8IPZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.4.4", + "picomatch": "^4.0.2" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/tinypool": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", + "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/tinyrainbow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", + "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tinyspy": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.3.tgz", + "integrity": "sha512-t2T/WLB2WRgZ9EpE4jgPJ9w+i66UZfDc8wHh0xrwiRNN+UwH98GIJkTeZqX9rg0i0ptwzqW+uYeIF0T4F8LR7A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/tmp": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.4.tgz", + "integrity": "sha512-UdiSoX6ypifLmrfQ/XfiawN6hkjSBpCjhKxxZcWlUUmoXLaCKQU0bx4HF/tdDK2uzRuchf1txGvrWBzYREssoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.14" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/ts-algebra": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ts-algebra/-/ts-algebra-2.0.0.tgz", + "integrity": "sha512-FPAhNPFMrkwz76P7cdjdmiShwMynZYN6SgOujD1urY4oNm80Ou9oMdmbR45LotcKOXoy7wSmHkRFE6Mxbrhefw==", + "license": "MIT" + }, + "node_modules/ts-api-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.1.0.tgz", + "integrity": "sha512-CUgTZL1irw8u29bzrOD/nH85jqyc74D6SshFgujOIA7osm2Rz7dYH77agkx7H4FBNxDq7Cjf+IjaX/8zwFW+ZQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18.12" + }, + "peerDependencies": { + "typescript": ">=4.8.4" + } + }, + "node_modules/ts-dedent": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", + "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", + "dev": true, + "engines": { + "node": ">=6.10" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tsscmp": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", + "integrity": "sha512-LxhtAkPDTkVCMQjt2h6eBVY28KCjikZqZfMcC15YBeNjkgUpdCfBu5HoiOTDu86v6smE8yOjyEktJ8hlbANHQA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.x" + } + }, + "node_modules/tsx": { + "version": "4.20.3", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.20.3.tgz", + "integrity": "sha512-qjbnuR9Tr+FJOMBqJCW5ehvIo/buZq7vH7qD7JziU98h6l3qGy0a/yPFjwO+y0/T7GFpNgNAvEcPPVfyT8rrPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "~0.25.0", + "get-tsconfig": "^4.7.5" + }, + "bin": { + "tsx": "dist/cli.mjs" + }, + "engines": { + "node": ">=18.0.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + } + }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, + "node_modules/tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==", + "dev": true, + "dependencies": { + "safe-buffer": "^5.0.1" + }, + "engines": { + "node": "*" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "dev": true, + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "dev": true, + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz", + "integrity": "sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz", + "integrity": "sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz", + "integrity": "sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "for-each": "^0.3.3", + "gopd": "^1.2.0", + "has-proto": "^1.2.0", + "is-typed-array": "^1.1.15", + "reflect.getprototypeof": "^1.0.9" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.7.tgz", + "integrity": "sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0", + "reflect.getprototypeof": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-rest-client": { + "version": "1.8.11", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz", + "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "qs": "^6.9.1", + "tunnel": "0.0.6", + "underscore": "^1.12.1" + } + }, + "node_modules/typescript": { + "version": "5.8.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", + "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typescript-eslint": { + "version": "8.36.0", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.36.0.tgz", + "integrity": "sha512-fTCqxthY+h9QbEgSIBfL9iV6CvKDFuoxg6bHPNpJ9HIUzS+jy2lCEyCmGyZRWEBSaykqcDPf1SJ+BfCI8DRopA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@typescript-eslint/eslint-plugin": "8.36.0", + "@typescript-eslint/parser": "8.36.0", + "@typescript-eslint/utils": "8.36.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.57.0 || ^9.0.0", + "typescript": ">=4.8.4 <5.9.0" + } + }, + "node_modules/typescript-formatter": { + "version": "7.2.2", + "resolved": "git+ssh://git@github.com/jrieken/typescript-formatter.git#497efb26bc40b5fa59a350e6eab17bce650a7e4b", + "integrity": "sha512-/yCrq503wFMjRYdBVEa1JO3h5J9uXu8pQVyQp8YHQesxWxk74GltWsv9bhyR+fJdaziiVnOXtTG3+vQ2+r2yyQ==", + "dev": true, + "dependencies": { + "commandpost": "^1.0.0", + "editorconfig": "^0.15.0" + }, + "bin": { + "tsfmt": "bin/tsfmt" + }, + "engines": { + "node": ">= 4.2.0" + } + }, + "node_modules/uc.micro": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.1.0.tgz", + "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==", + "license": "MIT" + }, + "node_modules/unbox-primitive": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", + "integrity": "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.3", + "has-bigints": "^1.0.2", + "has-symbols": "^1.1.0", + "which-boxed-primitive": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/underscore": { + "version": "1.13.7", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", + "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", + "dev": true, + "license": "MIT" + }, + "node_modules/undici": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-7.11.0.tgz", + "integrity": "sha512-heTSIac3iLhsmZhUCjyS3JQEkZELateufzZuBaVM5RHXdSBMb1LPMQf5x+FH7qjsZYDP0ttAc3nnVpUB+wYbOg==", + "license": "MIT", + "engines": { + "node": ">=20.18.1" + } + }, + "node_modules/undici-types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/unicorn-magic": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", + "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true, + "engines": { + "node": ">= 4.0.0" + } + }, + "node_modules/unrs-resolver": { + "version": "1.9.2", + "resolved": "https://registry.npmjs.org/unrs-resolver/-/unrs-resolver-1.9.2.tgz", + "integrity": "sha512-VUyWiTNQD7itdiMuJy+EuLEErLj3uwX/EpHQF8EOf33Dq3Ju6VW1GXm+swk6+1h7a49uv9fKZ+dft9jU7esdLA==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "dependencies": { + "napi-postinstall": "^0.2.4" + }, + "funding": { + "url": "https://opencollective.com/unrs-resolver" + }, + "optionalDependencies": { + "@unrs/resolver-binding-android-arm-eabi": "1.9.2", + "@unrs/resolver-binding-android-arm64": "1.9.2", + "@unrs/resolver-binding-darwin-arm64": "1.9.2", + "@unrs/resolver-binding-darwin-x64": "1.9.2", + "@unrs/resolver-binding-freebsd-x64": "1.9.2", + "@unrs/resolver-binding-linux-arm-gnueabihf": "1.9.2", + "@unrs/resolver-binding-linux-arm-musleabihf": "1.9.2", + "@unrs/resolver-binding-linux-arm64-gnu": "1.9.2", + "@unrs/resolver-binding-linux-arm64-musl": "1.9.2", + "@unrs/resolver-binding-linux-ppc64-gnu": "1.9.2", + "@unrs/resolver-binding-linux-riscv64-gnu": "1.9.2", + "@unrs/resolver-binding-linux-riscv64-musl": "1.9.2", + "@unrs/resolver-binding-linux-s390x-gnu": "1.9.2", + "@unrs/resolver-binding-linux-x64-gnu": "1.9.2", + "@unrs/resolver-binding-linux-x64-musl": "1.9.2", + "@unrs/resolver-binding-wasm32-wasi": "1.9.2", + "@unrs/resolver-binding-win32-arm64-msvc": "1.9.2", + "@unrs/resolver-binding-win32-ia32-msvc": "1.9.2", + "@unrs/resolver-binding-win32-x64-msvc": "1.9.2" + } + }, + "node_modules/untildify": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/untildify/-/untildify-4.0.0.tgz", + "integrity": "sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/url-join": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", + "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "dev": true + }, + "node_modules/use-disposable": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/use-disposable/-/use-disposable-1.0.4.tgz", + "integrity": "sha512-j83t6AMLWUyb5zwlTDqf6dP9LezM9R0yTbI/b6olmdaGtCKQUe9pgJWV6dRaaQLcozypjIEp4EmZr2DkZGKLSg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "@types/react": ">=16.8.0 <19.0.0", + "@types/react-dom": ">=16.8.0 <19.0.0", + "react": ">=16.8.0 <19.0.0", + "react-dom": ">=16.8.0 <19.0.0" + } + }, + "node_modules/use-sync-external-store": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.4.0.tgz", + "integrity": "sha512-9WXSPC5fMv61vaupRkCKCxsPxBocVnwakBEkMIHHpkTTg6icbJtg6jzgtLDm4bl3cSHAca52rYWih0k4K3PfHw==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "dependencies": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/version-range": { + "version": "4.14.0", + "resolved": "https://registry.npmjs.org/version-range/-/version-range-4.14.0.tgz", + "integrity": "sha512-gjb0ARm9qlcBAonU4zPwkl9ecKkas+tC2CGwFfptTCWWIVTWY1YUbT2zZKsOAF1jR/tNxxyLwwG0cb42XlYcTg==", + "dev": true, + "license": "Artistic-2.0", + "engines": { + "node": ">=4" + }, + "funding": { + "url": "https://bevry.me/fund" + } + }, + "node_modules/vite": { + "version": "7.1.12", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.1.12.tgz", + "integrity": "sha512-ZWyE8YXEXqJrrSLvYgrRP7p62OziLW7xI5HYGWFzOvupfAlrLvURSzv/FyGyy0eidogEM3ujU+kUG1zuHgb6Ug==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.25.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^20.19.0 || >=22.12.0", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.0", + "sass": "^1.70.0", + "sass-embedded": "^1.70.0", + "stylus": ">=0.54.8", + "sugarss": "^5.0.0", + "terser": "^5.16.0", + "tsx": "^4.8.1", + "yaml": "^2.4.2" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + }, + "tsx": { + "optional": true + }, + "yaml": { + "optional": true + } + } + }, + "node_modules/vite-node": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", + "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", + "dev": true, + "license": "MIT", + "dependencies": { + "cac": "^6.7.14", + "debug": "^4.4.1", + "es-module-lexer": "^1.7.0", + "pathe": "^2.0.3", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" + }, + "bin": { + "vite-node": "vite-node.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vite-plugin-top-level-await": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/vite-plugin-top-level-await/-/vite-plugin-top-level-await-1.5.0.tgz", + "integrity": "sha512-r/DtuvHrSqUVk23XpG2cl8gjt1aATMG5cjExXL1BUTcSNab6CzkcPua9BPEc9fuTP5UpwClCxUe3+dNGL0yrgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@rollup/plugin-virtual": "^3.0.2", + "@swc/core": "^1.10.16", + "uuid": "^10.0.0" + }, + "peerDependencies": { + "vite": ">=2.8" + } + }, + "node_modules/vite-plugin-top-level-await/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "dev": true, + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/vite-plugin-wasm": { + "version": "3.5.0", + "resolved": "https://registry.npmjs.org/vite-plugin-wasm/-/vite-plugin-wasm-3.5.0.tgz", + "integrity": "sha512-X5VWgCnqiQEGb+omhlBVsvTfxikKtoOgAzQ95+BZ8gQ+VfMHIjSHr0wyvXFQCa0eKQ0fKyaL0kWcEnYqBac4lQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "vite": "^2 || ^3 || ^4 || ^5 || ^6 || ^7" + } + }, + "node_modules/vite/node_modules/tinyglobby": { + "version": "0.2.15", + "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.15.tgz", + "integrity": "sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "fdir": "^6.5.0", + "picomatch": "^4.0.3" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/SuperchupuDev" + } + }, + "node_modules/vitest": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", + "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/chai": "^5.2.2", + "@vitest/expect": "3.2.4", + "@vitest/mocker": "3.2.4", + "@vitest/pretty-format": "^3.2.4", + "@vitest/runner": "3.2.4", + "@vitest/snapshot": "3.2.4", + "@vitest/spy": "3.2.4", + "@vitest/utils": "3.2.4", + "chai": "^5.2.0", + "debug": "^4.4.1", + "expect-type": "^1.2.1", + "magic-string": "^0.30.17", + "pathe": "^2.0.3", + "picomatch": "^4.0.2", + "std-env": "^3.9.0", + "tinybench": "^2.9.0", + "tinyexec": "^0.3.2", + "tinyglobby": "^0.2.14", + "tinypool": "^1.1.1", + "tinyrainbow": "^2.0.0", + "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", + "vite-node": "3.2.4", + "why-is-node-running": "^2.3.0" + }, + "bin": { + "vitest": "vitest.mjs" + }, + "engines": { + "node": "^18.0.0 || ^20.0.0 || >=22.0.0" + }, + "funding": { + "url": "https://opencollective.com/vitest" + }, + "peerDependencies": { + "@edge-runtime/vm": "*", + "@types/debug": "^4.1.12", + "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", + "@vitest/browser": "3.2.4", + "@vitest/ui": "3.2.4", + "happy-dom": "*", + "jsdom": "*" + }, + "peerDependenciesMeta": { + "@edge-runtime/vm": { + "optional": true + }, + "@types/debug": { + "optional": true + }, + "@types/node": { + "optional": true + }, + "@vitest/browser": { + "optional": true + }, + "@vitest/ui": { + "optional": true + }, + "happy-dom": { + "optional": true + }, + "jsdom": { + "optional": true + } + } + }, + "node_modules/vitest/node_modules/@vitest/snapshot": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", + "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@vitest/pretty-format": "3.2.4", + "magic-string": "^0.30.17", + "pathe": "^2.0.3" + }, + "funding": { + "url": "https://opencollective.com/vitest" + } + }, + "node_modules/vscode-jsonrpc": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", + "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/vscode-languageserver-protocol": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", + "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", + "dev": true, + "license": "MIT", + "dependencies": { + "vscode-jsonrpc": "8.2.0", + "vscode-languageserver-types": "3.17.5" + } + }, + "node_modules/vscode-languageserver-textdocument": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", + "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==", + "dev": true, + "license": "MIT" + }, + "node_modules/vscode-languageserver-types": { + "version": "3.17.5", + "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", + "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==", + "dev": true + }, + "node_modules/vscode-tas-client": { + "version": "0.1.84", + "resolved": "https://registry.npmjs.org/vscode-tas-client/-/vscode-tas-client-0.1.84.tgz", + "integrity": "sha512-rUTrUopV+70hvx1hW5ebdw1nd6djxubkLvVxjGdyD/r5v/wcVF41LIfiAtbm5qLZDtQdsMH1IaCuDoluoIa88w==", + "dependencies": { + "tas-client": "0.2.33" + }, + "engines": { + "vscode": "^1.85.0" + } + }, + "node_modules/vscode-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.1.0.tgz", + "integrity": "sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/web-tree-sitter": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/web-tree-sitter/-/web-tree-sitter-0.23.2.tgz", + "integrity": "sha512-BMZtm7sKtnmTGO7L4pcFOBidVlBxL+aUxm0O5yr3nKf5Fqz8RyvTOSjWFtqmzScyak/YFq9f5PSMRdhg2WXAJQ==", + "license": "MIT" + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz", + "integrity": "sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.1.0", + "is-boolean-object": "^1.2.1", + "is-number-object": "^1.1.1", + "is-string": "^1.1.1", + "is-symbol": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.2.1.tgz", + "integrity": "sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.1.0", + "is-finalizationregistry": "^1.1.0", + "is-generator-function": "^1.0.10", + "is-regex": "^1.2.1", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.1.0", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.16" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type/node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.19", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.19.tgz", + "integrity": "sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "for-each": "^0.3.5", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/why-is-node-running": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", + "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", + "dev": true, + "license": "MIT", + "dependencies": { + "siginfo": "^2.0.0", + "stackback": "0.0.2" + }, + "bin": { + "why-is-node-running": "cli.js" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/workerpool": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-9.3.2.tgz", + "integrity": "sha512-Xz4Nm9c+LiBHhDR5bDLnNzmj6+5F+cyEAWPMkbs2awq/dYazR/efelZzUAjB/y3kNHL+uzkHvxVVpaOfGCPV7A==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true, + "license": "MIT" + }, + "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/ws": { + "version": "8.18.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", + "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + }, + "node_modules/xml": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/xml/-/xml-1.0.1.tgz", + "integrity": "sha512-huCv9IH9Tcf95zuYCsQraZtWnJvBtLVE0QHMOs8bWyZAFZNDcYjsPq1nEx8jKA9y+Beo9v+7OBPRisQTjinQMw==", + "dev": true, + "license": "MIT" + }, + "node_modules/xml2js": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.5.0.tgz", + "integrity": "sha512-drPFnkQJik/O+uPKpqSgr22mpuFHqKdbS835iAQrUC73L2F5WkboIRd63ai/2Yg6I1jzifPFKH2NTK+cfglkIA==", + "dev": true, + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.4" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true + }, + "node_modules/yaml": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.0.tgz", + "integrity": "sha512-4lLa/EcQCB0cJkyts+FpIRx5G/llPxfP6VQU5KByHEhLxY3IJCH0f0Hy1MHI8sClTvsIb8qwRJ6R/ZdlDJ/leQ==", + "dev": true, + "license": "ISC", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14.6" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, + "dependencies": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/yargs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + }, + "node_modules/yazl": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/yazl/-/yazl-2.5.1.tgz", + "integrity": "sha512-phENi2PLiHnHb6QBVot+dJnaAZ0xosj7p3fWl+znIjBDlnMI2PsZCJZ306BPTFOaHf5qdDEI8x5qFrSOBN5vrw==", + "dev": true, + "dependencies": { + "buffer-crc32": "~0.2.3" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/zod": { + "version": "3.25.76", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.76.tgz", + "integrity": "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==", + "license": "MIT", + "peer": true, + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + } + } } diff --git a/src/extension/agents/vscode-node/organizationAndEnterpriseAgentContrib.ts b/src/extension/agents/vscode-node/organizationAndEnterpriseAgentContrib.ts index 7c69f6baad..21fdf2e1af 100644 --- a/src/extension/agents/vscode-node/organizationAndEnterpriseAgentContrib.ts +++ b/src/extension/agents/vscode-node/organizationAndEnterpriseAgentContrib.ts @@ -19,11 +19,11 @@ export class OrganizationAndEnterpriseAgentContribution extends Disposable imple ) { super(); - if ('registerContributionsProvider' in vscode.chat) { + if ('registerCustomAgentProvider' in vscode.chat) { // Only register the provider if the setting is enabled if (configurationService.getConfig(ConfigKey.ShowOrganizationAndEnterpriseAgents)) { const provider = instantiationService.createInstance(OrganizationAndEnterpriseAgentProvider); - this._register(vscode.chat.registerContributionsProvider(vscode.PromptsType.agent, provider)); + this._register(vscode.chat.registerCustomAgentProvider(provider)); } } } diff --git a/src/extension/agents/vscode-node/organizationAndEnterpriseAgentProvider.ts b/src/extension/agents/vscode-node/organizationAndEnterpriseAgentProvider.ts index ad82a6a49e..d40787efda 100644 --- a/src/extension/agents/vscode-node/organizationAndEnterpriseAgentProvider.ts +++ b/src/extension/agents/vscode-node/organizationAndEnterpriseAgentProvider.ts @@ -14,13 +14,13 @@ import { Disposable } from '../../../util/vs/base/common/lifecycle'; const AgentFileExtension = '.agent.md'; -export class OrganizationAndEnterpriseAgentProvider extends Disposable implements vscode.ChatContributionsProvider { +export class OrganizationAndEnterpriseAgentProvider extends Disposable implements vscode.CustomAgentProvider { - private readonly _onDidChangeContributions = this._register(new vscode.EventEmitter()); - readonly onDidChangeContributions = this._onDidChangeContributions.event; + private readonly _onDidChangeCustomAgents = this._register(new vscode.EventEmitter()); + readonly onDidChangeCustomAgents = this._onDidChangeCustomAgents.event; private isFetching = false; - private memoryCache: vscode.ChatContributionResource[] | undefined; + private memoryCache: vscode.CustomAgentResource[] | undefined; constructor( @IOctoKitService private readonly octoKitService: IOctoKitService, @@ -41,10 +41,10 @@ export class OrganizationAndEnterpriseAgentProvider extends Disposable implement return vscode.Uri.joinPath(this.extensionContext.globalStorageUri, 'githubAgentsCache'); } - async provideContributions( - _options: vscode.ChatContributionQueryOptions, + async provideCustomAgents( + _options: vscode.CustomAgentQueryOptions, _token: vscode.CancellationToken - ): Promise { + ): Promise { try { if (this.memoryCache !== undefined) { return this.memoryCache; @@ -58,7 +58,7 @@ export class OrganizationAndEnterpriseAgentProvider extends Disposable implement } } - private async readFromCache(): Promise { + private async readFromCache(): Promise { try { const cacheDir = this.getCacheDir(); if (!cacheDir) { @@ -66,7 +66,7 @@ export class OrganizationAndEnterpriseAgentProvider extends Disposable implement return []; } - const agents: vscode.ChatContributionResource[] = []; + const agents: vscode.CustomAgentResource[] = []; // Check if cache directory exists try { @@ -323,7 +323,7 @@ export class OrganizationAndEnterpriseAgentProvider extends Disposable implement } // Fire event to notify consumers that agents have changed - this._onDidChangeContributions.fire(); + this._onDidChangeCustomAgents.fire(); } finally { this.isFetching = false; } diff --git a/src/extension/agents/vscode-node/organizationInstructionsContrib.ts b/src/extension/agents/vscode-node/organizationInstructionsContrib.ts index 3b0b4f292e..d3b9bd3e76 100644 --- a/src/extension/agents/vscode-node/organizationInstructionsContrib.ts +++ b/src/extension/agents/vscode-node/organizationInstructionsContrib.ts @@ -19,11 +19,11 @@ export class OrganizationInstructionsContribution extends Disposable implements ) { super(); - if ('registerContributionsProvider' in vscode.chat) { + if ('registerInstructionsProvider' in vscode.chat) { // Only register the provider if the setting is enabled if (configurationService.getConfig(ConfigKey.UseOrganizationInstructions)) { const provider = instantiationService.createInstance(OrganizationInstructionsProvider); - this._register(vscode.chat.registerContributionsProvider(vscode.PromptsType.instructions, provider)); + this._register(vscode.chat.registerInstructionsProvider(provider)); } } } diff --git a/src/extension/agents/vscode-node/organizationInstructionsProvider.ts b/src/extension/agents/vscode-node/organizationInstructionsProvider.ts index 600b8c2398..deb5e7054f 100644 --- a/src/extension/agents/vscode-node/organizationInstructionsProvider.ts +++ b/src/extension/agents/vscode-node/organizationInstructionsProvider.ts @@ -15,10 +15,10 @@ import { getRepoId } from '../../chatSessions/vscode/copilotCodingAgentUtils'; const InstructionFileExtension = '.instruction.md'; -export class OrganizationInstructionsProvider extends Disposable implements vscode.ChatContributionsProvider { +export class OrganizationInstructionsProvider extends Disposable implements vscode.InstructionsProvider { - private readonly _onDidChangeContributions = this._register(new vscode.EventEmitter()); - readonly onDidChangeContributions = this._onDidChangeContributions.event; + private readonly _onDidChangeInstructions = this._register(new vscode.EventEmitter()); + readonly onDidChangeInstructions = this._onDidChangeInstructions.event; private isFetching = false; @@ -43,10 +43,10 @@ export class OrganizationInstructionsProvider extends Disposable implements vsco return orgLogin + InstructionFileExtension; } - async provideContributions( - options: vscode.ChatContributionQueryOptions, + async provideInstructions( + options: vscode.InstructionsQueryOptions, _token: vscode.CancellationToken - ): Promise { + ): Promise { try { // Get repository information from the active git repository const repoId = await getRepoId(this.gitService); @@ -67,14 +67,14 @@ export class OrganizationInstructionsProvider extends Disposable implements vsco return cachedInstructions; } catch (error) { - this.logService.error(`[OrganizationInstructionsProvider] Error in provideContributions: ${error}`); + this.logService.error(`[OrganizationInstructionsProvider] Error in provideInstructions: ${error}`); return []; } } private async readFromCache( orgLogin: string, - ): Promise { + ): Promise { try { const cacheDir = this.getCacheDir(); if (!cacheDir) { @@ -88,7 +88,7 @@ export class OrganizationInstructionsProvider extends Disposable implements vsco return []; } - const instructions: vscode.ChatContributionResource[] = []; + const instructions: vscode.InstructionsResource[] = []; const fileName = this.getCacheFilename(orgLogin); const fileUri = vscode.Uri.joinPath(cacheDir, fileName); instructions.push({ @@ -107,7 +107,7 @@ export class OrganizationInstructionsProvider extends Disposable implements vsco private async fetchAndUpdateCache( orgLogin: string, - options: vscode.ChatContributionQueryOptions + options: vscode.InstructionsQueryOptions ): Promise { // Prevent concurrent fetches if (this.isFetching) { @@ -154,7 +154,7 @@ export class OrganizationInstructionsProvider extends Disposable implements vsco this.logService.trace(`[OrganizationInstructionsProvider] Updated cache with instructions for org ${orgLogin}`); // Fire event to notify consumers that instructions have changed - this._onDidChangeContributions.fire(); + this._onDidChangeInstructions.fire(); } finally { this.isFetching = false; } diff --git a/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts b/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts index cdf810473a..69ac4f050e 100644 --- a/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts +++ b/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts @@ -129,7 +129,7 @@ suite('OrganizationAndEnterpriseAgentProvider', () => { mockOctoKitService.setUserOrganizations([]); const provider = createProvider(); - const agents = await provider.provideContributions({}, {} as any); + const agents = await provider.provideCustomAgents({}, {} as any); assert.deepEqual(agents, []); }); @@ -138,7 +138,7 @@ suite('OrganizationAndEnterpriseAgentProvider', () => { mockExtensionContext.globalStorageUri = undefined; const provider = createProvider(); - const agents = await provider.provideContributions({}, {} as any); + const agents = await provider.provideCustomAgents({}, {} as any); assert.deepEqual(agents, []); }); @@ -159,7 +159,7 @@ description: A test agent Test prompt content`; mockFileSystem.mockFile(agentFile, agentContent); - const agents = await provider.provideContributions({}, {} as any); + const agents = await provider.provideCustomAgents({}, {} as any); assert.equal(agents.length, 1); assert.equal(agents[0].name, 'test_agent'); @@ -190,20 +190,20 @@ Test prompt content`; mockOctoKitService.setAgentDetails('api_agent', mockDetails); // First call returns cached (empty) results and triggers background fetch - const agents1 = await provider.provideContributions({}, {} as any); + const agents1 = await provider.provideCustomAgents({}, {} as any); assert.deepEqual(agents1, []); // Wait for background fetch to complete await new Promise(resolve => setTimeout(resolve, 100)); // Second call should return newly cached agents from memory - const agents2 = await provider.provideContributions({}, {} as any); + const agents2 = await provider.provideCustomAgents({}, {} as any); assert.equal(agents2.length, 1); assert.equal(agents2[0].name, 'api_agent'); assert.equal(agents2[0].description, 'An agent from API'); // Third call should also return from memory cache without file I/O - const agents3 = await provider.provideContributions({}, {} as any); + const agents3 = await provider.provideCustomAgents({}, {} as any); assert.equal(agents3.length, 1); assert.equal(agents3[0].name, 'api_agent'); }); @@ -234,7 +234,7 @@ Test prompt content`; }; mockOctoKitService.setAgentDetails('full_agent', mockDetails); - await provider.provideContributions({}, {} as any); + await provider.provideCustomAgents({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Check cached file content @@ -283,7 +283,7 @@ Detailed prompt content }; mockOctoKitService.setAgentDetails('Agent With Spaces!@#', mockDetails); - await provider.provideContributions({}, {} as any); + await provider.provideCustomAgents({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Check that file was created with sanitized name @@ -322,12 +322,12 @@ Detailed prompt content mockOctoKitService.setAgentDetails('changing_agent', mockDetails); let eventFired = false; - provider.onDidChangeContributions(() => { + provider.onDidChangeCustomAgents(() => { eventFired = true; }); // First call triggers background fetch - await provider.provideContributions({}, {} as any); + await provider.provideCustomAgents({}, {} as any); await new Promise(resolve => setTimeout(resolve, 150)); // Event should fire after initial successful fetch @@ -343,7 +343,7 @@ Detailed prompt content }; // Should not throw, should return empty array - const agents = await provider.provideContributions({}, {} as any); + const agents = await provider.provideCustomAgents({}, {} as any); assert.deepEqual(agents, []); }); @@ -356,9 +356,9 @@ Detailed prompt content return []; }; - const queryOptions: vscode.ChatContributionQueryOptions = {}; + const queryOptions: vscode.CustomAgentQueryOptions = {}; - await provider.provideContributions(queryOptions, {} as any); + await provider.provideCustomAgents(queryOptions, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); assert.ok(capturedOptions); @@ -377,9 +377,9 @@ Detailed prompt content }; // Make multiple concurrent calls - const promise1 = provider.provideContributions({}, {} as any); - const promise2 = provider.provideContributions({}, {} as any); - const promise3 = provider.provideContributions({}, {} as any); + const promise1 = provider.provideCustomAgents({}, {} as any); + const promise2 = provider.provideCustomAgents({}, {} as any); + const promise3 = provider.provideCustomAgents({}, {} as any); await Promise.all([promise1, promise2, promise3]); await new Promise(resolve => setTimeout(resolve, 100)); @@ -435,12 +435,12 @@ description: First agent Agent 1 prompt`; mockFileSystem.mockFile(URI.joinPath(orgDir, 'agent1.agent.md'), agentContent); - await provider.provideContributions({}, {} as any); + await provider.provideCustomAgents({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // With error handling, partial failures skip cache update for that org // So the existing file cache is returned with the one successful agent - const cachedAgents = await provider.provideContributions({}, {} as any); + const cachedAgents = await provider.provideCustomAgents({}, {} as any); assert.equal(cachedAgents.length, 1); assert.equal(cachedAgents[0].name, 'agent1'); }); @@ -466,11 +466,11 @@ Agent 1 prompt`; prompt: 'Initial prompt', }); - await provider.provideContributions({}, {} as any); + await provider.provideCustomAgents({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // After successful fetch, subsequent calls return from memory - const agents1 = await provider.provideContributions({}, {} as any); + const agents1 = await provider.provideCustomAgents({}, {} as any); assert.equal(agents1.length, 1); assert.equal(agents1[0].name, 'initial_agent'); @@ -493,7 +493,7 @@ Agent 1 prompt`; }); // Memory cache returns old results without refetching - const agents2 = await provider.provideContributions({}, {} as any); + const agents2 = await provider.provideCustomAgents({}, {} as any); assert.equal(agents2.length, 1); assert.equal(agents2[0].name, 'initial_agent'); }); @@ -530,18 +530,18 @@ Agent 1 prompt`; mockOctoKitService.setAgentDetails('agent1', { ...agents[0], prompt: 'Prompt 1' }); mockOctoKitService.setAgentDetails('agent2', { ...agents[1], prompt: 'Prompt 2' }); - await provider.provideContributions({}, {} as any); + await provider.provideCustomAgents({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Verify both agents are cached - const cachedAgents1 = await provider.provideContributions({}, {} as any); + const cachedAgents1 = await provider.provideCustomAgents({}, {} as any); assert.equal(cachedAgents1.length, 2); // Remove one agent from API mockOctoKitService.setCustomAgents([agents[0]]); // Memory cache still returns both agents (no refetch) - const cachedAgents2 = await provider.provideContributions({}, {} as any); + const cachedAgents2 = await provider.provideCustomAgents({}, {} as any); assert.equal(cachedAgents2.length, 2); assert.equal(cachedAgents2[0].name, 'agent1'); assert.equal(cachedAgents2[1].name, 'agent2'); @@ -567,16 +567,16 @@ Agent 1 prompt`; prompt: 'Stable prompt', }); - await provider.provideContributions({}, {} as any); + await provider.provideCustomAgents({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); let changeEventCount = 0; - provider.onDidChangeContributions(() => { + provider.onDidChangeCustomAgents(() => { changeEventCount++; }); // Fetch again with identical content - await provider.provideContributions({}, {} as any); + await provider.provideCustomAgents({}, {} as any); await new Promise(resolve => setTimeout(resolve, 150)); // No change event should fire @@ -604,18 +604,18 @@ Agent 1 prompt`; prompt: 'Temporary prompt', }); - await provider.provideContributions({}, {} as any); + await provider.provideCustomAgents({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Verify agent is cached - const agents1 = await provider.provideContributions({}, {} as any); + const agents1 = await provider.provideCustomAgents({}, {} as any); assert.equal(agents1.length, 1); // API now returns empty array mockOctoKitService.setCustomAgents([]); // Memory cache still returns the agent (no refetch) - const agents2 = await provider.provideContributions({}, {} as any); + const agents2 = await provider.provideCustomAgents({}, {} as any); assert.equal(agents2.length, 1); assert.equal(agents2[0].name, 'temporary_agent'); }); @@ -643,7 +643,7 @@ Agent 1 prompt`; }; mockOctoKitService.setAgentDetails('minimal_agent', mockDetails); - await provider.provideContributions({}, {} as any); + await provider.provideCustomAgents({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); const cacheDir = URI.joinPath(mockExtensionContext.globalStorageUri!, 'githubAgentsCache'); @@ -684,7 +684,7 @@ Agent 1 prompt`; }; mockOctoKitService.setAgentDetails('wildcard_agent', mockDetails); - await provider.provideContributions({}, {} as any); + await provider.provideCustomAgents({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); const cacheDir = URI.joinPath(mockExtensionContext.globalStorageUri!, 'githubAgentsCache'); @@ -720,7 +720,7 @@ Valid prompt`; const noFrontmatterContent = `Just some content without any frontmatter`; mockFileSystem.mockFile(URI.joinPath(orgDir, 'no_frontmatter.agent.md'), noFrontmatterContent); - const agents = await provider.provideContributions({}, {} as any); + const agents = await provider.provideCustomAgents({}, {} as any); // Parser is lenient - both agents are returned, one with empty description assert.equal(agents.length, 2); @@ -742,7 +742,7 @@ Valid prompt`; return []; }; - await provider.provideContributions({}, {} as any); + await provider.provideCustomAgents({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Should have fetched from all three organizations @@ -776,7 +776,7 @@ Valid prompt`; }; mockOctoKitService.setAgentDetails('world_domination', mockDetails); - await provider.provideContributions({}, {} as any); + await provider.provideCustomAgents({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); const cacheDir = URI.joinPath(mockExtensionContext.globalStorageUri!, 'githubAgentsCache'); @@ -821,7 +821,7 @@ You are a world-class computer scientist. }; mockOctoKitService.setAgentDetails('special_chars_agent', mockDetails); - await provider.provideContributions({}, {} as any); + await provider.provideCustomAgents({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); const cacheDir = URI.joinPath(mockExtensionContext.globalStorageUri!, 'githubAgentsCache'); @@ -864,7 +864,7 @@ Test prompt with special characters }; mockOctoKitService.setAgentDetails('multiline_agent', mockDetails); - await provider.provideContributions({}, {} as any); + await provider.provideCustomAgents({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); const cacheDir = URI.joinPath(mockExtensionContext.globalStorageUri!, 'githubAgentsCache'); @@ -903,7 +903,7 @@ Test prompt return originalGetCustomAgents.call(mockOctoKitService, owner, repo, options, { createIfNone: false }); }; - await provider.provideContributions({}, {} as any); + await provider.provideCustomAgents({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Should have aborted after first org, so second org shouldn't be processed @@ -940,10 +940,10 @@ Test prompt prompt: 'Enterprise prompt', }); - await provider.provideContributions({}, {} as any); + await provider.provideCustomAgents({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); - const agents = await provider.provideContributions({}, {} as any); + const agents = await provider.provideCustomAgents({}, {} as any); // Should only have one agent, not two (deduped) assert.equal(agents.length, 1); @@ -1027,10 +1027,10 @@ Test prompt return undefined; }; - await provider.provideContributions({}, {} as any); + await provider.provideCustomAgents({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); - const agents = await provider.provideContributions({}, {} as any); + const agents = await provider.provideCustomAgents({}, {} as any); // Different versions are deduplicated, only the first one is kept assert.equal(agents.length, 1); @@ -1086,10 +1086,10 @@ Test prompt return undefined; }; - await provider.provideContributions({}, {} as any); + await provider.provideCustomAgents({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); - const agents = await provider.provideContributions({}, {} as any); + const agents = await provider.provideCustomAgents({}, {} as any); // Should have 2 agents since they're from different repos (not duplicates) assert.equal(agents.length, 2); @@ -1148,10 +1148,10 @@ Test prompt return undefined; }; - await provider.provideContributions({}, {} as any); + await provider.provideCustomAgents({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); - const agents = await provider.provideContributions({}, {} as any); + const agents = await provider.provideCustomAgents({}, {} as any); // Should have exactly 2 agents, not 6 (2 agents x 3 orgs) assert.equal(agents.length, 2); @@ -1197,10 +1197,10 @@ Test prompt return undefined; }; - await provider.provideContributions({}, {} as any); + await provider.provideCustomAgents({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); - const agents = await provider.provideContributions({}, {} as any); + const agents = await provider.provideCustomAgents({}, {} as any); // Different versions are deduplicated, only the first one is kept assert.equal(agents.length, 1); diff --git a/src/extension/agents/vscode-node/test/organizationInstructionsProvider.spec.ts b/src/extension/agents/vscode-node/test/organizationInstructionsProvider.spec.ts index 4ffc3a128c..41c0e8ab52 100644 --- a/src/extension/agents/vscode-node/test/organizationInstructionsProvider.spec.ts +++ b/src/extension/agents/vscode-node/test/organizationInstructionsProvider.spec.ts @@ -209,7 +209,7 @@ suite('OrganizationInstructionsProvider', () => { mockGitService.setActiveRepository(undefined); const provider = createProvider(); - const instructions = await provider.provideContributions({}, {} as any); + const instructions = await provider.provideInstructions({}, {} as any); assert.deepEqual(instructions, []); }); @@ -219,7 +219,7 @@ suite('OrganizationInstructionsProvider', () => { mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); const provider = createProvider(); - const instructions = await provider.provideContributions({}, {} as any); + const instructions = await provider.provideInstructions({}, {} as any); assert.deepEqual(instructions, []); }); @@ -237,7 +237,7 @@ suite('OrganizationInstructionsProvider', () => { Always follow our coding standards.`; mockFileSystem.mockFile(instructionFile, instructionContent); - const instructions = await provider.provideContributions({}, {} as any); + const instructions = await provider.provideInstructions({}, {} as any); assert.equal(instructions.length, 1); assert.equal(instructions[0].name, 'testorg'); @@ -255,14 +255,14 @@ Always use TypeScript strict mode.`; mockOctoKitService.setOrgInstructions('testorg', mockInstructions); // First call returns cached (empty) results - const instructions1 = await provider.provideContributions({}, {} as any); + const instructions1 = await provider.provideInstructions({}, {} as any); assert.deepEqual(instructions1, []); // Wait for background fetch to complete await new Promise(resolve => setTimeout(resolve, 100)); // Second call should return newly cached instructions - const instructions2 = await provider.provideContributions({}, {} as any); + const instructions2 = await provider.provideInstructions({}, {} as any); assert.equal(instructions2.length, 1); assert.equal(instructions2[0].name, 'testorg'); }); @@ -278,7 +278,7 @@ Always use TypeScript strict mode.`; 3. Write comprehensive tests`; mockOctoKitService.setOrgInstructions('testorg', mockInstructions); - await provider.provideContributions({}, {} as any); + await provider.provideInstructions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Check cached file content @@ -297,11 +297,11 @@ Always use TypeScript strict mode.`; const mockInstructions = `# Initial Instructions`; mockOctoKitService.setOrgInstructions('testorg', mockInstructions); - await provider.provideContributions({}, {} as any); + await provider.provideInstructions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); let eventFired = false; - provider.onDidChangeContributions(() => { + provider.onDidChangeInstructions(() => { eventFired = true; }); @@ -309,7 +309,7 @@ Always use TypeScript strict mode.`; const updatedInstructions = `# Updated Instructions`; mockOctoKitService.setOrgInstructions('testorg', updatedInstructions); - await provider.provideContributions({}, {} as any); + await provider.provideInstructions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 150)); assert.equal(eventFired, true); @@ -325,7 +325,7 @@ Always use TypeScript strict mode.`; }; // Should not throw, should return empty array - const instructions = await provider.provideContributions({}, {} as any); + const instructions = await provider.provideInstructions({}, {} as any); assert.deepEqual(instructions, []); }); @@ -342,9 +342,9 @@ Always use TypeScript strict mode.`; }; // Make multiple concurrent calls - const promise1 = provider.provideContributions({}, {} as any); - const promise2 = provider.provideContributions({}, {} as any); - const promise3 = provider.provideContributions({}, {} as any); + const promise1 = provider.provideInstructions({}, {} as any); + const promise2 = provider.provideInstructions({}, {} as any); + const promise3 = provider.provideInstructions({}, {} as any); await Promise.all([promise1, promise2, promise3]); await new Promise(resolve => setTimeout(resolve, 100)); @@ -360,16 +360,16 @@ Always use TypeScript strict mode.`; const mockInstructions = `# Stable Instructions`; mockOctoKitService.setOrgInstructions('testorg', mockInstructions); - await provider.provideContributions({}, {} as any); + await provider.provideInstructions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); let changeEventCount = 0; - provider.onDidChangeContributions(() => { + provider.onDidChangeInstructions(() => { changeEventCount++; }); // Fetch again with identical content - await provider.provideContributions({}, {} as any); + await provider.provideInstructions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 150)); // No change event should fire @@ -383,7 +383,7 @@ Always use TypeScript strict mode.`; // API returns undefined (no instructions) mockOctoKitService.setOrgInstructions('testorg', undefined); - await provider.provideContributions({}, {} as any); + await provider.provideInstructions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Should not create any cache files @@ -403,7 +403,7 @@ Always use TypeScript strict mode.`; const mockInstructions = `# Company Instructions`; mockOctoKitService.setOrgInstructions('mycompany', mockInstructions); - await provider.provideContributions({}, {} as any); + await provider.provideInstructions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Check that file was created with correct name @@ -430,7 +430,7 @@ Always use TypeScript strict mode.`; return 'Org A instructions'; }; - await provider.provideContributions({}, {} as any); + await provider.provideInstructions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); assert.equal(capturedOrgLogin, 'orgA'); @@ -438,7 +438,7 @@ Always use TypeScript strict mode.`; // Change to org B mockGitService.setActiveRepository(new GithubRepoId('orgB', 'repoB')); - await provider.provideContributions({}, {} as any); + await provider.provideInstructions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Should fetch from new organization @@ -455,7 +455,7 @@ Always use TypeScript strict mode.`; // Initially no cache directory const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); - await provider.provideContributions({}, {} as any); + await provider.provideInstructions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Cache directory should now exist @@ -478,7 +478,7 @@ Always use TypeScript strict mode.`; const instructionContent = `# Existing Instructions`; mockFileSystem.mockFile(instructionFile, instructionContent); - const instructions = await provider.provideContributions({}, {} as any); + const instructions = await provider.provideInstructions({}, {} as any); // Should successfully read cached instructions assert.equal(instructions.length, 1); @@ -498,7 +498,7 @@ Always use TypeScript strict mode.`; }; // Should not throw, should return empty array - const instructions = await provider.provideContributions({}, {} as any); + const instructions = await provider.provideInstructions({}, {} as any); assert.deepEqual(instructions, []); // Restore original method @@ -512,11 +512,11 @@ Always use TypeScript strict mode.`; // Initial setup with no instructions mockOctoKitService.setOrgInstructions('testorg', undefined); - await provider.provideContributions({}, {} as any); + await provider.provideInstructions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); let changeEventFired = false; - provider.onDidChangeContributions(() => { + provider.onDidChangeInstructions(() => { changeEventFired = true; }); @@ -526,11 +526,11 @@ Always use TypeScript strict mode.`; Follow these rules.`; mockOctoKitService.setOrgInstructions('testorg', newInstructions); - await provider.provideContributions({}, {} as any); + await provider.provideInstructions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 150)); assert.equal(changeEventFired, true); - const instructions = await provider.provideContributions({}, {} as any); + const instructions = await provider.provideInstructions({}, {} as any); assert.equal(instructions.length, 1); }); @@ -542,17 +542,17 @@ Follow these rules.`; const initialInstructions = `# Initial Instructions`; mockOctoKitService.setOrgInstructions('testorg', initialInstructions); - await provider.provideContributions({}, {} as any); + await provider.provideInstructions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); - provider.onDidChangeContributions(() => { + provider.onDidChangeInstructions(() => { // Event listener registered for potential future use }); // Remove instructions mockOctoKitService.setOrgInstructions('testorg', undefined); - await provider.provideContributions({}, {} as any); + await provider.provideInstructions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 150)); // Note: Currently the implementation doesn't delete cache files when instructions are removed, @@ -567,7 +567,7 @@ Follow these rules.`; // API returns empty string mockOctoKitService.setOrgInstructions('testorg', ''); - await provider.provideContributions({}, {} as any); + await provider.provideInstructions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Empty strings are treated as "no instructions" and not cached @@ -592,7 +592,7 @@ Include special chars: @#$%^&*() Unicode: 你好 🚀`; mockOctoKitService.setOrgInstructions('testorg', mockInstructions); - await provider.provideContributions({}, {} as any); + await provider.provideInstructions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Check that special characters are preserved @@ -612,7 +612,7 @@ Unicode: 你好 🚀`; const largeContent = '# Large Instructions\n\n' + 'x'.repeat(100000); mockOctoKitService.setOrgInstructions('testorg', largeContent); - await provider.provideContributions({}, {} as any); + await provider.provideInstructions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Check that large content is handled correctly @@ -635,7 +635,7 @@ Unicode: 你好 🚀`; const instructionContent = `# Test`; mockFileSystem.mockFile(instructionFile, instructionContent); - const instructions = await provider.provideContributions({}, {} as any); + const instructions = await provider.provideInstructions({}, {} as any); assert.equal(instructions.length, 1); assert.ok(instructions[0].uri); @@ -649,14 +649,14 @@ Unicode: 你好 🚀`; mockGitService.setActiveRepository(new GithubRepoId('org1', 'repo1')); mockOctoKitService.setOrgInstructions('org1', '# Org 1 Instructions'); - await provider.provideContributions({}, {} as any); + await provider.provideInstructions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Second organization mockGitService.setActiveRepository(new GithubRepoId('org2', 'repo2')); mockOctoKitService.setOrgInstructions('org2', '# Org 2 Instructions'); - await provider.provideContributions({}, {} as any); + await provider.provideInstructions({}, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); // Both instruction files should exist in cache @@ -681,7 +681,7 @@ Unicode: 你好 🚀`; // Request instructions for org1 mockGitService.setActiveRepository(new GithubRepoId('org1', 'repo1')); - const instructions = await provider.provideContributions({}, {} as any); + const instructions = await provider.provideInstructions({}, {} as any); assert.equal(instructions.length, 1); assert.equal(instructions[0].name, 'org1'); diff --git a/src/extension/vscode.proposed.chatParticipantPrivate.d.ts b/src/extension/vscode.proposed.chatParticipantPrivate.d.ts index 5902df1694..5d16a202ef 100644 --- a/src/extension/vscode.proposed.chatParticipantPrivate.d.ts +++ b/src/extension/vscode.proposed.chatParticipantPrivate.d.ts @@ -314,35 +314,29 @@ declare module 'vscode' { // #endregion - // #region ChatContributionsProvider - - export enum PromptsType { - instructions = 'instructions', - prompt = 'prompt', - agent = 'agent' - } + // #region CustomAgentProvider /** - * Represents a custom agent resource file (e.g., .agent.md or .prompt.md) available for a repository. + * Represents a custom agent resource file (e.g., .agent.md) available for a repository. */ - export interface ChatContributionResource { + export interface CustomAgentResource { /** - * The unique identifier/name of the custom agent resource. + * The unique identifier/name of the custom agent. */ readonly name: string; /** - * A description of what the custom agent resource does. + * A description of what the custom agent does. */ readonly description: string; /** - * The URI to the agent or prompt resource file. + * The URI to the custom agent resource file. */ readonly uri: Uri; /** - * Indicates whether the custom agent resource is editable. Defaults to false. + * Indicates whether the custom agent is editable. Defaults to false. */ readonly isEditable?: boolean; } @@ -350,33 +344,155 @@ declare module 'vscode' { /** * Options for querying custom agents. */ - export interface ChatContributionQueryOptions { } + export interface CustomAgentQueryOptions { } /** - * A provider that supplies custom agent resources (from .agent.md and .prompt.md files) for repositories. + * A provider that supplies custom agent resources (from .agent.md files) for repositories. */ - export interface ChatContributionsProvider { + export interface CustomAgentProvider { /** * An optional event to signal that custom agents have changed. */ - readonly onDidChangeContributions?: Event; + readonly onDidChangeCustomAgents?: Event; /** - * Provide the list of custom agent resources available for a given repository. + * Provide the list of custom agents available. * @param options Optional query parameters. * @param token A cancellation token. * @returns An array of custom agent resources or a promise that resolves to such. */ - provideContributions(options: ChatContributionQueryOptions, token: CancellationToken): ProviderResult; + provideCustomAgents(options: CustomAgentQueryOptions, token: CancellationToken): ProviderResult; } + // #endregion + + // #region InstructionsProvider + + /** + * Represents an instructions resource file available for a repository. + */ + export interface InstructionsResource { + /** + * The unique identifier/name of the instructions. + */ + readonly name: string; + + /** + * A description of what the instructions provide. + */ + readonly description: string; + + /** + * The URI to the instructions resource file. + */ + readonly uri: Uri; + + /** + * Indicates whether the instructions are editable. Defaults to false. + */ + readonly isEditable?: boolean; + } + + /** + * Options for querying instructions. + */ + export interface InstructionsQueryOptions { } + + /** + * A provider that supplies instructions resources for repositories. + */ + export interface InstructionsProvider { + /** + * An optional event to signal that instructions have changed. + */ + readonly onDidChangeInstructions?: Event; + + /** + * Provide the list of instructions available. + * @param options Optional query parameters. + * @param token A cancellation token. + * @returns An array of instructions resources or a promise that resolves to such. + */ + provideInstructions(options: InstructionsQueryOptions, token: CancellationToken): ProviderResult; + } + + // #endregion + + // #region PromptFileProvider + + /** + * Represents a prompt file resource (e.g., .prompt.md) available for a repository. + */ + export interface PromptFileResource { + /** + * The unique identifier/name of the prompt file. + */ + readonly name: string; + + /** + * A description of what the prompt file does. + */ + readonly description: string; + + /** + * The URI to the prompt file resource. + */ + readonly uri: Uri; + + /** + * Indicates whether the prompt file is editable. Defaults to false. + */ + readonly isEditable?: boolean; + } + + /** + * Options for querying prompt files. + */ + export interface PromptFileQueryOptions { } + + /** + * A provider that supplies prompt file resources (from .prompt.md files) for repositories. + */ + export interface PromptFileProvider { + /** + * An optional event to signal that prompt files have changed. + */ + readonly onDidChangePromptFiles?: Event; + + /** + * Provide the list of prompt files available. + * @param options Optional query parameters. + * @param token A cancellation token. + * @returns An array of prompt file resources or a promise that resolves to such. + */ + providePromptFiles(options: PromptFileQueryOptions, token: CancellationToken): ProviderResult; + } + + // #endregion + + // #region Chat Provider Registration + export namespace chat { /** * Register a provider for custom agents. - * @param provider The custom agents provider. + * @param provider The custom agent provider. + * @returns A disposable that unregisters the provider when disposed. + */ + export function registerCustomAgentProvider(provider: CustomAgentProvider): Disposable; + + /** + * Register a provider for instructions. + * @param provider The instructions provider. + * @returns A disposable that unregisters the provider when disposed. + */ + export function registerInstructionsProvider(provider: InstructionsProvider): Disposable; + + /** + * Register a provider for prompt files. + * @param provider The prompt file provider. * @returns A disposable that unregisters the provider when disposed. */ - export function registerContributionsProvider(type: PromptsType, provider: ChatContributionsProvider): Disposable; + export function registerPromptFileProvider(provider: PromptFileProvider): Disposable; } // #endregion From 9a81ff6730e8de7b3ac8b8e26981a2ac88d589fb Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Wed, 7 Jan 2026 11:52:03 -0800 Subject: [PATCH 16/33] nit --- .../vscode-node/organizationAndEnterpriseAgentProvider.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/extension/agents/vscode-node/organizationAndEnterpriseAgentProvider.ts b/src/extension/agents/vscode-node/organizationAndEnterpriseAgentProvider.ts index d40787efda..f534df8d9d 100644 --- a/src/extension/agents/vscode-node/organizationAndEnterpriseAgentProvider.ts +++ b/src/extension/agents/vscode-node/organizationAndEnterpriseAgentProvider.ts @@ -53,7 +53,7 @@ export class OrganizationAndEnterpriseAgentProvider extends Disposable implement // Return results from file cache return await this.readFromCache(); } catch (error) { - this.logService.error(`[OrganizationAndEnterpriseAgentProvider] Error in provideContributions: ${error}`); + this.logService.error(`[OrganizationAndEnterpriseAgentProvider] Error in provideCustomAgents: ${error}`); return []; } } From 147b0f0977d9ab56e19a37f6131e613d00699fb7 Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Wed, 7 Jan 2026 12:44:19 -0800 Subject: [PATCH 17/33] add polling --- .../organizationInstructionsProvider.ts | 196 +++++++++++++++--- .../organizationInstructionsProvider.spec.ts | 2 +- 2 files changed, 168 insertions(+), 30 deletions(-) diff --git a/src/extension/agents/vscode-node/organizationInstructionsProvider.ts b/src/extension/agents/vscode-node/organizationInstructionsProvider.ts index deb5e7054f..1804e39ab7 100644 --- a/src/extension/agents/vscode-node/organizationInstructionsProvider.ts +++ b/src/extension/agents/vscode-node/organizationInstructionsProvider.ts @@ -10,10 +10,11 @@ import { FileType } from '../../../platform/filesystem/common/fileTypes'; import { IGitService } from '../../../platform/git/common/gitService'; import { IOctoKitService } from '../../../platform/github/common/githubService'; import { ILogService } from '../../../platform/log/common/logService'; -import { Disposable } from '../../../util/vs/base/common/lifecycle'; +import { Disposable, toDisposable } from '../../../util/vs/base/common/lifecycle'; import { getRepoId } from '../../chatSessions/vscode/copilotCodingAgentUtils'; const InstructionFileExtension = '.instruction.md'; +const REFRESH_INTERVAL_MS = 5 * 60 * 1000; // 5 minutes export class OrganizationInstructionsProvider extends Disposable implements vscode.InstructionsProvider { @@ -21,6 +22,7 @@ export class OrganizationInstructionsProvider extends Disposable implements vsco readonly onDidChangeInstructions = this._onDidChangeInstructions.event; private isFetching = false; + private pollingInterval: ReturnType | undefined; constructor( @IOctoKitService private readonly octoKitService: IOctoKitService, @@ -30,6 +32,7 @@ export class OrganizationInstructionsProvider extends Disposable implements vsco @IFileSystemService private readonly fileSystem: IFileSystemService, ) { super(); + this.startPolling(); } private getCacheDir(): vscode.Uri | undefined { @@ -48,27 +51,105 @@ export class OrganizationInstructionsProvider extends Disposable implements vsco _token: vscode.CancellationToken ): Promise { try { - // Get repository information from the active git repository - const repoId = await getRepoId(this.gitService); - if (!repoId) { - this.logService.trace('[OrganizationInstructionsProvider] No active repository found'); - return []; + const orgLogin = await this.determineOrganizationToUse(); + const cachedInstructions = orgLogin ? await this.readFromCache(orgLogin) : []; + return cachedInstructions; + } catch (error) { + this.logService.error(`[OrganizationInstructionsProvider] Error in provideInstructions: ${error}`); + return []; + } + } + + /** + * Tries all user's organizations to find one with custom instructions. + * Returns the first organization login that has instructions, or undefined if none found. + */ + private async tryAllOrganizations(options: vscode.InstructionsQueryOptions): Promise { + try { + this.logService.trace('[OrganizationInstructionsProvider] Fetching list of user organizations'); + const organizations = await this.octoKitService.getUserOrganizations({ createIfNone: false }); + + if (!organizations || organizations.length === 0) { + this.logService.trace('[OrganizationInstructionsProvider] No organizations found for user'); + return undefined; } - const orgLogin = repoId.org; + this.logService.trace(`[OrganizationInstructionsProvider] Trying ${organizations.length} organizations`); - // Read from cache first - const cachedInstructions = await this.readFromCache(orgLogin); + // Try each organization until we find one with instructions + for (const org of organizations) { + try { + this.logService.trace(`[OrganizationInstructionsProvider] Trying organization: ${org}`); + const instructions = await this.octoKitService.getOrgCustomInstructions(org, {}); - // Trigger async fetch to update cache - this.fetchAndUpdateCache(orgLogin, options).catch(error => { - this.logService.error(`[OrganizationInstructionsProvider] Error in background fetch: ${error}`); - }); + if (instructions) { + this.logService.trace(`[OrganizationInstructionsProvider] Found instructions for organization: ${org}`); + // Cache the instructions + await this.cacheInstructions(org, instructions); + return org; + } + } catch (error) { + this.logService.trace(`[OrganizationInstructionsProvider] Error fetching instructions for ${org}: ${error}`); + // Continue to next organization + } + } - return cachedInstructions; + this.logService.trace('[OrganizationInstructionsProvider] No organization with instructions found'); + return undefined; } catch (error) { - this.logService.error(`[OrganizationInstructionsProvider] Error in provideInstructions: ${error}`); - return []; + this.logService.error(`[OrganizationInstructionsProvider] Error in tryAllOrganizations: ${error}`); + return undefined; + } + } + + /** + * Determines which organization to use for instructions based on priority. + */ + private async determineOrganizationToUse(): Promise { + const cacheDir = this.getCacheDir(); + if (!cacheDir) { + this.logService.trace('[OrganizationInstructionsProvider] No workspace open, cannot determine organization'); + return undefined; + } + + // Check if current repository belongs to an organization with instructions + const repoId = await getRepoId(this.gitService); + if (repoId) { + const currentOrgLogin = repoId.org; + const hasInstructions = await this.hasInstructionsInCache(currentOrgLogin, cacheDir); + if (hasInstructions) { + this.logService.trace(`[OrganizationInstructionsProvider] Using current repository's organization: ${currentOrgLogin}`); + return currentOrgLogin; + } + } + + // Find any organization with instructions in cache + try { + const files = await this.fileSystem.readDirectory(cacheDir); + for (const [filename, fileType] of files) { + if (fileType === FileType.File && filename.endsWith(InstructionFileExtension)) { + const orgLogin = filename.substring(0, filename.length - InstructionFileExtension.length); + this.logService.trace(`[OrganizationInstructionsProvider] Using cached organization: ${orgLogin}`); + return orgLogin; + } + } + } catch (error) { + this.logService.trace(`[OrganizationInstructionsProvider] Error reading cache directory: ${error}`); + } + + return undefined; + } + + /** + * Checks if instructions exist in cache for a given organization + */ + private async hasInstructionsInCache(orgLogin: string, cacheDir: vscode.Uri): Promise { + const fileName = this.getCacheFilename(orgLogin); + try { + const files = await this.fileSystem.readDirectory(cacheDir); + return files.some(([name, type]) => type === FileType.File && name === fileName); + } catch { + return false; } } @@ -106,7 +187,7 @@ export class OrganizationInstructionsProvider extends Disposable implements vsco } private async fetchAndUpdateCache( - orgLogin: string, + orgLogin: string | undefined, options: vscode.InstructionsQueryOptions ): Promise { // Prevent concurrent fetches @@ -117,6 +198,19 @@ export class OrganizationInstructionsProvider extends Disposable implements vsco this.isFetching = true; try { + // If no orgLogin provided, try all organizations + if (!orgLogin) { + this.logService.trace('[OrganizationInstructionsProvider] No orgLogin provided, trying all organizations'); + orgLogin = await this.tryAllOrganizations(options); + if (!orgLogin) { + this.logService.trace('[OrganizationInstructionsProvider] No organization with instructions found'); + return; + } + // tryAllOrganizations already fetched and cached, just fire the event + this._onDidChangeInstructions.fire(); + return; + } + this.logService.trace(`[OrganizationInstructionsProvider] Fetching custom instructions for org ${orgLogin}`); const instructions = await this.octoKitService.getOrgCustomInstructions(orgLogin, {}); @@ -131,14 +225,6 @@ export class OrganizationInstructionsProvider extends Disposable implements vsco return; } - // Ensure cache directory exists - try { - await this.fileSystem.stat(cacheDir); - } catch (error) { - // Directory doesn't exist, create it - await this.fileSystem.createDirectory(cacheDir); - } - const existingInstructions = await this.readCacheContents(orgLogin, cacheDir); const hasChanges = instructions !== existingInstructions; @@ -147,10 +233,7 @@ export class OrganizationInstructionsProvider extends Disposable implements vsco return; } - const fileName = this.getCacheFilename(orgLogin); - const fileUri = vscode.Uri.joinPath(cacheDir, fileName); - await this.fileSystem.writeFile(fileUri, new TextEncoder().encode(instructions)); - + await this.cacheInstructions(orgLogin, instructions); this.logService.trace(`[OrganizationInstructionsProvider] Updated cache with instructions for org ${orgLogin}`); // Fire event to notify consumers that instructions have changed @@ -160,6 +243,29 @@ export class OrganizationInstructionsProvider extends Disposable implements vsco } } + /** + * Caches instructions for an organization + */ + private async cacheInstructions(orgLogin: string, instructions: string): Promise { + const cacheDir = this.getCacheDir(); + if (!cacheDir) { + this.logService.trace('[OrganizationInstructionsProvider] No workspace open, cannot use cache'); + return; + } + + // Ensure cache directory exists + try { + await this.fileSystem.stat(cacheDir); + } catch (error) { + // Directory doesn't exist, create it + await this.fileSystem.createDirectory(cacheDir); + } + + const fileName = this.getCacheFilename(orgLogin); + const fileUri = vscode.Uri.joinPath(cacheDir, fileName); + await this.fileSystem.writeFile(fileUri, new TextEncoder().encode(instructions)); + } + private async readCacheContents(orgLogin: string, cacheDir: vscode.Uri): Promise { try { const files = await this.fileSystem.readDirectory(cacheDir); @@ -176,4 +282,36 @@ export class OrganizationInstructionsProvider extends Disposable implements vsco } return undefined; } + + private startPolling(): void { + if (this.pollingInterval) { + return; + } + + this.logService.trace(`[OrganizationInstructionsProvider] Starting polling with interval: ${REFRESH_INTERVAL_MS}ms`); + + this.pollingInterval = setInterval(async () => { + await this.refreshCache(); + }, REFRESH_INTERVAL_MS); + + // Register for disposal + this._register(toDisposable(() => this.stopPolling())); + } + + private stopPolling(): void { + if (this.pollingInterval) { + this.logService.trace('[OrganizationInstructionsProvider] Stopping polling'); + clearInterval(this.pollingInterval); + this.pollingInterval = undefined; + } + } + + private async refreshCache(): Promise { + try { + const orgLogin = await this.determineOrganizationToUse(); + await this.fetchAndUpdateCache(orgLogin, {}); + } catch (error) { + this.logService.error(`[OrganizationInstructionsProvider] Error in refreshCache: ${error}`); + } + } } diff --git a/src/extension/agents/vscode-node/test/organizationInstructionsProvider.spec.ts b/src/extension/agents/vscode-node/test/organizationInstructionsProvider.spec.ts index 41c0e8ab52..6987bb0398 100644 --- a/src/extension/agents/vscode-node/test/organizationInstructionsProvider.spec.ts +++ b/src/extension/agents/vscode-node/test/organizationInstructionsProvider.spec.ts @@ -199,7 +199,7 @@ suite('OrganizationInstructionsProvider', () => { accessor.get(ILogService), mockGitService, mockExtensionContext as any, - mockFileSystem + mockFileSystem, ); disposables.add(provider); return provider; From bf255dffee8db4aade8a9e3161ff1ef4151576b0 Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Wed, 7 Jan 2026 12:49:04 -0800 Subject: [PATCH 18/33] tests --- .../organizationInstructionsProvider.spec.ts | 340 ++++++++++++++++++ 1 file changed, 340 insertions(+) diff --git a/src/extension/agents/vscode-node/test/organizationInstructionsProvider.spec.ts b/src/extension/agents/vscode-node/test/organizationInstructionsProvider.spec.ts index 6987bb0398..2915360ae3 100644 --- a/src/extension/agents/vscode-node/test/organizationInstructionsProvider.spec.ts +++ b/src/extension/agents/vscode-node/test/organizationInstructionsProvider.spec.ts @@ -686,4 +686,344 @@ Unicode: 你好 🚀`; assert.equal(instructions.length, 1); assert.equal(instructions[0].name, 'org1'); }); + + suite('Polling Behavior', () => { + test('starts polling on initialization', async () => { + mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); + const mockInstructions = '# Test Instructions'; + mockOctoKitService.setOrgInstructions('testorg', mockInstructions); + + // Pre-populate cache so we have something to poll + const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); + mockFileSystem.mockDirectory(cacheDir, [['testorg.instruction.md', FileType.File]]); + mockFileSystem.mockFile(URI.joinPath(cacheDir, 'testorg.instruction.md'), mockInstructions); + + let apiCallCount = 0; + mockOctoKitService.getOrgCustomInstructions = async () => { + apiCallCount++; + return mockInstructions; + }; + + const provider = createProvider(); + + // Wait slightly more than the polling interval (5 minutes = 300,000ms) + // For testing, we'll use a reasonable timeout and check the logic + // In a real test environment, you'd mock timers or expose the interval for testing + + // Since we can't easily wait 5 minutes in a test, we verify polling was set up + // by checking that the provider doesn't error on disposal (stops polling correctly) + provider.dispose(); + + // If polling wasn't set up, dispose wouldn't call stopPolling + // The test passing without errors indicates polling setup worked + assert.ok(true); + }); + + test('polling refreshes cache periodically', async () => { + mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); + const initialInstructions = '# Initial Instructions'; + mockOctoKitService.setOrgInstructions('testorg', initialInstructions); + + // Pre-populate cache + const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); + mockFileSystem.mockDirectory(cacheDir, [['testorg.instruction.md', FileType.File]]); + mockFileSystem.mockFile(URI.joinPath(cacheDir, 'testorg.instruction.md'), initialInstructions); + + let apiCallCount = 0; + let changeEventCount = 0; + mockOctoKitService.getOrgCustomInstructions = async () => { + apiCallCount++; + if (apiCallCount === 1) { + return initialInstructions; + } else { + // Return updated instructions on subsequent calls + return '# Updated Instructions'; + } + }; + + const provider = createProvider(); + provider.onDidChangeInstructions(() => { + changeEventCount++; + }); + + // Manually trigger a refresh to simulate polling (since we can't wait 5 minutes) + // Access the private method through type casting for testing + await (provider as any).refreshCache(); + + // Should not fire change event if content is the same + assert.equal(changeEventCount, 0); + assert.equal(apiCallCount, 1); + + // Now update the instructions and refresh again + await (provider as any).refreshCache(); + + await new Promise(resolve => setTimeout(resolve, 100)); + + // Should fire change event for updated content + assert.equal(changeEventCount, 1); + assert.equal(apiCallCount, 2); + }); + + test('stops polling on disposal', async () => { + mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); + const provider = createProvider(); + + let apiCallCount = 0; + mockOctoKitService.getOrgCustomInstructions = async () => { + apiCallCount++; + return '# Test'; + }; + + // Dispose the provider (should stop polling) + provider.dispose(); + + // Manually trigger what would be a polling refresh + // This should not cause any API calls since polling is stopped + try { + await (provider as any).refreshCache(); + } catch { + // Expected - provider is disposed + } + + // Verify no unexpected behavior after disposal + assert.ok(true); + }); + + test('polling handles errors gracefully', async () => { + mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); + + // Pre-populate cache + const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); + mockFileSystem.mockDirectory(cacheDir, [['testorg.instruction.md', FileType.File]]); + mockFileSystem.mockFile(URI.joinPath(cacheDir, 'testorg.instruction.md'), '# Test'); + + let shouldThrowError = false; + mockOctoKitService.getOrgCustomInstructions = async () => { + if (shouldThrowError) { + throw new Error('API Error'); + } + return '# Test'; + }; + + const provider = createProvider(); + + // First refresh should succeed + await (provider as any).refreshCache(); + + // Enable error throwing + shouldThrowError = true; + + // Second refresh should handle error gracefully + await (provider as any).refreshCache(); + + // Should not throw and provider should still be functional + const instructions = await provider.provideInstructions({}, {} as any); + assert.equal(instructions.length, 1); // Should still have cached instructions + }); + + test('polling updates cache when content changes', async () => { + mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); + const v1Instructions = '# Version 1'; + const v2Instructions = '# Version 2'; + + // Pre-populate cache with v1 + const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); + mockFileSystem.mockDirectory(cacheDir, [['testorg.instruction.md', FileType.File]]); + mockFileSystem.mockFile(URI.joinPath(cacheDir, 'testorg.instruction.md'), v1Instructions); + + let currentVersion = 1; + mockOctoKitService.getOrgCustomInstructions = async () => { + return currentVersion === 1 ? v1Instructions : v2Instructions; + }; + + const provider = createProvider(); + + // Initial state - should have v1 + await provider.provideInstructions({}, {} as any); + let contentBytes = await mockFileSystem.readFile(URI.joinPath(cacheDir, 'testorg.instruction.md')); + let content = new TextDecoder().decode(contentBytes); + assert.equal(content, v1Instructions); + + // Simulate content change on server + currentVersion = 2; + + // Trigger polling refresh + await (provider as any).refreshCache(); + await new Promise(resolve => setTimeout(resolve, 100)); + + // Cache should now have v2 + contentBytes = await mockFileSystem.readFile(URI.joinPath(cacheDir, 'testorg.instruction.md')); + content = new TextDecoder().decode(contentBytes); + assert.equal(content, v2Instructions); + }); + + test('polling does not update cache when content unchanged', async () => { + mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); + const stableInstructions = '# Stable Instructions'; + + // Pre-populate cache + const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); + mockFileSystem.mockDirectory(cacheDir, [['testorg.instruction.md', FileType.File]]); + mockFileSystem.mockFile(URI.joinPath(cacheDir, 'testorg.instruction.md'), stableInstructions); + + let apiCallCount = 0; + mockOctoKitService.getOrgCustomInstructions = async () => { + apiCallCount++; + return stableInstructions; + }; + + const provider = createProvider(); + let changeEventCount = 0; + provider.onDidChangeInstructions(() => { + changeEventCount++; + }); + + // Trigger multiple refreshes + await (provider as any).refreshCache(); + await new Promise(resolve => setTimeout(resolve, 50)); + await (provider as any).refreshCache(); + await new Promise(resolve => setTimeout(resolve, 50)); + await (provider as any).refreshCache(); + await new Promise(resolve => setTimeout(resolve, 50)); + + // API should be called but no change events should fire + assert.ok(apiCallCount >= 3); + assert.equal(changeEventCount, 0); + }); + + test('polling respects organization context changes', async () => { + // Start with org1 + mockGitService.setActiveRepository(new GithubRepoId('org1', 'repo1')); + + const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); + mockFileSystem.mockDirectory(cacheDir, [['org1.instruction.md', FileType.File]]); + mockFileSystem.mockFile(URI.joinPath(cacheDir, 'org1.instruction.md'), '# Org 1'); + + let lastRequestedOrg: string | undefined; + mockOctoKitService.getOrgCustomInstructions = async (orgLogin: string) => { + lastRequestedOrg = orgLogin; + return `# Instructions for ${orgLogin}`; + }; + + const provider = createProvider(); + + // Refresh should query org1 + await (provider as any).refreshCache(); + await new Promise(resolve => setTimeout(resolve, 50)); + assert.equal(lastRequestedOrg, 'org1'); + + // Switch to org2 + mockGitService.setActiveRepository(new GithubRepoId('org2', 'repo2')); + mockFileSystem.mockDirectory(cacheDir, [ + ['org1.instruction.md', FileType.File], + ['org2.instruction.md', FileType.File], + ]); + mockFileSystem.mockFile(URI.joinPath(cacheDir, 'org2.instruction.md'), '# Org 2'); + + // Refresh should now query org2 + await (provider as any).refreshCache(); + await new Promise(resolve => setTimeout(resolve, 50)); + assert.equal(lastRequestedOrg, 'org2'); + }); + + test('polling continues after temporary API failures', async () => { + mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); + + const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); + mockFileSystem.mockDirectory(cacheDir, [['testorg.instruction.md', FileType.File]]); + mockFileSystem.mockFile(URI.joinPath(cacheDir, 'testorg.instruction.md'), '# Original'); + + let attemptCount = 0; + mockOctoKitService.getOrgCustomInstructions = async () => { + attemptCount++; + if (attemptCount === 1) { + throw new Error('Temporary API failure'); + } + return '# Updated after recovery'; + }; + + const provider = createProvider(); + + // First refresh fails + await (provider as any).refreshCache(); + await new Promise(resolve => setTimeout(resolve, 50)); + assert.equal(attemptCount, 1); + + // Second refresh succeeds + await (provider as any).refreshCache(); + await new Promise(resolve => setTimeout(resolve, 50)); + assert.equal(attemptCount, 2); + + // Cache should be updated after recovery + const contentBytes = await mockFileSystem.readFile(URI.joinPath(cacheDir, 'testorg.instruction.md')); + const content = new TextDecoder().decode(contentBytes); + assert.equal(content, '# Updated after recovery'); + }); + + test('polling prevents concurrent refresh operations', async () => { + mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); + + const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); + mockFileSystem.mockDirectory(cacheDir, [['testorg.instruction.md', FileType.File]]); + mockFileSystem.mockFile(URI.joinPath(cacheDir, 'testorg.instruction.md'), '# Test'); + + let concurrentCallCount = 0; + let maxConcurrentCalls = 0; + mockOctoKitService.getOrgCustomInstructions = async () => { + concurrentCallCount++; + maxConcurrentCalls = Math.max(maxConcurrentCalls, concurrentCallCount); + await new Promise(resolve => setTimeout(resolve, 50)); + concurrentCallCount--; + return '# Test Instructions'; + }; + + const provider = createProvider(); + + // Trigger multiple refresh operations rapidly + const refreshPromises = [ + (provider as any).refreshCache(), + (provider as any).refreshCache(), + (provider as any).refreshCache(), + ]; + + await Promise.all(refreshPromises); + await new Promise(resolve => setTimeout(resolve, 100)); + + // Should never have more than 1 concurrent API call due to isFetching guard + assert.equal(maxConcurrentCalls, 1); + }); + + test('polling works when no organization is initially determined', async () => { + // Start with no active repository + mockGitService.setActiveRepository(undefined); + + let apiCallCount = 0; + mockOctoKitService.getOrgCustomInstructions = async () => { + apiCallCount++; + return '# Test'; + }; + + const provider = createProvider(); + + // Refresh should handle no organization gracefully + await (provider as any).refreshCache(); + await new Promise(resolve => setTimeout(resolve, 50)); + + // Should not make API calls when no organization can be determined + assert.equal(apiCallCount, 0); + + // Now set an active repository + mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); + const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); + mockFileSystem.mockDirectory(cacheDir, [['testorg.instruction.md', FileType.File]]); + mockFileSystem.mockFile(URI.joinPath(cacheDir, 'testorg.instruction.md'), '# Test'); + + // Refresh should now work + await (provider as any).refreshCache(); + await new Promise(resolve => setTimeout(resolve, 50)); + + // Should make API call now + assert.equal(apiCallCount, 1); + }); + }); }); From 1ab41679c6e044c2fc6014834b639a281f8fdd6f Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Wed, 7 Jan 2026 12:58:41 -0800 Subject: [PATCH 19/33] cleanup --- .../organizationInstructionsContrib.ts | 30 ------------------- ...seAgentContrib.ts => promptFileContrib.ts} | 19 +++++++++--- .../extension/vscode-node/contributions.ts | 6 ++-- .../common/configurationService.ts | 2 +- 4 files changed, 18 insertions(+), 39 deletions(-) delete mode 100644 src/extension/agents/vscode-node/organizationInstructionsContrib.ts rename src/extension/agents/vscode-node/{organizationAndEnterpriseAgentContrib.ts => promptFileContrib.ts} (59%) diff --git a/src/extension/agents/vscode-node/organizationInstructionsContrib.ts b/src/extension/agents/vscode-node/organizationInstructionsContrib.ts deleted file mode 100644 index d3b9bd3e76..0000000000 --- a/src/extension/agents/vscode-node/organizationInstructionsContrib.ts +++ /dev/null @@ -1,30 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import * as vscode from 'vscode'; -import { ConfigKey, IConfigurationService } from '../../../platform/configuration/common/configurationService'; -import { Disposable } from '../../../util/vs/base/common/lifecycle'; -import { IInstantiationService } from '../../../util/vs/platform/instantiation/common/instantiation'; -import { IExtensionContribution } from '../../common/contributions'; -import { OrganizationInstructionsProvider } from './organizationInstructionsProvider'; - -export class OrganizationInstructionsContribution extends Disposable implements IExtensionContribution { - readonly id = 'OrganizationInstructions'; - - constructor( - @IInstantiationService instantiationService: IInstantiationService, - @IConfigurationService configurationService: IConfigurationService, - ) { - super(); - - if ('registerInstructionsProvider' in vscode.chat) { - // Only register the provider if the setting is enabled - if (configurationService.getConfig(ConfigKey.UseOrganizationInstructions)) { - const provider = instantiationService.createInstance(OrganizationInstructionsProvider); - this._register(vscode.chat.registerInstructionsProvider(provider)); - } - } - } -} diff --git a/src/extension/agents/vscode-node/organizationAndEnterpriseAgentContrib.ts b/src/extension/agents/vscode-node/promptFileContrib.ts similarity index 59% rename from src/extension/agents/vscode-node/organizationAndEnterpriseAgentContrib.ts rename to src/extension/agents/vscode-node/promptFileContrib.ts index 21fdf2e1af..82942c15c6 100644 --- a/src/extension/agents/vscode-node/organizationAndEnterpriseAgentContrib.ts +++ b/src/extension/agents/vscode-node/promptFileContrib.ts @@ -9,9 +9,10 @@ import { Disposable } from '../../../util/vs/base/common/lifecycle'; import { IInstantiationService } from '../../../util/vs/platform/instantiation/common/instantiation'; import { IExtensionContribution } from '../../common/contributions'; import { OrganizationAndEnterpriseAgentProvider } from './organizationAndEnterpriseAgentProvider'; +import { OrganizationInstructionsProvider } from './organizationInstructionsProvider'; -export class OrganizationAndEnterpriseAgentContribution extends Disposable implements IExtensionContribution { - readonly id = 'OrganizationAndEnterpriseAgents'; +export class PromptFileContribution extends Disposable implements IExtensionContribution { + readonly id = 'PromptFiles'; constructor( @IInstantiationService instantiationService: IInstantiationService, @@ -19,11 +20,21 @@ export class OrganizationAndEnterpriseAgentContribution extends Disposable imple ) { super(); + // Register custom agent provider if ('registerCustomAgentProvider' in vscode.chat) { // Only register the provider if the setting is enabled if (configurationService.getConfig(ConfigKey.ShowOrganizationAndEnterpriseAgents)) { - const provider = instantiationService.createInstance(OrganizationAndEnterpriseAgentProvider); - this._register(vscode.chat.registerCustomAgentProvider(provider)); + const agentProvider = instantiationService.createInstance(OrganizationAndEnterpriseAgentProvider); + this._register(vscode.chat.registerCustomAgentProvider(agentProvider)); + } + } + + // Register instructions provider + if ('registerInstructionsProvider' in vscode.chat) { + // Only register the provider if the setting is enabled + if (configurationService.getConfig(ConfigKey.UseOrganizationInstructions)) { + const instructionsProvider = instantiationService.createInstance(OrganizationInstructionsProvider); + this._register(vscode.chat.registerInstructionsProvider(instructionsProvider)); } } } diff --git a/src/extension/extension/vscode-node/contributions.ts b/src/extension/extension/vscode-node/contributions.ts index 7f0e2ee943..e5a0e7de2e 100644 --- a/src/extension/extension/vscode-node/contributions.ts +++ b/src/extension/extension/vscode-node/contributions.ts @@ -3,8 +3,7 @@ * Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ -import { OrganizationAndEnterpriseAgentContribution } from '../../agents/vscode-node/organizationAndEnterpriseAgentContrib'; -import { OrganizationInstructionsContribution } from '../../agents/vscode-node/organizationInstructionsContrib'; +import { PromptFileContribution } from '../../agents/vscode-node/promptFileContrib'; import { AuthenticationContrib } from '../../authentication/vscode-node/authentication.contribution'; import { BYOKContrib } from '../../byok/vscode-node/byokContribution'; import { ChatQuotaContribution } from '../../chat/vscode-node/chatQuota.contribution'; @@ -117,7 +116,6 @@ export const vscodeNodeChatContributions: IExtensionContributionFactory[] = [ asContributionFactory(BYOKContrib), asContributionFactory(McpSetupCommands), asContributionFactory(LanguageModelProxyContrib), - asContributionFactory(OrganizationAndEnterpriseAgentContribution), - asContributionFactory(OrganizationInstructionsContribution), + asContributionFactory(PromptFileContribution), newWorkspaceContribution, ]; diff --git a/src/platform/configuration/common/configurationService.ts b/src/platform/configuration/common/configurationService.ts index 7379bf94c8..19e2c27d37 100644 --- a/src/platform/configuration/common/configurationService.ts +++ b/src/platform/configuration/common/configurationService.ts @@ -895,7 +895,7 @@ export namespace ConfigKey { export const ShowOrganizationAndEnterpriseAgents = defineSetting('chat.customAgents.showOrganizationAndEnterpriseAgents', ConfigType.Simple, false); /** Enable custom instructions from GitHub Organizations */ - export const UseOrganizationInstructions = defineSetting('chat.customInstructions.useOrganizationInstructions', ConfigType.Simple, true); + export const UseOrganizationInstructions = defineSetting('chat.customInstructions.useOrganizationInstructions', ConfigType.Simple, false); export const CompletionsFetcher = defineSetting('chat.completionsFetcher', ConfigType.ExperimentBased, undefined); export const NextEditSuggestionsFetcher = defineSetting('chat.nesFetcher', ConfigType.ExperimentBased, undefined); From c926baaf427cc4f9599a9a8867a607b110c117b0 Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Wed, 7 Jan 2026 13:02:41 -0800 Subject: [PATCH 20/33] use helper --- .../organizationInstructionsProvider.ts | 31 ++++++++++--------- 1 file changed, 17 insertions(+), 14 deletions(-) diff --git a/src/extension/agents/vscode-node/organizationInstructionsProvider.ts b/src/extension/agents/vscode-node/organizationInstructionsProvider.ts index 1804e39ab7..8d517de4ed 100644 --- a/src/extension/agents/vscode-node/organizationInstructionsProvider.ts +++ b/src/extension/agents/vscode-node/organizationInstructionsProvider.ts @@ -124,20 +124,7 @@ export class OrganizationInstructionsProvider extends Disposable implements vsco } // Find any organization with instructions in cache - try { - const files = await this.fileSystem.readDirectory(cacheDir); - for (const [filename, fileType] of files) { - if (fileType === FileType.File && filename.endsWith(InstructionFileExtension)) { - const orgLogin = filename.substring(0, filename.length - InstructionFileExtension.length); - this.logService.trace(`[OrganizationInstructionsProvider] Using cached organization: ${orgLogin}`); - return orgLogin; - } - } - } catch (error) { - this.logService.trace(`[OrganizationInstructionsProvider] Error reading cache directory: ${error}`); - } - - return undefined; + return await this.findFirstCachedOrganization(cacheDir); } /** @@ -153,6 +140,22 @@ export class OrganizationInstructionsProvider extends Disposable implements vsco } } + private async findFirstCachedOrganization(cacheDir: vscode.Uri): Promise { + try { + const files = await this.fileSystem.readDirectory(cacheDir); + for (const [filename, fileType] of files) { + if (fileType === FileType.File && filename.endsWith(InstructionFileExtension)) { + const orgLogin = filename.substring(0, filename.length - InstructionFileExtension.length); + this.logService.trace(`[OrganizationInstructionsProvider] Using cached organization: ${orgLogin}`); + return orgLogin; + } + } + } catch (error) { + this.logService.trace(`[OrganizationInstructionsProvider] Error reading cache directory: ${error}`); + } + return undefined; + } + private async readFromCache( orgLogin: string, ): Promise { From 24f3e2ecabab76163eb32610f4d737d0406f98da Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Wed, 7 Jan 2026 13:07:03 -0800 Subject: [PATCH 21/33] remove instructions --- package-lock.json | 8 +- package.json | 9 +- package.nls.json | 1 - .../organizationInstructionsProvider.ts | 320 ----- .../agents/vscode-node/promptFileContrib.ts | 10 - ...nizationAndEnterpriseAgentProvider.spec.ts | 1 - .../organizationInstructionsProvider.spec.ts | 1029 ----------------- src/platform/github/common/githubService.ts | 7 - .../github/common/octoKitServiceImpl.ts | 26 - 9 files changed, 6 insertions(+), 1405 deletions(-) delete mode 100644 src/extension/agents/vscode-node/organizationInstructionsProvider.ts delete mode 100644 src/extension/agents/vscode-node/test/organizationInstructionsProvider.spec.ts diff --git a/package-lock.json b/package-lock.json index 8dac842a8c..dd6b51522c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -18,7 +18,7 @@ "@humanwhocodes/gitignore-to-minimatch": "1.0.2", "@microsoft/tiktokenizer": "^1.0.10", "@sinclair/typebox": "^0.34.41", - "@vscode/copilot-api": "^0.2.6", + "@vscode/copilot-api": "^0.2.5", "@vscode/extension-telemetry": "^1.2.0", "@vscode/l10n": "^0.0.18", "@vscode/prompt-tsx": "^0.4.0-alpha.5", @@ -6514,9 +6514,9 @@ } }, "node_modules/@vscode/copilot-api": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/@vscode/copilot-api/-/copilot-api-0.2.6.tgz", - "integrity": "sha512-I5CTQMaV1iIIczA2sew3E85O0qYvwGZhgQtzTxdBk7wclhLcDTVXoz/oAcY1vc5gTl+SzlwM720NDNt/5GpLZQ==", + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/@vscode/copilot-api/-/copilot-api-0.2.5.tgz", + "integrity": "sha512-FITunwQI7JNXOFHikgMt6y2TKEjro14CCJbYjieLwvXkv+3t6tDxI0SEU+W4z0VxMMp4g3uCOqk8+WZa1LQaBw==", "license": "SEE LICENSE" }, "node_modules/@vscode/debugadapter": { diff --git a/package.json b/package.json index bb38e22216..734ae22142 100644 --- a/package.json +++ b/package.json @@ -84,7 +84,7 @@ "onUri", "onFileSystem:ccreq", "onFileSystem:ccsettings", - "onChatContributionsProvider" + "onCustomAgentProvider" ], "main": "./dist/extension", "l10n": "./l10n", @@ -2468,11 +2468,6 @@ "default": true, "description": "%github.copilot.config.customInstructionsInSystemMessage%" }, - "github.copilot.chat.customInstructions.useOrganizationInstructions": { - "type": "boolean", - "default": true, - "description": "%github.copilot.config.customInstructions.useOrganizationInstructions%" - }, "github.copilot.chat.agent.currentEditorContext.enabled": { "type": "boolean", "default": true, @@ -5186,7 +5181,7 @@ "@humanwhocodes/gitignore-to-minimatch": "1.0.2", "@microsoft/tiktokenizer": "^1.0.10", "@sinclair/typebox": "^0.34.41", - "@vscode/copilot-api": "^0.2.6", + "@vscode/copilot-api": "^0.2.5", "@vscode/extension-telemetry": "^1.2.0", "@vscode/l10n": "^0.0.18", "@vscode/prompt-tsx": "^0.4.0-alpha.5", diff --git a/package.nls.json b/package.nls.json index 6c266de14e..02f59c3148 100644 --- a/package.nls.json +++ b/package.nls.json @@ -298,7 +298,6 @@ "github.copilot.config.agent.currentEditorContext.enabled": "When enabled, Copilot will include the name of the current active editor in the context for agent mode.", "github.copilot.config.customInstructionsInSystemMessage": "When enabled, custom instructions and mode instructions will be appended to the system message instead of a user message.", "github.copilot.config.customAgents.showOrganizationAndEnterpriseAgents": "Enable custom agents from GitHub Enterprise and Organizations. When disabled, custom agents from your organization or enterprise will not be available in Copilot.", - "github.copilot.config.customInstructions.useOrganizationInstructions": "Enable custom instructions from GitHub Organizations. When disabled, custom instructions from your organization will not be available in Copilot.", "copilot.toolSet.editing.description": "Edit files in your workspace", "copilot.toolSet.read.description": "Read files in your workspace", "copilot.toolSet.search.description": "Search files in your workspace", diff --git a/src/extension/agents/vscode-node/organizationInstructionsProvider.ts b/src/extension/agents/vscode-node/organizationInstructionsProvider.ts deleted file mode 100644 index 8d517de4ed..0000000000 --- a/src/extension/agents/vscode-node/organizationInstructionsProvider.ts +++ /dev/null @@ -1,320 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import * as vscode from 'vscode'; -import { IVSCodeExtensionContext } from '../../../platform/extContext/common/extensionContext'; -import { IFileSystemService } from '../../../platform/filesystem/common/fileSystemService'; -import { FileType } from '../../../platform/filesystem/common/fileTypes'; -import { IGitService } from '../../../platform/git/common/gitService'; -import { IOctoKitService } from '../../../platform/github/common/githubService'; -import { ILogService } from '../../../platform/log/common/logService'; -import { Disposable, toDisposable } from '../../../util/vs/base/common/lifecycle'; -import { getRepoId } from '../../chatSessions/vscode/copilotCodingAgentUtils'; - -const InstructionFileExtension = '.instruction.md'; -const REFRESH_INTERVAL_MS = 5 * 60 * 1000; // 5 minutes - -export class OrganizationInstructionsProvider extends Disposable implements vscode.InstructionsProvider { - - private readonly _onDidChangeInstructions = this._register(new vscode.EventEmitter()); - readonly onDidChangeInstructions = this._onDidChangeInstructions.event; - - private isFetching = false; - private pollingInterval: ReturnType | undefined; - - constructor( - @IOctoKitService private readonly octoKitService: IOctoKitService, - @ILogService private readonly logService: ILogService, - @IGitService private readonly gitService: IGitService, - @IVSCodeExtensionContext readonly extensionContext: IVSCodeExtensionContext, - @IFileSystemService private readonly fileSystem: IFileSystemService, - ) { - super(); - this.startPolling(); - } - - private getCacheDir(): vscode.Uri | undefined { - if (!this.extensionContext.storageUri) { - return; - } - return vscode.Uri.joinPath(this.extensionContext.storageUri, 'githubInstructionsCache'); - } - - private getCacheFilename(orgLogin: string): string { - return orgLogin + InstructionFileExtension; - } - - async provideInstructions( - options: vscode.InstructionsQueryOptions, - _token: vscode.CancellationToken - ): Promise { - try { - const orgLogin = await this.determineOrganizationToUse(); - const cachedInstructions = orgLogin ? await this.readFromCache(orgLogin) : []; - return cachedInstructions; - } catch (error) { - this.logService.error(`[OrganizationInstructionsProvider] Error in provideInstructions: ${error}`); - return []; - } - } - - /** - * Tries all user's organizations to find one with custom instructions. - * Returns the first organization login that has instructions, or undefined if none found. - */ - private async tryAllOrganizations(options: vscode.InstructionsQueryOptions): Promise { - try { - this.logService.trace('[OrganizationInstructionsProvider] Fetching list of user organizations'); - const organizations = await this.octoKitService.getUserOrganizations({ createIfNone: false }); - - if (!organizations || organizations.length === 0) { - this.logService.trace('[OrganizationInstructionsProvider] No organizations found for user'); - return undefined; - } - - this.logService.trace(`[OrganizationInstructionsProvider] Trying ${organizations.length} organizations`); - - // Try each organization until we find one with instructions - for (const org of organizations) { - try { - this.logService.trace(`[OrganizationInstructionsProvider] Trying organization: ${org}`); - const instructions = await this.octoKitService.getOrgCustomInstructions(org, {}); - - if (instructions) { - this.logService.trace(`[OrganizationInstructionsProvider] Found instructions for organization: ${org}`); - // Cache the instructions - await this.cacheInstructions(org, instructions); - return org; - } - } catch (error) { - this.logService.trace(`[OrganizationInstructionsProvider] Error fetching instructions for ${org}: ${error}`); - // Continue to next organization - } - } - - this.logService.trace('[OrganizationInstructionsProvider] No organization with instructions found'); - return undefined; - } catch (error) { - this.logService.error(`[OrganizationInstructionsProvider] Error in tryAllOrganizations: ${error}`); - return undefined; - } - } - - /** - * Determines which organization to use for instructions based on priority. - */ - private async determineOrganizationToUse(): Promise { - const cacheDir = this.getCacheDir(); - if (!cacheDir) { - this.logService.trace('[OrganizationInstructionsProvider] No workspace open, cannot determine organization'); - return undefined; - } - - // Check if current repository belongs to an organization with instructions - const repoId = await getRepoId(this.gitService); - if (repoId) { - const currentOrgLogin = repoId.org; - const hasInstructions = await this.hasInstructionsInCache(currentOrgLogin, cacheDir); - if (hasInstructions) { - this.logService.trace(`[OrganizationInstructionsProvider] Using current repository's organization: ${currentOrgLogin}`); - return currentOrgLogin; - } - } - - // Find any organization with instructions in cache - return await this.findFirstCachedOrganization(cacheDir); - } - - /** - * Checks if instructions exist in cache for a given organization - */ - private async hasInstructionsInCache(orgLogin: string, cacheDir: vscode.Uri): Promise { - const fileName = this.getCacheFilename(orgLogin); - try { - const files = await this.fileSystem.readDirectory(cacheDir); - return files.some(([name, type]) => type === FileType.File && name === fileName); - } catch { - return false; - } - } - - private async findFirstCachedOrganization(cacheDir: vscode.Uri): Promise { - try { - const files = await this.fileSystem.readDirectory(cacheDir); - for (const [filename, fileType] of files) { - if (fileType === FileType.File && filename.endsWith(InstructionFileExtension)) { - const orgLogin = filename.substring(0, filename.length - InstructionFileExtension.length); - this.logService.trace(`[OrganizationInstructionsProvider] Using cached organization: ${orgLogin}`); - return orgLogin; - } - } - } catch (error) { - this.logService.trace(`[OrganizationInstructionsProvider] Error reading cache directory: ${error}`); - } - return undefined; - } - - private async readFromCache( - orgLogin: string, - ): Promise { - try { - const cacheDir = this.getCacheDir(); - if (!cacheDir) { - this.logService.trace('[OrganizationInstructionsProvider] No workspace open, cannot use cache'); - return []; - } - - const cacheContents = await this.readCacheContents(orgLogin, cacheDir); - if (cacheContents === undefined) { - this.logService.trace(`[OrganizationInstructionsProvider] No cache found for org ${orgLogin}`); - return []; - } - - const instructions: vscode.InstructionsResource[] = []; - const fileName = this.getCacheFilename(orgLogin); - const fileUri = vscode.Uri.joinPath(cacheDir, fileName); - instructions.push({ - name: orgLogin, - description: '', - uri: fileUri, - }); - - this.logService.trace(`[OrganizationInstructionsProvider] Loaded ${instructions.length} instructions from cache for org ${orgLogin}`); - return instructions; - } catch (error) { - this.logService.error(`[OrganizationInstructionsProvider] Error reading from cache: ${error}`); - return []; - } - } - - private async fetchAndUpdateCache( - orgLogin: string | undefined, - options: vscode.InstructionsQueryOptions - ): Promise { - // Prevent concurrent fetches - if (this.isFetching) { - this.logService.trace('[OrganizationInstructionsProvider] Fetch already in progress, skipping'); - return; - } - - this.isFetching = true; - try { - // If no orgLogin provided, try all organizations - if (!orgLogin) { - this.logService.trace('[OrganizationInstructionsProvider] No orgLogin provided, trying all organizations'); - orgLogin = await this.tryAllOrganizations(options); - if (!orgLogin) { - this.logService.trace('[OrganizationInstructionsProvider] No organization with instructions found'); - return; - } - // tryAllOrganizations already fetched and cached, just fire the event - this._onDidChangeInstructions.fire(); - return; - } - - this.logService.trace(`[OrganizationInstructionsProvider] Fetching custom instructions for org ${orgLogin}`); - - const instructions = await this.octoKitService.getOrgCustomInstructions(orgLogin, {}); - const cacheDir = this.getCacheDir(); - if (!cacheDir) { - this.logService.trace('[OrganizationInstructionsProvider] No workspace open, cannot use cache'); - return; - } - - if (!instructions) { - this.logService.trace(`[OrganizationInstructionsProvider] No custom instructions found for org ${orgLogin}`); - return; - } - - const existingInstructions = await this.readCacheContents(orgLogin, cacheDir); - const hasChanges = instructions !== existingInstructions; - - if (!hasChanges) { - this.logService.trace(`[OrganizationInstructionsProvider] No changes detected in cache for org ${orgLogin}`); - return; - } - - await this.cacheInstructions(orgLogin, instructions); - this.logService.trace(`[OrganizationInstructionsProvider] Updated cache with instructions for org ${orgLogin}`); - - // Fire event to notify consumers that instructions have changed - this._onDidChangeInstructions.fire(); - } finally { - this.isFetching = false; - } - } - - /** - * Caches instructions for an organization - */ - private async cacheInstructions(orgLogin: string, instructions: string): Promise { - const cacheDir = this.getCacheDir(); - if (!cacheDir) { - this.logService.trace('[OrganizationInstructionsProvider] No workspace open, cannot use cache'); - return; - } - - // Ensure cache directory exists - try { - await this.fileSystem.stat(cacheDir); - } catch (error) { - // Directory doesn't exist, create it - await this.fileSystem.createDirectory(cacheDir); - } - - const fileName = this.getCacheFilename(orgLogin); - const fileUri = vscode.Uri.joinPath(cacheDir, fileName); - await this.fileSystem.writeFile(fileUri, new TextEncoder().encode(instructions)); - } - - private async readCacheContents(orgLogin: string, cacheDir: vscode.Uri): Promise { - try { - const files = await this.fileSystem.readDirectory(cacheDir); - for (const [filename, fileType] of files) { - if (fileType === FileType.File && filename === this.getCacheFilename(orgLogin)) { - const fileUri = vscode.Uri.joinPath(cacheDir, filename); - const content = await this.fileSystem.readFile(fileUri); - const text = new TextDecoder().decode(content); - return text; - } - } - } catch { - // Directory might not exist yet or other errors - } - return undefined; - } - - private startPolling(): void { - if (this.pollingInterval) { - return; - } - - this.logService.trace(`[OrganizationInstructionsProvider] Starting polling with interval: ${REFRESH_INTERVAL_MS}ms`); - - this.pollingInterval = setInterval(async () => { - await this.refreshCache(); - }, REFRESH_INTERVAL_MS); - - // Register for disposal - this._register(toDisposable(() => this.stopPolling())); - } - - private stopPolling(): void { - if (this.pollingInterval) { - this.logService.trace('[OrganizationInstructionsProvider] Stopping polling'); - clearInterval(this.pollingInterval); - this.pollingInterval = undefined; - } - } - - private async refreshCache(): Promise { - try { - const orgLogin = await this.determineOrganizationToUse(); - await this.fetchAndUpdateCache(orgLogin, {}); - } catch (error) { - this.logService.error(`[OrganizationInstructionsProvider] Error in refreshCache: ${error}`); - } - } -} diff --git a/src/extension/agents/vscode-node/promptFileContrib.ts b/src/extension/agents/vscode-node/promptFileContrib.ts index 82942c15c6..9f395a95aa 100644 --- a/src/extension/agents/vscode-node/promptFileContrib.ts +++ b/src/extension/agents/vscode-node/promptFileContrib.ts @@ -9,7 +9,6 @@ import { Disposable } from '../../../util/vs/base/common/lifecycle'; import { IInstantiationService } from '../../../util/vs/platform/instantiation/common/instantiation'; import { IExtensionContribution } from '../../common/contributions'; import { OrganizationAndEnterpriseAgentProvider } from './organizationAndEnterpriseAgentProvider'; -import { OrganizationInstructionsProvider } from './organizationInstructionsProvider'; export class PromptFileContribution extends Disposable implements IExtensionContribution { readonly id = 'PromptFiles'; @@ -28,14 +27,5 @@ export class PromptFileContribution extends Disposable implements IExtensionCont this._register(vscode.chat.registerCustomAgentProvider(agentProvider)); } } - - // Register instructions provider - if ('registerInstructionsProvider' in vscode.chat) { - // Only register the provider if the setting is enabled - if (configurationService.getConfig(ConfigKey.UseOrganizationInstructions)) { - const instructionsProvider = instantiationService.createInstance(OrganizationInstructionsProvider); - this._register(vscode.chat.registerInstructionsProvider(instructionsProvider)); - } - } } } diff --git a/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts b/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts index 69ac4f050e..02fac3d487 100644 --- a/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts +++ b/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts @@ -43,7 +43,6 @@ class MockOctoKitService implements IOctoKitService { getFileContent = async () => ''; getUserOrganizations = async () => this.userOrganizations; getOrganizationRepositories = async (org: string) => [org === 'testorg' ? 'testrepo' : 'repo']; - getOrgCustomInstructions = async () => undefined; async getCustomAgents(owner: string, repo: string, options: CustomAgentListOptions, authOptions: { createIfNone?: boolean }): Promise { if (!(await this.getCurrentAuthedUser())) { diff --git a/src/extension/agents/vscode-node/test/organizationInstructionsProvider.spec.ts b/src/extension/agents/vscode-node/test/organizationInstructionsProvider.spec.ts deleted file mode 100644 index 2915360ae3..0000000000 --- a/src/extension/agents/vscode-node/test/organizationInstructionsProvider.spec.ts +++ /dev/null @@ -1,1029 +0,0 @@ -/*--------------------------------------------------------------------------------------------- - * Copyright (c) Microsoft Corporation. All rights reserved. - * Licensed under the MIT License. See License.txt in the project root for license information. - *--------------------------------------------------------------------------------------------*/ - -import { assert } from 'chai'; -import { afterEach, beforeEach, suite, test } from 'vitest'; -import * as vscode from 'vscode'; -import { IFileSystemService } from '../../../../platform/filesystem/common/fileSystemService'; -import { FileType } from '../../../../platform/filesystem/common/fileTypes'; -import { MockFileSystemService } from '../../../../platform/filesystem/node/test/mockFileSystemService'; -import { GithubRepoId, IGitService, RepoContext } from '../../../../platform/git/common/gitService'; -import { IOctoKitService } from '../../../../platform/github/common/githubService'; -import { ILogService } from '../../../../platform/log/common/logService'; -import { Event } from '../../../../util/vs/base/common/event'; -import { DisposableStore } from '../../../../util/vs/base/common/lifecycle'; -import { constObservable, observableValue } from '../../../../util/vs/base/common/observable'; -import { URI } from '../../../../util/vs/base/common/uri'; -import { createExtensionUnitTestingServices } from '../../../test/node/services'; -import { OrganizationInstructionsProvider } from '../organizationInstructionsProvider'; - -/** - * Mock implementation of IGitService for testing - */ -class MockGitService implements IGitService { - _serviceBrand: undefined; - isInitialized = true; - activeRepository = observableValue(this, undefined); - onDidOpenRepository = Event.None; - onDidCloseRepository = Event.None; - onDidFinishInitialization = Event.None; - - get repositories(): RepoContext[] { - const repo = this.activeRepository.get(); - return repo ? [repo] : []; - } - - setActiveRepository(repoId: GithubRepoId | undefined) { - if (repoId) { - this.activeRepository.set({ - rootUri: URI.file('/test/repo'), - headBranchName: undefined, - headCommitHash: undefined, - upstreamBranchName: undefined, - upstreamRemote: undefined, - isRebasing: false, - remoteFetchUrls: [`https://github.com/${repoId.org}/${repoId.repo}.git`], - remotes: [], - worktrees: [], - changes: undefined, - headBranchNameObs: constObservable(undefined), - headCommitHashObs: constObservable(undefined), - upstreamBranchNameObs: constObservable(undefined), - upstreamRemoteObs: constObservable(undefined), - isRebasingObs: constObservable(false), - isIgnored: async () => false, - }, undefined); - } else { - this.activeRepository.set(undefined, undefined); - } - } - - async getRepository(uri: URI): Promise { - return undefined; - } - - async getRepositoryFetchUrls(uri: URI): Promise | undefined> { - return undefined; - } - - async initialize(): Promise { } - async add(uri: URI, paths: string[]): Promise { } - async log(uri: URI, options?: any): Promise { - return []; - } - async diffBetween(uri: URI, ref1: string, ref2: string): Promise { - return []; - } - async diffBetweenPatch(uri: URI, ref1: string, ref2: string, path: string): Promise { - return undefined; - } - async diffBetweenWithStats(uri: URI, ref1: string, ref2: string, path?: string): Promise { - return []; - } - async diffWith(uri: URI, ref: string): Promise { - return []; - } - async diffIndexWithHEADShortStats(uri: URI): Promise { - return undefined; - } - async fetch(uri: URI, remote?: string, ref?: string, depth?: number): Promise { } - async getMergeBase(uri: URI, ref1: string, ref2: string): Promise { - return undefined; - } - async createWorktree(uri: URI, options?: { path?: string; commitish?: string; branch?: string }): Promise { - return undefined; - } - async deleteWorktree(uri: URI, path: string, options?: { force?: boolean }): Promise { } - async migrateChanges(uri: URI, sourceRepositoryUri: URI, options?: { confirmation?: boolean; deleteFromSource?: boolean; untracked?: boolean }): Promise { } - async applyPatch(uri: URI, patch: string): Promise { } - async commit(uri: URI, message: string | undefined): Promise { } - async getRefs(uri: URI, query: any, cancellationToken?: any): Promise { - return []; - } - - dispose() { } -} - -/** - * Mock implementation of IOctoKitService for testing - */ -class MockOctoKitService implements IOctoKitService { - _serviceBrand: undefined; - - private orgInstructions: Map = new Map(); - - getCurrentAuthedUser = async () => ({ login: 'testuser', name: 'Test User', avatar_url: '' }); - getCopilotPullRequestsForUser = async () => []; - getCopilotSessionsForPR = async () => []; - getSessionLogs = async () => ''; - getSessionInfo = async () => undefined; - postCopilotAgentJob = async () => undefined; - getJobByJobId = async () => undefined; - getJobBySessionId = async () => undefined; - addPullRequestComment = async () => null; - getAllOpenSessions = async () => []; - getAllSessions = async () => []; - getPullRequestFromGlobalId = async () => null; - getPullRequestFiles = async () => []; - closePullRequest = async () => false; - getFileContent = async () => ''; - getUserOrganizations = async () => []; - getOrganizationRepositories = async () => []; - getCustomAgents = async () => []; - getCustomAgentDetails = async () => undefined; - - async getOrgCustomInstructions(orgLogin: string): Promise { - return this.orgInstructions.get(orgLogin); - } - - setOrgInstructions(orgLogin: string, instructions: string | undefined) { - if (instructions === undefined) { - this.orgInstructions.delete(orgLogin); - } else { - this.orgInstructions.set(orgLogin, instructions); - } - } - - clearInstructions() { - this.orgInstructions.clear(); - } -} - -/** - * Mock implementation of extension context for testing - */ -class MockExtensionContext { - storageUri: vscode.Uri | undefined; - - constructor(storageUri?: vscode.Uri) { - this.storageUri = storageUri; - } -} - -suite('OrganizationInstructionsProvider', () => { - let disposables: DisposableStore; - let mockGitService: MockGitService; - let mockOctoKitService: MockOctoKitService; - let mockFileSystem: MockFileSystemService; - let mockExtensionContext: MockExtensionContext; - let accessor: any; - let provider: OrganizationInstructionsProvider; - - beforeEach(() => { - disposables = new DisposableStore(); - - // Create mocks first - mockGitService = new MockGitService(); - mockOctoKitService = new MockOctoKitService(); - const storageUri = URI.file('/test/storage'); - mockExtensionContext = new MockExtensionContext(storageUri); - - // Set up testing services - const testingServiceCollection = createExtensionUnitTestingServices(disposables); - accessor = disposables.add(testingServiceCollection.createTestingAccessor()); - - mockFileSystem = accessor.get(IFileSystemService) as MockFileSystemService; - }); - - afterEach(() => { - disposables.dispose(); - mockOctoKitService.clearInstructions(); - }); - - function createProvider() { - // Create provider manually with all dependencies - provider = new OrganizationInstructionsProvider( - mockOctoKitService, - accessor.get(ILogService), - mockGitService, - mockExtensionContext as any, - mockFileSystem, - ); - disposables.add(provider); - return provider; - } - - test('returns empty array when no active repository', async () => { - mockGitService.setActiveRepository(undefined); - const provider = createProvider(); - - const instructions = await provider.provideInstructions({}, {} as any); - - assert.deepEqual(instructions, []); - }); - - test('returns empty array when no storage URI available', async () => { - mockExtensionContext.storageUri = undefined; - mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); - const provider = createProvider(); - - const instructions = await provider.provideInstructions({}, {} as any); - - assert.deepEqual(instructions, []); - }); - - test('returns cached instructions on first call', async () => { - mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); - const provider = createProvider(); - - // Pre-populate cache - const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); - mockFileSystem.mockDirectory(cacheDir, [['testorg.instruction.md', FileType.File]]); - const instructionFile = URI.joinPath(cacheDir, 'testorg.instruction.md'); - const instructionContent = `# Organization Instructions - -Always follow our coding standards.`; - mockFileSystem.mockFile(instructionFile, instructionContent); - - const instructions = await provider.provideInstructions({}, {} as any); - - assert.equal(instructions.length, 1); - assert.equal(instructions[0].name, 'testorg'); - assert.equal(instructions[0].description, ''); - }); - - test('fetches and caches instructions from API', async () => { - mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); - const provider = createProvider(); - - // Mock API response - const mockInstructions = `# Organization Instructions - -Always use TypeScript strict mode.`; - mockOctoKitService.setOrgInstructions('testorg', mockInstructions); - - // First call returns cached (empty) results - const instructions1 = await provider.provideInstructions({}, {} as any); - assert.deepEqual(instructions1, []); - - // Wait for background fetch to complete - await new Promise(resolve => setTimeout(resolve, 100)); - - // Second call should return newly cached instructions - const instructions2 = await provider.provideInstructions({}, {} as any); - assert.equal(instructions2.length, 1); - assert.equal(instructions2[0].name, 'testorg'); - }); - - test('caches instructions with correct content', async () => { - mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); - const provider = createProvider(); - - const mockInstructions = `# Coding Standards - -1. Use tabs for indentation -2. Follow TypeScript conventions -3. Write comprehensive tests`; - mockOctoKitService.setOrgInstructions('testorg', mockInstructions); - - await provider.provideInstructions({}, {} as any); - await new Promise(resolve => setTimeout(resolve, 100)); - - // Check cached file content - const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); - const instructionFile = URI.joinPath(cacheDir, 'testorg.instruction.md'); - const contentBytes = await mockFileSystem.readFile(instructionFile); - const content = new TextDecoder().decode(contentBytes); - - assert.equal(content, mockInstructions); - }); - - test('fires change event when cache is updated', async () => { - mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); - const provider = createProvider(); - - const mockInstructions = `# Initial Instructions`; - mockOctoKitService.setOrgInstructions('testorg', mockInstructions); - - await provider.provideInstructions({}, {} as any); - await new Promise(resolve => setTimeout(resolve, 100)); - - let eventFired = false; - provider.onDidChangeInstructions(() => { - eventFired = true; - }); - - // Update the instructions - const updatedInstructions = `# Updated Instructions`; - mockOctoKitService.setOrgInstructions('testorg', updatedInstructions); - - await provider.provideInstructions({}, {} as any); - await new Promise(resolve => setTimeout(resolve, 150)); - - assert.equal(eventFired, true); - }); - - test('handles API errors gracefully', async () => { - mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); - const provider = createProvider(); - - // Make the API throw an error - mockOctoKitService.getOrgCustomInstructions = async () => { - throw new Error('API Error'); - }; - - // Should not throw, should return empty array - const instructions = await provider.provideInstructions({}, {} as any); - assert.deepEqual(instructions, []); - }); - - test('prevents concurrent fetches when called multiple times rapidly', async () => { - mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); - const provider = createProvider(); - - let apiCallCount = 0; - mockOctoKitService.getOrgCustomInstructions = async () => { - apiCallCount++; - // Simulate slow API call - await new Promise(resolve => setTimeout(resolve, 50)); - return 'Test instructions'; - }; - - // Make multiple concurrent calls - const promise1 = provider.provideInstructions({}, {} as any); - const promise2 = provider.provideInstructions({}, {} as any); - const promise3 = provider.provideInstructions({}, {} as any); - - await Promise.all([promise1, promise2, promise3]); - await new Promise(resolve => setTimeout(resolve, 100)); - - // API should only be called once due to isFetching guard - assert.equal(apiCallCount, 1); - }); - - test('does not fire change event when content is identical', async () => { - mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); - const provider = createProvider(); - - const mockInstructions = `# Stable Instructions`; - mockOctoKitService.setOrgInstructions('testorg', mockInstructions); - - await provider.provideInstructions({}, {} as any); - await new Promise(resolve => setTimeout(resolve, 100)); - - let changeEventCount = 0; - provider.onDidChangeInstructions(() => { - changeEventCount++; - }); - - // Fetch again with identical content - await provider.provideInstructions({}, {} as any); - await new Promise(resolve => setTimeout(resolve, 150)); - - // No change event should fire - assert.equal(changeEventCount, 0); - }); - - test('handles no instructions found from API', async () => { - mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); - const provider = createProvider(); - - // API returns undefined (no instructions) - mockOctoKitService.setOrgInstructions('testorg', undefined); - - await provider.provideInstructions({}, {} as any); - await new Promise(resolve => setTimeout(resolve, 100)); - - // Should not create any cache files - const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); - try { - const files = await mockFileSystem.readDirectory(cacheDir); - assert.equal(files.length, 0); - } catch { - // Directory might not exist, which is also fine - } - }); - - test('generates correct cache filename for organization', async () => { - mockGitService.setActiveRepository(new GithubRepoId('mycompany', 'testrepo')); - const provider = createProvider(); - - const mockInstructions = `# Company Instructions`; - mockOctoKitService.setOrgInstructions('mycompany', mockInstructions); - - await provider.provideInstructions({}, {} as any); - await new Promise(resolve => setTimeout(resolve, 100)); - - // Check that file was created with correct name - const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); - const instructionFile = URI.joinPath(cacheDir, 'mycompany.instruction.md'); - try { - const contentBytes = await mockFileSystem.readFile(instructionFile); - const content = new TextDecoder().decode(contentBytes); - assert.equal(content, mockInstructions); - } catch (error) { - assert.fail('Cache file should exist with correct name'); - } - }); - - test('handles repository context changes between calls', async () => { - const provider = createProvider(); - - // First call with org A - mockGitService.setActiveRepository(new GithubRepoId('orgA', 'repoA')); - - let capturedOrgLogin: string | undefined; - mockOctoKitService.getOrgCustomInstructions = async (orgLogin: string) => { - capturedOrgLogin = orgLogin; - return 'Org A instructions'; - }; - - await provider.provideInstructions({}, {} as any); - await new Promise(resolve => setTimeout(resolve, 100)); - - assert.equal(capturedOrgLogin, 'orgA'); - - // Change to org B - mockGitService.setActiveRepository(new GithubRepoId('orgB', 'repoB')); - - await provider.provideInstructions({}, {} as any); - await new Promise(resolve => setTimeout(resolve, 100)); - - // Should fetch from new organization - assert.equal(capturedOrgLogin, 'orgB'); - }); - - test('creates cache directory if it does not exist', async () => { - mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); - const provider = createProvider(); - - const mockInstructions = `# Test Instructions`; - mockOctoKitService.setOrgInstructions('testorg', mockInstructions); - - // Initially no cache directory - const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); - - await provider.provideInstructions({}, {} as any); - await new Promise(resolve => setTimeout(resolve, 100)); - - // Cache directory should now exist - try { - const stat = await mockFileSystem.stat(cacheDir); - assert.ok(stat); - } catch { - assert.fail('Cache directory should have been created'); - } - }); - - test('reads existing cache even when directory check fails', async () => { - mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); - const provider = createProvider(); - - // Pre-populate cache - const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); - mockFileSystem.mockDirectory(cacheDir, [['testorg.instruction.md', FileType.File]]); - const instructionFile = URI.joinPath(cacheDir, 'testorg.instruction.md'); - const instructionContent = `# Existing Instructions`; - mockFileSystem.mockFile(instructionFile, instructionContent); - - const instructions = await provider.provideInstructions({}, {} as any); - - // Should successfully read cached instructions - assert.equal(instructions.length, 1); - assert.equal(instructions[0].name, 'testorg'); - }); - - test('handles cache read errors gracefully', async () => { - mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); - const provider = createProvider(); - - // Make readDirectory throw an error - const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); - mockFileSystem.mockDirectory(cacheDir, []); // Empty directory - const originalReadDir = mockFileSystem.readDirectory.bind(mockFileSystem); - mockFileSystem.readDirectory = async () => { - throw new Error('Read error'); - }; - - // Should not throw, should return empty array - const instructions = await provider.provideInstructions({}, {} as any); - assert.deepEqual(instructions, []); - - // Restore original method - mockFileSystem.readDirectory = originalReadDir; - }); - - test('detects instruction additions', async () => { - mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); - const provider = createProvider(); - - // Initial setup with no instructions - mockOctoKitService.setOrgInstructions('testorg', undefined); - - await provider.provideInstructions({}, {} as any); - await new Promise(resolve => setTimeout(resolve, 100)); - - let changeEventFired = false; - provider.onDidChangeInstructions(() => { - changeEventFired = true; - }); - - // Add new instructions - const newInstructions = `# New Instructions - -Follow these rules.`; - mockOctoKitService.setOrgInstructions('testorg', newInstructions); - - await provider.provideInstructions({}, {} as any); - await new Promise(resolve => setTimeout(resolve, 150)); - - assert.equal(changeEventFired, true); - const instructions = await provider.provideInstructions({}, {} as any); - assert.equal(instructions.length, 1); - }); - - test('detects instruction removals', async () => { - mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); - const provider = createProvider(); - - // Initial setup with instructions - const initialInstructions = `# Initial Instructions`; - mockOctoKitService.setOrgInstructions('testorg', initialInstructions); - - await provider.provideInstructions({}, {} as any); - await new Promise(resolve => setTimeout(resolve, 100)); - - provider.onDidChangeInstructions(() => { - // Event listener registered for potential future use - }); - - // Remove instructions - mockOctoKitService.setOrgInstructions('testorg', undefined); - - await provider.provideInstructions({}, {} as any); - await new Promise(resolve => setTimeout(resolve, 150)); - - // Note: Currently the implementation doesn't delete cache files when instructions are removed, - // so the change event might not fire. This test documents current behavior. - // The cached instructions would still be returned on the next call. - }); - - test('handles empty instructions string', async () => { - mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); - const provider = createProvider(); - - // API returns empty string - mockOctoKitService.setOrgInstructions('testorg', ''); - - await provider.provideInstructions({}, {} as any); - await new Promise(resolve => setTimeout(resolve, 100)); - - // Empty strings are treated as "no instructions" and not cached - const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); - const instructionFile = URI.joinPath(cacheDir, 'testorg.instruction.md'); - try { - await mockFileSystem.readFile(instructionFile); - assert.fail('Cache file should not exist for empty instructions'); - } catch { - // Expected - empty instructions are not cached - } - }); - - test('handles instructions with special characters', async () => { - mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); - const provider = createProvider(); - - const mockInstructions = `# Instructions - -Use "double quotes" and 'single quotes'. -Include special chars: @#$%^&*() -Unicode: 你好 🚀`; - mockOctoKitService.setOrgInstructions('testorg', mockInstructions); - - await provider.provideInstructions({}, {} as any); - await new Promise(resolve => setTimeout(resolve, 100)); - - // Check that special characters are preserved - const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); - const instructionFile = URI.joinPath(cacheDir, 'testorg.instruction.md'); - const contentBytes = await mockFileSystem.readFile(instructionFile); - const content = new TextDecoder().decode(contentBytes); - - assert.equal(content, mockInstructions); - }); - - test('handles very large instruction content', async () => { - mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); - const provider = createProvider(); - - // Generate large content (e.g., 100KB) - const largeContent = '# Large Instructions\n\n' + 'x'.repeat(100000); - mockOctoKitService.setOrgInstructions('testorg', largeContent); - - await provider.provideInstructions({}, {} as any); - await new Promise(resolve => setTimeout(resolve, 100)); - - // Check that large content is handled correctly - const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); - const instructionFile = URI.joinPath(cacheDir, 'testorg.instruction.md'); - const contentBytes = await mockFileSystem.readFile(instructionFile); - const content = new TextDecoder().decode(contentBytes); - - assert.equal(content.length, largeContent.length); - }); - - test('returns correct URI for cached instruction resource', async () => { - mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); - const provider = createProvider(); - - // Pre-populate cache - const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); - mockFileSystem.mockDirectory(cacheDir, [['testorg.instruction.md', FileType.File]]); - const instructionFile = URI.joinPath(cacheDir, 'testorg.instruction.md'); - const instructionContent = `# Test`; - mockFileSystem.mockFile(instructionFile, instructionContent); - - const instructions = await provider.provideInstructions({}, {} as any); - - assert.equal(instructions.length, 1); - assert.ok(instructions[0].uri); - assert.equal(instructions[0].uri.toString(), instructionFile.toString()); - }); - - test('handles multiple organizations in same cache directory', async () => { - const provider = createProvider(); - - // First organization - mockGitService.setActiveRepository(new GithubRepoId('org1', 'repo1')); - mockOctoKitService.setOrgInstructions('org1', '# Org 1 Instructions'); - - await provider.provideInstructions({}, {} as any); - await new Promise(resolve => setTimeout(resolve, 100)); - - // Second organization - mockGitService.setActiveRepository(new GithubRepoId('org2', 'repo2')); - mockOctoKitService.setOrgInstructions('org2', '# Org 2 Instructions'); - - await provider.provideInstructions({}, {} as any); - await new Promise(resolve => setTimeout(resolve, 100)); - - // Both instruction files should exist in cache - const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); - const files = await mockFileSystem.readDirectory(cacheDir); - const instructionFiles = files.filter(([name]) => name.endsWith('.instruction.md')); - - assert.equal(instructionFiles.length, 2); - }); - - test('reads correct organization instructions when multiple are cached', async () => { - const provider = createProvider(); - - // Pre-populate cache with multiple organizations - const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); - mockFileSystem.mockDirectory(cacheDir, [ - ['org1.instruction.md', FileType.File], - ['org2.instruction.md', FileType.File], - ]); - mockFileSystem.mockFile(URI.joinPath(cacheDir, 'org1.instruction.md'), '# Org 1 Instructions'); - mockFileSystem.mockFile(URI.joinPath(cacheDir, 'org2.instruction.md'), '# Org 2 Instructions'); - - // Request instructions for org1 - mockGitService.setActiveRepository(new GithubRepoId('org1', 'repo1')); - const instructions = await provider.provideInstructions({}, {} as any); - - assert.equal(instructions.length, 1); - assert.equal(instructions[0].name, 'org1'); - }); - - suite('Polling Behavior', () => { - test('starts polling on initialization', async () => { - mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); - const mockInstructions = '# Test Instructions'; - mockOctoKitService.setOrgInstructions('testorg', mockInstructions); - - // Pre-populate cache so we have something to poll - const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); - mockFileSystem.mockDirectory(cacheDir, [['testorg.instruction.md', FileType.File]]); - mockFileSystem.mockFile(URI.joinPath(cacheDir, 'testorg.instruction.md'), mockInstructions); - - let apiCallCount = 0; - mockOctoKitService.getOrgCustomInstructions = async () => { - apiCallCount++; - return mockInstructions; - }; - - const provider = createProvider(); - - // Wait slightly more than the polling interval (5 minutes = 300,000ms) - // For testing, we'll use a reasonable timeout and check the logic - // In a real test environment, you'd mock timers or expose the interval for testing - - // Since we can't easily wait 5 minutes in a test, we verify polling was set up - // by checking that the provider doesn't error on disposal (stops polling correctly) - provider.dispose(); - - // If polling wasn't set up, dispose wouldn't call stopPolling - // The test passing without errors indicates polling setup worked - assert.ok(true); - }); - - test('polling refreshes cache periodically', async () => { - mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); - const initialInstructions = '# Initial Instructions'; - mockOctoKitService.setOrgInstructions('testorg', initialInstructions); - - // Pre-populate cache - const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); - mockFileSystem.mockDirectory(cacheDir, [['testorg.instruction.md', FileType.File]]); - mockFileSystem.mockFile(URI.joinPath(cacheDir, 'testorg.instruction.md'), initialInstructions); - - let apiCallCount = 0; - let changeEventCount = 0; - mockOctoKitService.getOrgCustomInstructions = async () => { - apiCallCount++; - if (apiCallCount === 1) { - return initialInstructions; - } else { - // Return updated instructions on subsequent calls - return '# Updated Instructions'; - } - }; - - const provider = createProvider(); - provider.onDidChangeInstructions(() => { - changeEventCount++; - }); - - // Manually trigger a refresh to simulate polling (since we can't wait 5 minutes) - // Access the private method through type casting for testing - await (provider as any).refreshCache(); - - // Should not fire change event if content is the same - assert.equal(changeEventCount, 0); - assert.equal(apiCallCount, 1); - - // Now update the instructions and refresh again - await (provider as any).refreshCache(); - - await new Promise(resolve => setTimeout(resolve, 100)); - - // Should fire change event for updated content - assert.equal(changeEventCount, 1); - assert.equal(apiCallCount, 2); - }); - - test('stops polling on disposal', async () => { - mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); - const provider = createProvider(); - - let apiCallCount = 0; - mockOctoKitService.getOrgCustomInstructions = async () => { - apiCallCount++; - return '# Test'; - }; - - // Dispose the provider (should stop polling) - provider.dispose(); - - // Manually trigger what would be a polling refresh - // This should not cause any API calls since polling is stopped - try { - await (provider as any).refreshCache(); - } catch { - // Expected - provider is disposed - } - - // Verify no unexpected behavior after disposal - assert.ok(true); - }); - - test('polling handles errors gracefully', async () => { - mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); - - // Pre-populate cache - const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); - mockFileSystem.mockDirectory(cacheDir, [['testorg.instruction.md', FileType.File]]); - mockFileSystem.mockFile(URI.joinPath(cacheDir, 'testorg.instruction.md'), '# Test'); - - let shouldThrowError = false; - mockOctoKitService.getOrgCustomInstructions = async () => { - if (shouldThrowError) { - throw new Error('API Error'); - } - return '# Test'; - }; - - const provider = createProvider(); - - // First refresh should succeed - await (provider as any).refreshCache(); - - // Enable error throwing - shouldThrowError = true; - - // Second refresh should handle error gracefully - await (provider as any).refreshCache(); - - // Should not throw and provider should still be functional - const instructions = await provider.provideInstructions({}, {} as any); - assert.equal(instructions.length, 1); // Should still have cached instructions - }); - - test('polling updates cache when content changes', async () => { - mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); - const v1Instructions = '# Version 1'; - const v2Instructions = '# Version 2'; - - // Pre-populate cache with v1 - const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); - mockFileSystem.mockDirectory(cacheDir, [['testorg.instruction.md', FileType.File]]); - mockFileSystem.mockFile(URI.joinPath(cacheDir, 'testorg.instruction.md'), v1Instructions); - - let currentVersion = 1; - mockOctoKitService.getOrgCustomInstructions = async () => { - return currentVersion === 1 ? v1Instructions : v2Instructions; - }; - - const provider = createProvider(); - - // Initial state - should have v1 - await provider.provideInstructions({}, {} as any); - let contentBytes = await mockFileSystem.readFile(URI.joinPath(cacheDir, 'testorg.instruction.md')); - let content = new TextDecoder().decode(contentBytes); - assert.equal(content, v1Instructions); - - // Simulate content change on server - currentVersion = 2; - - // Trigger polling refresh - await (provider as any).refreshCache(); - await new Promise(resolve => setTimeout(resolve, 100)); - - // Cache should now have v2 - contentBytes = await mockFileSystem.readFile(URI.joinPath(cacheDir, 'testorg.instruction.md')); - content = new TextDecoder().decode(contentBytes); - assert.equal(content, v2Instructions); - }); - - test('polling does not update cache when content unchanged', async () => { - mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); - const stableInstructions = '# Stable Instructions'; - - // Pre-populate cache - const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); - mockFileSystem.mockDirectory(cacheDir, [['testorg.instruction.md', FileType.File]]); - mockFileSystem.mockFile(URI.joinPath(cacheDir, 'testorg.instruction.md'), stableInstructions); - - let apiCallCount = 0; - mockOctoKitService.getOrgCustomInstructions = async () => { - apiCallCount++; - return stableInstructions; - }; - - const provider = createProvider(); - let changeEventCount = 0; - provider.onDidChangeInstructions(() => { - changeEventCount++; - }); - - // Trigger multiple refreshes - await (provider as any).refreshCache(); - await new Promise(resolve => setTimeout(resolve, 50)); - await (provider as any).refreshCache(); - await new Promise(resolve => setTimeout(resolve, 50)); - await (provider as any).refreshCache(); - await new Promise(resolve => setTimeout(resolve, 50)); - - // API should be called but no change events should fire - assert.ok(apiCallCount >= 3); - assert.equal(changeEventCount, 0); - }); - - test('polling respects organization context changes', async () => { - // Start with org1 - mockGitService.setActiveRepository(new GithubRepoId('org1', 'repo1')); - - const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); - mockFileSystem.mockDirectory(cacheDir, [['org1.instruction.md', FileType.File]]); - mockFileSystem.mockFile(URI.joinPath(cacheDir, 'org1.instruction.md'), '# Org 1'); - - let lastRequestedOrg: string | undefined; - mockOctoKitService.getOrgCustomInstructions = async (orgLogin: string) => { - lastRequestedOrg = orgLogin; - return `# Instructions for ${orgLogin}`; - }; - - const provider = createProvider(); - - // Refresh should query org1 - await (provider as any).refreshCache(); - await new Promise(resolve => setTimeout(resolve, 50)); - assert.equal(lastRequestedOrg, 'org1'); - - // Switch to org2 - mockGitService.setActiveRepository(new GithubRepoId('org2', 'repo2')); - mockFileSystem.mockDirectory(cacheDir, [ - ['org1.instruction.md', FileType.File], - ['org2.instruction.md', FileType.File], - ]); - mockFileSystem.mockFile(URI.joinPath(cacheDir, 'org2.instruction.md'), '# Org 2'); - - // Refresh should now query org2 - await (provider as any).refreshCache(); - await new Promise(resolve => setTimeout(resolve, 50)); - assert.equal(lastRequestedOrg, 'org2'); - }); - - test('polling continues after temporary API failures', async () => { - mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); - - const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); - mockFileSystem.mockDirectory(cacheDir, [['testorg.instruction.md', FileType.File]]); - mockFileSystem.mockFile(URI.joinPath(cacheDir, 'testorg.instruction.md'), '# Original'); - - let attemptCount = 0; - mockOctoKitService.getOrgCustomInstructions = async () => { - attemptCount++; - if (attemptCount === 1) { - throw new Error('Temporary API failure'); - } - return '# Updated after recovery'; - }; - - const provider = createProvider(); - - // First refresh fails - await (provider as any).refreshCache(); - await new Promise(resolve => setTimeout(resolve, 50)); - assert.equal(attemptCount, 1); - - // Second refresh succeeds - await (provider as any).refreshCache(); - await new Promise(resolve => setTimeout(resolve, 50)); - assert.equal(attemptCount, 2); - - // Cache should be updated after recovery - const contentBytes = await mockFileSystem.readFile(URI.joinPath(cacheDir, 'testorg.instruction.md')); - const content = new TextDecoder().decode(contentBytes); - assert.equal(content, '# Updated after recovery'); - }); - - test('polling prevents concurrent refresh operations', async () => { - mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); - - const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); - mockFileSystem.mockDirectory(cacheDir, [['testorg.instruction.md', FileType.File]]); - mockFileSystem.mockFile(URI.joinPath(cacheDir, 'testorg.instruction.md'), '# Test'); - - let concurrentCallCount = 0; - let maxConcurrentCalls = 0; - mockOctoKitService.getOrgCustomInstructions = async () => { - concurrentCallCount++; - maxConcurrentCalls = Math.max(maxConcurrentCalls, concurrentCallCount); - await new Promise(resolve => setTimeout(resolve, 50)); - concurrentCallCount--; - return '# Test Instructions'; - }; - - const provider = createProvider(); - - // Trigger multiple refresh operations rapidly - const refreshPromises = [ - (provider as any).refreshCache(), - (provider as any).refreshCache(), - (provider as any).refreshCache(), - ]; - - await Promise.all(refreshPromises); - await new Promise(resolve => setTimeout(resolve, 100)); - - // Should never have more than 1 concurrent API call due to isFetching guard - assert.equal(maxConcurrentCalls, 1); - }); - - test('polling works when no organization is initially determined', async () => { - // Start with no active repository - mockGitService.setActiveRepository(undefined); - - let apiCallCount = 0; - mockOctoKitService.getOrgCustomInstructions = async () => { - apiCallCount++; - return '# Test'; - }; - - const provider = createProvider(); - - // Refresh should handle no organization gracefully - await (provider as any).refreshCache(); - await new Promise(resolve => setTimeout(resolve, 50)); - - // Should not make API calls when no organization can be determined - assert.equal(apiCallCount, 0); - - // Now set an active repository - mockGitService.setActiveRepository(new GithubRepoId('testorg', 'testrepo')); - const cacheDir = URI.joinPath(mockExtensionContext.storageUri!, 'githubInstructionsCache'); - mockFileSystem.mockDirectory(cacheDir, [['testorg.instruction.md', FileType.File]]); - mockFileSystem.mockFile(URI.joinPath(cacheDir, 'testorg.instruction.md'), '# Test'); - - // Refresh should now work - await (provider as any).refreshCache(); - await new Promise(resolve => setTimeout(resolve, 50)); - - // Should make API call now - assert.equal(apiCallCount, 1); - }); - }); -}); diff --git a/src/platform/github/common/githubService.ts b/src/platform/github/common/githubService.ts index 1d02acfd9b..51e678243d 100644 --- a/src/platform/github/common/githubService.ts +++ b/src/platform/github/common/githubService.ts @@ -353,13 +353,6 @@ export interface IOctoKitService { * @returns An array of repository names */ getOrganizationRepositories(org: string, authOptions: AuthOptions): Promise; - - /** - * Gets the custom instructions prompt for an organization. - * @param orgLogin The organization login - * @returns The prompt string or undefined if not available - */ - getOrgCustomInstructions(orgLogin: string, authOptions: AuthOptions): Promise; } /** diff --git a/src/platform/github/common/octoKitServiceImpl.ts b/src/platform/github/common/octoKitServiceImpl.ts index 455fd04f3b..9457472b5b 100644 --- a/src/platform/github/common/octoKitServiceImpl.ts +++ b/src/platform/github/common/octoKitServiceImpl.ts @@ -346,30 +346,4 @@ export class OctoKitService extends BaseOctoKitService implements IOctoKitServic } return this.getOrganizationRepositoriesWithToken(org, authToken); } - - async getOrgCustomInstructions(orgLogin: string, authOptions: { createIfNone?: boolean }): Promise { - try { - const authToken = (await this._authService.getGitHubSession('permissive', authOptions.createIfNone ? { createIfNone: true } : { silent: true }))?.accessToken; - if (!authToken) { - throw new Error('No authentication token available'); - } - const response = await this._capiClientService.makeRequest({ - method: 'GET', - headers: { - Authorization: `Bearer ${authToken}`, - } - }, { - type: RequestType.OrgCustomInstructions, - orgLogin - }); - if (!response.ok) { - throw new Error(`Failed to fetch custom instructions for org ${orgLogin}: ${response.statusText}`); - } - const data = await response.json() as { prompt: string }; - return data.prompt; - } catch (e) { - this._logService.error(e); - return undefined; - } - } } From d00db3841282483f0c122d815bf330d715c8e125 Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Wed, 7 Jan 2026 13:09:47 -0800 Subject: [PATCH 22/33] clean --- src/extension/agents/vscode-node/promptFileContrib.ts | 4 ++-- src/platform/configuration/common/configurationService.ts | 3 --- 2 files changed, 2 insertions(+), 5 deletions(-) diff --git a/src/extension/agents/vscode-node/promptFileContrib.ts b/src/extension/agents/vscode-node/promptFileContrib.ts index 9f395a95aa..f7b9762995 100644 --- a/src/extension/agents/vscode-node/promptFileContrib.ts +++ b/src/extension/agents/vscode-node/promptFileContrib.ts @@ -23,8 +23,8 @@ export class PromptFileContribution extends Disposable implements IExtensionCont if ('registerCustomAgentProvider' in vscode.chat) { // Only register the provider if the setting is enabled if (configurationService.getConfig(ConfigKey.ShowOrganizationAndEnterpriseAgents)) { - const agentProvider = instantiationService.createInstance(OrganizationAndEnterpriseAgentProvider); - this._register(vscode.chat.registerCustomAgentProvider(agentProvider)); + const orgAndEnterpriseAgentProvider = instantiationService.createInstance(OrganizationAndEnterpriseAgentProvider); + this._register(vscode.chat.registerCustomAgentProvider(orgAndEnterpriseAgentProvider)); } } } diff --git a/src/platform/configuration/common/configurationService.ts b/src/platform/configuration/common/configurationService.ts index 19e2c27d37..4008495045 100644 --- a/src/platform/configuration/common/configurationService.ts +++ b/src/platform/configuration/common/configurationService.ts @@ -894,9 +894,6 @@ export namespace ConfigKey { /** Enable custom agents from GitHub Enterprise/Organizations */ export const ShowOrganizationAndEnterpriseAgents = defineSetting('chat.customAgents.showOrganizationAndEnterpriseAgents', ConfigType.Simple, false); - /** Enable custom instructions from GitHub Organizations */ - export const UseOrganizationInstructions = defineSetting('chat.customInstructions.useOrganizationInstructions', ConfigType.Simple, false); - export const CompletionsFetcher = defineSetting('chat.completionsFetcher', ConfigType.ExperimentBased, undefined); export const NextEditSuggestionsFetcher = defineSetting('chat.nesFetcher', ConfigType.ExperimentBased, undefined); From f4c99cd7983d0b26af1d782d0f4417d32561c1a7 Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Wed, 7 Jan 2026 13:34:02 -0800 Subject: [PATCH 23/33] use custom source --- .../organizationAndEnterpriseAgentProvider.ts | 3 ++ ...scode.proposed.chatParticipantPrivate.d.ts | 40 +++++++++++++++++++ 2 files changed, 43 insertions(+) diff --git a/src/extension/agents/vscode-node/organizationAndEnterpriseAgentProvider.ts b/src/extension/agents/vscode-node/organizationAndEnterpriseAgentProvider.ts index f534df8d9d..e3ac91883e 100644 --- a/src/extension/agents/vscode-node/organizationAndEnterpriseAgentProvider.ts +++ b/src/extension/agents/vscode-node/organizationAndEnterpriseAgentProvider.ts @@ -95,6 +95,9 @@ export class OrganizationAndEnterpriseAgentProvider extends Disposable implement name: metadata.name, description: metadata.description, uri: fileUri, + metadata: { + customSource: vscode.l10n.t('Organization'), + } }); } } diff --git a/src/extension/vscode.proposed.chatParticipantPrivate.d.ts b/src/extension/vscode.proposed.chatParticipantPrivate.d.ts index 5d16a202ef..8b6078bd74 100644 --- a/src/extension/vscode.proposed.chatParticipantPrivate.d.ts +++ b/src/extension/vscode.proposed.chatParticipantPrivate.d.ts @@ -316,6 +316,16 @@ declare module 'vscode' { // #region CustomAgentProvider + /** + * Private metadata for resource files. + */ + export interface ResourceMetadata { + /** + * The source to be displayed in the resource dropdown. + */ + readonly customSource?: string; + } + /** * Represents a custom agent resource file (e.g., .agent.md) available for a repository. */ @@ -341,6 +351,16 @@ declare module 'vscode' { readonly isEditable?: boolean; } + /** + * Private extension of CustomAgentResource with additional metadata. + */ + export interface CustomAgentResource { + /** + * Optional metadata for the custom agent resource. + */ + readonly metadata?: ResourceMetadata; + } + /** * Options for querying custom agents. */ @@ -393,6 +413,16 @@ declare module 'vscode' { readonly isEditable?: boolean; } + /** + * Private extension of InstructionsResource with additional metadata. + */ + export interface InstructionsResource { + /** + * Optional metadata for the instructions resource. + */ + readonly metadata?: ResourceMetadata; + } + /** * Options for querying instructions. */ @@ -445,6 +475,16 @@ declare module 'vscode' { readonly isEditable?: boolean; } + /** + * Private extension of PromptFileResource with additional metadata. + */ + export interface PromptFileResource { + /** + * Optional metadata for the prompt file resource. + */ + readonly metadata?: ResourceMetadata; + } + /** * Options for querying prompt files. */ From fb0fabc93a4dfe4f31bd8bfc07244124e754fe29 Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Mon, 12 Jan 2026 16:01:15 -0800 Subject: [PATCH 24/33] update --- .../organizationAndEnterpriseAgentProvider.ts | 21 +- .../tools/node/test/editFileToolUtils.spec.ts | 4 +- src/extension/tools/node/toolUtils.ts | 2 +- ...scode.proposed.chatParticipantPrivate.d.ts | 223 -------------- .../vscode.proposed.chatPromptFiles.d.ts | 275 ++++++++++++++++++ .../common/customInstructionsService.ts | 27 +- 6 files changed, 308 insertions(+), 244 deletions(-) create mode 100644 src/extension/vscode.proposed.chatPromptFiles.d.ts diff --git a/src/extension/agents/vscode-node/organizationAndEnterpriseAgentProvider.ts b/src/extension/agents/vscode-node/organizationAndEnterpriseAgentProvider.ts index e3ac91883e..7d0cc4104c 100644 --- a/src/extension/agents/vscode-node/organizationAndEnterpriseAgentProvider.ts +++ b/src/extension/agents/vscode-node/organizationAndEnterpriseAgentProvider.ts @@ -16,11 +16,13 @@ const AgentFileExtension = '.agent.md'; export class OrganizationAndEnterpriseAgentProvider extends Disposable implements vscode.CustomAgentProvider { + label: string = vscode.l10n.t('GitHub Organization'); + private readonly _onDidChangeCustomAgents = this._register(new vscode.EventEmitter()); readonly onDidChangeCustomAgents = this._onDidChangeCustomAgents.event; private isFetching = false; - private memoryCache: vscode.CustomAgentResource[] | undefined; + private memoryCache: vscode.CustomAgentChatResource[] | undefined; constructor( @IOctoKitService private readonly octoKitService: IOctoKitService, @@ -42,9 +44,9 @@ export class OrganizationAndEnterpriseAgentProvider extends Disposable implement } async provideCustomAgents( - _options: vscode.CustomAgentQueryOptions, + _options: vscode.CustomAgentContext, _token: vscode.CancellationToken - ): Promise { + ): Promise { try { if (this.memoryCache !== undefined) { return this.memoryCache; @@ -58,7 +60,7 @@ export class OrganizationAndEnterpriseAgentProvider extends Disposable implement } } - private async readFromCache(): Promise { + private async readFromCache(): Promise { try { const cacheDir = this.getCacheDir(); if (!cacheDir) { @@ -66,7 +68,7 @@ export class OrganizationAndEnterpriseAgentProvider extends Disposable implement return []; } - const agents: vscode.CustomAgentResource[] = []; + const agents: vscode.CustomAgentChatResource[] = []; // Check if cache directory exists try { @@ -91,14 +93,7 @@ export class OrganizationAndEnterpriseAgentProvider extends Disposable implement const metadata = this.parseAgentMetadata(text, filename); if (metadata) { const fileUri = vscode.Uri.joinPath(orgDir, filename); - agents.push({ - name: metadata.name, - description: metadata.description, - uri: fileUri, - metadata: { - customSource: vscode.l10n.t('Organization'), - } - }); + agents.push(new vscode.CustomAgentChatResource(fileUri)); } } } diff --git a/src/extension/tools/node/test/editFileToolUtils.spec.ts b/src/extension/tools/node/test/editFileToolUtils.spec.ts index 19611c7aac..3a7e1546ac 100644 --- a/src/extension/tools/node/test/editFileToolUtils.spec.ts +++ b/src/extension/tools/node/test/editFileToolUtils.spec.ts @@ -664,8 +664,8 @@ describe('makeUriConfirmationChecker', async () => { uris.forEach(uri => this.externalFiles.add(uri.toString())); } - isExternalInstructionsFile(uri: URI): boolean { - return this.externalFiles.has(uri.toString()); + isExternalInstructionsFile(uri: URI): Promise { + return Promise.resolve(this.externalFiles.has(uri.toString())); } isExternalInstructionsFolder(uri: URI): boolean { diff --git a/src/extension/tools/node/toolUtils.ts b/src/extension/tools/node/toolUtils.ts index c1e5a750e2..efe4e7a09d 100644 --- a/src/extension/tools/node/toolUtils.ts +++ b/src/extension/tools/node/toolUtils.ts @@ -109,7 +109,7 @@ export async function assertFileOkForTool(accessor: ServicesAccessor, uri: URI): const normalizedUri = normalizePath(uri); - if (!workspaceService.getWorkspaceFolder(normalizedUri) && uri.scheme !== Schemas.untitled && !customInstructionsService.isExternalInstructionsFile(normalizedUri)) { + if (!workspaceService.getWorkspaceFolder(normalizedUri) && uri.scheme !== Schemas.untitled && !await customInstructionsService.isExternalInstructionsFile(normalizedUri)) { const fileOpenInSomeTab = tabsAndEditorsService.tabs.some(tab => isEqual(tab.uri, uri)); if (!fileOpenInSomeTab) { throw new Error(`File ${promptPathRepresentationService.getFilePath(normalizedUri)} is outside of the workspace, and not open in an editor, and can't be read`); diff --git a/src/extension/vscode.proposed.chatParticipantPrivate.d.ts b/src/extension/vscode.proposed.chatParticipantPrivate.d.ts index 8b6078bd74..b3850fcdd3 100644 --- a/src/extension/vscode.proposed.chatParticipantPrivate.d.ts +++ b/src/extension/vscode.proposed.chatParticipantPrivate.d.ts @@ -313,227 +313,4 @@ declare module 'vscode' { } // #endregion - - // #region CustomAgentProvider - - /** - * Private metadata for resource files. - */ - export interface ResourceMetadata { - /** - * The source to be displayed in the resource dropdown. - */ - readonly customSource?: string; - } - - /** - * Represents a custom agent resource file (e.g., .agent.md) available for a repository. - */ - export interface CustomAgentResource { - /** - * The unique identifier/name of the custom agent. - */ - readonly name: string; - - /** - * A description of what the custom agent does. - */ - readonly description: string; - - /** - * The URI to the custom agent resource file. - */ - readonly uri: Uri; - - /** - * Indicates whether the custom agent is editable. Defaults to false. - */ - readonly isEditable?: boolean; - } - - /** - * Private extension of CustomAgentResource with additional metadata. - */ - export interface CustomAgentResource { - /** - * Optional metadata for the custom agent resource. - */ - readonly metadata?: ResourceMetadata; - } - - /** - * Options for querying custom agents. - */ - export interface CustomAgentQueryOptions { } - - /** - * A provider that supplies custom agent resources (from .agent.md files) for repositories. - */ - export interface CustomAgentProvider { - /** - * An optional event to signal that custom agents have changed. - */ - readonly onDidChangeCustomAgents?: Event; - - /** - * Provide the list of custom agents available. - * @param options Optional query parameters. - * @param token A cancellation token. - * @returns An array of custom agent resources or a promise that resolves to such. - */ - provideCustomAgents(options: CustomAgentQueryOptions, token: CancellationToken): ProviderResult; - } - - // #endregion - - // #region InstructionsProvider - - /** - * Represents an instructions resource file available for a repository. - */ - export interface InstructionsResource { - /** - * The unique identifier/name of the instructions. - */ - readonly name: string; - - /** - * A description of what the instructions provide. - */ - readonly description: string; - - /** - * The URI to the instructions resource file. - */ - readonly uri: Uri; - - /** - * Indicates whether the instructions are editable. Defaults to false. - */ - readonly isEditable?: boolean; - } - - /** - * Private extension of InstructionsResource with additional metadata. - */ - export interface InstructionsResource { - /** - * Optional metadata for the instructions resource. - */ - readonly metadata?: ResourceMetadata; - } - - /** - * Options for querying instructions. - */ - export interface InstructionsQueryOptions { } - - /** - * A provider that supplies instructions resources for repositories. - */ - export interface InstructionsProvider { - /** - * An optional event to signal that instructions have changed. - */ - readonly onDidChangeInstructions?: Event; - - /** - * Provide the list of instructions available. - * @param options Optional query parameters. - * @param token A cancellation token. - * @returns An array of instructions resources or a promise that resolves to such. - */ - provideInstructions(options: InstructionsQueryOptions, token: CancellationToken): ProviderResult; - } - - // #endregion - - // #region PromptFileProvider - - /** - * Represents a prompt file resource (e.g., .prompt.md) available for a repository. - */ - export interface PromptFileResource { - /** - * The unique identifier/name of the prompt file. - */ - readonly name: string; - - /** - * A description of what the prompt file does. - */ - readonly description: string; - - /** - * The URI to the prompt file resource. - */ - readonly uri: Uri; - - /** - * Indicates whether the prompt file is editable. Defaults to false. - */ - readonly isEditable?: boolean; - } - - /** - * Private extension of PromptFileResource with additional metadata. - */ - export interface PromptFileResource { - /** - * Optional metadata for the prompt file resource. - */ - readonly metadata?: ResourceMetadata; - } - - /** - * Options for querying prompt files. - */ - export interface PromptFileQueryOptions { } - - /** - * A provider that supplies prompt file resources (from .prompt.md files) for repositories. - */ - export interface PromptFileProvider { - /** - * An optional event to signal that prompt files have changed. - */ - readonly onDidChangePromptFiles?: Event; - - /** - * Provide the list of prompt files available. - * @param options Optional query parameters. - * @param token A cancellation token. - * @returns An array of prompt file resources or a promise that resolves to such. - */ - providePromptFiles(options: PromptFileQueryOptions, token: CancellationToken): ProviderResult; - } - - // #endregion - - // #region Chat Provider Registration - - export namespace chat { - /** - * Register a provider for custom agents. - * @param provider The custom agent provider. - * @returns A disposable that unregisters the provider when disposed. - */ - export function registerCustomAgentProvider(provider: CustomAgentProvider): Disposable; - - /** - * Register a provider for instructions. - * @param provider The instructions provider. - * @returns A disposable that unregisters the provider when disposed. - */ - export function registerInstructionsProvider(provider: InstructionsProvider): Disposable; - - /** - * Register a provider for prompt files. - * @param provider The prompt file provider. - * @returns A disposable that unregisters the provider when disposed. - */ - export function registerPromptFileProvider(provider: PromptFileProvider): Disposable; - } - - // #endregion } diff --git a/src/extension/vscode.proposed.chatPromptFiles.d.ts b/src/extension/vscode.proposed.chatPromptFiles.d.ts new file mode 100644 index 0000000000..bff90ecf95 --- /dev/null +++ b/src/extension/vscode.proposed.chatPromptFiles.d.ts @@ -0,0 +1,275 @@ +/*--------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All rights reserved. + * Licensed under the MIT License. See License.txt in the project root for license information. + *--------------------------------------------------------------------------------------------*/ + +// version: 1 + +declare module 'vscode' { + + // #region Resource Classes + + /** + * Represents the content of a prompt file resource. + */ + export interface PromptFileContent { + /** + * The header/frontmatter of the prompt file containing metadata. + * Properties vary by resource type. See the documentation links for supported options. + * - Custom instructions: https://code.visualstudio.com/docs/copilot/customization/custom-instructions#_header-optional + * - Prompt files: https://code.visualstudio.com/docs/copilot/customization/prompt-files#_header-optional + * - Custom agents: https://code.visualstudio.com/docs/copilot/customization/custom-agents#_header-optional + */ + header?: { + [key: string]: unknown; + }; + + /** + * The body content of the prompt file. + */ + body: string; + } + + /** + * Options for creating a custom agent resource. + */ + export interface CustomAgentOptions { + /** + * Indicates whether the custom agent is editable. Defaults to false. + */ + isEditable?: boolean; + } + + /** + * Represents a custom agent resource file (e.g., .agent.md). + */ + export class CustomAgentChatResource { + /** + * The URI to the custom agent resource file. + */ + readonly uri: Uri; + + /** + * Indicates whether the custom agent is editable. Defaults to false. + */ + readonly isEditable?: boolean; + + /** + * Creates a new custom agent resource from an existing file. + * @param uri The URI to the custom agent resource file. + * @param options Optional settings for the custom agent. + */ + constructor(uri: Uri, options?: CustomAgentOptions); + + /** + * Creates a new custom agent resource from content. A virtual URI will be generated + * and the markdown content will be constructed from the provided content. + * @param id The unique identifier for this custom agent resource. + * @param content The content for creating the custom agent - either a string (body only) + * or a structured PromptFileContent object with header and body. + * @param options Optional settings for the custom agent. + */ + constructor(id: string, content: string | PromptFileContent, options?: CustomAgentOptions); + } + + /** + * Options for creating an instructions resource. + */ + export interface InstructionsOptions { + /** + * Indicates whether the instructions are editable. Defaults to false. + */ + isEditable?: boolean; + } + + /** + * Represents an instructions resource file. + */ + export class InstructionsChatResource { + /** + * The URI to the instructions resource file. + */ + readonly uri: Uri; + + /** + * Indicates whether the instructions are editable. Defaults to false. + */ + readonly isEditable?: boolean; + + /** + * Creates a new instructions resource from an existing file. + * @param uri The URI to the instructions resource file. + * @param options Optional settings for the instructions. + */ + constructor(uri: Uri, options?: InstructionsOptions); + + /** + * Creates a new instructions resource from content. A virtual URI will be generated + * and the markdown content will be constructed from the provided content. + * @param id The unique identifier for this instructions resource. + * @param content The content for creating the instructions - either a string (body only) + * or a structured PromptFileContent object with header and body. + * @param options Optional settings for the instructions. + */ + constructor(id: string, content: string | PromptFileContent, options?: InstructionsOptions); + } + + /** + * Options for creating a prompt file resource. + */ + export interface PromptFileOptions { + /** + * Indicates whether the prompt file is editable. Defaults to false. + */ + isEditable?: boolean; + } + + /** + * Represents a prompt file resource (e.g., .prompt.md). + */ + export class PromptFileChatResource { + /** + * The URI to the prompt file resource. + */ + readonly uri: Uri; + + /** + * Indicates whether the prompt file is editable. Defaults to false. + */ + readonly isEditable?: boolean; + + /** + * Creates a new prompt file resource from an existing file. + * @param uri The URI to the prompt file resource file. + * @param options Optional settings for the prompt file. + */ + constructor(uri: Uri, options?: PromptFileOptions); + + /** + * Creates a new prompt file resource from content. A virtual URI will be generated + * and the markdown content will be constructed from the provided content. + * @param id The unique identifier for this prompt file resource. + * @param content The content for creating the prompt file - either a string (body only) + * or a structured PromptFileContent object with header and body. + * @param options Optional settings for the prompt file. + */ + constructor(id: string, content: string | PromptFileContent, options?: PromptFileOptions); + } + + // #endregion + + // #region Providers + + /** + * Options for querying custom agents. + */ + export type CustomAgentContext = object; + + /** + * A provider that supplies custom agent resources (from .agent.md files) for repositories. + */ + export interface CustomAgentProvider { + /** + * A human-readable label for this provider. + */ + readonly label: string; + + /** + * An optional event to signal that custom agents have changed. + */ + readonly onDidChangeCustomAgents?: Event; + + /** + * Provide the list of custom agents available. + * @param context Context for the query. + * @param token A cancellation token. + * @returns An array of custom agents or a promise that resolves to such. + */ + provideCustomAgents(context: CustomAgentContext, token: CancellationToken): ProviderResult; + } + + /** + * Context for querying instructions. + */ + export type InstructionsContext = object; + + /** + * A provider that supplies instructions resources for repositories. + */ + export interface InstructionsProvider { + /** + * A human-readable label for this provider. + */ + readonly label: string; + + /** + * An optional event to signal that instructions have changed. + */ + readonly onDidChangeInstructions?: Event; + + /** + * Provide the list of instructions available. + * @param context Context for the query. + * @param token A cancellation token. + * @returns An array of instructions or a promise that resolves to such. + */ + provideInstructions(context: InstructionsContext, token: CancellationToken): ProviderResult; + } + + /** + * Context for querying prompt files. + */ + export type PromptFileContext = object; + + /** + * A provider that supplies prompt file resources (from .prompt.md files) for repositories. + */ + export interface PromptFileProvider { + /** + * A human-readable label for this provider. + */ + readonly label: string; + + /** + * An optional event to signal that prompt files have changed. + */ + readonly onDidChangePromptFiles?: Event; + + /** + * Provide the list of prompt files available. + * @param context Context for the query. + * @param token A cancellation token. + * @returns An array of prompt files or a promise that resolves to such. + */ + providePromptFiles(context: PromptFileContext, token: CancellationToken): ProviderResult; + } + + // #endregion + + // #region Chat Provider Registration + + export namespace chat { + /** + * Register a provider for custom agents. + * @param provider The custom agent provider. + * @returns A disposable that unregisters the provider when disposed. + */ + export function registerCustomAgentProvider(provider: CustomAgentProvider): Disposable; + + /** + * Register a provider for instructions. + * @param provider The instructions provider. + * @returns A disposable that unregisters the provider when disposed. + */ + export function registerInstructionsProvider(provider: InstructionsProvider): Disposable; + + /** + * Register a provider for prompt files. + * @param provider The prompt file provider. + * @returns A disposable that unregisters the provider when disposed. + */ + export function registerPromptFileProvider(provider: PromptFileProvider): Disposable; + } + + // #endregion +} \ No newline at end of file diff --git a/src/platform/customInstructions/common/customInstructionsService.ts b/src/platform/customInstructions/common/customInstructionsService.ts index cee481f394..33dbc1c9fd 100644 --- a/src/platform/customInstructions/common/customInstructionsService.ts +++ b/src/platform/customInstructions/common/customInstructionsService.ts @@ -15,6 +15,7 @@ import { extUriBiasedIgnorePathCase } from '../../../util/vs/base/common/resourc import { isObject } from '../../../util/vs/base/common/types'; import { URI } from '../../../util/vs/base/common/uri'; import { FileType, Uri } from '../../../vscodeTypes'; +import { IRunCommandExecutionService } from '../../commands/common/runCommandExecutionService'; import { CodeGenerationImportInstruction, CodeGenerationTextInstruction, Config, ConfigKey, IConfigurationService } from '../../configuration/common/configurationService'; import { INativeEnvService } from '../../env/common/envService'; import { IExtensionsService } from '../../extensions/common/extensionsService'; @@ -53,7 +54,7 @@ export interface ICustomInstructionsService { getAgentInstructions(): Promise; - isExternalInstructionsFile(uri: URI): boolean; + isExternalInstructionsFile(uri: URI): Promise; isExternalInstructionsFolder(uri: URI): boolean; isSkillFile(uri: URI): boolean; } @@ -100,6 +101,7 @@ export class CustomInstructionsService extends Disposable implements ICustomInst @IPromptPathRepresentationService private readonly promptPathRepresentationService: IPromptPathRepresentationService, @ILogService private readonly logService: ILogService, @IExtensionsService private readonly extensionService: IExtensionsService, + @IRunCommandExecutionService private readonly runCommandExecutionService: IRunCommandExecutionService, ) { super(); @@ -279,13 +281,28 @@ export class CustomInstructionsService extends Disposable implements ICustomInst } } - public isExternalInstructionsFile(uri: URI): boolean { + public async isExternalInstructionsFile(uri: URI): Promise { if (uri.scheme === Schemas.vscodeUserData && uri.path.endsWith(INSTRUCTION_FILE_EXTENSION)) { return true; } - return this._matchInstructionLocationsFromConfig.get()(uri) - || this._matchInstructionLocationsFromExtensions.get()(uri) - || this._matchInstructionLocationsFromSkills.get()(uri); + if (this._matchInstructionLocationsFromConfig.get()(uri) + // || this._matchInstructionLocationsFromExtensions.get()(uri) + || this._matchInstructionLocationsFromSkills.get()(uri)) { + return true; + } + + // Check for external extension-contributed prompt files + try { + const extensionPromptFiles = await this.runCommandExecutionService.executeCommand('vscode.extensionPromptFileProvider') as { uri: URI }[] | undefined; + if (extensionPromptFiles) { + return extensionPromptFiles.some(file => extUriBiasedIgnorePathCase.isEqual(file.uri, uri)); + } + } catch (e) { + console.warn('Error checking for extension prompt files'); + // Command may not be available, ignore + } + + return false; } public isExternalInstructionsFolder(uri: URI): boolean { From 33d9844b4f349529d48eb427ee44d8eb91f137f1 Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Mon, 12 Jan 2026 18:45:45 -0800 Subject: [PATCH 25/33] update --- .../vscode.proposed.chatPromptFiles.d.ts | 29 +++---------------- .../common/customInstructionsService.ts | 2 +- 2 files changed, 5 insertions(+), 26 deletions(-) diff --git a/src/extension/vscode.proposed.chatPromptFiles.d.ts b/src/extension/vscode.proposed.chatPromptFiles.d.ts index bff90ecf95..83e3b33dd4 100644 --- a/src/extension/vscode.proposed.chatPromptFiles.d.ts +++ b/src/extension/vscode.proposed.chatPromptFiles.d.ts @@ -9,27 +9,6 @@ declare module 'vscode' { // #region Resource Classes - /** - * Represents the content of a prompt file resource. - */ - export interface PromptFileContent { - /** - * The header/frontmatter of the prompt file containing metadata. - * Properties vary by resource type. See the documentation links for supported options. - * - Custom instructions: https://code.visualstudio.com/docs/copilot/customization/custom-instructions#_header-optional - * - Prompt files: https://code.visualstudio.com/docs/copilot/customization/prompt-files#_header-optional - * - Custom agents: https://code.visualstudio.com/docs/copilot/customization/custom-agents#_header-optional - */ - header?: { - [key: string]: unknown; - }; - - /** - * The body content of the prompt file. - */ - body: string; - } - /** * Options for creating a custom agent resource. */ @@ -69,7 +48,7 @@ declare module 'vscode' { * or a structured PromptFileContent object with header and body. * @param options Optional settings for the custom agent. */ - constructor(id: string, content: string | PromptFileContent, options?: CustomAgentOptions); + constructor(id: string, content: string, options?: CustomAgentOptions); } /** @@ -111,7 +90,7 @@ declare module 'vscode' { * or a structured PromptFileContent object with header and body. * @param options Optional settings for the instructions. */ - constructor(id: string, content: string | PromptFileContent, options?: InstructionsOptions); + constructor(id: string, content: string, options?: InstructionsOptions); } /** @@ -153,7 +132,7 @@ declare module 'vscode' { * or a structured PromptFileContent object with header and body. * @param options Optional settings for the prompt file. */ - constructor(id: string, content: string | PromptFileContent, options?: PromptFileOptions); + constructor(id: string, content: string, options?: PromptFileOptions); } // #endregion @@ -272,4 +251,4 @@ declare module 'vscode' { } // #endregion -} \ No newline at end of file +} diff --git a/src/platform/customInstructions/common/customInstructionsService.ts b/src/platform/customInstructions/common/customInstructionsService.ts index 33dbc1c9fd..d2e6874739 100644 --- a/src/platform/customInstructions/common/customInstructionsService.ts +++ b/src/platform/customInstructions/common/customInstructionsService.ts @@ -286,7 +286,7 @@ export class CustomInstructionsService extends Disposable implements ICustomInst return true; } if (this._matchInstructionLocationsFromConfig.get()(uri) - // || this._matchInstructionLocationsFromExtensions.get()(uri) + || this._matchInstructionLocationsFromExtensions.get()(uri) || this._matchInstructionLocationsFromSkills.get()(uri)) { return true; } From 5790a1d3b5f4c5a5d1963ae7d47c948d219af5ee Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Mon, 12 Jan 2026 22:56:22 -0800 Subject: [PATCH 26/33] test updates --- ...nizationAndEnterpriseAgentProvider.spec.ts | 56 +++++++++++-------- 1 file changed, 34 insertions(+), 22 deletions(-) diff --git a/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts b/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts index f782e64d9e..6084bb9386 100644 --- a/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts +++ b/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts @@ -163,8 +163,8 @@ Test prompt content`; const agents = await provider.provideCustomAgents({}, {} as any); assert.equal(agents.length, 1); - assert.equal(agents[0].name, 'test_agent'); - assert.equal(agents[0].description, 'A test agent'); + const agentName = agents[0].uri.path.split('/').pop()?.replace('.agent.md', ''); + assert.equal(agentName, 'test_agent'); }); test('fetches and caches agents from API', async () => { @@ -200,13 +200,14 @@ Test prompt content`; // Second call should return newly cached agents from memory const agents2 = await provider.provideCustomAgents({}, {} as any); assert.equal(agents2.length, 1); - assert.equal(agents2[0].name, 'api_agent'); - assert.equal(agents2[0].description, 'An agent from API'); + const agentName2 = agents2[0].uri.path.split('/').pop()?.replace('.agent.md', ''); + assert.equal(agentName2, 'api_agent'); // Third call should also return from memory cache without file I/O const agents3 = await provider.provideCustomAgents({}, {} as any); assert.equal(agents3.length, 1); - assert.equal(agents3[0].name, 'api_agent'); + const agentName3 = agents3[0].uri.path.split('/').pop()?.replace('.agent.md', ''); + assert.equal(agentName3, 'api_agent'); }); test('generates correct markdown format for agents', async () => { @@ -357,7 +358,7 @@ Detailed prompt content return []; }; - const queryOptions: vscode.CustomAgentQueryOptions = {}; + const queryOptions: vscode.CustomAgentContext = {}; await provider.provideCustomAgents(queryOptions, {} as any); await new Promise(resolve => setTimeout(resolve, 100)); @@ -443,7 +444,8 @@ Agent 1 prompt`; // So the existing file cache is returned with the one successful agent const cachedAgents = await provider.provideCustomAgents({}, {} as any); assert.equal(cachedAgents.length, 1); - assert.equal(cachedAgents[0].name, 'agent1'); + const cachedAgentName = cachedAgents[0].uri.path.split('/').pop()?.replace('.agent.md', ''); + assert.equal(cachedAgentName, 'agent1'); }); test('caches agents in memory after first successful fetch', async () => { @@ -473,7 +475,8 @@ Agent 1 prompt`; // After successful fetch, subsequent calls return from memory const agents1 = await provider.provideCustomAgents({}, {} as any); assert.equal(agents1.length, 1); - assert.equal(agents1[0].name, 'initial_agent'); + const agentName1 = agents1[0].uri.path.split('/').pop()?.replace('.agent.md', ''); + assert.equal(agentName1, 'initial_agent'); // Even if API is updated, memory cache is used const newAgent: CustomAgentListItem = { @@ -496,7 +499,8 @@ Agent 1 prompt`; // Memory cache returns old results without refetching const agents2 = await provider.provideCustomAgents({}, {} as any); assert.equal(agents2.length, 1); - assert.equal(agents2[0].name, 'initial_agent'); + const agentName2ForMemory = agents2[0].uri.path.split('/').pop()?.replace('.agent.md', ''); + assert.equal(agentName2ForMemory, 'initial_agent'); }); test('memory cache persists after first successful fetch', async () => { @@ -544,8 +548,10 @@ Agent 1 prompt`; // Memory cache still returns both agents (no refetch) const cachedAgents2 = await provider.provideCustomAgents({}, {} as any); assert.equal(cachedAgents2.length, 2); - assert.equal(cachedAgents2[0].name, 'agent1'); - assert.equal(cachedAgents2[1].name, 'agent2'); + const cachedAgent2Name1 = cachedAgents2[0].uri.path.split('/').pop()?.replace('.agent.md', ''); + const cachedAgent2Name2 = cachedAgents2[1].uri.path.split('/').pop()?.replace('.agent.md', ''); + assert.equal(cachedAgent2Name1, 'agent1'); + assert.equal(cachedAgent2Name2, 'agent2'); }); test('does not fire change event when content is identical', async () => { @@ -618,7 +624,8 @@ Agent 1 prompt`; // Memory cache still returns the agent (no refetch) const agents2 = await provider.provideCustomAgents({}, {} as any); assert.equal(agents2.length, 1); - assert.equal(agents2[0].name, 'temporary_agent'); + const temporaryAgentName = agents2[0].uri.path.split('/').pop()?.replace('.agent.md', ''); + assert.equal(temporaryAgentName, 'temporary_agent'); }); test('generates markdown with only required fields', async () => { @@ -725,10 +732,10 @@ Valid prompt`; // Parser is lenient - both agents are returned, one with empty description assert.equal(agents.length, 2); - assert.equal(agents[0].name, 'valid_agent'); - assert.equal(agents[0].description, 'A valid agent'); - assert.equal(agents[1].name, 'no_frontmatter'); - assert.equal(agents[1].description, ''); + const validAgentName = agents[0].uri.path.split('/').pop()?.replace('.agent.md', ''); + assert.equal(validAgentName, 'valid_agent'); + const noFrontmatterAgentName = agents[1].uri.path.split('/').pop()?.replace('.agent.md', ''); + assert.equal(noFrontmatterAgentName, 'no_frontmatter'); }); test('fetches agents from all user organizations', async () => { @@ -948,7 +955,8 @@ Test prompt // Should only have one agent, not two (deduped) assert.equal(agents.length, 1); - assert.equal(agents[0].name, 'enterprise_agent'); + const enterpriseAgentName = agents[0].uri.path.split('/').pop()?.replace('.agent.md', ''); + assert.equal(enterpriseAgentName, 'enterprise_agent'); // Verify it was only written to one org directory const cacheDir = URI.joinPath(mockExtensionContext.globalStorageUri!, 'githubAgentsCache'); @@ -1035,7 +1043,8 @@ Test prompt // Different versions are deduplicated, only the first one is kept assert.equal(agents.length, 1); - assert.equal(agents[0].name, 'versioned_agent'); + const versionedAgentName = agents[0].uri.path.split('/').pop()?.replace('.agent.md', ''); + assert.equal(versionedAgentName, 'versioned_agent'); }); test('does not deduplicate org-specific agents with same name from different orgs', async () => { @@ -1094,8 +1103,10 @@ Test prompt // Should have 2 agents since they're from different repos (not duplicates) assert.equal(agents.length, 2); - assert.equal(agents[0].name, 'org_agent'); - assert.equal(agents[1].name, 'org_agent'); + const orgAgentName1 = agents[0].uri.path.split('/').pop()?.replace('.agent.md', ''); + const orgAgentName2 = agents[1].uri.path.split('/').pop()?.replace('.agent.md', ''); + assert.equal(orgAgentName1, 'org_agent'); + assert.equal(orgAgentName2, 'org_agent'); }); test('deduplicates enterprise agents even when API returns them in different order', async () => { @@ -1158,7 +1169,7 @@ Test prompt assert.equal(agents.length, 2); // Verify both agent names are present - const agentNames = agents.map(a => a.name).sort(); + const agentNames = agents.map(a => a.uri.path.split('/').pop()?.replace('.agent.md', '')).sort(); assert.deepEqual(agentNames, ['enterprise_agent1', 'enterprise_agent2']); }); @@ -1205,6 +1216,7 @@ Test prompt // Different versions are deduplicated, only the first one is kept assert.equal(agents.length, 1); - assert.equal(agents[0].name, 'multi_version_agent'); + const multiVersionAgentName = agents[0].uri.path.split('/').pop()?.replace('.agent.md', ''); + assert.equal(multiVersionAgentName, 'multi_version_agent'); }); }); From 3d6b669b238233d358032d2facff576b05d3838b Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Tue, 13 Jan 2026 00:10:03 -0800 Subject: [PATCH 27/33] fix tests --- ...nizationAndEnterpriseAgentProvider.spec.ts | 75 +++++++++---------- src/util/common/test/shims/chatTypes.ts | 20 +++++ src/util/common/test/shims/vscodeTypesShim.ts | 3 +- src/vscodeTypes.ts | 1 + 4 files changed, 58 insertions(+), 41 deletions(-) diff --git a/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts b/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts index 6084bb9386..e5f8589dea 100644 --- a/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts +++ b/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts @@ -145,7 +145,9 @@ suite('OrganizationAndEnterpriseAgentProvider', () => { }); test('returns cached agents on first call', async () => { - const provider = createProvider(); + // Set up file system mocks BEFORE creating provider to avoid race with background fetch + // Also prevent background fetch from interfering by having no organizations + mockOctoKitService.setUserOrganizations([]); // Pre-populate cache with org folder const cacheDir = URI.joinPath(mockExtensionContext.globalStorageUri!, 'githubAgentsCache'); @@ -160,6 +162,11 @@ description: A test agent Test prompt content`; mockFileSystem.mockFile(agentFile, agentContent); + const provider = createProvider(); + + // Wait for background fetch to complete (it will return early due to no orgs) + await new Promise(resolve => setTimeout(resolve, 50)); + const agents = await provider.provideCustomAgents({}, {} as any); assert.equal(agents.length, 1); @@ -168,9 +175,7 @@ Test prompt content`; }); test('fetches and caches agents from API', async () => { - const provider = createProvider(); - - // Mock API response + // Mock API response BEFORE creating provider const mockAgent: CustomAgentListItem = { name: 'api_agent', repo_owner_id: 1, @@ -190,9 +195,7 @@ Test prompt content`; }; mockOctoKitService.setAgentDetails('api_agent', mockDetails); - // First call returns cached (empty) results and triggers background fetch - const agents1 = await provider.provideCustomAgents({}, {} as any); - assert.deepEqual(agents1, []); + const provider = createProvider(); // Wait for background fetch to complete await new Promise(resolve => setTimeout(resolve, 100)); @@ -391,8 +394,6 @@ Detailed prompt content }); test('handles partial agent detail fetch failures gracefully', async () => { - const provider = createProvider(); - const agents: CustomAgentListItem[] = [ { name: 'agent1', @@ -437,7 +438,7 @@ description: First agent Agent 1 prompt`; mockFileSystem.mockFile(URI.joinPath(orgDir, 'agent1.agent.md'), agentContent); - await provider.provideCustomAgents({}, {} as any); + const provider = createProvider(); await new Promise(resolve => setTimeout(resolve, 100)); // With error handling, partial failures skip cache update for that org @@ -449,9 +450,7 @@ Agent 1 prompt`; }); test('caches agents in memory after first successful fetch', async () => { - const provider = createProvider(); - - // Initial setup with one agent + // Initial setup with one agent BEFORE creating provider const initialAgent: CustomAgentListItem = { name: 'initial_agent', repo_owner_id: 1, @@ -469,7 +468,7 @@ Agent 1 prompt`; prompt: 'Initial prompt', }); - await provider.provideCustomAgents({}, {} as any); + const provider = createProvider(); await new Promise(resolve => setTimeout(resolve, 100)); // After successful fetch, subsequent calls return from memory @@ -504,9 +503,7 @@ Agent 1 prompt`; }); test('memory cache persists after first successful fetch', async () => { - const provider = createProvider(); - - // Initial setup with two agents + // Initial setup with two agents BEFORE creating provider const agents: CustomAgentListItem[] = [ { name: 'agent1', @@ -535,7 +532,7 @@ Agent 1 prompt`; mockOctoKitService.setAgentDetails('agent1', { ...agents[0], prompt: 'Prompt 1' }); mockOctoKitService.setAgentDetails('agent2', { ...agents[1], prompt: 'Prompt 2' }); - await provider.provideCustomAgents({}, {} as any); + const provider = createProvider(); await new Promise(resolve => setTimeout(resolve, 100)); // Verify both agents are cached @@ -591,9 +588,7 @@ Agent 1 prompt`; }); test('memory cache persists even when API returns empty list', async () => { - const provider = createProvider(); - - // Setup with initial agents + // Setup with initial agents BEFORE creating provider const mockAgent: CustomAgentListItem = { name: 'temporary_agent', repo_owner_id: 1, @@ -611,7 +606,7 @@ Agent 1 prompt`; prompt: 'Temporary prompt', }); - await provider.provideCustomAgents({}, {} as any); + const provider = createProvider(); await new Promise(resolve => setTimeout(resolve, 100)); // Verify agent is cached @@ -706,9 +701,10 @@ Agent 1 prompt`; }); test('handles malformed frontmatter in cached files', async () => { - const provider = createProvider(); + // Prevent background fetch from interfering + mockOctoKitService.setUserOrganizations([]); - // Pre-populate cache with mixed valid and malformed content + // Pre-populate cache with mixed valid and malformed content BEFORE creating provider const cacheDir = URI.joinPath(mockExtensionContext.globalStorageUri!, 'githubAgentsCache'); const orgDir = URI.joinPath(cacheDir, 'testorg'); mockFileSystem.mockDirectory(cacheDir, [['testorg', FileType.Directory]]); @@ -728,6 +724,11 @@ Valid prompt`; const noFrontmatterContent = `Just some content without any frontmatter`; mockFileSystem.mockFile(URI.joinPath(orgDir, 'no_frontmatter.agent.md'), noFrontmatterContent); + const provider = createProvider(); + + // Wait for background fetch to complete (returns early due to no orgs) + await new Promise(resolve => setTimeout(resolve, 50)); + const agents = await provider.provideCustomAgents({}, {} as any); // Parser is lenient - both agents are returned, one with empty description @@ -919,9 +920,7 @@ Test prompt }); test('deduplicates enterprise agents that appear in multiple organizations', async () => { - const provider = createProvider(); - - // Setup multiple organizations + // Setup multiple organizations BEFORE creating provider mockOctoKitService.setUserOrganizations(['orgA', 'orgB']); // Create an enterprise agent that will appear in both organizations @@ -948,7 +947,7 @@ Test prompt prompt: 'Enterprise prompt', }); - await provider.provideCustomAgents({}, {} as any); + const provider = createProvider(); await new Promise(resolve => setTimeout(resolve, 100)); const agents = await provider.provideCustomAgents({}, {} as any); @@ -986,8 +985,7 @@ Test prompt }); test('deduplicates agents with same repo regardless of version', async () => { - const provider = createProvider(); - + // Set up mocks BEFORE creating provider mockOctoKitService.setUserOrganizations(['orgA', 'orgB']); // Create agents with same name but different versions @@ -1036,7 +1034,7 @@ Test prompt return undefined; }; - await provider.provideCustomAgents({}, {} as any); + const provider = createProvider(); await new Promise(resolve => setTimeout(resolve, 100)); const agents = await provider.provideCustomAgents({}, {} as any); @@ -1048,8 +1046,7 @@ Test prompt }); test('does not deduplicate org-specific agents with same name from different orgs', async () => { - const provider = createProvider(); - + // Set up mocks BEFORE creating provider mockOctoKitService.setUserOrganizations(['orgA', 'orgB']); // Create agents with same name but from different org repos (not enterprise) @@ -1096,7 +1093,7 @@ Test prompt return undefined; }; - await provider.provideCustomAgents({}, {} as any); + const provider = createProvider(); await new Promise(resolve => setTimeout(resolve, 100)); const agents = await provider.provideCustomAgents({}, {} as any); @@ -1110,8 +1107,7 @@ Test prompt }); test('deduplicates enterprise agents even when API returns them in different order', async () => { - const provider = createProvider(); - + // Set up mocks BEFORE creating provider mockOctoKitService.setUserOrganizations(['orgA', 'orgB', 'orgC']); const enterpriseAgent1: CustomAgentListItem = { @@ -1160,7 +1156,7 @@ Test prompt return undefined; }; - await provider.provideCustomAgents({}, {} as any); + const provider = createProvider(); await new Promise(resolve => setTimeout(resolve, 100)); const agents = await provider.provideCustomAgents({}, {} as any); @@ -1174,8 +1170,7 @@ Test prompt }); test('deduplication key does not include version so different versions are deduplicated', async () => { - const provider = createProvider(); - + // Set up mocks BEFORE creating provider mockOctoKitService.setUserOrganizations(['orgA']); // Same agent with two different versions @@ -1209,7 +1204,7 @@ Test prompt return undefined; }; - await provider.provideCustomAgents({}, {} as any); + const provider = createProvider(); await new Promise(resolve => setTimeout(resolve, 100)); const agents = await provider.provideCustomAgents({}, {} as any); diff --git a/src/util/common/test/shims/chatTypes.ts b/src/util/common/test/shims/chatTypes.ts index 3e32164a2a..acf8d6671e 100644 --- a/src/util/common/test/shims/chatTypes.ts +++ b/src/util/common/test/shims/chatTypes.ts @@ -531,4 +531,24 @@ export class LanguageModelError extends Error { this.name = LanguageModelError.#name; this.code = code ?? ''; } +} + +/** + * Represents a custom agent resource file (e.g., .agent.md). + */ +export class CustomAgentChatResource implements vscode.CustomAgentChatResource { + readonly uri: vscode.Uri; + readonly isEditable?: boolean; + + constructor(uri: vscode.Uri, options?: vscode.CustomAgentOptions); + constructor(id: string, content: string, options?: vscode.CustomAgentOptions); + constructor(uriOrId: vscode.Uri | string, contentOrOptions?: string | vscode.CustomAgentOptions, maybeOptions?: vscode.CustomAgentOptions) { + if (typeof uriOrId === 'string') { + // Virtual URI created from id and content + throw new Error('Virtual URI constructor not implemented in test shim'); + } else { + this.uri = uriOrId; + this.isEditable = (contentOrOptions as vscode.CustomAgentOptions | undefined)?.isEditable; + } + } } \ No newline at end of file diff --git a/src/util/common/test/shims/vscodeTypesShim.ts b/src/util/common/test/shims/vscodeTypesShim.ts index 1f6452db90..f27375dbc6 100644 --- a/src/util/common/test/shims/vscodeTypesShim.ts +++ b/src/util/common/test/shims/vscodeTypesShim.ts @@ -18,7 +18,7 @@ import { SnippetString } from '../../../vs/workbench/api/common/extHostTypes/sni import { SnippetTextEdit } from '../../../vs/workbench/api/common/extHostTypes/snippetTextEdit'; import { SymbolInformation, SymbolKind } from '../../../vs/workbench/api/common/extHostTypes/symbolInformation'; import { EndOfLine, TextEdit } from '../../../vs/workbench/api/common/extHostTypes/textEdit'; -import { AISearchKeyword, ChatErrorLevel, ChatPrepareToolInvocationPart, ChatReferenceBinaryData, ChatReferenceDiagnostic, ChatRequestEditedFileEventKind, ChatRequestEditorData, ChatRequestNotebookData, ChatRequestTurn, ChatResponseAnchorPart, ChatResponseClearToPreviousToolInvocationReason, ChatResponseCodeblockUriPart, ChatResponseCodeCitationPart, ChatResponseCommandButtonPart, ChatResponseConfirmationPart, ChatResponseExtensionsPart, ChatResponseExternalEditPart, ChatResponseFileTreePart, ChatResponseMarkdownPart, ChatResponseMarkdownWithVulnerabilitiesPart, ChatResponseMovePart, ChatResponseNotebookEditPart, ChatResponseProgressPart, ChatResponseProgressPart2, ChatResponsePullRequestPart, ChatResponseReferencePart, ChatResponseReferencePart2, ChatResponseTextEditPart, ChatResponseThinkingProgressPart, ChatResponseTurn, ChatResponseTurn2, ChatResponseWarningPart, ChatSessionStatus, ChatToolInvocationPart, ExcludeSettingOptions, LanguageModelChatMessage, LanguageModelChatMessageRole, LanguageModelChatToolMode, LanguageModelDataPart, LanguageModelDataPart2, LanguageModelError, LanguageModelPartAudience, LanguageModelPromptTsxPart, LanguageModelTextPart, LanguageModelTextPart2, LanguageModelThinkingPart, LanguageModelToolCallPart, LanguageModelToolExtensionSource, LanguageModelToolMCPSource, LanguageModelToolResult, LanguageModelToolResult2, LanguageModelToolResultPart, LanguageModelToolResultPart2, TextSearchMatch2 } from './chatTypes'; +import { AISearchKeyword, ChatErrorLevel, ChatPrepareToolInvocationPart, ChatReferenceBinaryData, ChatReferenceDiagnostic, ChatRequestEditedFileEventKind, ChatRequestEditorData, ChatRequestNotebookData, ChatRequestTurn, ChatResponseAnchorPart, ChatResponseClearToPreviousToolInvocationReason, ChatResponseCodeblockUriPart, ChatResponseCodeCitationPart, ChatResponseCommandButtonPart, ChatResponseConfirmationPart, ChatResponseExtensionsPart, ChatResponseExternalEditPart, ChatResponseFileTreePart, ChatResponseMarkdownPart, ChatResponseMarkdownWithVulnerabilitiesPart, ChatResponseMovePart, ChatResponseNotebookEditPart, ChatResponseProgressPart, ChatResponseProgressPart2, ChatResponsePullRequestPart, ChatResponseReferencePart, ChatResponseReferencePart2, ChatResponseTextEditPart, ChatResponseThinkingProgressPart, ChatResponseTurn, ChatResponseTurn2, ChatResponseWarningPart, ChatSessionStatus, ChatToolInvocationPart, CustomAgentChatResource, ExcludeSettingOptions, LanguageModelChatMessage, LanguageModelChatMessageRole, LanguageModelChatToolMode, LanguageModelDataPart, LanguageModelDataPart2, LanguageModelError, LanguageModelPartAudience, LanguageModelPromptTsxPart, LanguageModelTextPart, LanguageModelTextPart2, LanguageModelThinkingPart, LanguageModelToolCallPart, LanguageModelToolExtensionSource, LanguageModelToolMCPSource, LanguageModelToolResult, LanguageModelToolResult2, LanguageModelToolResultPart, LanguageModelToolResultPart2, TextSearchMatch2 } from './chatTypes'; import { TextDocumentChangeReason, TextEditorSelectionChangeKind, WorkspaceEdit } from './editing'; import { ChatLocation, ChatVariableLevel, DiagnosticSeverity, ExtensionMode, FileType, TextEditorCursorStyle, TextEditorLineNumbersStyle, TextEditorRevealType } from './enums'; import { t } from './l10n'; @@ -116,6 +116,7 @@ const shim: typeof vscodeTypes = { ChatResponseTurn2, ChatRequestTurn2: ChatRequestTurn, LanguageModelError: LanguageModelError as any, // Some difference in the definition of Error is breaking this + CustomAgentChatResource, SymbolKind, SnippetString, SnippetTextEdit, diff --git a/src/vscodeTypes.ts b/src/vscodeTypes.ts index bf4e967664..aa6d2447ca 100644 --- a/src/vscodeTypes.ts +++ b/src/vscodeTypes.ts @@ -99,6 +99,7 @@ export import SnippetString = vscode.SnippetString; export import SnippetTextEdit = vscode.SnippetTextEdit; export import FileType = vscode.FileType; export import ChatSessionStatus = vscode.ChatSessionStatus; +export import CustomAgentChatResource = vscode.CustomAgentChatResource; export const l10n = { /** From af4fb96083f71a4f3826a96f8cd8ff1e26d69124 Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Tue, 13 Jan 2026 12:25:30 -0800 Subject: [PATCH 28/33] update types --- .../vscode.proposed.chatPromptFiles.d.ts | 88 +++++-------------- src/util/common/test/shims/chatTypes.ts | 15 ++-- 2 files changed, 28 insertions(+), 75 deletions(-) diff --git a/src/extension/vscode.proposed.chatPromptFiles.d.ts b/src/extension/vscode.proposed.chatPromptFiles.d.ts index 83e3b33dd4..083b49ef25 100644 --- a/src/extension/vscode.proposed.chatPromptFiles.d.ts +++ b/src/extension/vscode.proposed.chatPromptFiles.d.ts @@ -10,14 +10,13 @@ declare module 'vscode' { // #region Resource Classes /** - * Options for creating a custom agent resource. + * Describes a chat resource file. */ - export interface CustomAgentOptions { - /** - * Indicates whether the custom agent is editable. Defaults to false. - */ + export type ChatResourceDescriptor = Uri | + { + uri: Uri; isEditable?: boolean; - } + }; /** * Represents a custom agent resource file (e.g., .agent.md). @@ -28,37 +27,18 @@ declare module 'vscode' { */ readonly uri: Uri; - /** - * Indicates whether the custom agent is editable. Defaults to false. - */ - readonly isEditable?: boolean; - /** * Creates a new custom agent resource from an existing file. - * @param uri The URI to the custom agent resource file. - * @param options Optional settings for the custom agent. + * @param resource The chat resource descriptor. */ - constructor(uri: Uri, options?: CustomAgentOptions); + constructor(resource: ChatResourceDescriptor); /** - * Creates a new custom agent resource from content. A virtual URI will be generated - * and the markdown content will be constructed from the provided content. + * Creates a new custom agent resource with generated virtual URI from the provided content. * @param id The unique identifier for this custom agent resource. - * @param content The content for creating the custom agent - either a string (body only) - * or a structured PromptFileContent object with header and body. - * @param options Optional settings for the custom agent. + * @param content The markdown content for the custom agent. */ - constructor(id: string, content: string, options?: CustomAgentOptions); - } - - /** - * Options for creating an instructions resource. - */ - export interface InstructionsOptions { - /** - * Indicates whether the instructions are editable. Defaults to false. - */ - isEditable?: boolean; + constructor(id: string, content: string); } /** @@ -70,37 +50,18 @@ declare module 'vscode' { */ readonly uri: Uri; - /** - * Indicates whether the instructions are editable. Defaults to false. - */ - readonly isEditable?: boolean; - /** * Creates a new instructions resource from an existing file. - * @param uri The URI to the instructions resource file. - * @param options Optional settings for the instructions. + * @param resource The chat resource descriptor. */ - constructor(uri: Uri, options?: InstructionsOptions); + constructor(resource: ChatResourceDescriptor); /** - * Creates a new instructions resource from content. A virtual URI will be generated - * and the markdown content will be constructed from the provided content. + * Creates a new instructions resource with generated virtual URI from the provided content. * @param id The unique identifier for this instructions resource. - * @param content The content for creating the instructions - either a string (body only) - * or a structured PromptFileContent object with header and body. - * @param options Optional settings for the instructions. + * @param content The markdown content for the instructions. */ - constructor(id: string, content: string, options?: InstructionsOptions); - } - - /** - * Options for creating a prompt file resource. - */ - export interface PromptFileOptions { - /** - * Indicates whether the prompt file is editable. Defaults to false. - */ - isEditable?: boolean; + constructor(id: string, content: string); } /** @@ -112,27 +73,18 @@ declare module 'vscode' { */ readonly uri: Uri; - /** - * Indicates whether the prompt file is editable. Defaults to false. - */ - readonly isEditable?: boolean; - /** * Creates a new prompt file resource from an existing file. - * @param uri The URI to the prompt file resource file. - * @param options Optional settings for the prompt file. + * @param resource The chat resource descriptor. */ - constructor(uri: Uri, options?: PromptFileOptions); + constructor(resource: ChatResourceDescriptor); /** - * Creates a new prompt file resource from content. A virtual URI will be generated - * and the markdown content will be constructed from the provided content. + * Creates a new prompt file resource with generated virtual URI from the provided content. * @param id The unique identifier for this prompt file resource. - * @param content The content for creating the prompt file - either a string (body only) - * or a structured PromptFileContent object with header and body. - * @param options Optional settings for the prompt file. + * @param content The markdown content for the prompt file. */ - constructor(id: string, content: string, options?: PromptFileOptions); + constructor(id: string, content: string); } // #endregion diff --git a/src/util/common/test/shims/chatTypes.ts b/src/util/common/test/shims/chatTypes.ts index acf8d6671e..bba628f47a 100644 --- a/src/util/common/test/shims/chatTypes.ts +++ b/src/util/common/test/shims/chatTypes.ts @@ -538,17 +538,18 @@ export class LanguageModelError extends Error { */ export class CustomAgentChatResource implements vscode.CustomAgentChatResource { readonly uri: vscode.Uri; - readonly isEditable?: boolean; - constructor(uri: vscode.Uri, options?: vscode.CustomAgentOptions); - constructor(id: string, content: string, options?: vscode.CustomAgentOptions); - constructor(uriOrId: vscode.Uri | string, contentOrOptions?: string | vscode.CustomAgentOptions, maybeOptions?: vscode.CustomAgentOptions) { - if (typeof uriOrId === 'string') { + constructor(resource: vscode.ChatResourceDescriptor); + constructor(id: string, content: string); + constructor(resourceOrId: vscode.ChatResourceDescriptor | string, content?: string) { + if (typeof resourceOrId === 'string') { // Virtual URI created from id and content throw new Error('Virtual URI constructor not implemented in test shim'); + } else if (typeof resourceOrId === 'object' && 'uri' in resourceOrId) { + this.uri = resourceOrId.uri; } else { - this.uri = uriOrId; - this.isEditable = (contentOrOptions as vscode.CustomAgentOptions | undefined)?.isEditable; + // resourceOrId is a Uri directly + this.uri = resourceOrId as vscode.Uri; } } } \ No newline at end of file From bfe945e634c1a46a5cb5b514942c8436a2607c4c Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Tue, 13 Jan 2026 14:31:48 -0800 Subject: [PATCH 29/33] PR --- ...nizationAndEnterpriseAgentProvider.spec.ts | 34 ++++---- .../vscode.proposed.chatPromptFiles.d.ts | 81 +++++++++---------- src/util/common/test/shims/chatTypes.ts | 16 +--- 3 files changed, 60 insertions(+), 71 deletions(-) diff --git a/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts b/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts index e5f8589dea..b7e3432519 100644 --- a/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts +++ b/src/extension/agents/vscode-node/test/organizationAndEnterpriseAgentProvider.spec.ts @@ -170,7 +170,7 @@ Test prompt content`; const agents = await provider.provideCustomAgents({}, {} as any); assert.equal(agents.length, 1); - const agentName = agents[0].uri.path.split('/').pop()?.replace('.agent.md', ''); + const agentName = (agents[0].resource as vscode.Uri).path.split('/').pop()?.replace('.agent.md', ''); assert.equal(agentName, 'test_agent'); }); @@ -203,13 +203,13 @@ Test prompt content`; // Second call should return newly cached agents from memory const agents2 = await provider.provideCustomAgents({}, {} as any); assert.equal(agents2.length, 1); - const agentName2 = agents2[0].uri.path.split('/').pop()?.replace('.agent.md', ''); + const agentName2 = (agents2[0].resource as vscode.Uri).path.split('/').pop()?.replace('.agent.md', ''); assert.equal(agentName2, 'api_agent'); // Third call should also return from memory cache without file I/O const agents3 = await provider.provideCustomAgents({}, {} as any); assert.equal(agents3.length, 1); - const agentName3 = agents3[0].uri.path.split('/').pop()?.replace('.agent.md', ''); + const agentName3 = (agents3[0].resource as vscode.Uri).path.split('/').pop()?.replace('.agent.md', ''); assert.equal(agentName3, 'api_agent'); }); @@ -445,7 +445,7 @@ Agent 1 prompt`; // So the existing file cache is returned with the one successful agent const cachedAgents = await provider.provideCustomAgents({}, {} as any); assert.equal(cachedAgents.length, 1); - const cachedAgentName = cachedAgents[0].uri.path.split('/').pop()?.replace('.agent.md', ''); + const cachedAgentName = (cachedAgents[0].resource as vscode.Uri).path.split('/').pop()?.replace('.agent.md', ''); assert.equal(cachedAgentName, 'agent1'); }); @@ -474,7 +474,7 @@ Agent 1 prompt`; // After successful fetch, subsequent calls return from memory const agents1 = await provider.provideCustomAgents({}, {} as any); assert.equal(agents1.length, 1); - const agentName1 = agents1[0].uri.path.split('/').pop()?.replace('.agent.md', ''); + const agentName1 = (agents1[0].resource as vscode.Uri).path.split('/').pop()?.replace('.agent.md', ''); assert.equal(agentName1, 'initial_agent'); // Even if API is updated, memory cache is used @@ -498,7 +498,7 @@ Agent 1 prompt`; // Memory cache returns old results without refetching const agents2 = await provider.provideCustomAgents({}, {} as any); assert.equal(agents2.length, 1); - const agentName2ForMemory = agents2[0].uri.path.split('/').pop()?.replace('.agent.md', ''); + const agentName2ForMemory = (agents2[0].resource as vscode.Uri).path.split('/').pop()?.replace('.agent.md', ''); assert.equal(agentName2ForMemory, 'initial_agent'); }); @@ -545,8 +545,8 @@ Agent 1 prompt`; // Memory cache still returns both agents (no refetch) const cachedAgents2 = await provider.provideCustomAgents({}, {} as any); assert.equal(cachedAgents2.length, 2); - const cachedAgent2Name1 = cachedAgents2[0].uri.path.split('/').pop()?.replace('.agent.md', ''); - const cachedAgent2Name2 = cachedAgents2[1].uri.path.split('/').pop()?.replace('.agent.md', ''); + const cachedAgent2Name1 = (cachedAgents2[0].resource as vscode.Uri).path.split('/').pop()?.replace('.agent.md', ''); + const cachedAgent2Name2 = (cachedAgents2[1].resource as vscode.Uri).path.split('/').pop()?.replace('.agent.md', ''); assert.equal(cachedAgent2Name1, 'agent1'); assert.equal(cachedAgent2Name2, 'agent2'); }); @@ -619,7 +619,7 @@ Agent 1 prompt`; // Memory cache still returns the agent (no refetch) const agents2 = await provider.provideCustomAgents({}, {} as any); assert.equal(agents2.length, 1); - const temporaryAgentName = agents2[0].uri.path.split('/').pop()?.replace('.agent.md', ''); + const temporaryAgentName = (agents2[0].resource as vscode.Uri).path.split('/').pop()?.replace('.agent.md', ''); assert.equal(temporaryAgentName, 'temporary_agent'); }); @@ -733,9 +733,9 @@ Valid prompt`; // Parser is lenient - both agents are returned, one with empty description assert.equal(agents.length, 2); - const validAgentName = agents[0].uri.path.split('/').pop()?.replace('.agent.md', ''); + const validAgentName = (agents[0].resource as vscode.Uri).path.split('/').pop()?.replace('.agent.md', ''); assert.equal(validAgentName, 'valid_agent'); - const noFrontmatterAgentName = agents[1].uri.path.split('/').pop()?.replace('.agent.md', ''); + const noFrontmatterAgentName = (agents[1].resource as vscode.Uri).path.split('/').pop()?.replace('.agent.md', ''); assert.equal(noFrontmatterAgentName, 'no_frontmatter'); }); @@ -954,7 +954,7 @@ Test prompt // Should only have one agent, not two (deduped) assert.equal(agents.length, 1); - const enterpriseAgentName = agents[0].uri.path.split('/').pop()?.replace('.agent.md', ''); + const enterpriseAgentName = (agents[0].resource as vscode.Uri).path.split('/').pop()?.replace('.agent.md', ''); assert.equal(enterpriseAgentName, 'enterprise_agent'); // Verify it was only written to one org directory @@ -1041,7 +1041,7 @@ Test prompt // Different versions are deduplicated, only the first one is kept assert.equal(agents.length, 1); - const versionedAgentName = agents[0].uri.path.split('/').pop()?.replace('.agent.md', ''); + const versionedAgentName = (agents[0].resource as vscode.Uri).path.split('/').pop()?.replace('.agent.md', ''); assert.equal(versionedAgentName, 'versioned_agent'); }); @@ -1100,8 +1100,8 @@ Test prompt // Should have 2 agents since they're from different repos (not duplicates) assert.equal(agents.length, 2); - const orgAgentName1 = agents[0].uri.path.split('/').pop()?.replace('.agent.md', ''); - const orgAgentName2 = agents[1].uri.path.split('/').pop()?.replace('.agent.md', ''); + const orgAgentName1 = (agents[0].resource as vscode.Uri).path.split('/').pop()?.replace('.agent.md', ''); + const orgAgentName2 = (agents[1].resource as vscode.Uri).path.split('/').pop()?.replace('.agent.md', ''); assert.equal(orgAgentName1, 'org_agent'); assert.equal(orgAgentName2, 'org_agent'); }); @@ -1165,7 +1165,7 @@ Test prompt assert.equal(agents.length, 2); // Verify both agent names are present - const agentNames = agents.map(a => a.uri.path.split('/').pop()?.replace('.agent.md', '')).sort(); + const agentNames = agents.map(a => (a.resource as vscode.Uri).path.split('/').pop()?.replace('.agent.md', '')).sort(); assert.deepEqual(agentNames, ['enterprise_agent1', 'enterprise_agent2']); }); @@ -1211,7 +1211,7 @@ Test prompt // Different versions are deduplicated, only the first one is kept assert.equal(agents.length, 1); - const multiVersionAgentName = agents[0].uri.path.split('/').pop()?.replace('.agent.md', ''); + const multiVersionAgentName = (agents[0].resource as vscode.Uri).path.split('/').pop()?.replace('.agent.md', ''); assert.equal(multiVersionAgentName, 'multi_version_agent'); }); }); diff --git a/src/extension/vscode.proposed.chatPromptFiles.d.ts b/src/extension/vscode.proposed.chatPromptFiles.d.ts index 083b49ef25..b0da5fe132 100644 --- a/src/extension/vscode.proposed.chatPromptFiles.d.ts +++ b/src/extension/vscode.proposed.chatPromptFiles.d.ts @@ -12,33 +12,31 @@ declare module 'vscode' { /** * Describes a chat resource file. */ - export type ChatResourceDescriptor = Uri | - { - uri: Uri; - isEditable?: boolean; - }; + export type ChatResourceDescriptor = + | Uri + | { + uri: Uri; + isEditable?: boolean; + } + | { + id: string; + content: string; + }; /** * Represents a custom agent resource file (e.g., .agent.md). */ export class CustomAgentChatResource { /** - * The URI to the custom agent resource file. + * The custom agent resource descriptor. */ - readonly uri: Uri; + readonly resource: ChatResourceDescriptor; /** - * Creates a new custom agent resource from an existing file. + * Creates a new custom agent resource from the specified resource. * @param resource The chat resource descriptor. */ constructor(resource: ChatResourceDescriptor); - - /** - * Creates a new custom agent resource with generated virtual URI from the provided content. - * @param id The unique identifier for this custom agent resource. - * @param content The markdown content for the custom agent. - */ - constructor(id: string, content: string); } /** @@ -46,22 +44,15 @@ declare module 'vscode' { */ export class InstructionsChatResource { /** - * The URI to the instructions resource file. + * The instructions resource descriptor. */ - readonly uri: Uri; + readonly resource: ChatResourceDescriptor; /** - * Creates a new instructions resource from an existing file. + * Creates a new instructions resource from the specified resource. * @param resource The chat resource descriptor. */ constructor(resource: ChatResourceDescriptor); - - /** - * Creates a new instructions resource with generated virtual URI from the provided content. - * @param id The unique identifier for this instructions resource. - * @param content The markdown content for the instructions. - */ - constructor(id: string, content: string); } /** @@ -69,22 +60,15 @@ declare module 'vscode' { */ export class PromptFileChatResource { /** - * The URI to the prompt file resource. + * The prompt file resource descriptor. */ - readonly uri: Uri; + readonly resource: ChatResourceDescriptor; /** - * Creates a new prompt file resource from an existing file. + * Creates a new prompt file resource from the specified resource. * @param resource The chat resource descriptor. */ constructor(resource: ChatResourceDescriptor); - - /** - * Creates a new prompt file resource with generated virtual URI from the provided content. - * @param id The unique identifier for this prompt file resource. - * @param content The markdown content for the prompt file. - */ - constructor(id: string, content: string); } // #endregion @@ -116,7 +100,10 @@ declare module 'vscode' { * @param token A cancellation token. * @returns An array of custom agents or a promise that resolves to such. */ - provideCustomAgents(context: CustomAgentContext, token: CancellationToken): ProviderResult; + provideCustomAgents( + context: CustomAgentContext, + token: CancellationToken + ): ProviderResult; } /** @@ -144,7 +131,10 @@ declare module 'vscode' { * @param token A cancellation token. * @returns An array of instructions or a promise that resolves to such. */ - provideInstructions(context: InstructionsContext, token: CancellationToken): ProviderResult; + provideInstructions( + context: InstructionsContext, + token: CancellationToken + ): ProviderResult; } /** @@ -172,7 +162,10 @@ declare module 'vscode' { * @param token A cancellation token. * @returns An array of prompt files or a promise that resolves to such. */ - providePromptFiles(context: PromptFileContext, token: CancellationToken): ProviderResult; + providePromptFiles( + context: PromptFileContext, + token: CancellationToken + ): ProviderResult; } // #endregion @@ -185,21 +178,27 @@ declare module 'vscode' { * @param provider The custom agent provider. * @returns A disposable that unregisters the provider when disposed. */ - export function registerCustomAgentProvider(provider: CustomAgentProvider): Disposable; + export function registerCustomAgentProvider( + provider: CustomAgentProvider + ): Disposable; /** * Register a provider for instructions. * @param provider The instructions provider. * @returns A disposable that unregisters the provider when disposed. */ - export function registerInstructionsProvider(provider: InstructionsProvider): Disposable; + export function registerInstructionsProvider( + provider: InstructionsProvider + ): Disposable; /** * Register a provider for prompt files. * @param provider The prompt file provider. * @returns A disposable that unregisters the provider when disposed. */ - export function registerPromptFileProvider(provider: PromptFileProvider): Disposable; + export function registerPromptFileProvider( + provider: PromptFileProvider + ): Disposable; } // #endregion diff --git a/src/util/common/test/shims/chatTypes.ts b/src/util/common/test/shims/chatTypes.ts index bba628f47a..f42af76d9c 100644 --- a/src/util/common/test/shims/chatTypes.ts +++ b/src/util/common/test/shims/chatTypes.ts @@ -537,19 +537,9 @@ export class LanguageModelError extends Error { * Represents a custom agent resource file (e.g., .agent.md). */ export class CustomAgentChatResource implements vscode.CustomAgentChatResource { - readonly uri: vscode.Uri; + readonly resource: vscode.ChatResourceDescriptor; - constructor(resource: vscode.ChatResourceDescriptor); - constructor(id: string, content: string); - constructor(resourceOrId: vscode.ChatResourceDescriptor | string, content?: string) { - if (typeof resourceOrId === 'string') { - // Virtual URI created from id and content - throw new Error('Virtual URI constructor not implemented in test shim'); - } else if (typeof resourceOrId === 'object' && 'uri' in resourceOrId) { - this.uri = resourceOrId.uri; - } else { - // resourceOrId is a Uri directly - this.uri = resourceOrId as vscode.Uri; - } + constructor(resource: vscode.ChatResourceDescriptor) { + this.resource = resource; } } \ No newline at end of file From c136b5759e2b632f7e7b0686e01560e89b07d449 Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Thu, 15 Jan 2026 15:45:42 -0800 Subject: [PATCH 30/33] use proposed API --- package.json | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index 4dcefc53b1..526066d81a 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,8 @@ "languageModelThinkingPart", "chatSessionsProvider@3", "devDeviceId", - "contribEditorContentMenu" + "contribEditorContentMenu", + "chatPromptFiles" ], "contributes": { "languageModelTools": [ From a09278db8cfacc29abde10773230d0077e866bbd Mon Sep 17 00:00:00 2001 From: Paul Date: Thu, 15 Jan 2026 16:09:54 -0800 Subject: [PATCH 31/33] Update src/platform/customInstructions/common/customInstructionsService.ts Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- .../customInstructions/common/customInstructionsService.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/platform/customInstructions/common/customInstructionsService.ts b/src/platform/customInstructions/common/customInstructionsService.ts index 5b51ee4b1e..952831b46b 100644 --- a/src/platform/customInstructions/common/customInstructionsService.ts +++ b/src/platform/customInstructions/common/customInstructionsService.ts @@ -322,7 +322,7 @@ export class CustomInstructionsService extends Disposable implements ICustomInst return extensionPromptFiles.some(file => extUriBiasedIgnorePathCase.isEqual(file.uri, uri)); } } catch (e) { - console.warn('Error checking for extension prompt files'); + this.logService.warn('Error checking for extension prompt files'); // Command may not be available, ignore } From 41cd2a534ba931103f3a57641e50cad41baa85b0 Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Thu, 15 Jan 2026 16:12:31 -0800 Subject: [PATCH 32/33] fix tests --- .../test/node/customInstructionsService.spec.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/platform/customInstructions/test/node/customInstructionsService.spec.ts b/src/platform/customInstructions/test/node/customInstructionsService.spec.ts index 5dde21c8bb..18f4af2736 100644 --- a/src/platform/customInstructions/test/node/customInstructionsService.spec.ts +++ b/src/platform/customInstructions/test/node/customInstructionsService.spec.ts @@ -167,14 +167,14 @@ suite('CustomInstructionsService - Skills', () => { }); suite('isExternalInstructionsFile', () => { - test('should return true for skill files', () => { + test('should return true for skill files', async () => { const skillFileUri = URI.file('/workspace/.github/skills/myskill/SKILL.md'); - expect(customInstructionsService.isExternalInstructionsFile(skillFileUri)).toBe(true); + expect(await customInstructionsService.isExternalInstructionsFile(skillFileUri)).toBe(true); }); - test('should return false for regular files', () => { + test('should return false for regular files', async () => { const regularFileUri = URI.file('/workspace/src/file.ts'); - expect(customInstructionsService.isExternalInstructionsFile(regularFileUri)).toBe(false); + expect(await customInstructionsService.isExternalInstructionsFile(regularFileUri)).toBe(false); }); }); From f25ed0e68eea5705fcf14d996dbfae4abd9ba02e Mon Sep 17 00:00:00 2001 From: Paul Wang Date: Thu, 15 Jan 2026 16:40:41 -0800 Subject: [PATCH 33/33] update for skills --- .../common/customInstructionsService.ts | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/platform/customInstructions/common/customInstructionsService.ts b/src/platform/customInstructions/common/customInstructionsService.ts index 952831b46b..2687a40c7a 100644 --- a/src/platform/customInstructions/common/customInstructionsService.ts +++ b/src/platform/customInstructions/common/customInstructionsService.ts @@ -317,9 +317,18 @@ export class CustomInstructionsService extends Disposable implements ICustomInst // Check for external extension-contributed prompt files try { - const extensionPromptFiles = await this.runCommandExecutionService.executeCommand('vscode.extensionPromptFileProvider') as { uri: URI }[] | undefined; + const extensionPromptFiles = await this.runCommandExecutionService.executeCommand('vscode.extensionPromptFileProvider') as { + uri: URI; type: 'instructions' | 'prompt' | 'agent' | 'skill'; + }[] | undefined; if (extensionPromptFiles) { - return extensionPromptFiles.some(file => extUriBiasedIgnorePathCase.isEqual(file.uri, uri)); + return extensionPromptFiles.some(file => { + if (file.type === 'skill') { + // For skills, the URI points to SKILL.md - allow everything under the parent folder + const skillFolderUri = extUriBiasedIgnorePathCase.dirname(file.uri); + return extUriBiasedIgnorePathCase.isEqualOrParent(uri, skillFolderUri); + } + return extUriBiasedIgnorePathCase.isEqual(file.uri, uri); + }); } } catch (e) { this.logService.warn('Error checking for extension prompt files');