@@ -23,6 +23,7 @@ import {
23
23
runInDedicatedTerminalCommand ,
24
24
handlePackageUninstall ,
25
25
copyPathToClipboard ,
26
+ getUninstallPackages ,
26
27
} from './features/envCommands' ;
27
28
import { registerCondaFeatures } from './managers/conda/main' ;
28
29
import { registerSystemPythonFeatures } from './managers/builtin/main' ;
@@ -57,6 +58,11 @@ import { registerTools } from './common/lm.apis';
57
58
import { GetPackagesTool } from './features/copilotTools' ;
58
59
import { TerminalActivationImpl } from './features/terminal/terminalActivationState' ;
59
60
import { getEnvironmentForTerminal } from './features/terminal/utils' ;
61
+ import {
62
+ checkPackageManagementPermissions ,
63
+ handlePermissionsCommand ,
64
+ PackageManagerPermissionsImpl ,
65
+ } from './features/permissions/packageManagerPermissions' ;
60
66
61
67
export async function activate ( context : ExtensionContext ) : Promise < PythonEnvironmentApi > {
62
68
const start = new StopWatch ( ) ;
@@ -93,7 +99,9 @@ export async function activate(context: ExtensionContext): Promise<PythonEnviron
93
99
projectCreators . registerPythonProjectCreator ( new AutoFindProjects ( projectManager ) ) ,
94
100
) ;
95
101
96
- setPythonApi ( envManagers , projectManager , projectCreators , terminalManager , envVarManager ) ;
102
+ const pkgPerm = new PackageManagerPermissionsImpl ( context . secrets ) ;
103
+
104
+ setPythonApi ( envManagers , projectManager , projectCreators , terminalManager , envVarManager , pkgPerm ) ;
97
105
98
106
const managerView = new EnvManagerView ( envManagers ) ;
99
107
context . subscriptions . push ( managerView ) ;
@@ -109,6 +117,12 @@ export async function activate(context: ExtensionContext): Promise<PythonEnviron
109
117
context . subscriptions . push (
110
118
registerCompletionProvider ( envManagers ) ,
111
119
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
+ } ) ,
112
126
commands . registerCommand ( 'python-envs.viewLogs' , ( ) => outputChannel . show ( ) ) ,
113
127
commands . registerCommand ( 'python-envs.refreshManager' , async ( item ) => {
114
128
await refreshManagerCommand ( item ) ;
@@ -138,9 +152,20 @@ export async function activate(context: ExtensionContext): Promise<PythonEnviron
138
152
envManagers ,
139
153
projectManager ,
140
154
) ;
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 ) ;
142
162
} ) ,
143
163
commands . registerCommand ( 'python-envs.uninstallPackage' , async ( context : unknown ) => {
164
+ const result = await checkPackageManagementPermissions ( pkgPerm , 'uninstall' , getUninstallPackages ( context ) ) ;
165
+ if ( ! result ) {
166
+ return ;
167
+ }
168
+
144
169
await handlePackageUninstall ( context , envManagers ) ;
145
170
} ) ,
146
171
commands . registerCommand ( 'python-envs.set' , async ( item ) => {
0 commit comments