{ "name": "remote-containers", "displayName": "%displayName%", "description": "%description%", "version": "0.380.0", "publisher": "ms-vscode-remote", "icon": "resources/dev-containers.png", "repository": { "type": "git", "url": "https://github.com/Microsoft/vscode-remote-release.git" }, "bugs": { "url": "https://github.com/Microsoft/vscode-remote-release/issues" }, "license": "SEE LICENSE IN LICENSE.txt", "engines": { "vscode": "^1.86.0" }, "extensionKind": [ "ui" ], "capabilities": { "untrustedWorkspaces": { "supported": "limited", "description": "%capabilities.untrustedWorkspaces.description%" }, "virtualWorkspaces": true }, "categories": [ "Other" ], "keywords": [ "remote", "docker", "containers", "remote development", "dev container", "devcontainer", "development container", "continueOn" ], "aiKey": "0c6ae279ed8443289764825290e4f9e2-1a736e7c-1324-4338-be46-fc2a58ae4d14-7255", "activationEvents": [ "onStartupFinished", "workspaceContains:.devcontainer/devcontainer.json", "workspaceContains:.devcontainer.json", "onResolveRemoteAuthority:dev-container", "onResolveRemoteAuthority:attached-container", "onResolveRemoteAuthority:k8s-container", "onDebugResolve:extensionHost" ], "main": "./dist/extension/extension", "l10n": "./l10n", "enabledApiProposals": [ "resolvers", "tunnels", "workspaceTrust", "terminalDimensions", "contribEditSessions", "contribViewsRemote", "contribRemoteHelp" ], "contributes": { "continueEditSession": [ { "command": "remote-containers.openRepositoryFromRemoteHubWithEditSession", "group": "0_local@2", "when": "!isWeb && remoteHub:hasVirtualFolders", "qualifiedName": "%continueEditSession.containerVolume%", "remoteGroup": "remote_30_dev-container_2_actions@8" }, { "command": "remote-containers.openRepositoryFromGitWithEditSession", "group": "0_local@2", "when": "git.state == initialized && gitOpenRepositoryCount != 0 && remoteName =~ /(codespaces*.*|tunnel)/ && false", "qualifiedName": "%continueEditSession.containerVolume%", "remoteGroup": "remote_30_dev-container_2_actions@8" } ], "languages": [ { "id": "jsonc", "filenames": [ "devcontainer-feature.json", ".devcontainer-internal.json" ] } ], "jsonValidation": [ { "fileMatch": "devcontainer-feature.json", "url": "https://raw.githubusercontent.com/devcontainers/spec/main/schemas/devContainerFeature.schema.json" } ], "configuration": { "title": "%configuration.title%", "properties": { "remote.containers.defaultExtensions": { "scope": "application", "deprecationMessage": "%configuration.defaultExtensions.deprecationMessage%", "markdownDeprecationMessage": "%configuration.defaultExtensions.markdownDeprecationMessage%" }, "dev.containers.defaultExtensions": { "scope": "application", "type": "array", "description": "%configuration.defaultExtensions.description%", "default": [], "items": { "type": "string", "pattern": "([a-z0-9A-Z][a-z0-9\\-A-Z]*)\\.([a-z0-9A-Z][a-z0-9\\-A-Z]*)", "errorMessage": "%configuration.defaultExtensions.errorMessage%" } }, "dev.containers.defaultExtensionsIfInstalledLocally": { "scope": "application", "type": "array", "description": "%configuration.defaultExtensionsIfInstalledLocally.description%", "default": [ "GitHub.copilot", "GitHub.copilot-chat", "GitHub.vscode-pull-request-github" ], "items": { "type": "string", "pattern": "([a-z0-9A-Z][a-z0-9\\-A-Z]*)\\.([a-z0-9A-Z][a-z0-9\\-A-Z]*)", "errorMessage": "%configuration.defaultExtensionsIfInstalledLocally.errorMessage%" } }, "dev.containers.defaultFeatures": { "scope": "application", "type": "object", "description": "%configuration.defaultFeatures%", "default": {} }, "remote.containers.workspaceMountConsistency": { "scope": "application", "deprecationMessage": "%configuration.workspaceMountConsistency.deprecationMessage%", "markdownDeprecationMessage": "%configuration.workspaceMountConsistency.markdownDeprecationMessage%" }, "dev.containers.workspaceMountConsistency": { "scope": "application", "type": "string", "enum": [ "consistent", "cached", "delegated" ], "enumDescriptions": [ "%configuration.workspaceMountConsistency.consistent%", "%configuration.workspaceMountConsistency.cached%", "%configuration.workspaceMountConsistency.delegated%" ], "description": "%configuration.workspaceMountConsistency.description%", "default": "cached" }, "remote.containers.cacheVolume": { "scope": "application", "deprecationMessage": "%configuration.cacheVolume.deprecationMessage%", "markdownDeprecationMessage": "%configuration.cacheVolume.markdownDeprecationMessage%" }, "dev.containers.cacheVolume": { "scope": "application", "type": "boolean", "description": "%configuration.cacheVolume.description%", "default": true }, "remote.containers.copyGitConfig": { "scope": "machine", "deprecationMessage": "%configuration.copyGitConfig.deprecationMessage%", "markdownDeprecationMessage": "%configuration.copyGitConfig.markdownDeprecationMessage%" }, "dev.containers.copyGitConfig": { "scope": "machine", "type": "boolean", "markdownDescription": "%configuration.copyGitConfig.markdownDescription%", "default": true }, "remote.containers.gitCredentialHelperConfigLocation": { "scope": "machine", "deprecationMessage": "%configuration.gitCredentialHelperConfigLocation.deprecationMessage%", "markdownDeprecationMessage": "%configuration.gitCredentialHelperConfigLocation.markdownDeprecationMessage%" }, "dev.containers.gitCredentialHelperConfigLocation": { "scope": "machine", "type": "string", "enum": [ "system", "global", "none" ], "enumDescriptions": [ "%configuration.gitCredentialHelperConfigLocation.system%", "%configuration.gitCredentialHelperConfigLocation.global%", "%configuration.gitCredentialHelperConfigLocation.none%" ], "description": "%configuration.gitCredentialHelperConfigLocation.description%", "default": "global" }, "dev.containers.dockerCredentialHelper": { "scope": "machine", "type": "boolean", "markdownDescription": "%configuration.dockerCredentialHelper.markdownDescription%", "default": true }, "dev.containers.mountWaylandSocket": { "scope": "application", "ignoreSync": true, "type": "boolean", "markdownDescription": "%configuration.mountWaylandSocket.markdownDescription%", "default": true }, "remote.containers.logLevel": { "scope": "application", "deprecationMessage": "%configuration.logLevel.deprecationMessage%", "markdownDeprecationMessage": "%configuration.logLevel.markdownDeprecationMessage%" }, "dev.containers.logLevel": { "scope": "application", "type": "string", "description": "%configuration.logLevel.description%", "default": "debug", "enum": [ "info", "debug", "trace" ] }, "remote.containers.dockerPath": { "scope": "application", "deprecationMessage": "%configuration.dockerPath.deprecationMessage%", "markdownDeprecationMessage": "%configuration.dockerPath.markdownDeprecationMessage%" }, "dev.containers.dockerPath": { "scope": "application", "type": "string", "description": "%configuration.dockerPath.description%", "default": "docker" }, "remote.containers.dockerComposePath": { "scope": "application", "deprecationMessage": "%configuration.dockerComposePath.deprecationMessage%", "markdownDeprecationMessage": "%configuration.dockerComposePath.markdownDeprecationMessage%" }, "dev.containers.dockerComposePath": { "scope": "application", "type": "string", "description": "%configuration.dockerComposePath.description%", "default": "docker-compose" }, "dev.containers.dockerSocketPath": { "scope": "application", "type": "string", "description": "%configuration.dockerSocketPath.description%", "default": "/var/run/docker.sock" }, "remote.containers.executeInWSL": { "scope": "application", "deprecationMessage": "%configuration.executeInWSL.deprecationMessage%", "markdownDeprecationMessage": "%configuration.executeInWSL.markdownDeprecationMessage%" }, "dev.containers.executeInWSL": { "scope": "application", "type": "boolean", "description": "%configuration.executeInWSL.description%", "default": false }, "remote.containers.executeInWSLDistro": { "scope": "application", "deprecationMessage": "%configuration.executeInWSLDistro.deprecationMessage%", "markdownDeprecationMessage": "%configuration.executeInWSLDistro.markdownDeprecationMessage%" }, "dev.containers.executeInWSLDistro": { "scope": "application", "type": "string", "markdownDescription": "%configuration.executeInWSLDistro.markdownDescription%" }, "dev.containers.forwardWSLServices": { "scope": "application", "type": "boolean", "description": "%configuration.forwardWSLServices.description%", "default": true }, "dotfiles.repository": { "scope": "machine", "type": "string", "description": "%configuration.dotfiles.repository.description%" }, "dotfiles.installCommand": { "scope": "machine", "type": "string", "description": "%configuration.dotfiles.installCommand.description%" }, "dotfiles.targetPath": { "scope": "machine", "type": "string", "description": "%configuration.dotfiles.targetPath.description%", "default": "~/dotfiles" }, "remote.containers.dotfiles.repository": { "scope": "machine", "deprecationMessage": "%configuration.dotfiles.repository.deprecationMessage%", "markdownDeprecationMessage": "%configuration.dotfiles.repository.markdownDeprecationMessage%" }, "remote.containers.dotfiles.installCommand": { "scope": "machine", "deprecationMessage": "%configuration.dotfiles.installCommand.deprecationMessage%", "markdownDeprecationMessage": "%configuration.dotfiles.installCommand.markdownDeprecationMessage%" }, "remote.containers.dotfiles.targetPath": { "scope": "machine", "deprecationMessage": "%configuration.dotfiles.targetPath.deprecationMessage%", "markdownDeprecationMessage": "%configuration.dotfiles.targetPath.markdownDeprecationMessage%" }, "remote.containers.repositoryConfigurationPaths": { "scope": "application", "deprecationMessage": "%configuration.repositoryConfigurationPaths.deprecationMessage%", "markdownDeprecationMessage": "%configuration.repositoryConfigurationPaths.markdownDeprecationMessage%" }, "dev.containers.repositoryConfigurationPaths": { "scope": "application", "type": "array", "markdownDescription": "%configuration.repositoryConfigurationPaths.markdownDescription%", "default": [], "items": { "type": "string" } }, "dev.containers.experimentalLockfile": { "scope": "application", "type": "boolean", "description": "%configuration.experimentalLockfile.description%", "default": false } } }, "commands": [ { "command": "remote-containers.reopenInContainer", "title": "%command.reopenInContainer%", "category": "%command.category%" }, { "command": "remote-containers.rebuildAndReopenInContainer", "title": "%command.rebuildAndReopenInContainer%", "category": "%command.category%" }, { "command": "remote-containers.rebuildNoCacheAndReopenInContainer", "title": "%command.rebuildNoCacheAndReopenInContainer%", "category": "%command.category%" }, { "command": "remote-containers.reopenLocally", "title": "%command.reopenLocally%", "category": "%command.category%" }, { "command": "remote-containers.reopenInWSL", "title": "%command.reopenInWSL%", "category": "%command.category%" }, { "command": "remote-containers.reopenInSSH", "title": "%command.reopenInSSH%", "category": "%command.category%" }, { "command": "remote-containers.reopenInTunnel", "title": "%command.reopenInTunnel%", "category": "%command.category%" }, { "command": "remote-containers.openFolder", "title": "%command.openFolder%", "category": "%command.category%", "icon": { "light": "resources/light/reopen-folder.svg", "dark": "resources/dark/reopen-folder.svg" } }, { "command": "remote-containers.openFolderInContainerInCurrentWindow", "title": "%command.openFolderInContainerInCurrentWindow%", "category": "%command.category%", "icon": "$(arrow-right)" }, { "command": "remote-containers.openFolderInContainerInNewWindow", "title": "%command.openFolderInContainerInNewWindow%", "category": "%command.category%", "icon": "$(empty-window)" }, { "command": "remote-containers.openInformationAboutMountPerformance", "title": "%command.openInformationAboutMountPerformance%", "category": "%command.category%", "icon": "$(info)" }, { "command": "remote-containers.openRepositoryInVolume", "title": "%command.openRepositoryInVolume%", "category": "%command.category%" }, { "command": "remote-containers.openRepositoryInUniqueVolume", "title": "%command.openRepositoryInUniqueVolume%", "icon": "$(repo-clone)", "category": "%command.category%" }, { "command": "remote-containers.openRepositoryFromRemoteHubWithEditSession", "title": "%command.openRepositoryFromRemoteHubWithEditSession%", "icon": "$(repo-clone)", "category": "%command.category%" }, { "command": "remote-containers.openRepositoryFromGitWithEditSession", "title": "%command.openRepositoryFromGitWithEditSession%", "icon": "$(repo-clone)", "category": "%command.category%" }, { "command": "remote-containers.openPullRequestInVolume", "title": "%command.openPullRequestInVolume%", "category": "%command.category%" }, { "command": "remote-containers.inspectVolume", "title": "%command.inspectVolume%", "category": "%command.category%" }, { "command": "remote-containers.openWorkspace", "title": "%command.openWorkspace%", "category": "%command.category%" }, { "command": "remote-containers.attachToRunningContainer", "title": "%command.attachToRunningContainer%", "category": "%command.category%" }, { "command": "remote-containers.attachToRunningContainerFromViewlet", "title": "%command.attachToRunningContainerFromViewlet%", "category": "%command.category%" }, { "command": "remote-containers.inspectVolumeFromViewlet", "title": "%command.inspectVolumeFromViewlet%", "category": "%command.category%" }, { "command": "remote-containers.cloneInVolumeFromViewlet", "title": "%command.cloneInVolumeFromViewlet%", "category": "%command.category%" }, { "command": "remote-containers.cleanUpDevContainers", "title": "%command.cleanUpDevContainers%", "category": "%command.category%", "icon": "$(clear-all)" }, { "command": "remote-containers.pruneVolumes", "title": "%command.pruneVolumes%", "category": "%command.category%", "icon": "$(clear-all)" }, { "command": "remote-containers.explorerVolumesRefresh", "title": "%command.explorerVolumesRefresh%", "category": "%command.category%", "icon": "$(refresh)" }, { "command": "remote-containers.attachToK8sContainerFromViewlet", "title": "%command.attachToK8sContainerFromViewlet%", "category": "%command.category%" }, { "command": "remote-containers.switchContainer", "title": "%command.switchContainer%", "category": "%command.category%" }, { "command": "remote-containers.rebuildContainer", "title": "%command.rebuildContainer%", "category": "%command.category%", "icon": { "light": "resources/light/tools.svg", "dark": "resources/dark/tools.svg" } }, { "command": "remote-containers.rebuildContainerNoCache", "title": "%command.rebuildContainerNoCache%", "category": "%command.category%", "icon": { "light": "resources/light/tools.svg", "dark": "resources/dark/tools.svg" } }, { "command": "remote-containers.createDevContainerFile", "title": "%command.createDevContainerFile%", "category": "%command.category%" }, { "command": "remote-containers.createDevContainerFileWithCopilot", "title": "%command.createDevContainerFileWithCopilot%", "category": "%command.category%" }, { "command": "remote-containers.createDevContainer", "title": "%command.createDevContainer%", "category": "%command.category%" }, { "command": "remote-containers.settings", "title": "%command.settings%", "category": "%command.category%" }, { "command": "remote-containers.getHelp", "title": "%command.getHelp%", "category": "%command.category%" }, { "command": "remote-containers.getStarted", "title": "%command.getStarted%", "category": "%command.category%" }, { "command": "remote-containers.trySample", "title": "%command.trySample%", "category": "%command.category%" }, { "command": "remote-containers.reportIssue", "title": "%command.reportIssue%", "category": "%command.category%" }, { "command": "remote-containers.provideFeedback", "title": "%command.provideFeedback%", "category": "%command.category%" }, { "command": "remote-containers.openDevContainerFile", "title": "%command.openDevContainerFile%", "category": "%command.category%", "icon": { "light": "resources/light/gear.svg", "dark": "resources/dark/gear.svg" } }, { "command": "remote-containers.openAttachConfigByNameFile", "title": "%command.openAttachConfigByNameFile%", "category": "%command.category%" }, { "command": "remote-containers.openAttachDevContainerFile", "title": "%command.openAttachDevContainerFile%", "category": "%command.category%" }, { "command": "remote-containers.revealLogTerminal", "title": "%command.revealLogTerminal%", "category": "%command.category%" }, { "command": "remote-containers.openLogFile", "title": "%command.openLogFile%", "category": "%command.developerCategory%" }, { "command": "remote-containers.openLastLogFile", "title": "%command.openLastLogFile%", "category": "%command.category%" }, { "command": "remote-containers.testConnection", "title": "%command.testConnection%", "category": "%command.developerCategory%" }, { "command": "remote-containers.attachToContainerInCurrentWindow", "title": "%command.attachToContainerInCurrentWindow%", "category": "%command.category%", "icon": "$(arrow-right)" }, { "command": "remote-containers.attachToContainerInNewWindow", "title": "%command.attachToContainerInNewWindow%", "category": "%command.category%", "icon": "$(empty-window)" }, { "command": "remote-containers.stopContainer", "title": "%command.stopContainer%", "category": "%command.category%" }, { "command": "remote-containers.startContainer", "title": "%command.startContainer%", "category": "%command.category%", "icon": { "light": "resources/light/vm-start.svg", "dark": "resources/dark/vm-start.svg" } }, { "command": "remote-containers.removeContainer", "title": "%command.removeContainer%", "category": "%command.category%", "icon": { "light": "resources/light/remove.svg", "dark": "resources/dark/remove.svg" } }, { "command": "remote-containers.removeRecentFolder", "title": "%command.removeRecentFolder%", "category": "%command.category%", "icon": { "light": "resources/light/remove.svg", "dark": "resources/dark/remove.svg" } }, { "command": "remote-containers.showDetails", "title": "%command.showDetails%", "category": "%command.category%" }, { "command": "remote-containers.explorerTargetsRefresh", "title": "%command.explorerTargetsRefresh%", "category": "%command.category%", "icon": { "light": "resources/light/refresh.svg", "dark": "resources/dark/refresh.svg" } }, { "command": "remote-containers.explorerDetailsRefresh", "title": "%command.explorerDetailsRefresh%", "category": "%command.category%", "icon": { "light": "resources/light/refresh.svg", "dark": "resources/dark/refresh.svg" } }, { "command": "remote-containers.inspectDockerResource", "title": "%command.inspectDockerResource%", "category": "%command.category%" }, { "command": "remote-containers.inspectInBasicDevContainer", "title": "%command.inspectInBasicDevContainer%", "category": "%command.category%" }, { "command": "remote-containers.cloneInVolume", "title": "%command.cloneInVolume%", "category": "%command.category%" }, { "command": "remote-containers.removeVolume", "title": "%command.removeVolume%", "category": "%command.category%" }, { "command": "remote-containers.newContainer", "title": "%command.newContainer%", "category": "%command.category%", "icon": { "light": "resources/light/plus.svg", "dark": "resources/dark/plus.svg" } }, { "command": "remote-containers.showContainerLog", "title": "%command.showContainerLog%", "category": "%command.category%" }, { "command": "remote-containers.addExtensionToConfig", "title": "%command.addExtensionToConfig%", "category": "%command.category%" }, { "command": "remote-containers.checkoutPRInVolume", "title": "%command.checkoutPRInVolume%", "category": "%command.category%" }, { "command": "remote-containers.showReopenInContainerNotificationReset", "title": "%command.showReopenInContainerNotificationReset%", "category": "%command.category%" }, { "command": "remote-containers.showRecoveryContainerNotificationReset", "title": "%command.showRecoveryContainerNotificationReset%", "category": "%command.category%" }, { "command": "remote-containers.labelPortAndUpdateConfig", "title": "%command.labelPortAndUpdateConfig%", "category": "%command.category%", "icon": "$(tag)" }, { "command": "remote-containers.installDocker", "title": "%command.installDocker%", "category": "%command.category%" }, { "command": "remote-containers.installDockerInWSL", "title": "%command.installDockerInWSL%", "category": "%command.category%" }, { "command": "remote-containers.installUserCLI", "title": "%command.installUserCLI%", "category": "%command.category%" }, { "command": "remote-containers.configureContainerFeatures", "title": "%command.configureContainerFeatures%", "category": "%command.category%" } ], "menus": { "commandPalette": [ { "command": "remote-containers.reopenInContainer", "when": "!hideConnectCommands && workspaceFolderCount != 0 && !remoteName && !virtualWorkspace" }, { "command": "remote-containers.reopenInContainer", "when": "!hideConnectCommands && workspaceFolderCount != 0 && remoteName =~ /^(wsl|ssh-remote|tunnel)$/" }, { "command": "remote-containers.reopenInContainer", "when": "!hideConnectCommands && workspaceFolderCount != 0 && remoteName == dev-container && isRecoveryContainer" }, { "command": "remote-containers.rebuildAndReopenInContainer", "when": "!hideRebuildCommands && workspaceFolderCount != 0 && !remoteName && !virtualWorkspace" }, { "command": "remote-containers.rebuildAndReopenInContainer", "when": "!hideRebuildCommands && workspaceFolderCount != 0 && remoteName =~ /^(wsl|ssh-remote|tunnel)$/" }, { "command": "remote-containers.rebuildNoCacheAndReopenInContainer", "when": "!hideRebuildCommands && workspaceFolderCount != 0 && !remoteName && !virtualWorkspace" }, { "command": "remote-containers.rebuildNoCacheAndReopenInContainer", "when": "!hideRebuildCommands && workspaceFolderCount != 0 && remoteName =~ /^(wsl|ssh-remote|tunnel)$/" }, { "command": "remote-containers.reopenLocally", "when": "!hideConnectCommands && canReopenLocally" }, { "command": "remote-containers.reopenInWSL", "when": "!hideConnectCommands && canReopenInWSL" }, { "command": "remote-containers.reopenInSSH", "when": "!hideConnectCommands && canReopenInSSH" }, { "command": "remote-containers.reopenInTunnel", "when": "!hideConnectCommands && canReopenInTunnel" }, { "command": "remote-containers.openFolder", "when": "!hideConnectCommands && remoteName =~ /^(dev-container|attached-container|exec|k8s-container|wsl|ssh-remote|tunnel)?$/" }, { "command": "remote-containers.openRepositoryInVolume", "when": "!hideConnectCommands && remoteName =~ /^(dev-container|attached-container|exec|k8s-container|wsl|ssh-remote|tunnel)?$/" }, { "command": "remote-containers.openRepositoryInUniqueVolume", "when": "!hideConnectCommands && remoteName =~ /^(dev-container|attached-container|exec|k8s-container|wsl|ssh-remote|tunnel)?$/" }, { "command": "remote-containers.openPullRequestInVolume", "when": "!hideConnectCommands && remoteName =~ /^(dev-container|attached-container|exec|k8s-container|wsl|ssh-remote|tunnel)?$/" }, { "command": "remote-containers.createDevContainer", "when": "!hideConnectCommands && remoteName =~ /^(dev-container|attached-container|exec|k8s-container|wsl|ssh-remote|tunnel)?$/" }, { "command": "remote-containers.openWorkspace", "when": "!hideConnectCommands && remoteName =~ /^(dev-container|attached-container|exec|k8s-container|wsl|ssh-remote|tunnel)?$/" }, { "command": "remote-containers.attachToRunningContainer", "when": "!hideConnectCommands && remoteName =~ /^(dev-container|attached-container|exec|k8s-container|wsl|ssh-remote|tunnel)?$/" }, { "command": "remote-containers.attachToRunningContainerFromViewlet", "when": "false" }, { "command": "remote-containers.inspectVolumeFromViewlet", "when": "false" }, { "command": "remote-containers.openRepositoryFromRemoteHubWithEditSession", "when": "false" }, { "command": "remote-containers.openRepositoryFromGitWithEditSession", "when": "false" }, { "command": "remote-containers.cloneInVolumeFromViewlet", "when": "false" }, { "command": "remote-containers.inspectInBasicDevContainer", "when": "false" }, { "command": "remote-containers.cloneInVolume", "when": "false" }, { "command": "remote-containers.removeVolume", "when": "false" }, { "command": "remote-containers.attachToK8sContainerFromViewlet", "when": "false" }, { "command": "remote-containers.checkoutPRInVolume", "when": "false" }, { "command": "remote-containers.switchContainer", "when": "remoteName =~ /^dev-container$/" }, { "command": "remote-containers.rebuildContainer", "when": "!hideRebuildCommands && remoteName =~ /^dev-container$/" }, { "command": "remote-containers.rebuildContainerNoCache", "when": "!hideRebuildCommands && remoteName =~ /^dev-container$/" }, { "command": "remote-containers.testConnection", "when": "remoteName =~ /^(dev|attached)-container$/" }, { "command": "remote-containers.createDevContainerFile", "when": "!remoteName && !virtualWorkspace" }, { "command": "remote-containers.createDevContainerFile", "when": "remoteName =~ /^(dev-container|wsl|ssh-remote|tunnel)$/" }, { "command": "remote-containers.createDevContainerFileWithCopilot", "when": "false && github.copilot.activated && !remoteName && !virtualWorkspace" }, { "command": "remote-containers.createDevContainerFileWithCopilot", "when": "false && github.copilot.activated && remoteName =~ /^(dev-container|wsl|ssh-remote|tunnel)$/" }, { "command": "remote-containers.openDevContainerFile", "when": "workspaceFolderCount != 0 && !remoteName && !virtualWorkspace" }, { "command": "remote-containers.openDevContainerFile", "when": "workspaceFolderCount != 0 && remoteName =~ /^(wsl|ssh-remote|tunnel)$/" }, { "command": "remote-containers.openDevContainerFile", "when": "remoteName =~ /^(dev|attached)-container$/" }, { "command": "remote-containers.openAttachConfigByNameFile", "when": "remoteName == attached-container" }, { "command": "remote-containers.openAttachDevContainerFile", "when": "remoteName =~ /^(dev-container|attached-container|exec|k8s-container|wsl|ssh-remote|tunnel)?$/" }, { "command": "remote-containers.getStarted", "when": "!remoteName && !virtualWorkspace || remoteName =~ /^(wsl|ssh-remote|tunnel)$/" }, { "command": "remote-containers.trySample", "when": "!hideConnectCommands && !remoteName && !virtualWorkspace" }, { "command": "remote-containers.trySample", "when": "!hideConnectCommands && remoteName =~ /^(wsl|ssh-remote|tunnel)$/" }, { "command": "remote-containers.provideFeedback", "when": "remoteName =~ /^(dev-container|attached-container|exec|k8s-container)$/" }, { "command": "remote-containers.attachToContainerInCurrentWindow", "when": "false" }, { "command": "remote-containers.attachToContainerInNewWindow", "when": "false" }, { "command": "remote-containers.stopContainer", "when": "false" }, { "command": "remote-containers.removeContainer", "when": "false" }, { "command": "remote-containers.startContainer", "when": "false" }, { "command": "remote-containers.removeRecentFolder", "when": "false" }, { "command": "remote-containers.showDetails", "when": "false" }, { "command": "remote-containers.explorerTargetsRefresh", "when": "false" }, { "command": "remote-containers.explorerVolumesRefresh", "when": "false" }, { "command": "remote-containers.explorerDetailsRefresh", "when": "false" }, { "command": "remote-containers.inspectDockerResource", "when": "false" }, { "command": "remote-containers.openFolderInContainerInCurrentWindow", "when": "false" }, { "command": "remote-containers.openFolderInContainerInNewWindow", "when": "false" }, { "command": "remote-containers.openInformationAboutMountPerformance", "when": "false" }, { "command": "remote-containers.newContainer", "when": "false" }, { "command": "remote-containers.showContainerLog", "when": "false" }, { "command": "remote-containers.labelPortAndUpdateConfig", "when": "false" }, { "command": "remote-containers.addExtensionToConfig", "when": "false" }, { "command": "remote-containers.installDockerInWSL", "when": "!hideConnectCommands && isWindows && !remoteName && !virtualWorkspace" }, { "command": "remote-containers.configureContainerFeatures", "when": "!remoteName && !virtualWorkspace" }, { "command": "remote-containers.configureContainerFeatures", "when": "remoteName =~ /^(dev-container|wsl|ssh-remote|tunnel)$/" } ], "statusBar/remoteIndicator": [ { "command": "remote-containers.openDevContainerFile", "group": "remote_30_dev-container_2_actions@0", "when": "true" }, { "command": "remote-containers.createDevContainer", "group": "remote_30_dev-container_2_actions@1", "when": "!hideConnectCommands" }, { "command": "remote-containers.attachToRunningContainer", "group": "remote_30_dev-container_2_actions@2", "when": "!hideConnectCommands" }, { "command": "remote-containers.configureContainerFeatures", "group": "remote_30_dev-container_2_actions@3", "when": "remoteName =~ /^(dev-container)$/" }, { "command": "remote-containers.createDevContainerFile", "group": "remote_30_dev-container_2_actions@4", "when": "workspaceFolderCount != 0 && !remoteName && !virtualWorkspace" }, { "command": "remote-containers.createDevContainerFile", "group": "remote_30_dev-container_2_actions@4", "when": "workspaceFolderCount != 0 && remoteName =~ /^(wsl|ssh-remote|tunnel)$/" }, { "command": "remote-containers.openRepositoryInUniqueVolume", "group": "remote_30_dev-container_2_actions@5", "when": "!hideConnectCommands && workspaceFolderCount == 0 && remoteName =~ /^(wsl|ssh-remote|tunnel)$/" }, { "command": "remote-containers.openRepositoryInUniqueVolume", "group": "remote_30_dev-container_2_actions@5", "when": "!hideConnectCommands && remoteName =~ /tunnel*.*/ && gitOpenRepositoryCount == 0" }, { "command": "remote-containers.openRepositoryInUniqueVolume", "group": "remote_30_dev-container_2_actions@5", "when": "!hideConnectCommands && workspaceFolderCount == 0 && !remoteName && !virtualWorkspace" }, { "command": "remote-containers.rebuildContainer", "group": "remote_30_dev-container_2_actions@6", "when": "!hideRebuildCommands && remoteName =~ /^dev-container$/" }, { "command": "remote-containers.reopenLocally", "group": "remote_30_dev-container_2_actions@7", "when": "!hideConnectCommands && canReopenLocally" }, { "command": "remote-containers.reopenInWSL", "group": "remote_30_dev-container_2_actions@7", "when": "!hideConnectCommands && canReopenInWSL" }, { "command": "remote-containers.reopenInSSH", "group": "remote_30_dev-container_2_actions@7", "when": "!hideConnectCommands && canReopenInSSH" }, { "command": "remote-containers.reopenInTunnel", "group": "remote_30_dev-container_2_actions@7", "when": "!hideConnectCommands && canReopenInTunnel" }, { "command": "remote-containers.reopenInContainer", "group": "remote_30_dev-container_2_actions@8", "when": "!hideConnectCommands && workspaceFolderCount != 0 && remoteName =~ /^(wsl|ssh-remote|tunnel)$/" }, { "command": "remote-containers.reopenInContainer", "group": "remote_30_dev-container_2_actions@8", "when": "!hideConnectCommands && workspaceFolderCount != 0 && !remoteName && !virtualWorkspace" }, { "command": "remote-containers.openFolder", "group": "remote_30_dev-container_2_actions@8", "when": "!hideConnectCommands && workspaceFolderCount == 0 && !remoteName && !virtualWorkspace" } ], "view/title": [ { "command": "remote-containers.explorerTargetsRefresh", "when": "view == targetsContainers && !remote-containers:needsDockerStartOrInstall && !remote-containers:noContainersWithFolder && !remote-containers:noContainersWithoutFolder", "group": "navigation@3" }, { "command": "remote-containers.newContainer", "when": "view == targetsContainers && !remote-containers:needsDockerStartOrInstall && !remote-containers:noContainersWithFolder && !remote-containers:noContainersWithoutFolder", "group": "navigation@1" }, { "command": "remote-containers.cleanUpDevContainers", "when": "view == targetsContainers && !remote-containers:needsDockerStartOrInstall && !remote-containers:noContainersWithFolder && !remote-containers:noContainersWithoutFolder", "group": "navigation@2" }, { "command": "remote-containers.newContainer", "when": "!hideConnectCommands && view == dockerContainers", "group": "navigation" }, { "command": "remote-containers.explorerDetailsRefresh", "when": "view == detailsContainers", "group": "navigation" }, { "command": "remote-containers.attachToContainerInNewWindow", "when": "view == detailsContainers", "group": "navigation" }, { "command": "remote-containers.rebuildContainer", "when": "!hideRebuildCommands && view == detailsContainers && remoteName == dev-container", "group": "navigation" }, { "command": "remote-containers.openDevContainerFile", "when": "view == detailsContainers && remoteName =~ /^(dev|attached)-container$/", "group": "navigation" }, { "command": "remote-containers.pruneVolumes", "when": "view == devVolumes", "group": "navigation@2" }, { "command": "remote-containers.explorerVolumesRefresh", "when": "view == devVolumes", "group": "navigation@3" }, { "command": "remote-containers.openRepositoryInUniqueVolume", "when": "view == devVolumes", "group": "navigation@1" } ], "view/item/context": [ { "command": "remote-containers.attachToRunningContainerFromViewlet", "when": "!hideConnectCommands && view == dockerContainers && viewItem =~ /^runningContainer$/i && vscode-docker:aciContext != true", "group": "containers_1_general@2" }, { "command": "remote-containers.inspectVolumeFromViewlet", "when": "!hideConnectCommands && view == dockerVolumes && viewItem == volume && vscode-docker:aciContext != true", "group": "volumes_1_general@2" }, { "command": "remote-containers.checkoutPRInVolume", "when": "!hideConnectCommands && view =~ /pr:/ && viewItem =~ /pullrequest(:local)?:nonactive|description/", "group": "1_pullrequest@3" }, { "command": "remote-containers.attachToK8sContainerFromViewlet", "group": "2@4", "when": "!hideConnectCommands && remoteName =~ /^(wsl)?$/ && view == extension.vsKubernetesExplorer && viewItem =~ /vsKubernetes\\.resource\\.pod/i" }, { "command": "remote-containers.openFolderInContainerInCurrentWindow", "when": "view == targetsContainers && viewItem =~ /^(dev|attached|exited|running).*Folder$/", "group": "1_folder@1" }, { "command": "remote-containers.openFolderInContainerInCurrentWindow", "when": "view == targetsContainers && viewItem =~ /^(dev|attached|exited|running).*Folder$/", "group": "inline@1" }, { "command": "remote-containers.openFolderInContainerInNewWindow", "when": "view == targetsContainers && viewItem =~ /^(dev|attached|exited|running).*Folder$/", "group": "1_folder@2" }, { "command": "remote-containers.openFolderInContainerInNewWindow", "when": "view == targetsContainers && viewItem =~ /^(dev|attached|exited|running).*Folder$/", "group": "inline@2" }, { "command": "remote-containers.removeRecentFolder", "when": "view == targetsContainers && viewItem == attachedFolder", "group": "2_folder@1" }, { "command": "remote-containers.removeRecentFolder", "when": "view == targetsContainers && viewItem == attachedFolder", "group": "inline@3" }, { "command": "workbench.action.closeFolder", "when": "view == targetsContainers && viewItem =~ /active.*Folder/", "group": "1_folder@1" }, { "command": "remote-containers.reopenLocally", "when": "!hideConnectCommands && canReopenLocally && view == targetsContainers && viewItem =~ /active(d|D)ev/", "group": "1_folder@1" }, { "command": "remote-containers.reopenInWSL", "when": "!hideConnectCommands && canReopenInWSL && view == targetsContainers && viewItem =~ /active(d|D)ev/", "group": "1_folder@1" }, { "command": "remote-containers.reopenInSSH", "when": "!hideConnectCommands && canReopenInSSH && view == targetsContainers && viewItem =~ /active(d|D)ev/", "group": "1_folder@1" }, { "command": "remote-containers.reopenInTunnel", "when": "!hideConnectCommands && canReopenInTunnel && view == targetsContainers && viewItem =~ /active(d|D)ev/", "group": "1_folder@1" }, { "command": "remote-containers.attachToContainerInCurrentWindow", "when": "view == targetsContainers && viewItem =~ /^(active|running|exited)Container$/", "group": "1_container@1" }, { "command": "remote-containers.attachToContainerInCurrentWindow", "when": "view == targetsContainers && viewItem =~ /^(active|running|exited)Container$/", "group": "inline@1" }, { "command": "remote-containers.attachToContainerInNewWindow", "when": "view == targetsContainers && viewItem =~ /^(active|running|exited)Container$/", "group": "1_container@2" }, { "command": "remote-containers.attachToContainerInNewWindow", "when": "view == targetsContainers && viewItem =~ /^(active|running|exited)Container$/", "group": "inline@2" }, { "command": "remote-containers.stopContainer", "when": "view == targetsContainers && viewItem =~ /^running(Dev|)Container/", "group": "2_container@2" }, { "command": "remote-containers.removeContainer", "when": "view == targetsContainers && viewItem =~ /^(running|exited)(Dev|)Container/", "group": "2_container@3" }, { "command": "remote-containers.rebuildContainer", "when": "!hideRebuildCommands && view == targetsContainers && viewItem =~ /activeDevContainer/", "group": "2_container@1" }, { "command": "remote-containers.removeContainer", "when": "view == targetsContainers && viewItem =~ /^(running|exited)(Dev|)Container/", "group": "inline@3" }, { "command": "remote-containers.startContainer", "when": "view == targetsContainers && viewItem =~ /^exited(Dev|)Container/", "group": "1_container@3" }, { "command": "remote-containers.showDetails", "when": "view == targetsContainers && viewItem =~ /^(active|running|exited)(Dev|)Container/", "group": "1_container@4" }, { "command": "remote-containers.inspectDockerResource", "when": "view == targetsContainers && viewItem =~ /^(active|running|exited)(Dev|)Container/", "group": "1_container@5" }, { "command": "remote-containers.showContainerLog", "when": "view == targetsContainers && viewItem =~ /^(active|running|exited)(Dev|)Container/", "group": "1_container@6" }, { "command": "remote-containers.openDevContainerFile", "when": "view == detailsContainers && viewItem == devContainer" }, { "command": "remote-containers.inspectDockerResource", "when": "view == detailsContainers && viewItem =~ /^(image|volume)$/" }, { "command": "remote-containers.openInformationAboutMountPerformance", "when": "view == detailsContainers && viewItem == mountPerformanceInfo", "group": "inline@1" }, { "command": "remote-containers.cloneInVolume", "when": "view == devVolumes && viewItem =~ /^(devVolume)$/", "group": "1_volumes@1" }, { "command": "remote-containers.inspectInBasicDevContainer", "when": "view == devVolumes && viewItem =~ /^(devVolume|uniqueDevVolume)$/", "group": "2_volumes@1" }, { "command": "remote-containers.inspectDockerResource", "when": "view == devVolumes && viewItem =~ /^(devVolume|uniqueDevVolume)$/", "group": "2_volumes@2" }, { "command": "remote-containers.removeVolume", "when": "view == devVolumes && viewItem =~ /^(devVolume|uniqueDevVolume)$/", "group": "3_volumes-destructive@1" } ], "ports/item/port/inline": [ { "command": "remote-containers.labelPortAndUpdateConfig", "group": "0_manage@4", "when": "remoteName =~ /^(dev|attached)-container$/ && tunnelType == Forwarded" } ], "extension/context": [ { "command": "remote-containers.addExtensionToConfig", "group": "2_configure", "when": "!isBuiltinExtension && !isWorkspaceScopedExtension && remoteName =~ /^(dev-container|attached-container|wsl|ssh-remote|tunnel)?$/" } ] }, "resourceLabelFormatters": [ { "scheme": "vscode-remote", "authority": "dev-container+*", "formatting": { "label": "${path}", "separator": "/", "tildify": true, "workspaceSuffix": "%resourceLabelFormatters.dev-container.workspaceSuffix%" } }, { "scheme": "vscode-remote", "authority": "attached-container+*", "formatting": { "label": "${path}", "separator": "/", "tildify": true, "workspaceSuffix": "%resourceLabelFormatters.attached-container.workspaceSuffix%" } }, { "scheme": "vscode-remote", "authority": "exec+*", "formatting": { "label": "${path}", "separator": "/", "tildify": true, "workspaceSuffix": "%resourceLabelFormatters.exec.workspaceSuffix%" } }, { "scheme": "vscode-remote", "authority": "k8s-container+*", "formatting": { "label": "${path}", "separator": "/", "tildify": true, "workspaceSuffix": "%resourceLabelFormatters.k8s-container.workspaceSuffix%" } } ], "views": { "remote": [ { "id": "targetsContainers", "name": "%views.remote.targetsContainers%", "when": "!hideConnectCommands", "group": "targets@2", "remoteName": [ "dev-container", "attached-container", "exec", "k8s-container" ] }, { "id": "detailsContainers", "name": "%views.remote.detailsContainers%", "when": "!hideConnectCommands && remote-containers:showDetails", "group": "details@1", "remoteName": [ "dev-container", "attached-container" ] }, { "id": "devVolumes", "name": "%views.remote.devVolumes%", "when": "!hideConnectCommands", "group": "details@2", "remoteName": [ "dev-container", "attached-container" ] } ] }, "viewsWelcome": [ { "view": "targetsContainers", "when": "remote-containers:needsDockerStartOrInstall", "contents": "%viewsWelcome.targetsContainers.needsDockerStartOrInstall%" }, { "view": "targetsContainers", "when": "remote-containers:needsSSHCredentials", "contents": "%viewsWelcome.targetsContainers.needsSSHCredentials%" }, { "view": "targetsContainers", "when": "remote-containers:noContainersWithFolder", "contents": "%viewsWelcome.targetsContainers.noContainersWithFolder%" }, { "view": "targetsContainers", "when": "remote-containers:noContainersWithoutFolder", "contents": "%viewsWelcome.targetsContainers.noContainersWithoutFolder%" }, { "view": "devVolumes", "when": "remote-containers:noDevVolumes", "contents": "%viewsWelcome.devVolumes.noDevVolumes%" } ], "remoteHelp": { "getStarted": "https://aka.ms/vscode-remote/containers/tutorial-sandbox", "documentation": "https://aka.ms/vscode-remote/containers", "issues": "https://aka.ms/vscode-remote/containers/issues", "remoteName": [ "dev-container", "attached-container", "exec", "k8s-container" ] } }, "scripts": { "vscode:prepublish": "npx npm-run-all --npm-path npm clean compile-prod dev-containers-user-cli-prepare", "compile": "npx npm-run-all --npm-path npm clean-dist compile-dev", "watch": "npx npm-run-all --npm-path npm clean-dist compile-watch", "postinstall": "yarn --cwd node_modules/@devcontainers/cli", "precommit": "node build/hygiene.js", "package": "vsce package --yarn", "lint": "eslint -c .eslintrc.js --rulesdir ./build/eslint --max-warnings 0 --ext .ts ./src ./test", "compile-prod": "npx npm-run-all --npm-path npm compile-cli-prod copy-cli esbuild-prod", "compile-dev": "npx npm-run-all --npm-path npm compile-cli-dev copy-cli esbuild-dev", "compile-watch": "npx npm-run-all --npm-path npm --parallel compile-cli-watch watch-cli esbuild-watch", "esbuild-prod": "node esbuild.js --production", "esbuild-dev": "node esbuild.js", "esbuild-watch": "node esbuild.js --watch", "compile-cli-prod": "yarn --cwd node_modules/@devcontainers/cli compile-prod", "compile-cli-dev": "yarn --cwd node_modules/@devcontainers/cli compile-dev", "compile-cli-watch": "yarn --cwd node_modules/@devcontainers/cli compile-watch", "copy-cli": "copyfiles --up 4 --all \"node_modules/@devcontainers/cli/dist/spec-node/devContainersSpecCLI.js\" dist", "watch-cli": "npm-watch", "type-check": "npx npm-run-all --npm-path npm clean-built tsc-b", "tsc-b": "tsc -b", "type-check-watch": "npx npm-run-all --npm-path npm clean-built tsc-b-w", "tsc-b-w": "tsc -b -w", "dev-containers-cli-publish": "npx npm-run-all --npm-path npm dev-containers-cli-prepare dev-containers-cli-npm-publish", "dev-containers-cli-package": "npx npm-run-all --npm-path npm dev-containers-cli-prepare dev-containers-cli-npm-pack", "dev-containers-cli-prepare": "npx npm-run-all --npm-path npm clean dev-containers-cli-compile dev-containers-cli-copy-module", "dev-containers-cli-compile": "npx npm-run-all --npm-path npm compile-prod", "dev-containers-cli-copy-module": "copyfiles ThirdPartyNotices.txt dist/node/devContainersCLI.js dev-containers-cli", "dev-containers-cli-npm-publish": "cd dev-containers-cli && npm publish", "dev-containers-cli-npm-pack": "cd dev-containers-cli && npm pack", "dev-containers-user-cli-package": "npx npm-run-all --npm-path npm dev-containers-user-cli-prepare dev-containers-user-cli-npm-pack", "dev-containers-user-cli-prepare": "npx npm-run-all --npm-path npm dev-containers-user-cli-copy-module", "dev-containers-user-cli-clean-prepare": "npx npm-run-all --npm-path npm clean dev-containers-user-prepare", "dev-containers-user-cli-copy-module": "copyfiles ThirdPartyNotices.txt dist/node/devContainersUserCLI.js dist/spec-node/devContainersSpecCLI.js \"scripts/**/*\" dev-containers-user-cli", "dev-containers-user-cli-npm-pack": "cd dev-containers-user-cli && npm pack", "clean": "npx npm-run-all --npm-path npm clean-dist clean-built", "clean-dist": "rimraf dist dev-containers-cli/dist dev-containers-cli/scripts dev-containers-user-cli/dist dev-containers-user-cli/scripts", "clean-built": "rimraf built", "test": "env TS_NODE_PROJECT=test/core/tsconfig.json mocha -r ts-node/register --exit test/core/**/*.test.ts", "test-matrix": "env TS_NODE_PROJECT=test/core/tsconfig.json mocha -r ts-node/register --exit", "test-no-env": "mocha -r ts-node/register --exit test/core/**/*.test.ts", "test-dev-containers": "env TS_NODE_PROJECT=test/dev-containers/tsconfig.json mocha -r ts-node/register --exit test/dev-containers/**/*.test.ts", "copytestconfigsforalpine": "/bin/bash -c 'cd test/configs && for f in *; do if [[ -d $f ]] && [[ $f != *alpine* ]]; then cp -r -T $f $f-alpine ; fi ; done'" }, "watch": { "copy-cli": "node_modules/@devcontainers/cli/dist/spec-node/devContainersSpecCLI.js" }, "devDependencies": { "@types/adm-zip": "^0.5.4", "@types/chai": "^4.3.10", "@types/eslint": "^8.56.10", "@types/follow-redirects": "^1.14.4", "@types/js-yaml": "^4.0.9", "@types/markdown-it": "^13.0.6", "@types/minimist": "^1.2.5", "@types/mocha": "^10.0.4", "@types/ncp": "^2.0.8", "@types/node": "^18.15.3", "@types/pull-stream": "^3.6.5", "@types/recursive-readdir": "^2.2.4", "@types/semver": "^7.5.5", "@types/stats-lite": "^2.2.2", "@types/tar": "^6.1.9", "@types/tar-stream": "^3.1.3", "@types/vscode": "~1.75.0", "@types/yargs": "^17.0.31", "@typescript-eslint/eslint-plugin": "^6.11.0", "@typescript-eslint/experimental-utils": "^5.62.0", "@typescript-eslint/parser": "^6.11.0", "@vscode/l10n-dev": "^0.0.30", "@vscode/vsce": "^2.22.0", "ajv": "^8.12.0", "chai": "^4.3.10", "copyfiles": "^2.4.1", "esbuild": "^0.19.5", "eslint": "^8.53.0", "eslint-plugin-local": "^4.2.2", "event-stream": "^4.0.1", "gulp-eslint": "^6.0.0", "gulp-filter": "^9.0.1", "husky": "^8.0.3", "jsonc": "^2.0.0", "minimist": "^1.2.8", "mocha": "^10.2.0", "npm-run-all": "^4.1.5", "npm-watch": "^0.11.0", "p-all": "^5.0.0", "rimraf": "^5.0.5", "stats-lite": "^2.2.0", "ts-node": "^10.9.1", "typescript": "^5.2.2", "typescript-formatter": "^7.2.2", "vinyl": "^3.0.0", "vinyl-fs": "^4.0.0" }, "dependencies": { "@devcontainers/cli": "https://github.com/devcontainers/cli.git#ec97752759d179991a756e038a6152b4497e052b", "@vscode/extension-telemetry": "^0.9.0", "@vscode/l10n": "^0.0.16", "adm-zip": "^0.5.10", "applicationinsights": "^2.9.1", "find-process": "^1.4.7", "follow-redirects": "^1.15.6", "js-yaml": "^4.1.0", "jsonc-parser": "^3.2.0", "muxrpc": "^6.7.3", "node-pty": "^1.0.0", "pull-pushable": "^2.2.0", "pull-stream": "^3.7.0", "pull-stream-to-stream": "^2.0.0", "semver": "^7.5.4", "stream-to-pull-stream": "^1.7.3", "tar": "^6.2.1", "tar-stream": "^3.1.6", "vscode-tas-client": "^0.1.75", "vscode-uri": "^3.0.8", "yargs": "~17.7.2" }, "__metadata": { "id": "93ce222b-5f6f-49b7-9ab1-a0463c6238df", "publisherId": "ac9410a2-0d75-40ec-90de-b59bb705801d", "publisherDisplayName": "Microsoft", "targetPlatform": "undefined", "isApplicationScoped": false, "isPreReleaseVersion": false, "hasPreReleaseVersion": false, "installedTimestamp": 1722575448208, "pinned": false, "preRelease": false, "source": "gallery" } }