












@@ -12,12 +12,13 @@ import {
1212normalizeContainerPath,
1313relativePathEscapesContainerRoot,
1414} from "./path-utils.js";
15+import { resolveReadOnlyWorkspaceSkillMounts } from "./workspace-mounts.js";
15161617export type SandboxFsMount = {
1718hostRoot: string;
1819containerRoot: string;
1920writable: boolean;
20-source: "workspace" | "agent" | "bind";
21+source: "workspace" | "agent" | "bind" | "protectedSkill";
2122};
22232324export type SandboxResolvedFsPath = {
@@ -86,6 +87,20 @@ export function buildSandboxFsMounts(sandbox: SandboxFsBridgeContext): SandboxFs
8687});
8788}
888990+for (const mount of resolveReadOnlyWorkspaceSkillMounts({
91+workspaceDir: sandbox.workspaceDir,
92+agentWorkspaceDir: sandbox.agentWorkspaceDir,
93+workdir: sandbox.containerWorkdir,
94+workspaceAccess: sandbox.workspaceAccess,
95+})) {
96+mounts.push({
97+hostRoot: path.resolve(mount.hostPath),
98+containerRoot: normalizeContainerPath(mount.containerPath),
99+writable: false,
100+source: "protectedSkill",
101+});
102+}
103+89104for (const bind of sandbox.docker.binds ?? []) {
90105const parsed = parseSandboxBindMount(bind);
91106if (!parsed) {
@@ -246,8 +261,9 @@ function compareMountsByContainerPath(a: SandboxFsMount, b: SandboxFsMount): num
246261if (byLength !== 0) {
247262return byLength;
248263}
249-// Keep resolver ordering aligned with docker mount precedence: custom binds can
250-// intentionally shadow default workspace mounts at the same container path.
264+// Keep resolver ordering aligned with docker mount precedence for default
265+// workspace mounts, but never let bridge policy classify protected skills
266+// as writable.
251267return mountSourcePriority(b.source) - mountSourcePriority(a.source);
252268}
253269@@ -260,6 +276,9 @@ function compareMountsByHostPath(a: SandboxFsMount, b: SandboxFsMount): number {
260276}
261277262278function mountSourcePriority(source: SandboxFsMount["source"]): number {
279+if (source === "protectedSkill") {
280+return 3;
281+}
263282if (source === "bind") {
264283return 2;
265284}
此內容由慣性聚合(RSS閱讀器)自動聚合整理,僅供閱讀參考。 原文來自 — 版權歸原作者所有。