001package org.nasdanika.ai.mcp.sse; 002 003import java.util.List; 004import java.util.concurrent.CompletionStage; 005 006import org.nasdanika.capability.ServiceCapabilityFactory; 007import org.nasdanika.cli.SubCommandCapabilityFactory; 008import org.nasdanika.common.ProgressMonitor; 009 010import io.opentelemetry.api.OpenTelemetry; 011import picocli.CommandLine; 012 013public class SseTransportCommandFactory extends SubCommandCapabilityFactory<SseTransportCommand> { 014 015 @Override 016 protected Class<SseTransportCommand> getCommandType() { 017 return SseTransportCommand.class; 018 } 019 020 @Override 021 protected CompletionStage<SseTransportCommand> doCreateCommand( 022 List<CommandLine> parentPath, 023 Loader loader, 024 ProgressMonitor progressMonitor) { 025 026 Requirement<Object, OpenTelemetry> openTelemetryRequirement = ServiceCapabilityFactory.createRequirement(OpenTelemetry.class); 027 CompletionStage<OpenTelemetry> openTelemetryCS = loader.loadOne(openTelemetryRequirement, progressMonitor); 028 return openTelemetryCS.thenApply(SseTransportCommand::new); 029 } 030 031}