// Golden replay tests for PromptBuilder — Task 5.12
// Reads 6 golden files from contract/goldens/prompt/ and verifies invariants.
// Prefix: pgr_ (prompt goldens replay)
extern "js" fn pgr_read_file(path : String) -> String =
#| (p) => require("node:fs").readFileSync(p, "utf8")
extern "js" fn pgr_json_field(json : String, field : String) -> String =
#| (json, field) => {
#| const obj = JSON.parse(json);
#| return String(obj[field] ?? "");
#| }
// ---------------------------------------------------------------------------
// Section-presence tests
// ---------------------------------------------------------------------------
test "golden 01_empty_config: identity present" {
let raw = pgr_read_file("contract/goldens/prompt/01_empty_config.json")
let expected = pgr_json_field(raw, "expected")
assert_eq(expected.contains("Ermes Agent"), true)
assert_eq(expected.contains("persistent memory"), true)
// No memory block, no context, no soul
assert_eq(expected.contains("MEMORY"), false)
assert_eq(expected.contains("Project Context"), false)
assert_eq(expected.contains("SOUL.md"), false)
}
test "golden 02_memory_only: memory block present" {
let raw = pgr_read_file("contract/goldens/prompt/02_memory_only.json")
let expected = pgr_json_field(raw, "expected")
assert_eq(expected.contains("pnpm"), true)
assert_eq(expected.contains("MEMORY"), true)
}
test "golden 05_with_context_file: context present" {
let raw = pgr_read_file("contract/goldens/prompt/05_with_context_file.json")
let expected = pgr_json_field(raw, "expected")
assert_eq(expected.contains("Project Context"), true)
assert_eq(expected.contains("just test"), true)
}
test "golden 06_with_soul_md: soul block present" {
let raw = pgr_read_file("contract/goldens/prompt/06_with_soul_md.json")
let expected = pgr_json_field(raw, "expected")
assert_eq(expected.contains("SOUL.md"), true)
assert_eq(expected.contains("precise and thorough"), true)
}
// ---------------------------------------------------------------------------
// Assembly order test
// ---------------------------------------------------------------------------
test "golden 01 assembly order: identity before guidance" {
let raw = pgr_read_file("contract/goldens/prompt/01_empty_config.json")
let expected = pgr_json_field(raw, "expected")
let idx_id = pb_index_of(expected, "Ermes Agent")
let idx_mem = pb_index_of(expected, "persistent memory")
assert_eq(idx_id < idx_mem, true)
}
// ---------------------------------------------------------------------------
// Model-specific guidance goldens
// ---------------------------------------------------------------------------
test "golden 07_with_openai_guidance: OpenAI guidance present" {
let raw = pgr_read_file("contract/goldens/prompt/07_with_openai_guidance.json")
let expected = pgr_json_field(raw, "expected")
assert_eq(expected.contains("Execution discipline"), true)
assert_eq(expected.contains("tool_persistence"), true)
assert_eq(expected.contains("mandatory_tool_use"), true)
}
test "golden 08_with_google_guidance: Google guidance present" {
let raw = pgr_read_file("contract/goldens/prompt/08_with_google_guidance.json")
let expected = pgr_json_field(raw, "expected")
assert_eq(expected.contains("Google model operational directives"), true)
assert_eq(expected.contains("Absolute paths"), true)
assert_eq(expected.contains("Parallel tool calls"), true)
}