Interface: IntentPipelineConfig
Defined in: aiui-lowering-pipeline/src/config.ts:20
Properties
arming?
optionalarming?: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?
optionalenabled?:boolean
key?
optionalkey?:string
audioBack?
optionalaudioBack?:"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?
optionalkeywords?: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?
optionallinter?:"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?
optionallinterInstructions?:string
Defined in: aiui-lowering-pipeline/src/config.ts:140
The linter persona override. Absent → the channel's LINTER_INSTRUCTIONS.
linterModel?
optionallinterModel?:string
Defined in: aiui-lowering-pipeline/src/config.ts:138
Linter model id. Absent → the vendor default (gpt-realtime-2 / Gemini Live).
liveModel?
optionalliveModel?:string
Defined in: aiui-lowering-pipeline/src/config.ts:164
LEGACY — the composer-era model id; superseded by linterModel.
liveVendor?
optionalliveVendor?:"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?
optionalpriming?: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?
optionalsources?:string[]
realtimeDelay?
optionalrealtimeDelay?:"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?
optionalrealtimeModel?: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?
optionalrealtimeVoice?: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?
optionalsilenceGate?: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?
optionalminSilenceMs?:number
thresholdDb?
optionalthresholdDb?:number
submode?
optionalsubmode?:"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?
optionaltalkMode?:"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?
optionaltier?:"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?
optionalttsModel?:string
Defined in: aiui-lowering-pipeline/src/config.ts:98
REST TTS model for audioBack:"acks". Absent → gpt-4o-mini-tts.
ttsVoice?
optionalttsVoice?:string
Defined in: aiui-lowering-pipeline/src/config.ts:100
TTS voice id (acks). Absent → the model default.
videoFrameIntervalMs?
optionalvideoFrameIntervalMs?: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?
optionalvideoMode?: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.