diff --git a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DisabledRuntimeOrchestrator.java b/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DisabledRuntimeOrchestrator.java index 62233ac5..98b69408 100644 --- a/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DisabledRuntimeOrchestrator.java +++ b/cameleer3-server-app/src/main/java/com/cameleer3/server/app/runtime/DisabledRuntimeOrchestrator.java @@ -13,4 +13,7 @@ public class DisabledRuntimeOrchestrator implements RuntimeOrchestrator { @Override public void removeContainer(String id) { throw new UnsupportedOperationException("Runtime management disabled"); } @Override public ContainerStatus getContainerStatus(String id) { return ContainerStatus.notFound(); } @Override public Stream getLogs(String id, int tail) { return Stream.empty(); } + @Override public void startLogCapture(String containerId, String appSlug, String envSlug, String tenantId) {} + @Override public void stopLogCapture(String containerId) {} + @Override public void stopLogCaptureByApp(String appSlug, String envSlug) {} } diff --git a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/RuntimeOrchestrator.java b/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/RuntimeOrchestrator.java index e9dc67c2..d0bc79bc 100644 --- a/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/RuntimeOrchestrator.java +++ b/cameleer3-server-core/src/main/java/com/cameleer3/server/core/runtime/RuntimeOrchestrator.java @@ -9,4 +9,13 @@ public interface RuntimeOrchestrator { void removeContainer(String containerId); ContainerStatus getContainerStatus(String containerId); Stream getLogs(String containerId, int tailLines); + + /** Start streaming container logs to ClickHouse. */ + default void startLogCapture(String containerId, String appSlug, String envSlug, String tenantId) {} + + /** Stop log capture for a specific container (e.g., on die/oom). */ + default void stopLogCapture(String containerId) {} + + /** Stop log capture for all containers matching this app+env (e.g., on agent SSE connect). */ + default void stopLogCaptureByApp(String appSlug, String envSlug) {} }