'string', 'sanitize_callback' => 'sanitize_text_field', 'default' => '', ] ); add_settings_section( 'ai_provider_for_github_models_general', '', '__return_false', 'ai-provider-for-github-models' ); add_settings_field( 'default_text_model', __( 'Default Text Model', 'ai-provider-for-github-models' ), [ $this, 'render_default_text_model_field' ], 'ai-provider-for-github-models', 'ai_provider_for_github_models_general' ); } /** * Enqueues scripts on the settings page. * * @since 1.0.0 * * @param string $hook_suffix Current admin page hook suffix. */ public function enqueue_scripts( string $hook_suffix ): void { if ( 'settings_page_ai-provider-for-github-models' !== $hook_suffix ) { return; } wp_enqueue_script( 'ai-provider-github-models-settings', plugin_dir_url( AI_PROVIDER_FOR_GITHUB_MODELS_BASE_FILEPATH ) . 'assets/js/settings.js', [], AI_PROVIDER_FOR_GITHUB_MODELS_VERSION, true ); wp_localize_script( 'ai-provider-github-models-settings', 'aiProviderGithubModels', [ 'ajaxUrl' => admin_url( 'admin-ajax.php' ), 'nonce' => wp_create_nonce( self::NONCE_KEY ), 'currentValue' => get_option( self::OPTION_NAME, '' ), 'noOverrideLabel' => __( '— Default —', 'ai-provider-for-github-models' ), ] ); } /** * Renders the Default Text Model select field. * * @since 1.0.0 */ public function render_default_text_model_field(): void { ?>

Connectors page to connect this provider.', 'ai-provider-for-github-models' ), [ 'a' => [ 'href' => [] ] ] ), esc_url( admin_url( 'options-connectors.php' ) ) ); ?>

hasProvider( GitHubModelsProvider::class ) || ! AiClient::isConfigured( GitHubModelsProvider::class ) ) { wp_send_json_error( [ 'code' => 'not_configured' ] ); } try { $models_metadata = GitHubModelsProvider::modelMetadataDirectory()->listModelMetadata(); $model_ids = array_map( fn( $metadata ) => $metadata->getId(), $models_metadata ); wp_send_json_success( $model_ids ); } catch ( Exception $e ) { wp_send_json_error( [ 'code' => 'api_error' ] ); } } }