feat: Persist agent prompt in DB so getAgentPrompt survives log cleanup

The `getAgentPrompt` tRPC procedure previously read exclusively from
`.cw/agent-logs/<name>/PROMPT.md`. Once the cleanup-manager removes
that directory, the prompt is gone forever.

Adds a `prompt` text column to the `agents` table and writes the fully
assembled prompt (including workspace layout, inter-agent comms, and
preview sections) to the DB in the same `repository.update()` call
that saves pid/outputFilePath after spawn.

`getAgentPrompt` now reads from DB first (`agent.prompt`) and falls
back to the filesystem only for agents spawned before this change.

Addresses review comment [MMcmVlEK16bBfkJuXvG6h].

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Lukas May
2026-03-06 13:13:01 +01:00
parent 269a2d2616
commit b2f4004191
14 changed files with 1239 additions and 11 deletions

View File

@@ -32,6 +32,7 @@ interface TestAgent {
initiativeId: string | null;
userDismissedAt: Date | null;
exitCode: number | null;
prompt: string | null;
}
describe('Crash marking race condition', () => {
@@ -72,7 +73,8 @@ describe('Crash marking race condition', () => {
pendingQuestions: null,
initiativeId: 'init-1',
userDismissedAt: null,
exitCode: null
exitCode: null,
prompt: null,
};
// Mock repository that tracks all update calls