import java.io.File; import java.util.ArrayList; import java.util.List; /** * Launcher for UDD context-probe validation on the real engine code path. * * Preferred (runs production planner/analyzer via JUnit): * mvn -pl fs-service test -Dtest=ContextProbeScenarioTest,DeepDialogueReplyPlannerTest * * This script tries to invoke Maven when {@code --run} is passed; otherwise prints guidance. * * HTTP end-to-end (requires running backend): * POST /workflow/simulate → expect mode=engine, uddUsed=true */ public class SimulateDialogueProbeMain { public static void main(String[] args) throws Exception { System.out.println("=== UDD Context Probe (engine path) ===\n"); System.out.println("Unit tests (ConversationContextAnalyzer + ConversationProbePlanner):"); System.out.println(" mvn -pl fs-service test -Dtest=ContextProbeScenarioTest,DeepDialogueReplyPlannerTest"); System.out.println(); System.out.println("HTTP simulate (same evolve() path as real chat):"); System.out.println(" POST /workflow/simulate expect mode=engine uddUsed=true"); System.out.println(" response: reply + followUpMessages + followUpDelayMs"); System.out.println(); System.out.println("Deploy: restart fs-service + run sql/lobster_engine_prompt_udd_context_probe.sql"); System.out.println(" + sql/lobster_engine_prompt_human_like.sql"); System.out.println(); if (args.length > 0 && "--run".equals(args[0])) { int exit = runMavenTests(); System.exit(exit); } else { System.out.println("Tip: pass --run to auto-invoke Maven tests when mvn is on PATH."); } } private static int runMavenTests() throws Exception { File repoRoot = locateRepoRoot(); if (repoRoot == null) { System.err.println("[FAIL] Cannot locate repo root (expected java/fs-service/pom.xml)"); return 1; } List cmd = new ArrayList<>(); String mvn = System.getenv("MAVEN_HOME") != null ? System.getenv("MAVEN_HOME") + File.separator + "bin" + File.separator + "mvn" : "mvn"; cmd.add(mvn); cmd.add("-pl"); cmd.add("fs-service"); cmd.add("test"); cmd.add("-Dtest=ContextProbeScenarioTest,DeepDialogueReplyPlannerTest"); ProcessBuilder pb = new ProcessBuilder(cmd); pb.directory(repoRoot); pb.redirectErrorStream(true); Process p = pb.start(); p.getInputStream().transferTo(System.out); int code = p.waitFor(); System.out.println("\nMaven exit code: " + code); return code; } private static File locateRepoRoot() { File dir = new File(System.getProperty("user.dir")); for (int i = 0; i < 6 && dir != null; i++) { File pom = new File(dir, "java" + File.separator + "fs-service" + File.separator + "pom.xml"); if (pom.isFile()) { return dir; } dir = dir.getParentFile(); } return null; } }