Skip to content

Commit 534ace4

Browse files
authored
fix: bind package-manager exec approvals to inner commands [AI] (#102035)
* fix: bind package-manager exec approvals to inner commands * fix: fail closed package manager exec approval gaps * chore: refresh pr branch metadata * fix: cover npm exec alias approvals * fix: fail closed hidden package manager exec aliases * fix: unwrap chained package manager approvals * fix: cover yarn package manager approvals * fix: preserve yarn run approval compatibility * fix: bind package manager script argv checks * test: fix package manager script argv type check * fix: fail closed pnpm shorthand approvals * fix: preserve pnpm built-in approvals * fix: preserve pnpm script shortcuts * fix: preserve npm cwd exec unwrapping * fix: fail closed cwd and yarn package shorthands
1 parent c69724e commit 534ace4

10 files changed

Lines changed: 1649 additions & 230 deletions

src/infra/dispatch-wrapper-resolution.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ const XCRUN_FLAG_OPTIONS = new Set([
6060
"-v",
6161
"--verbose",
6262
]);
63-
6463
function isArchSelectorToken(token: string): boolean {
6564
return /^-[A-Za-z0-9_]+$/.test(token);
6665
}
@@ -481,6 +480,9 @@ const DISPATCH_WRAPPER_SPECS: readonly DispatchWrapperSpec[] = [
481480
const DISPATCH_WRAPPER_SPEC_BY_NAME = new Map(
482481
DISPATCH_WRAPPER_SPECS.map((spec) => [spec.name, spec] as const),
483482
);
483+
function normalizeDispatchWrapperName(token: string): string {
484+
return normalizeExecutableToken(token);
485+
}
484486

485487
type DispatchWrapperUnwrapResult =
486488
| { kind: "not-wrapper" }
@@ -508,7 +510,7 @@ function unwrapDispatchWrapper(
508510
}
509511

510512
export function isDispatchWrapperExecutable(token: string): boolean {
511-
return DISPATCH_WRAPPER_SPEC_BY_NAME.has(normalizeExecutableToken(token));
513+
return DISPATCH_WRAPPER_SPEC_BY_NAME.has(normalizeDispatchWrapperName(token));
512514
}
513515

514516
export function unwrapKnownDispatchWrapperInvocation(
@@ -519,7 +521,7 @@ export function unwrapKnownDispatchWrapperInvocation(
519521
if (!token0) {
520522
return { kind: "not-wrapper" };
521523
}
522-
const wrapper = normalizeExecutableToken(token0);
524+
const wrapper = normalizeDispatchWrapperName(token0);
523525
const spec = DISPATCH_WRAPPER_SPEC_BY_NAME.get(wrapper);
524526
if (!spec) {
525527
return { kind: "not-wrapper" };

0 commit comments

Comments
 (0)