kcode-intelligence-router 0.2.0

Typed routing for model calls with exact-model and per-user usage accounting
Documentation
# kcode-intelligence-router

A small typed boundary for model-backed work. It is an in-process Rust library,
not an HTTP service.

The complete application-facing surface is:

- `open(Config)` opens configured provider clients and returns the one primary
  runtime model description used by Kennedy orchestration.
- `Intelligence::for_user(user_id)` binds required accounting attribution.
- `UserIntelligence::{start_agent_turn,search,transcribe,annotate}` perform
  model calls with an exact model ID.
- `UserIntelligence::{transcribe_structured_audio,generate_text}` provide the
  structured audio and tool-free text calls needed by background pipelines.
- `UserIntelligence::fetch` fetches one public page.
- `Intelligence::extract_document` performs local document extraction.
- `Intelligence::cancel` stops an operation scope.
- `Intelligence::{receipts,daily_usage}` read the plain usage receipt store.

There is no health API, model catalog, provider selector, JSON dispatcher, or
Axum dependency.

## Usage receipts

Every provider call creates one atomically renamed JSON file in the configured
receipt directory. A receipt contains the user, operation, requested and actual
models, available provider identifiers, and either:

- uncached input, cached input, thinking, and visible output tokens;
- duration metering; or
- an explicit unavailable marker.

`daily_usage` deliberately opens and iterates every receipt. The store has no
folders or indexes until measured performance requires them.

## Media

`Media` carries an explicit `MediaKind`; MIME text does not choose whether
bytes are audio or video. Known Ogg audio is canonicalized to `audio/ogg`, so a
misleading `video/ogg` declaration cannot route an audio object into Gemini's
video constructor.