ac6e74ab4c
Implements embed() on FeatherlessClient. Featherless's OpenAI- compatible surface does NOT expose /v1/embeddings at the time of writing, so this implementation raises NotImplementedError rather than issuing a request that would 404. The chat.services.embeddings.generate_embedding wrapper (T112.3) catches the exception and degrades to the zero-vector fallback path (plus the existing T107 warning) — misconfigured callers fail loudly in logs while the request path keeps working. If/when Featherless ships embeddings, swap the body for self._client.embeddings.create(model=..., input=...) guarded by the existing 2-conn semaphore (mirrors generate/stream). The Protocol seam in T112.1 is already wired so no other code needs to change. Adds tests/test_featherless.py pinning the NotImplementedError contract.