@@ -23,6 +23,7 @@ import {
2323 runInDedicatedTerminalCommand ,
2424 handlePackageUninstall ,
2525 copyPathToClipboard ,
26+ getUninstallPackages ,
2627} from './features/envCommands' ;
2728import { registerCondaFeatures } from './managers/conda/main' ;
2829import { registerSystemPythonFeatures } from './managers/builtin/main' ;
@@ -57,6 +58,11 @@ import { registerTools } from './common/lm.apis';
5758import { GetPackagesTool } from './features/copilotTools' ;
5859import { TerminalActivationImpl } from './features/terminal/terminalActivationState' ;
5960import { getEnvironmentForTerminal } from './features/terminal/utils' ;
61+ import {
62+ checkPackageManagementPermissions ,
63+ handlePermissionsCommand ,
64+ PackageManagerPermissionsImpl ,
65+ } from './features/permissions/packageManagerPermissions' ;
6066
6167export async function activate ( context : ExtensionContext ) : Promise < PythonEnvironmentApi > {
6268 const start = new StopWatch ( ) ;
@@ -93,7 +99,9 @@ export async function activate(context: ExtensionContext): Promise<PythonEnviron
9399 projectCreators . registerPythonProjectCreator ( new AutoFindProjects ( projectManager ) ) ,
94100 ) ;
95101
96- setPythonApi ( envManagers , projectManager , projectCreators , terminalManager , envVarManager ) ;
102+ const pkgPerm = new PackageManagerPermissionsImpl ( context . secrets ) ;
103+
104+ setPythonApi ( envManagers , projectManager , projectCreators , terminalManager , envVarManager , pkgPerm ) ;
97105
98106 const managerView = new EnvManagerView ( envManagers ) ;
99107 context . subscriptions . push ( managerView ) ;
@@ -109,6 +117,12 @@ export async function activate(context: ExtensionContext): Promise<PythonEnviron
109117 context . subscriptions . push (
110118 registerCompletionProvider ( envManagers ) ,
111119 registerTools ( 'python_get_packages' , new GetPackagesTool ( api ) ) ,
120+ commands . registerCommand ( 'python-envs.permissions' , async ( ) => {
121+ await handlePermissionsCommand ( pkgPerm ) ;
122+ } ) ,
123+ commands . registerCommand ( 'python-envs.resetPermissions' , async ( ) => {
124+ await pkgPerm . resetPermissions ( ) ;
125+ } ) ,
112126 commands . registerCommand ( 'python-envs.viewLogs' , ( ) => outputChannel . show ( ) ) ,
113127 commands . registerCommand ( 'python-envs.refreshManager' , async ( item ) => {
114128 await refreshManagerCommand ( item ) ;
@@ -138,9 +152,20 @@ export async function activate(context: ExtensionContext): Promise<PythonEnviron
138152 envManagers ,
139153 projectManager ,
140154 ) ;
141- await handlePackagesCommand ( packageManager , environment ) ;
155+
156+ const result = await checkPackageManagementPermissions ( pkgPerm , 'changes' ) ;
157+ if ( ! result ) {
158+ return ;
159+ }
160+
161+ await handlePackagesCommand ( environment , packageManager ) ;
142162 } ) ,
143163 commands . registerCommand ( 'python-envs.uninstallPackage' , async ( context : unknown ) => {
164+ const result = await checkPackageManagementPermissions ( pkgPerm , 'uninstall' , getUninstallPackages ( context ) ) ;
165+ if ( ! result ) {
166+ return ;
167+ }
168+
144169 await handlePackageUninstall ( context , envManagers ) ;
145170 } ) ,
146171 commands . registerCommand ( 'python-envs.set' , async ( item ) => {
0 commit comments