getSupportedCapabilities(); foreach ( $capabilities as $capability ) { if ( $capability->isTextGeneration() ) { return new GitHubModelsTextGenerationModel( $model_metadata, $provider_metadata ); } } throw new RuntimeException( // phpcs:ignore WordPress.Security.EscapeOutput.ExceptionNotEscaped 'Unsupported model capabilities: ' . implode( ', ', $capabilities ) ); } /** * {@inheritDoc} * * @since 1.0.0 */ protected static function createProviderMetadata(): ProviderMetadata { return new ProviderMetadata( 'github-models', 'GitHub Models', ProviderTypeEnum::cloud(), 'https://github.com/marketplace/models', RequestAuthenticationMethod::apiKey(), __( 'Use GitHub Models as an AI provider.', 'ai-provider-for-github-models' ), AI_PROVIDER_FOR_GITHUB_MODELS_PLUGIN_DIR . 'assets/images/github-models.svg' ); } /** * {@inheritDoc} * * @since 1.0.0 */ protected static function createProviderAvailability(): ProviderAvailabilityInterface { return new ListModelsApiBasedProviderAvailability( static::modelMetadataDirectory() ); } /** * {@inheritDoc} * * @since 1.0.0 */ protected static function createModelMetadataDirectory(): ModelMetadataDirectoryInterface { return new GitHubModelsModelMetadataDirectory(); } }