diff --git a/.gitignore b/.gitignore index 886c8a8..8dd429c 100644 --- a/.gitignore +++ b/.gitignore @@ -63,3 +63,4 @@ pom.xml.releaseBackup pom.xml.versionsBackup release.properties /sample/dev.sh +/sample/maas.sh diff --git a/deployment/pom.xml b/deployment/pom.xml index d7706f4..e42a5e7 100644 --- a/deployment/pom.xml +++ b/deployment/pom.xml @@ -11,7 +11,7 @@ Quarkus Chappie - Deployment - 0.0.13 + 999-SNAPSHOT diff --git a/deployment/src/main/java/io/quarkiverse/chappie/deployment/devservice/ChappieDevServiceProcessor.java b/deployment/src/main/java/io/quarkiverse/chappie/deployment/devservice/ChappieDevServiceProcessor.java index 0b2d5a1..a1c8512 100644 --- a/deployment/src/main/java/io/quarkiverse/chappie/deployment/devservice/ChappieDevServiceProcessor.java +++ b/deployment/src/main/java/io/quarkiverse/chappie/deployment/devservice/ChappieDevServiceProcessor.java @@ -29,17 +29,20 @@ import io.quarkus.deployment.annotations.BuildSteps; import io.quarkus.deployment.builditem.DevServicesResultBuildItem; import io.quarkus.deployment.dev.devservices.GlobalDevServicesConfig; +import io.quarkus.devui.spi.buildtime.FooterLogBuildItem; import io.quarkus.runtime.util.ClassPathUtils; +import io.smallrye.mutiny.operators.multi.processors.BroadcastProcessor; @BuildSteps(onlyIf = { IsDevelopment.class, GlobalDevServicesConfig.Enabled.class }) public class ChappieDevServiceProcessor { private static Process process; private static ChappieClient chappieClient; - private static final Logger LOG = Logger.getLogger("Quarkus Assistant"); + private static final Logger LOG = Logger.getLogger(ChappieDevServiceProcessor.class); @BuildStep public void createContainer(BuildProducer devServicesResultProducer, BuildProducer chappieClientProducer, + BuildProducer footerLogProducer, ExtensionVersionBuildItem extensionVersionBuildItem, Optional ollamaBuildItem, ChappieConfig config) { @@ -47,6 +50,13 @@ public void createContainer(BuildProducer devService if (process == null && (config.openai().apiKey().isPresent() || config.openai().baseUrl().isPresent() || ollamaBuildItem.isPresent())) { + BroadcastProcessor logProcessor = BroadcastProcessor.create(); + + // Dev UI Log stream + footerLogProducer.produce(new FooterLogBuildItem("Assistant", () -> { + return logProcessor.convert().toPublisher(); + })); + Map properties = new HashMap<>(); int port = findAvailablePort(4315); @@ -54,11 +64,8 @@ public void createContainer(BuildProducer devService properties.put("quarkus.http.host", "localhost"); properties.put("quarkus.http.port", String.valueOf(port)); - - if (config.devservices().log()) { - properties.put("chappie.log.request", "true"); - properties.put("chappie.log.response", "true"); - } + properties.put("chappie.log.request", "true"); + properties.put("chappie.log.response", "true"); properties.put("chappie.timeout", config.devservices().timeout()); if (config.openai().apiKey().isPresent() || config.openai().baseUrl().isPresent()) { @@ -82,7 +89,7 @@ public void createContainer(BuildProducer devService } try { - runServer(extVersion, properties, config.devservices().log()); + runServer(extVersion, properties, logProcessor); Runtime.getRuntime().addShutdownHook(new Thread(() -> { if (process != null && process.isAlive()) { process.destroy(); @@ -207,7 +214,8 @@ private Path getChappieBaseDir(String version) { return Path.of(userHome, ".chappie/" + version); } - private void runServer(String version, Map properties, boolean log) throws IOException { + private void runServer(String version, Map properties, BroadcastProcessor logProcessor) + throws IOException { Path chappieServer = getChappieServer(version); List command = new ArrayList<>(); @@ -223,21 +231,15 @@ private void runServer(String version, Map properties, boolean l process = processBuilder.start(); - new Thread(() -> handleStream(process.getInputStream(), "OUTPUT", log)).start(); - new Thread(() -> handleStream(process.getErrorStream(), "ERROR", log)).start(); + new Thread(() -> handleStream(process.getInputStream(), logProcessor)).start(); + new Thread(() -> handleStream(process.getErrorStream(), logProcessor)).start(); } - private void handleStream(java.io.InputStream inputStream, String type, boolean log) { + private void handleStream(java.io.InputStream inputStream, BroadcastProcessor logProcessor) { try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) { String line; while ((line = reader.readLine()) != null) { - if (type.equals("ERROR")) { - LOG.error(line); - } else if (log) { - LOG.info(line); - } else { - LOG.debug(line); - } + logProcessor.onNext(line); } } catch (IOException e) { LOG.error("Error in Quarkus Assistant", e); diff --git a/deployment/src/main/java/io/quarkiverse/chappie/deployment/devservice/DevServicesConfig.java b/deployment/src/main/java/io/quarkiverse/chappie/deployment/devservice/DevServicesConfig.java index 7906169..a19dd94 100644 --- a/deployment/src/main/java/io/quarkiverse/chappie/deployment/devservice/DevServicesConfig.java +++ b/deployment/src/main/java/io/quarkiverse/chappie/deployment/devservice/DevServicesConfig.java @@ -9,12 +9,6 @@ @ConfigGroup public interface DevServicesConfig { - /** - * Show the log of the dev service in the application log - */ - @WithDefault("false") - boolean log(); - /** * The default port where the inference server listens for requests */ diff --git a/pom.xml b/pom.xml index 793cf18..fc0abdc 100644 --- a/pom.xml +++ b/pom.xml @@ -31,7 +31,7 @@ 17 UTF-8 UTF-8 - 3.14.2 + 3.16.0.CR1