mirror of
https://bitbucket.org/siakitem/my-pi.git
synced 2026-10-26 10:45:22 +00:00
feat: add pure ssh2 remote operations
This commit is contained in:
@@ -242,17 +242,22 @@ export function mergeUnifiedConfigs(
|
||||
}
|
||||
}
|
||||
|
||||
// shellTools: shallow-merge by tool name so a project entry overrides a
|
||||
// colliding tool's alias but never drops a global entry (a dropped alias is
|
||||
// a silent enforcement regression).
|
||||
// shellTools: merge by tool name, then by descriptor field. A project can
|
||||
// replace argument names, but omitting a global decisionFloor must not silently
|
||||
// remove that security boundary.
|
||||
const baseShell = base.shellTools;
|
||||
const overrideShell = override.shellTools;
|
||||
if (baseShell && overrideShell) {
|
||||
merged.shellTools = { ...baseShell, ...overrideShell };
|
||||
} else if (baseShell) {
|
||||
merged.shellTools = baseShell;
|
||||
} else if (overrideShell) {
|
||||
merged.shellTools = overrideShell;
|
||||
if (baseShell || overrideShell) {
|
||||
const toolNames = new Set([
|
||||
...Object.keys(baseShell ?? {}),
|
||||
...Object.keys(overrideShell ?? {}),
|
||||
]);
|
||||
merged.shellTools = Object.fromEntries(
|
||||
[...toolNames].map((toolName) => [
|
||||
toolName,
|
||||
{ ...baseShell?.[toolName], ...overrideShell?.[toolName] },
|
||||
]),
|
||||
) as ShellToolsConfig;
|
||||
}
|
||||
|
||||
// Permission: deep-shallow merge
|
||||
|
||||
Reference in New Issue
Block a user