package config // Config is the resolved combined configuration from pipeline.yml and session.yml. type Config struct { Pipeline *PipelineConfig Session *SessionConfig PipelinePath string SessionPath string } // PipelineConfig contains durable pipeline-level settings. type PipelineConfig struct { Workspace WorkspaceConfig `yaml:"workspace"` Storage StorageConfig `yaml:"storage"` WhisperX WhisperXConfig `yaml:"whisperx"` Seriatim SeriatimConfig `yaml:"seriatim"` Audita AuditaConfig `yaml:"audita"` Analyzer AnalyzerConfig `yaml:"analyzer"` Notification NotificationConfig `yaml:"notification"` } // SessionConfig contains per-session inputs and metadata. type SessionConfig struct { SessionID string `yaml:"session_id"` Campaign string `yaml:"campaign"` Date string `yaml:"date"` Title string `yaml:"title"` Inputs SessionInputsConfig `yaml:"inputs"` } // WorkspaceConfig configures local workspace behavior. type WorkspaceConfig struct { Root string `yaml:"root"` } // StorageConfig configures storage backends and related parameters. type StorageConfig struct { Backend string `yaml:"backend"` Bucket string `yaml:"bucket"` Prefix string `yaml:"prefix"` } // WhisperXConfig configures WhisperX adapter settings. type WhisperXConfig struct { TranscribeURL string `yaml:"transcribe_url"` Language string `yaml:"language"` Timeout string `yaml:"timeout"` Retries *int `yaml:"retries"` RetryDelay string `yaml:"retry_delay"` Concurrency *int `yaml:"concurrency"` } // SeriatimConfig configures seriatim adapter settings. type SeriatimConfig struct { Binary string `yaml:"binary"` Timeout string `yaml:"timeout"` OutputSchema string `yaml:"output_schema"` CoalesceGap *float64 `yaml:"coalesce_gap"` Report *bool `yaml:"report"` Env SeriatimEnvConfig `yaml:"env"` } // SeriatimEnvConfig configures optional advanced seriatim environment tuning. type SeriatimEnvConfig struct { OverlapWordRunGap *float64 `yaml:"overlap_word_run_gap"` OverlapWordRunReorderWindow *float64 `yaml:"overlap_word_run_reorder_window"` BackchannelMaxDuration *float64 `yaml:"backchannel_max_duration"` FillerMaxDuration *float64 `yaml:"filler_max_duration"` } // AuditaConfig configures audita adapter settings. type AuditaConfig struct { Binary string `yaml:"binary"` Timeout string `yaml:"timeout"` LLMAPIKeyEnv string `yaml:"llm_api_key_env"` Modules []string `yaml:"modules"` BaseURL string `yaml:"base_url"` Model string `yaml:"model"` LLMConcurrency *int `yaml:"llm_concurrency"` ValidationModel string `yaml:"validation_model"` ValidationLLMConcurrency *int `yaml:"validation_llm_concurrency"` Report *bool `yaml:"report"` } // AnalyzerConfig configures analyzer adapter settings. type AnalyzerConfig struct { BinaryPath string `yaml:"binary_path"` Timeout string `yaml:"timeout"` Artifacts ArtifactSettings `yaml:"artifacts"` } // NotificationConfig configures notification backend settings. type NotificationConfig struct { Backend string `yaml:"backend"` Recipient string `yaml:"recipient"` Timeout string `yaml:"timeout"` } // ArtifactSettings configures generated artifact selection and paths. type ArtifactSettings struct { OutputDir string `yaml:"output_dir"` Types []string `yaml:"types"` } // SessionInputsConfig contains per-session input references. type SessionInputsConfig struct { AudioDir string `yaml:"audio_dir"` AudioFiles []string `yaml:"audio_files"` SpeakersFile string `yaml:"speakers_file"` AutocorrectFile string `yaml:"autocorrect_file"` GlossaryFile string `yaml:"glossary_file"` }