kcode-speaker-v3-feature-requests 0.1.1

Gemini feature-request generation for Kennedy speaker processing
Documentation
# Purpose

Builds standalone Gemini prompts for the three speaker-feature packets from a parsed diarized transcript.

# Public API

```rust
use kcode_speaker_v3_types::{
    DiarizedTranscript, FeatureKey, LocalSpeakerLabel,
};

pub const FEATURE_PROMPT_REVISION: &str = "5XlEkFjd";
pub const FEATURE_PROMPT_TEMPLATE: &str;

pub enum FeaturePacket { One, Two, Three }
impl FeaturePacket {
    pub const ALL: [Self; 3];
    pub fn number(self) -> u8;
    pub fn feature_keys(self) -> [FeatureKey; 8];
}

pub struct FeatureRequest {
    pub target_speaker: LocalSpeakerLabel,
    pub packet: FeaturePacket,
    pub prompt: String,
}

pub fn build_feature_requests(
    transcript: &DiarizedTranscript,
) -> Vec<FeatureRequest>;
```

`build_feature_requests` uses the transcript package’s eligibility rule. It returns exactly three requests per eligible speaker, ordered by each eligible speaker’s first overall appearance in the transcript and then by packets one through three. It returns an empty vector when no speaker is eligible.

Each request is self-contained. It includes the unmodified raw transcript, substitutes the target label in every target placeholder, and appends exactly one packet. Packet feature keys partition `FeatureKey::ALL` in schema order.

The caller attaches the same original mixed audio segment to every returned request. This library is stateless and performs no media inspection, provider call, parsing of feature responses, retry, scheduling, throttling, or concurrency control. Independent calls do not share state.