Files
oh-my-opencode/src/agents/prometheus-prompt.test.ts
T
YeonGyu-Kim 11423c97a7 fix(agents): add anti-duplication rules to Prometheus and Metis agents
- Import and inject buildAntiDuplicationSection() in all 3 Prometheus variants (interview-mode, gpt, gemini) and Metis
- Added tests verifying anti-dup section presence in all prompt variants
- Completes anti-duplication coverage for all delegating agents
2026-03-11 21:45:35 +09:00

106 lines
3.3 KiB
TypeScript

import { describe, test, expect } from "bun:test"
import { PROMETHEUS_SYSTEM_PROMPT } from "./prometheus"
import { PROMETHEUS_GPT_SYSTEM_PROMPT } from "./prometheus/gpt"
import { PROMETHEUS_GEMINI_SYSTEM_PROMPT } from "./prometheus/gemini"
describe("PROMETHEUS_SYSTEM_PROMPT Momus invocation policy", () => {
test("should direct providing ONLY the file path string when invoking Momus", () => {
//#given
const prompt = PROMETHEUS_SYSTEM_PROMPT
//#when / #then
expect(prompt.toLowerCase()).toMatch(/momus.*only.*path|path.*only.*momus/)
})
test("should forbid wrapping Momus invocation in explanations or markdown", () => {
//#given
const prompt = PROMETHEUS_SYSTEM_PROMPT
//#when / #then
expect(prompt.toLowerCase()).toMatch(/not.*wrap|no.*explanation|no.*markdown/)
})
})
describe("PROMETHEUS_SYSTEM_PROMPT zero human intervention", () => {
test("should enforce universal zero human intervention rule", () => {
//#given
const prompt = PROMETHEUS_SYSTEM_PROMPT
//#when
const lowerPrompt = prompt.toLowerCase()
//#then
expect(lowerPrompt).toContain("zero human intervention")
expect(lowerPrompt).toContain("forbidden")
expect(lowerPrompt).toMatch(/user manually tests|사용자가 직접 테스트/)
})
test("should require agent-executed QA scenarios as mandatory for all tasks", () => {
//#given
const prompt = PROMETHEUS_SYSTEM_PROMPT
//#when
const lowerPrompt = prompt.toLowerCase()
//#then
expect(lowerPrompt).toContain("agent-executed qa scenarios")
expect(lowerPrompt).toMatch(/mandatory.*all tasks|all tasks.*mandatory/)
})
test("should not contain ambiguous 'manual QA' terminology", () => {
//#given
const prompt = PROMETHEUS_SYSTEM_PROMPT
//#when / #then
expect(prompt).not.toMatch(/manual QA procedures/i)
expect(prompt).not.toMatch(/manual verification procedures/i)
expect(prompt).not.toMatch(/Manual-only/i)
})
test("should require per-scenario format with detailed structure", () => {
//#given
const prompt = PROMETHEUS_SYSTEM_PROMPT
//#when
const lowerPrompt = prompt.toLowerCase()
//#then
expect(lowerPrompt).toContain("preconditions")
expect(lowerPrompt).toContain("failure indicators")
expect(lowerPrompt).toContain("evidence")
expect(prompt).toMatch(/negative/i)
})
test("should require QA scenario adequacy in self-review checklist", () => {
//#given
const prompt = PROMETHEUS_SYSTEM_PROMPT
//#when
const lowerPrompt = prompt.toLowerCase()
//#then
expect(lowerPrompt).toMatch(/every task has agent-executed qa scenarios/)
expect(lowerPrompt).toMatch(/happy-path and negative/)
expect(lowerPrompt).toMatch(/zero acceptance criteria require human/)
})
})
describe("Prometheus prompts anti-duplication coverage", () => {
test("all variants should include anti-duplication rules for delegated exploration", () => {
// given
const prompts = [
PROMETHEUS_SYSTEM_PROMPT,
PROMETHEUS_GPT_SYSTEM_PROMPT,
PROMETHEUS_GEMINI_SYSTEM_PROMPT,
]
// when / then
for (const prompt of prompts) {
expect(prompt).toContain("<Anti_Duplication>")
expect(prompt).toContain("Anti-Duplication Rule")
expect(prompt).toContain("DO NOT perform the same search yourself")
expect(prompt).toContain("non-overlapping work")
}
})
})