generated from coulomb/repo-seed
FR-2 RoutingPolicy: - RoutingPolicy + RoutingRule dataclasses in llm_connect/routing.py - resolve(task_type, estimated_cost_per_1k=None) with cost-cap fallback - Exported from llm_connect.__init__; contract doc at contracts/functional/routing-policy.md - 11 tests covering rule match, cost-cap, fallback, unknown type, no-match FR-1 HTTP serve mode: - LLMServer in llm_connect/server.py (stdlib http.server, zero extra deps) - POST /execute + GET /health; CLI via python -m llm_connect.server - [server] optional-dep group added to pyproject.toml - Contract doc at contracts/functional/server.md - 9 tests: health, round-trip, 400/404/500 errors, config forwarding - Added "mock" provider to factory for CLI default All 101 tests pass. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2.4 KiB
2.4 KiB
LLM-WP-0003 — Functional Extensions (FR-2 + FR-1)
status: done
owner: llm-connect
repo: llm-connect
created: 2026-04-01
depends-on: LLM-WP-0001 (test infrastructure must exist)
Purpose
Implement the two IHF feature requests that add new Functional-layer modules. Neither touches Core. Both can be developed independently of WP-0002.
Origin: IHUB-WP-0012 Phase 11 — Advanced AI Federation (completed 2026-04-01).
GAAF notes
Both additions are Functional-layer under GAAF-2026:
- Demand signal is explicit: IHF (inter-hub) is the primary consumer for both.
- Each gets its own functional contract doc in
/contracts/functional/. - Maturity on release: Beta (single known consumer, interface not yet stabilised).
Tasks
FR-2 — RoutingPolicy
| ID | Title | Priority | Status |
|---|---|---|---|
| T01 | RoutingPolicy data model: rules list with task_type, prefer, max_cost_per_1k, fallback |
high | done |
| T02 | policy.resolve(task_type) → returns configured LLMAdapter |
high | done |
| T03 | Export from llm_connect.__init__ and update __all__ |
medium | done |
| T04 | Functional contract doc for RoutingPolicy |
medium | done |
| T05 | Tests: rule match, cost-cap fallback, unknown task_type fallback, no-match default | high | done |
FR-1 — HTTP serve mode
| ID | Title | Priority | Status |
|---|---|---|---|
| T06 | Design /execute JSON schema (request: provider, model, prompt, config; response: LLMResponse fields) |
high | done |
| T07 | Implement llm_connect/server.py — minimal HTTP server, POST /execute, GET /health |
high | done |
| T08 | python -m llm_connect.server --port N --provider X --model Y CLI entry point |
high | done |
| T09 | Add httpx or aiohttp server dep under [project.optional-dependencies] server |
medium | done |
| T10 | Functional contract doc (API schema — request/response shapes, error codes) | medium | done |
| T11 | Tests: spin up server in subprocess or via TestClient, POST round-trip (MockAdapter), error responses |
high | done |
Exit criteria
RoutingPolicy.resolve("triage")returns the correct adapter per rules in testspython -m llm_connect.server --port 9999starts and responds toPOST /executeGET /healthreturns 200- All functional contract docs present in
/contracts/functional/