Skip to content

Release 0.11.0a1 - #48

Open
github-actions[bot] wants to merge 33 commits into
masterfrom
release-0.11.0a1
Open

Release 0.11.0a1#48
github-actions[bot] wants to merge 33 commits into
masterfrom
release-0.11.0a1

Conversation

@github-actions

Copy link
Copy Markdown

Human review requested!

renovate Bot and others added 30 commits December 18, 2025 03:33
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore: migrate setup.py→pyproject.toml, consolidate CI workflows

Replace setup.py with pyproject.toml (dynamic version from version.py).
Add build_tests, license_tests, lint, pip_audit workflows using
OpenVoiceOS/gh-automations@dev reusable workflows. Migrate
publish_stable and release_workflow from TigreGotico/gh-automations@master
to OpenVoiceOS/gh-automations@dev; add workflow_dispatch trigger and
bot-safety guard.

split from #25

* fix: define __version__ attr required by pyproject dynamic version

* test: guard dynamic-version contract (version.py ↔ __version__ fields)

Asserts VERSION_* integers are non-negative, __version__ is correctly
derived from them, and the string matches PEP-440 format.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…t in chat.py (#40)

* fix: declare uvicorn+ovos-workshop deps; restore py3.9 compat in chat.py

Fixes #39 (partial — OPM lang-detector fallback fix in ovos-lang-detector-classics-plugin,
see fix/issue-39-cld2-exception branch there)

(a) Add uvicorn and ovos-workshop to [project].dependencies in pyproject.toml.
    Both are imported at runtime (__main__.py and ollama.py respectively) but
    were not declared, causing ImportError in clean environments.

(b) Replace two multi-line f-string expressions in streaming_completion_response
    (chat.py lines ~285 and ~302) with intermediate dict variables.
    Multi-line dict literals inside f-string {} require Python 3.12 (PEP 701)
    but the package declares requires-python >= 3.9.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Delete tests/test_issue_39.py

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…aths (#29)

* feat: vendor-prefixed OpenAI/Ollama routers + deprecated legacy paths

* test: cover deprecated paths middleware and route registration (split/router-infra)

- Verify Deprecation + Link headers on /v1 and /api legacy paths
- Verify canonical paths receive no deprecation headers
- Cover _build_successor_path mapping and passthrough
- Cover FastAPI 422 responses for malformed/missing bodies
- Smoke-test register_deprecated_routes mounts /v1/ legacy paths

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* docs: normalize Google-style docstrings in chat and ollama routers

Remove ``(Type)`` annotations from Args/Returns sections (redundant with
function signatures). Condense multi-line boilerplate docstrings on
lifespan managers and inner streaming generators to one-liners.
No logic changes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat: A2A server endpoint (/a2a) with agent card + executor

* test: full A2A server coverage — agent card, executor, cancel, SDK-absent path, invalid base_url

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* docs: improve OVOSPersonaAgentExecutor.__init__ docstring

Add summary sentence to the __init__ docstring; no logic changes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
)

* feat(compat): Anthropic Claude-compatible endpoints (/anthropic/v1)

* test: full Anthropic compat coverage — schema, multi-turn, system, streaming, errors

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* test: real-SDK e2e against live server + enable CI test execution

Add tests/e2e/test_e2e_anthropic.py driving the official anthropic SDK
(Anthropic(base_url=...)) against a live uvicorn-served app, covering
non-streaming, system prompt, multi-turn and streaming. Add anthropic to
the dev extra and wire build_tests.yml to install it and run the suite.

* test: use asyncio.run in A2A executor tests (py3.14 compatibility)

asyncio.get_event_loop() raises on Python 3.14 (and whenever a prior test
closes the main-thread loop); switch the A2A executor tests to asyncio.run
so the suite is loop-state independent.

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(compat): Google Gemini-compatible endpoints (/gemini/v1beta)

* test: full Gemini compat coverage — schema, multi-turn, system-instruction, streaming, errors

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* test: real-SDK e2e against live server + enable CI test execution

Add tests/e2e/test_e2e_gemini.py driving the official google-genai SDK
(genai.Client(http_options=HttpOptions(base_url=...))) against a live
uvicorn-served app, covering non-streaming, system instruction, multi-turn
and streaming. Add google-genai to the dev extra and wire build_tests.yml
to install it and run the suite.

* test: use asyncio.run in A2A executor tests (py3.14 compatibility)

asyncio.get_event_loop() raises on Python 3.14 (and whenever a prior test
closes the main-thread loop); switch the A2A executor tests to asyncio.run
so the suite is loop-state independent.

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(compat): AWS Bedrock-compatible endpoints (/bedrock/model)

* test: full AWS Bedrock compat coverage — all model families, invoke, stream, converse, schema errors

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* feat(compat): emit AWS event-stream framing for Bedrock streaming

invoke-with-response-stream now encodes vnd.amazon.eventstream binary frames
(prelude/headers/payload with CRC32 checksums) instead of SSE, so boto3's
invoke_model_with_response_stream parses the stream natively.

Add tests/e2e/test_e2e_bedrock.py driving the official boto3 bedrock-runtime
client (invoke_model for Claude + Titan, converse, streaming). Add boto3 to
the dev extra and wire build_tests.yml to run the suite.

* test(compat): decode Bedrock stream as event-stream frames in unit tests

Update the invoke-with-response-stream unit tests to decode the
vnd.amazon.eventstream binary framing via botocore's EventStreamBuffer,
matching the streaming format boto3 consumes.

* test: use asyncio.run in A2A executor tests (py3.14 compatibility)

asyncio.get_event_loop() raises on Python 3.14 (and whenever a prior test
closes the main-thread loop); switch the A2A executor tests to asyncio.run
so the suite is loop-state independent.

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* feat(compat): HuggingFace TGI-compatible endpoints (/tgi)

* test: full TGI compat coverage — schema, generate, streaming, info/health, errors

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* feat(compat): serve TGI generation at endpoint root for InferenceClient

The maintained huggingface_hub InferenceClient posts to the bare endpoint
URL and selects streaming via the body 'stream' flag; add a root dispatch
route delegating to the shared non-streaming/streaming handlers so the
official client works against the server unchanged.

Add tests/e2e/test_e2e_tgi.py driving InferenceClient (non-stream, details,
stream) plus /health, /info and the native /generate route. Add
huggingface_hub to the dev extra and wire build_tests.yml to run the suite.

* test: use asyncio.run in A2A executor tests (py3.14 compatibility)

asyncio.get_event_loop() raises on Python 3.14 (and whenever a prior test
closes the main-thread loop); switch the A2A executor tests to asyncio.run
so the suite is loop-state independent.

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
JarbasAl and others added 3 commits June 12, 2026 18:40
* feat(compat): Cohere-compatible endpoints (/cohere/v1)

* test: full Cohere compat coverage — schema, multi-turn, preamble, streaming, embed, errors

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* test: real-SDK e2e against live server + enable CI test execution

Add tests/e2e/test_e2e_cohere.py driving the official cohere SDK
(cohere.Client(base_url=...)) against a live uvicorn-served app, covering
/v1/chat (with preamble + history), /v1/generate and streaming chat. Add
cohere to the dev extra and wire build_tests.yml to install it and run the
suite.

* test: use asyncio.run in A2A executor tests (py3.14 compatibility)

asyncio.get_event_loop() raises on Python 3.14 (and whenever a prior test
closes the main-thread loop); switch the A2A executor tests to asyncio.run
so the suite is loop-state independent.

---------

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant