=== AI Provider for OpenAI Compatible Servers ===
Contributors: georgestephanis
Tags: ai, ollama, openai, llm, local ai
Requires at least: 7.0
Tested up to: 7.0
Requires PHP: 7.4
Stable tag: 1.0.0
License: GPL-2.0-or-later
License URI: https://spdx.org/licenses/GPL-2.0-or-later.html

Connect local or self-hosted OpenAI-compatible servers (Ollama, LM Studio, vLLM, and more) to the WordPress AI Client.

== Description ==

This plugin registers a provider for the WordPress AI Client that talks to any server implementing the OpenAI Chat Completions API — including Ollama, LM Studio, vLLM, llama.cpp, and LocalAI.

Run AI features in WordPress against models on your own hardware. No third-party AI service, no per-token billing, and no content leaving your network.

= Features =

* Connect to any OpenAI-compatible base URL, local or remote (defaults to Ollama's `http://localhost:11434/v1`).
* Autodetect available models from the server's `/models` endpoint, or specify models manually.
* Setup card on the Connectors settings screen with a one-click connection test.
* Best-effort detection of the running backend (Ollama, vLLM, or LM Studio), swapping in the brand's name and icon on the connector card once detected.
* Optional API key (bearer token) for servers that require authentication.
* Custom HTTP headers for reverse proxies and gateways.
* Advanced options for reasoning models: disable thinking blocks, and an R1-style message format that folds the system prompt into the first user message (needed for DeepSeek-R1).
* Context length override and a vision/multimodal support toggle.

= Requirements =

* The WordPress AI Client must be available (WordPress 7.0+).
* A running OpenAI-compatible inference server reachable from your web server.

== Installation ==

1. Install and activate the plugin.
2. Go to Settings → Connectors and locate "OpenAI Compatible".
3. Click "Set up", enter your server's base URL (including `/v1`), and an API key if needed.
4. Click "Test Credentials" to verify the connection and detect models, then Save.

== Frequently Asked Questions ==

= Which servers are supported? =

Anything that implements the OpenAI-compatible `/v1/models` and `/v1/chat/completions` endpoints: Ollama, LM Studio, vLLM, llama.cpp server, LocalAI, and many others.

= Do I need an API key? =

Only if your server requires one. Local servers like Ollama usually don't; leave the field empty or use a placeholder value.

= Can my server run on a different machine? =

Yes. Enter any base URL reachable from your WordPress host. The plugin allows requests to the configured base URL even when it resolves to a local/private address.

= Does this send my content to a third party? =

No. Requests go only to the server base URL you configure.

== Developer Hooks ==

This plugin provides several filters for other plugins to dynamically extend its functionality:

* **`connectors_ai_openai_compatible_servers_request_data`**: Filters the completions request body payload before it is sent to the endpoint. Passed arguments: `$data` (array), `$modelId` (string).
* **`connectors_ai_openai_compatible_servers_request_headers`**: Filters HTTP headers for all request pathways. Passed arguments: `$headers` (array), `$path` (string), `$method` (string).
* **`connectors_ai_openai_compatible_servers_detect_provider`**: Adds or overrides detection checks when probing server origins. Passed arguments: `$detected_type` (null|string), `$base_url` (string), `$headers` (array), `$probe_args` (array).
* **`connectors_ai_openai_compatible_servers_model_options`**: Modifies the `SupportedOption` array for a resolved model. Passed arguments: `$options` (array), `$modelId` (string), `$mode` (string: 'manual' or 'autodetect').
* **`connectors_ai_openai_compatible_servers_model_capabilities`**: Modifies the `CapabilityEnum` array for a resolved model. Passed arguments: `$capabilities` (array), `$modelId` (string), `$mode` (string: 'manual' or 'autodetect').

== Screenshots ==

1. The OpenAI Compatible connector's setup card on the Connectors settings screen — base URL, API key, and autodetect/manual model selection.
2. A successful connection test with manually specified models, detected models to enable, and the advanced settings (context length, thinking-block toggle, image support, R1 message format, custom headers).

== Credits ==

The Ollama, vLLM, and LM Studio brand icons shown when a server is detected are from
[LobeHub's lobe-icons](https://github.com/lobehub/lobe-icons), used under the MIT license.

== Changelog ==

= 1.0.0 =
* Initial release.

== Upgrade Notice ==

= 1.0.0 =
Initial release.
