Files
Codewalkers/apps/server/agent/prompts/workspace.ts
Lukas May 17f92040c7 fix: Ensure agents write signal.json to the correct directory
Two additional fixes to prevent agents from writing .cw/output/ in the
wrong location:

1. Always create .cw/output/ at the agent workdir root during spawn,
   even when no inputContext is provided. This gives the agent a visible
   anchor directory so it doesn't create one inside a project subdir.

2. Add absolute output path instruction to the workspace layout prompt
   for multi-project agents, explicitly telling them to write .cw/output/
   relative to the workdir root, not their current cd location.
2026-03-06 12:14:37 +01:00

43 lines
1.4 KiB
TypeScript

/**
* Workspace layout section describing the agent's working directory.
*/
import { readdirSync } from 'node:fs';
import { join } from 'node:path';
export function buildWorkspaceLayout(agentCwd: string): string {
let entries: string[];
try {
entries = readdirSync(agentCwd, { withFileTypes: true })
.filter(d => d.isDirectory() && d.name !== '.cw')
.map(d => d.name);
} catch {
return '';
}
if (entries.length === 0) {
return `
<workspace>
Your working directory is: ${agentCwd}
This is an isolated git worktree. Other agents may be working in parallel on separate branches — do not assume you have exclusive access to the repository.
</workspace>`;
}
const lines = entries.map(
name => `- \`${name}/\`${join(agentCwd, name)}`
);
return `
<workspace>
Your working directory is: ${agentCwd}
This is an isolated git worktree. Other agents may be working in parallel on separate branches — do not assume you have exclusive access to the repository.
The following project directories contain the source code (git worktrees):
${lines.join('\n')}
**IMPORTANT**: All \`.cw/output/\` paths (signal.json, progress.md, etc.) are relative to this working directory (\`${agentCwd}\`), NOT to any project subdirectory. Always write to \`${join(agentCwd, '.cw/output/')}\` regardless of your current \`cd\` location.
</workspace>`;
}