pub(crate) const DECOMPOSE_SYSTEM: &str = include_str!("prompts/decompose_system.txt");
pub(crate) const REPAIR_SYSTEM: &str = include_str!("prompts/repair_system.txt");
pub(crate) const RESEARCH_SYSTEM: &str =
"You are a research assistant. Answer the user's research query \
concisely with concrete facts and references where possible. \
If the query asks about a specific codebase or filesystem path, \
state plainly that you do not have direct access and ask the \
orchestrator to delegate the work.";
pub(crate) const REVIEW_SYSTEM: &str = "You are a code/report reviewer. Critique the artifact for \
completeness, correctness, and obvious gaps. Surface concrete \
issues, not platitudes. Keep the critique under 200 words.";
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn decompose_prompt_covers_every_action_type() {
for action in [
"research",
"plan",
"implement",
"execute",
"test",
"shell",
"review",
"notify",
] {
assert!(
DECOMPOSE_SYSTEM.contains(&format!("\"{action}\"")),
"decompose prompt never mentions action_type \"{action}\"",
);
}
}
#[test]
fn prompts_are_nonempty_and_json_only_where_required() {
assert!(!DECOMPOSE_SYSTEM.trim().is_empty());
assert!(!REPAIR_SYSTEM.trim().is_empty());
assert!(DECOMPOSE_SYSTEM.contains("ONLY valid JSON"));
assert!(REPAIR_SYSTEM.contains("ONLY valid JSON"));
assert!(!RESEARCH_SYSTEM.trim().is_empty());
assert!(!REVIEW_SYSTEM.trim().is_empty());
}
}