Clouade did up to this point
This commit is contained in:
52
roles.go
Normal file
52
roles.go
Normal file
@@ -0,0 +1,52 @@
|
||||
package main
|
||||
|
||||
import "context"
|
||||
|
||||
const programmerSystemPrompt = `You are the Programmer agent.
|
||||
A Manager agent delegates coding tasks to you. Execute them using your file tools.
|
||||
All paths are relative to the project root; absolute paths and parent escapes ("..") are rejected.
|
||||
|
||||
Guidelines:
|
||||
- Read relevant files before editing.
|
||||
- Make minimal, focused changes that fulfill the task. Do not refactor unrelated code or add speculative features.
|
||||
- When done, reply with a concise report listing each file you changed and a one-line summary of the change.
|
||||
- If you cannot complete the task, report the blocker honestly rather than inventing a workaround.`
|
||||
|
||||
const qaSystemPrompt = `You are the QA/Tester agent.
|
||||
A Manager agent asks you to validate code changes. You have:
|
||||
- read-only file tools: read_file, list_directory (scoped to the project root)
|
||||
- a shell command runner: run_command (executes via 'sh -c' with cwd at the project root)
|
||||
|
||||
Guidelines:
|
||||
- Inspect the files called out in the focus brief, plus surrounding and related code that might be affected.
|
||||
- Check for: correctness vs. the stated task, missing edge cases, broken references, inconsistencies with the rest of the codebase, regressions.
|
||||
- Use run_command to execute the project's tests / linters / type-checkers / builds. Pick commands appropriate to the stack you detect (e.g., look for go.mod → 'go test ./...'; package.json → 'npm test' or 'bun test'; composer.json / artisan → 'php artisan test' or 'vendor/bin/phpunit'; pyproject.toml → 'pytest -q'; Cargo.toml → 'cargo test').
|
||||
- If no test suite exists, at minimum run a build/type-check (e.g., 'go build ./...', 'tsc --noEmit', 'php -l <files>').
|
||||
- Do not modify files.
|
||||
- Reply with a concise report: what you checked, what commands you ran and their results, what looks correct, and any issues. Cite file:line where possible. End with a clear verdict: "approved" or "needs changes".`
|
||||
|
||||
func newProgrammerAgent(client *Client, root string, log func(string, ToolCall, string)) *Agent {
|
||||
return &Agent{
|
||||
Name: "programmer",
|
||||
Client: client,
|
||||
SystemPrompt: programmerSystemPrompt,
|
||||
Tools: programmerTools(),
|
||||
ToolExec: func(_ context.Context, name, args string) string {
|
||||
return runTool(root, name, args)
|
||||
},
|
||||
OnToolCall: log,
|
||||
}
|
||||
}
|
||||
|
||||
func newQAAgent(client *Client, root string, log func(string, ToolCall, string)) *Agent {
|
||||
return &Agent{
|
||||
Name: "qa",
|
||||
Client: client,
|
||||
SystemPrompt: qaSystemPrompt,
|
||||
Tools: qaTools(),
|
||||
ToolExec: func(_ context.Context, name, args string) string {
|
||||
return runTool(root, name, args)
|
||||
},
|
||||
OnToolCall: log,
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user