fix(tools): resolve Read/Write/Edit paths against workspace directory
Previously, Read/Write/Edit tools used the global tool instances from pi-coding-agent which had process.cwd() baked in at import time. Since the gateway starts from /root/dev/ai/clawdbot, relative paths like 'SOUL.md' would incorrectly resolve there instead of the agent's workspace (/root/clawd). This fix: - Adds workspaceDir option to createClawdbotCodingTools - Creates fresh Read/Write/Edit tools bound to workspaceDir - Adds cwd option to Bash tool defaults for consistency - Passes effectiveWorkspace from pi-embedded-runner Absolute paths and ~/... paths are unaffected. Sandboxed sessions continue to use sandbox root as before. Includes tests for Read/Write/Edit workspace path resolution.
This commit is contained in:
committed by
Peter Steinberger
parent
bf0184d0cf
commit
de5b75eff6
@@ -61,6 +61,7 @@ export type BashToolDefaults = {
|
||||
elevated?: BashElevatedDefaults;
|
||||
allowBackground?: boolean;
|
||||
scopeKey?: string;
|
||||
cwd?: string;
|
||||
};
|
||||
|
||||
export type ProcessToolDefaults = {
|
||||
@@ -202,7 +203,8 @@ export function createBashTool(
|
||||
}
|
||||
|
||||
const sandbox = elevatedRequested ? undefined : defaults?.sandbox;
|
||||
const rawWorkdir = params.workdir?.trim() || process.cwd();
|
||||
const rawWorkdir =
|
||||
params.workdir?.trim() || defaults?.cwd || process.cwd();
|
||||
let workdir = rawWorkdir;
|
||||
let containerWorkdir = sandbox?.containerWorkdir;
|
||||
if (sandbox) {
|
||||
|
||||
Reference in New Issue
Block a user