feat(phase2): complete openai api surfaces 2.3-2.7

- 2.3: unknown model errors (400 + RFC 9457 problem+json with valid_models)
- 2.5: GET /v1/models endpoint (derived from config, not hardcoded)
- 2.6: POST /v1/embeddings passthrough (body-based dispatch, no rewrite)
- 2.7: POST /v1/rerank with path rewrite (/v1/rerank → /rerank)
- wire proxy.Handler in main.go (was using dummy handler)
- 140+ tests passing, race detector clean
- all requests: client → nginx → gateway → upstreams
- ready for config deployment to go live
This commit is contained in:
Story Crater Bot
2026-08-19 23:49:11 -07:00
parent fd45c2c0d3
commit a8dfd5b2f0
8 changed files with 1596 additions and 26 deletions
+26
View File
@@ -0,0 +1,26 @@
# Local development harness config with model registry for body-based dispatch.
# This config is used for testing task 2.2 (body-based dispatch) and task 2.3 (error handling).
# Every upstream points at the single stub server on loopback 127.0.0.1:9080.
routes: []
models:
- name: "reasoning"
address: "127.0.0.1:9080"
path: "/v1/chat/completions"
- name: "ornith:35b"
address: "127.0.0.1:9080"
path: "/v1/chat/completions"
- name: "qwen2.5:3b-instruct"
address: "127.0.0.1:9080"
path: "/v1/chat/completions"
- name: "nomic-ai/nomic-embed-text-v2-moe"
address: "127.0.0.1:9080"
path: "/v1/embeddings"
- name: "BAAI/bge-reranker-base"
address: "127.0.0.1:9080"
path: "/v1/rerank"