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}