feat: support auto-generation of configs and test generation improvements - #39
Conversation
Signed-off-by: Hailun Ding <hailun.ding@ibm.com>
Signed-off-by: Hailun Ding <hailun.ding@ibm.com>
…nslation, replacing the previous special-case bypass Signed-off-by: Hailun Ding <hailun.ding@ibm.com>
…s, IR constrains target tool scope, updated two agent examples with new cases Signed-off-by: Hailun Ding <hailun.ding@ibm.com>
7458ae3 to
c1393e0
Compare
Signed-off-by: Hailun Ding <hailun.ding@ibm.com>
Signed-off-by: Hailun Ding <hailun.ding@ibm.com>
Signed-off-by: Hailun Ding <hailun.ding@ibm.com>
Signed-off-by: Hailun Ding <hailun.ding@ibm.com>
Signed-off-by: Hailun Ding <hailun.ding@ibm.com>
Signed-off-by: Hailun Ding <hailun.ding@ibm.com>
Signed-off-by: Hailun Ding <hailun.ding@ibm.com>
Signed-off-by: Hailun Ding <hailun.ding@ibm.com>
Signed-off-by: Hailun Ding <hailun.ding@ibm.com>
Signed-off-by: Hailun Ding <hailun.ding@ibm.com>
Signed-off-by: Hailun Ding <hailun.ding@ibm.com>
Signed-off-by: Hailun Ding <hailun.ding@ibm.com>
Signed-off-by: Hailun Ding <hailun.ding@ibm.com>
araujof
left a comment
There was a problem hiding this comment.
Approving it with the following issues to followup as separate PRs.
-
Incomplete
arguments→argsmigration. Translation now writesargsinsrc/smith/test_generation/extract_tool_args.py:73, but policy cross-validation still directs policies to readinput.argumentsinopa_policy/policy_cross_validation/policy_cross_validation.md:38. This can produce policies that ignore tool parameters. -
Unit suite fails.
make unithas three failures:load_tool_list’s input contract disagrees with its test, and_resolve_tool_definitions_pathis missing. The green CI does not run the new unit target (Makefile:177). Need to fix that in the CI too. -
Promptfoo updates are not idempotent. Every config update appends the same tool-parameter instructions again in
src/smith/test_generation/generate_promptfoo_config.py:386, causing duplicated, growing prompts.
Summary
Closes: #36 #40 #41
Changes
smith --flag generate_promptfoo_configstage that creates/updates a Promptfoo redteam configuration from guidance and system variables, using a customizable template (PROMPTFOO_CONFIG_TEMPLATE).explorer_server.pyto serve an interactive HTML view of the policy alongside IR data for visual inspection. It also supports reseting smith configuration based on selected guidance.list_employeebefore everyadd_employeeprompt. So a malicious promptfoo case will be assigned a wrong labellist_employeeget_tool_definitions()helper to deduplicate MCP tool extraction across CLI flags.Additional UI to read from raw guidance file.
src/smith/tools/classify_guidance_lines.pyuses LLM classifier mapping each guidance line → the MCP tool call(s) it governs, referencing tool_definitions.json.src/smith/tools/guidance_classifier_server.py, guidance_classifier.htmlserves the UI, independent from the IR explore html page and server.src/smith/tools/save_snapshot.py,src/smith/cli.pyscripts/clean_generated.shnow also empties assets/policy.rego.test_generation/test_generation.mdadds promptfoo config reminderCpex agent demo
Checks
make cipasses (lint, Rego lint, license headers, build smoke)make testpasses (policy scorecard — needed if policy behavior changed)CHANGELOG.mdupdated under## [Unreleased](if user-facing)git commit -s)