'boolean' ) ); add_settings_field( 'prautoblogger_opik_project_name', __( 'Opik project name', 'prautoblogger' ), array( $this, 'render_field_project_name' ), 'prautoblogger_settings', 'prautoblogger_observability' ); register_setting( 'prautoblogger_settings', 'prautoblogger_opik_project_name', array( 'type' => 'string', 'sanitize_callback' => 'sanitize_text_field', ) ); add_settings_field( 'prautoblogger_opik_capture_full_prompt', __( 'Capture full prompt text', 'prautoblogger' ), array( $this, 'render_field_capture_full' ), 'prautoblogger_settings', 'prautoblogger_observability' ); register_setting( 'prautoblogger_settings', 'prautoblogger_opik_capture_full_prompt', array( 'type' => 'boolean' ) ); add_settings_field( 'prautoblogger_opik_status', __( 'Status', 'prautoblogger' ), array( $this, 'render_field_status' ), 'prautoblogger_settings', 'prautoblogger_observability' ); } /** * Render section help text. */ public function render_section_help(): void { echo wp_kses_post( '

Optional LLM observability via Comet Opik. ' . 'Captures detailed traces of article generation with per-LLM-call metrics. ' . 'Requires API credentials in wp-config.php.

' ); } /** * Render the "Enable Opik" checkbox. */ public function render_field_enabled(): void { $enabled = get_option( 'prautoblogger_opik_enabled', false ); $checked = $enabled ? 'checked' : ''; ?> /> has_credentials() ) { echo '

' . esc_html__( 'Note: API credentials must be set in wp-config.php (PRAUTOBLOGGER_OPIK_API_KEY, PRAUTOBLOGGER_OPIK_WORKSPACE)', 'prautoblogger' ) . '

'; } } /** * Render the project name field. */ public function render_field_project_name(): void { $value = get_option( 'prautoblogger_opik_project_name', 'prautoblogger' ); ?>

/>

has_credentials(); $queue = new PRAutoBlogger_Opik_Span_Queue(); $queue_depth = $queue->get_queue_depth(); $last_dispatch = get_option( 'prautoblogger_opik_last_dispatch', 0 ); $last_dispatch_str = $last_dispatch ? sprintf( /* translators: %s = human-readable time */ __( '%s ago', 'prautoblogger' ), human_time_diff( (int) $last_dispatch ) ) : __( 'Never', 'prautoblogger' ); ?>

✓ Yes' : '✗ No'; ?>