diff --git a/src/agent/coreBackend.js b/src/agent/coreBackend.js index d2b3f30..4400acf 100644 --- a/src/agent/coreBackend.js +++ b/src/agent/coreBackend.js @@ -1,13 +1,12 @@ import { FilesystemBackend } from "deepagents"; /** - * Create a FilesystemBackend rooted at the filesystem root. + * Create a FilesystemBackend sandboxed to the current working directory. * @returns {FilesystemBackend} */ export function createCoreBackend() { - const baseDir = '/'; return new FilesystemBackend({ - rootDir: baseDir, - virtualMode: false, + rootDir: process.cwd(), + virtualMode: true, }); } diff --git a/src/agent/deepAgents.js b/src/agent/deepAgents.js index ea78586..9621a06 100644 --- a/src/agent/deepAgents.js +++ b/src/agent/deepAgents.js @@ -9,6 +9,7 @@ import { createChatModel } from "../provider/openai.js"; import { buildToolConfig } from "../tools/index.js"; import { createCoreBackend } from "./coreBackend.js"; import { createContextBackend } from "./contextBackend.js"; +import { createDmzBackend } from "./dmzBackend.js"; // Skill classification map — classifies each skill by agent type. // Skills are discovered dynamically; this map provides the classification // for filtering. Initially, all skills are classified as "subagent" since @@ -96,8 +97,8 @@ export async function createDeepAgentsOrchestrator(checkpointer = null) { }); const coreBackend = createCoreBackend(); + const dmzBackend = createDmzBackend(); const contextBackend = createContextBackend(); - const contextRoute = "/" + config.memory.contextDir.replace(/^\.?\//, ""); // Filter skill paths by agent type @@ -111,6 +112,7 @@ export async function createDeepAgentsOrchestrator(checkpointer = null) { store: new InMemoryStore(), backend: new CompositeBackend(coreBackend, { [contextRoute]: contextBackend, + "/": dmzBackend, }), subagents: [ { diff --git a/src/agent/dmzBackend.js b/src/agent/dmzBackend.js new file mode 100644 index 0000000..0ce92d5 --- /dev/null +++ b/src/agent/dmzBackend.js @@ -0,0 +1,13 @@ +import { FilesystemBackend } from "deepagents"; + +/** + * Create a FilesystemBackend sandboxed to /tmp. + * Used as a fallback backend for operations that don't fit other routes. + * @returns {FilesystemBackend} + */ +export function createDmzBackend() { + return new FilesystemBackend({ + rootDir: '/tmp', + virtualMode: false, + }); +}