SimulateDialogueProbeMain.java 3.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. import java.io.File;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. /**
  5. * Launcher for UDD context-probe validation on the real engine code path.
  6. *
  7. * Preferred (runs production planner/analyzer via JUnit):
  8. * mvn -pl fs-service test -Dtest=ContextProbeScenarioTest,DeepDialogueReplyPlannerTest
  9. *
  10. * This script tries to invoke Maven when {@code --run} is passed; otherwise prints guidance.
  11. *
  12. * HTTP end-to-end (requires running backend):
  13. * POST /workflow/simulate → expect mode=engine, uddUsed=true
  14. */
  15. public class SimulateDialogueProbeMain {
  16. public static void main(String[] args) throws Exception {
  17. System.out.println("=== UDD Context Probe (engine path) ===\n");
  18. System.out.println("Unit tests (ConversationContextAnalyzer + ConversationProbePlanner):");
  19. System.out.println(" mvn -pl fs-service test -Dtest=ContextProbeScenarioTest,DeepDialogueReplyPlannerTest");
  20. System.out.println();
  21. System.out.println("HTTP simulate (same evolve() path as real chat):");
  22. System.out.println(" POST /workflow/simulate expect mode=engine uddUsed=true");
  23. System.out.println(" response: reply + followUpMessages + followUpDelayMs");
  24. System.out.println();
  25. System.out.println("Deploy: restart fs-service + run sql/lobster_engine_prompt_udd_context_probe.sql");
  26. System.out.println(" + sql/lobster_engine_prompt_human_like.sql");
  27. System.out.println();
  28. if (args.length > 0 && "--run".equals(args[0])) {
  29. int exit = runMavenTests();
  30. System.exit(exit);
  31. } else {
  32. System.out.println("Tip: pass --run to auto-invoke Maven tests when mvn is on PATH.");
  33. }
  34. }
  35. private static int runMavenTests() throws Exception {
  36. File repoRoot = locateRepoRoot();
  37. if (repoRoot == null) {
  38. System.err.println("[FAIL] Cannot locate repo root (expected java/fs-service/pom.xml)");
  39. return 1;
  40. }
  41. List<String> cmd = new ArrayList<>();
  42. String mvn = System.getenv("MAVEN_HOME") != null
  43. ? System.getenv("MAVEN_HOME") + File.separator + "bin" + File.separator + "mvn"
  44. : "mvn";
  45. cmd.add(mvn);
  46. cmd.add("-pl");
  47. cmd.add("fs-service");
  48. cmd.add("test");
  49. cmd.add("-Dtest=ContextProbeScenarioTest,DeepDialogueReplyPlannerTest");
  50. ProcessBuilder pb = new ProcessBuilder(cmd);
  51. pb.directory(repoRoot);
  52. pb.redirectErrorStream(true);
  53. Process p = pb.start();
  54. p.getInputStream().transferTo(System.out);
  55. int code = p.waitFor();
  56. System.out.println("\nMaven exit code: " + code);
  57. return code;
  58. }
  59. private static File locateRepoRoot() {
  60. File dir = new File(System.getProperty("user.dir"));
  61. for (int i = 0; i < 6 && dir != null; i++) {
  62. File pom = new File(dir, "java" + File.separator + "fs-service" + File.separator + "pom.xml");
  63. if (pom.isFile()) {
  64. return dir;
  65. }
  66. dir = dir.getParentFile();
  67. }
  68. return null;
  69. }
  70. }