Files
llm-connect/workplans/llm-connect-WP-0003-functional-extensions.md
Bernd Worsch d51d6303e2
Some checks failed
CI / test (3.10) (push) Has been cancelled
CI / test (3.11) (push) Has been cancelled
CI / test (3.12) (push) Has been cancelled
feat: WP-0003 — RoutingPolicy (FR-2) and HTTP serve mode (FR-1)
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>
2026-04-01 22:34:00 +00:00

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 tests
  • python -m llm_connect.server --port 9999 starts and responds to POST /execute
  • GET /health returns 200
  • All functional contract docs present in /contracts/functional/