chore(vocero): remove the legacy ApiPilot integration (#3)
Vocero now retrieves AquaPortal content through authenticated MCP. This removes the obsolete ApiPilot integration from the API and browser while preserving the separately deployed speech pipeline. Release notes: - Removed ApiPilot endpoints, configuration, credential overrides, and HTTP/realtime tool execution. - Removed browser ApiPilot catalog loading and prompt generation while retaining authenticated MCP discovery. - Updated regression coverage and operating documentation for the retired routes and settings. Reviewed-on: AquaPortal/s2s#3
This commit is contained in:
+19
-10
@@ -45,7 +45,7 @@ and the retained `server:app` shim; use `--app-dir vocero-api` from the root.
|
||||
|
||||
## Schema boundaries
|
||||
|
||||
`models/requests.py` retains the existing search, reasoning, and ApiPilot
|
||||
`models/requests.py` retains the existing search and reasoning
|
||||
request models, including their defaults, coercion, and ignored extra fields.
|
||||
The queue beacon still accepts malformed JSON and non-object bodies as before;
|
||||
its Pydantic view is applied only after the original object check, and
|
||||
@@ -54,9 +54,10 @@ its Pydantic view is applied only after the original object check, and
|
||||
`models/responses.py` validates structure constructed by this server. Fields
|
||||
owned by external services remain `Any` where the old parser imposed no type
|
||||
constraint. Object models allow extra fields. Caller profiles can be arbitrary
|
||||
JSON; load-balancer fields remain optional; execution results and error details
|
||||
remain open. Existing provider parsing, authentication precedence, argument
|
||||
filtering, environment parsing, and WebSocket frames are unchanged.
|
||||
JSON; load-balancer fields remain optional. Existing provider parsing,
|
||||
authentication precedence, environment parsing, and WebSocket frames are
|
||||
preserved outside explicitly retired integrations. Authenticated conversation
|
||||
and MCP contracts live in `models/mcp.py` and `models/content.py`.
|
||||
|
||||
HTTP handlers call `validated_json_response`: Pydantic validates the payload,
|
||||
then `JSONResponse` serializes the original object. Returning a dumped model
|
||||
@@ -69,19 +70,23 @@ existing error shapes; there is no new common error envelope.
|
||||
## Compatibility evidence
|
||||
|
||||
`tests/fixtures/legacy-contracts.json` was captured from the original monolithic
|
||||
server at commit `3d42df5`, before refactoring. Tests compare 82 HTTP scenarios,
|
||||
server at commit `3d42df5`, before refactoring. Tests compare 66 HTTP scenarios,
|
||||
including exact response text, statuses, selected headers, and outgoing mock
|
||||
HTTP requests. They also compare request OpenAPI definitions and representative
|
||||
realtime frames. Additional tests cover response validation and permissive
|
||||
upstream values; the original local HTTP/WebSocket tests remain in the suite.
|
||||
Four captures belonging exclusively to the retired workflow reasoning service
|
||||
were removed with that integration; all retained captures are unchanged.
|
||||
were removed with that integration. ApiPilot retirement removed another 16 HTTP
|
||||
captures, its two OpenAPI operations, and its request model. The four bootstrap
|
||||
captures now omit the retired `apipilot` flag. One reasoning failure case was
|
||||
renamed because removing ApiPilot eliminated its token access; it still exposes
|
||||
the existing uninitialized profile failure. All other retained capture values
|
||||
are unchanged.
|
||||
|
||||
The captures deliberately preserve unknown fields, omitted fields, unusual JSON
|
||||
values, queue beacon edge cases, permissive tool arguments, and known failures.
|
||||
Examples include reasoning's existing uninitialized local variables in certain
|
||||
configuration combinations, API-key-only tool precheck behavior, the catalog
|
||||
cache's existing key, and relay termination after a suppressed invalid
|
||||
values, queue beacon edge cases, and known failures. Examples include reasoning's
|
||||
existing uninitialized profile in certain non-MCP configuration combinations
|
||||
and relay termination after a suppressed invalid
|
||||
`session.update` error. Fix those in separately reviewed behavior changes;
|
||||
do not regenerate golden captures to make a refactor pass.
|
||||
|
||||
@@ -90,3 +95,7 @@ provider responses, live speech models, or production configuration. No deployed
|
||||
services or real credentials are needed. The Docker check verifies the actual
|
||||
runtime image, API configuration, documentation, OpenAPI, and the backend's
|
||||
existing root 404; it removes its temporary container and image afterward.
|
||||
|
||||
ApiPilot removal deliberately excludes `speech_to_speech/`. The MCP orchestration
|
||||
test still exercises its existing pure marker sanitizer without importing model
|
||||
dependencies, verifying that `VOCERO_MCP_CALL` reaches the Vocero relay unchanged.
|
||||
|
||||
Reference in New Issue
Block a user