Skip to content

Commit 28c7b6c

Browse files
Sahilb315Copilot
andauthored
Make proxy mode default for npm based managers (#148)
* update npm pkg managers to use proxy mode as default * update config template for default to true for proxy_mode * update e2e for proxy mode * update info cmd for correct proxy mode status * Update config/config.template.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Sahil Bansal <bansalsahil315@gmail.com> * Update config/config.template.yml Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Sahil Bansal <bansalsahil315@gmail.com> * Update config/config.go Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> Signed-off-by: Sahil Bansal <bansalsahil315@gmail.com> --------- Signed-off-by: Sahil Bansal <bansalsahil315@gmail.com> Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
1 parent b5696f9 commit 28c7b6c

File tree

11 files changed

+36
-35
lines changed

11 files changed

+36
-35
lines changed

.github/workflows/pmg-e2e.yml

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -101,15 +101,15 @@ jobs:
101101
test -d node_modules/lodash
102102
cd .. && rm -rf npm-test
103103
104-
- name: Test NPM - Experimental Proxy Mode
104+
- name: Test NPM - Proxy Mode
105105
run: |
106-
echo "Testing NPM with experimental proxy-based interception..."
106+
echo "Testing NPM with proxy-based interception..."
107107
mkdir npm-proxy-test && cd npm-proxy-test
108108
pmg npm init -y
109109
110110
echo "Testing proxy mode single package installation..."
111-
pmg --experimental-proxy-mode npm install express@5.2.1
112-
pmg --experimental-proxy-mode npm install lodash@4.17.21
111+
pmg npm install express@5.2.1
112+
pmg npm install lodash@4.17.21
113113
114114
# Verification: packages installed via proxy mode
115115
test -d node_modules/express
@@ -119,15 +119,15 @@ jobs:
119119
120120
echo "Testing proxy mode manifest installation..."
121121
rm -rf node_modules package-lock.json
122-
pmg --experimental-proxy-mode npm install
122+
pmg npm install
123123
124124
# Verification: manifest install via proxy mode works
125125
test -f package-lock.json
126126
test -d node_modules/express
127127
test -d node_modules/lodash
128128
129129
echo "Testing proxy mode with scoped package..."
130-
pmg --experimental-proxy-mode npm install @types/node@18.0.0
130+
pmg npm install @types/node@18.0.0
131131
132132
# Verification: scoped package installed via proxy
133133
test -d node_modules/@types
@@ -136,7 +136,7 @@ jobs:
136136
137137
echo "Testing proxy mode dry-run (should not create files)..."
138138
rm -rf node_modules package-lock.json
139-
pmg --experimental-proxy-mode --dry-run npm install
139+
pmg --dry-run npm install
140140
141141
# Verification: dry-run doesn't create files even in proxy mode
142142
test ! -d node_modules
@@ -378,7 +378,7 @@ jobs:
378378
mkdir safedep-test-pkg-test && cd safedep-test-pkg-test
379379
pmg npm init -y
380380
# Attempt to install safedep-test-pkg - should fail
381-
if pmg --experimental-proxy-mode npm --no-cache --prefer-online i safedep-test-pkg@0.1.3; then
381+
if pmg npm --no-cache --prefer-online i safedep-test-pkg@0.1.3; then
382382
echo "ERROR: safedep-test-pkg was not blocked!"
383383
exit 1
384384
else

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ uv pip install <package-name>
7878
## Features
7979

8080
- Malicious package identification using [SafeDep Cloud](https://docs.safedep.io/cloud/malware-analysis) with realtime threat detection
81-
- Deep dependency analysis and transitive dependency resolution
81+
- Proxy based dependency analysis and resolution
8282
- Fast and efficient package verification
8383
- Defense in depth using OS native sandboxing
8484
- Seamless integration with existing package managers

cmd/executors/npx.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@ func executeNpxFlow(ctx context.Context, args []string) error {
5151
return fmt.Errorf("failed to create dependency resolver: %w", err)
5252
}
5353

54-
if config.IsProxyModeEnabled() {
55-
return flows.ProxyFlow(packageExecutor, packageResolver).Run(ctx, args, parsedCommand)
54+
if !config.IsProxyModeEnabled() {
55+
return flows.Common(packageExecutor, packageResolver).Run(ctx, args, parsedCommand)
5656
}
5757

58-
return flows.Common(packageExecutor, packageResolver).Run(ctx, args, parsedCommand)
58+
return flows.ProxyFlow(packageExecutor, packageResolver).Run(ctx, args, parsedCommand)
5959
}

cmd/executors/pnpx.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@ func executePnpxFlow(ctx context.Context, args []string) error {
5151
return fmt.Errorf("failed to create dependency resolver: %w", err)
5252
}
5353

54-
if config.IsProxyModeEnabled() {
55-
return flows.ProxyFlow(packageExecutor, packageResolver).Run(ctx, args, parsedCommand)
54+
if !config.IsProxyModeEnabled() {
55+
return flows.Common(packageExecutor, packageResolver).Run(ctx, args, parsedCommand)
5656
}
5757

58-
return flows.Common(packageExecutor, packageResolver).Run(ctx, args, parsedCommand)
58+
return flows.ProxyFlow(packageExecutor, packageResolver).Run(ctx, args, parsedCommand)
5959
}

cmd/npm/bun.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@ func executeBunFlow(ctx context.Context, args []string) error {
5151
return fmt.Errorf("failed to create dependency resolver: %w", err)
5252
}
5353

54-
if config.IsProxyModeEnabled() {
55-
return flows.ProxyFlow(packageManager, packageResolver).Run(ctx, args, parsedCommand)
54+
if !config.IsProxyModeEnabled() {
55+
return flows.Common(packageManager, packageResolver).Run(ctx, args, parsedCommand)
5656
}
5757

58-
return flows.Common(packageManager, packageResolver).Run(ctx, args, parsedCommand)
58+
return flows.ProxyFlow(packageManager, packageResolver).Run(ctx, args, parsedCommand)
5959
}

cmd/npm/npm.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@ func executeNpmFlow(ctx context.Context, args []string) error {
5151
return fmt.Errorf("failed to create dependency resolver: %w", err)
5252
}
5353

54-
if config.IsProxyModeEnabled() {
55-
return flows.ProxyFlow(packageManager, packageResolver).Run(ctx, args, parsedCommand)
54+
if !config.IsProxyModeEnabled() {
55+
return flows.Common(packageManager, packageResolver).Run(ctx, args, parsedCommand)
5656
}
5757

58-
return flows.Common(packageManager, packageResolver).Run(ctx, args, parsedCommand)
58+
return flows.ProxyFlow(packageManager, packageResolver).Run(ctx, args, parsedCommand)
5959
}

cmd/npm/pnpm.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,9 +52,9 @@ func executePnpmFlow(ctx context.Context, args []string) error {
5252
return fmt.Errorf("failed to create dependency resolver: %w", err)
5353
}
5454

55-
if config.IsProxyModeEnabled() {
56-
return flows.ProxyFlow(packageManager, packageResolver).Run(ctx, args, parsedCommand)
55+
if !config.IsProxyModeEnabled() {
56+
return flows.Common(packageManager, packageResolver).Run(ctx, args, parsedCommand)
5757
}
5858

59-
return flows.Common(packageManager, packageResolver).Run(ctx, args, parsedCommand)
59+
return flows.ProxyFlow(packageManager, packageResolver).Run(ctx, args, parsedCommand)
6060
}

cmd/npm/yarn.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,9 @@ func executeYarnFlow(ctx context.Context, args []string) error {
5151
return fmt.Errorf("failed to create dependency resolver: %w", err)
5252
}
5353

54-
if config.IsProxyModeEnabled() {
55-
return flows.ProxyFlow(packageManager, packageResolver).Run(ctx, args, parsedCommand)
54+
if !config.IsProxyModeEnabled() {
55+
return flows.Common(packageManager, packageResolver).Run(ctx, args, parsedCommand)
5656
}
5757

58-
return flows.Common(packageManager, packageResolver).Run(ctx, args, parsedCommand)
58+
return flows.ProxyFlow(packageManager, packageResolver).Run(ctx, args, parsedCommand)
5959
}

cmd/setup/info.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ func executeSetupInfo() error {
3535
cfg := config.Get()
3636
configEntries := make(map[string]string)
3737
configEntries["Config File"] = cfg.ConfigFilePath()
38-
configEntries["Proxy Mode"] = strconv.FormatBool(cfg.Config.ExperimentalProxyMode)
38+
configEntries["Proxy Mode"] = strconv.FormatBool(cfg.IsProxyModeEnabled())
3939
ui.PrintInfoSection("Configuration", configEntries)
4040

4141
// Shell Integration section

config/config.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -182,6 +182,7 @@ func DefaultConfig() RuntimeConfig {
182182
SkipEventLogging: false,
183183
ExperimentalProxyMode: false,
184184
TrustedPackages: []TrustedPackage{},
185+
ProxyMode: true,
185186
Sandbox: SandboxConfig{
186187
Enabled: false,
187188
EnforceAlways: false,

0 commit comments

Comments
 (0)