Skip to content

Interface: IntentPipelineConfig

Defined in: aiui-lowering-pipeline/src/config.ts:20

Properties

arming?

optional arming?: object

Defined in: aiui-lowering-pipeline/src/config.ts:111

The arming gesture. key is the arm/disarm key (backtick by default — collides less than feared, see field-notes); enabled: false lets a host app turn keyboard arming off entirely when the default gesture is wrong for its surface.

enabled?

optional enabled?: boolean

key?

optional key?: string


audioBack?

optional audioBack?: "off" | "acks" | "voice"

Defined in: aiui-lowering-pipeline/src/config.ts:96

Spoken audio back to the human. off = silent; acks = short TTS confirmations the channel synthesizes on lowering milestones (premium — e.g. a spoken "sent"). voice is LEGACY — the retired flagship voice veneer; accepted from old hellos, treated as off. Absent → off.


autoEndSec

autoEndSec: number

Defined in: aiui-lowering-pipeline/src/config.ts:51

Auto-end the thread after this many silent/idle seconds; 0 = explicit Enter only.


inkFadeSec

inkFadeSec: number

Defined in: aiui-lowering-pipeline/src/config.ts:49

Seconds until an ink stroke fades away. 0 (the default) is PERMANENT ink: strokes persist until you clear them with C, across sends, across abandoned turns — the pen is not scoped to a turn, the page is a whiteboard you happen to be talking over. Any positive value makes it vanishing ink.


keywords?

optional keywords?: string[]

Defined in: aiui-lowering-pipeline/src/config.ts:73

Domain vocabulary the transcriber is biased toward — product names, acronyms, code identifiers. A SLOT today (nothing in the UI writes it): wired to ElevenLabs keyterms and the request-response engine's prompt ("Keywords: …"); gpt-realtime-whisper does not support prompting, so the field is documented-inert there. See docs/guide/intent-panel.md.


linter?

optional linter?: "openai" | "off" | "gemini"

Defined in: aiui-lowering-pipeline/src/config.ts:136

The realtime prompt linter — on/off plus a vendor, orthogonal to the tier. While on, the channel holds a live conversational session (Gemini Live / GPT realtime) alongside transcription: the model hears the mic, sees labeled shots, selections, and (while sharing) screen frames, and at each talk-window end speaks one short observation — a probable mistranscription, an ambiguous reference, a missing screenshot. It NEVER composes the prompt; the compiler does, in every configuration. Absent → off.


linterInstructions?

optional linterInstructions?: string

Defined in: aiui-lowering-pipeline/src/config.ts:140

The linter persona override. Absent → the channel's LINTER_INSTRUCTIONS.


linterModel?

optional linterModel?: string

Defined in: aiui-lowering-pipeline/src/config.ts:138

Linter model id. Absent → the vendor default (gpt-realtime-2 / Gemini Live).


liveModel?

optional liveModel?: string

Defined in: aiui-lowering-pipeline/src/config.ts:164

LEGACY — the composer-era model id; superseded by linterModel.


liveVendor?

optional liveVendor?: "openai" | "gemini"

Defined in: aiui-lowering-pipeline/src/config.ts:162

LEGACY — the composer-era engine pick; superseded by linter.


mockTypoRate

mockTypoRate: number

Defined in: aiui-lowering-pipeline/src/config.ts:87

Mock: probability [0..1] a word is mangled — fuel for correction mode.


mockWordMs

mockWordMs: number

Defined in: aiui-lowering-pipeline/src/config.ts:85

Mock: per-word cadence in ms.


model

model: string

Defined in: aiui-lowering-pipeline/src/config.ts:65

LEGACY: the retired REST engine's model; nothing reads it post-coercion.


priming?

optional priming?: object

Defined in: aiui-lowering-pipeline/src/config.ts:124

Keyword-priming sources — page text, component names, etc. — fed to the transcriber as a bias prompt. Toggled per source; none by default.

sources?

optional sources?: string[]


realtimeDelay?

optional realtimeDelay?: "minimal" | "low" | "medium" | "high" | "xhigh"

Defined in: aiui-lowering-pipeline/src/config.ts:83

Realtime latency/accuracy trade-off (when transcriber = openai-realtime): lower = faster/less accurate. Absent → the model's own default.


realtimeModel?

optional realtimeModel?: string

Defined in: aiui-lowering-pipeline/src/config.ts:78

Realtime transcription model (when transcriber = openai-realtime). Absent → the channel default (gpt-realtime-whisper).


realtimeVoice?

optional realtimeVoice?: string

Defined in: aiui-lowering-pipeline/src/config.ts:102

The linter's spoken voice id. Absent → the model default (e.g. cedar/marin).


silenceGate?

optional silenceGate?: object

Defined in: aiui-lowering-pipeline/src/config.ts:119

Silence gating before a segment is sent to transcription (the workbench openai-audio-stack notes, git history): trim dead air / suppress empty segments. Off by default.

enabled

enabled: boolean

minSilenceMs?

optional minSilenceMs?: number

thresholdDb?

optional thresholdDb?: number


submode?

optional submode?: "transcription" | "realtime"

Defined in: aiui-lowering-pipeline/src/config.ts:160

LEGACY (the composer era): realtime selected the channel's model-composes processor. Kept so old hellos/persisted configs resolve; nothing surfaced sets it anymore — the linter fields above replace it.


talkMode?

optional talkMode?: "hold" | "toggle"

Defined in: aiui-lowering-pipeline/src/config.ts:41

LEGACY (retired knob): Space is always hold-to-talk; H is the hands-free toggle. Tolerated so persisted configs and old hellos stay valid; nothing reads it.


tier?

optional tier?: "mock" | "rapid" | "premium"

Defined in: aiui-lowering-pipeline/src/config.ts:33

Cost-sized preset that expands into the fine fields; explicit fine fields win. Transcription is STREAMING-ONLY now (the append-only pivot): two surfaced rungs — rapid (streaming gpt-realtime-whisper, the default) and premium (the higher-quality gpt-4o-mini-transcribe over the same streaming endpoint, plus spoken TTS acks). mock survives for tests and offline development but is NOT surfaced in the strip. Legacy tier names (standard, flagship, live-gemini, live-openai) still expand via expandTier's alias table so persisted configs and old hellos keep resolving. Prompt LINTING is orthogonal to the tier — see linter.


transcriber

transcriber: "mock" | "openai" | "openai-realtime" | "openai-voice" | "elevenlabs"

Defined in: aiui-lowering-pipeline/src/config.ts:63

Which transcriber runs. elevenlabs (Scribe v2, the default when keyed) and openai-realtime are the streaming engines: the client streams PCM to a per-thread channel-held session and partial deltas fill the preview as you speak (the streaming-turns notes §3, git history). Transcription is STREAMING-ONLY. mock is the explicit offline/developer choice: local, no key, no network, canned output. Two LEGACY values are tolerated and coerced at hello time: openai (the retired per-segment REST engine → openai-realtime) and openai-voice (the retired flagship voice veneer → openai-realtime + an openai linter).


ttsModel?

optional ttsModel?: string

Defined in: aiui-lowering-pipeline/src/config.ts:98

REST TTS model for audioBack:"acks". Absent → gpt-4o-mini-tts.


ttsVoice?

optional ttsVoice?: string

Defined in: aiui-lowering-pipeline/src/config.ts:100

TTS voice id (acks). Absent → the model default.


videoFrameIntervalMs?

optional videoFrameIntervalMs?: number

Defined in: aiui-lowering-pipeline/src/config.ts:146

Screen-frame cadence while sharing, in ms per frame. Absent → 5000 (one frame every five seconds); the share's slider adjusts it live. Under videoMode: "smart" this is a CEILING, not a metronome.


videoMode?

optional videoMode?: VideoCaptureMode

Defined in: aiui-lowering-pipeline/src/config.ts:152

How the share decides when to sample. Absent → "smart": a frame goes out only if the human touched the page since the last one. "continuous" fires on every cadence tick. See VideoCaptureMode.