AppConfig

marola.AppConfig
See theAppConfig companion object
final case class AppConfig(telegramBotToken: Option[String], beachSearchRadiusKm: Double, originLat: Option[Double], originLon: Option[Double], waterQualityProvider: WaterProvider, facilitiesProvider: FacilitiesProvider, localEmbedModel: String, knowledgeDir: String, knowledgeIndexPath: String, seaLoreEnabled: Boolean, askFallback: Fallback, askMinScore: Double, localLlmBaseUrl: String, localLlmModel: String, localSightingStorePath: String, localVisionModel: String, mlflowTrackingUri: Option[String], mlflowExperiment: String, tracesBackend: TraceBackend, traceContent: Boolean, waterCacheDir: Path = ...)

Minimal env-driven config: plain Scala, no Kyo Env effect yet (nothing to inject it into at POC stage).

Attributes

Companion
object
Graph
Supertypes
trait Serializable
trait Product
trait Equals
class Object
trait Matchable
class Any
Show all

Members list

Value members

Concrete methods

def accessibilityClient: AccessibilityClient

MIP-0021 §5: never None — Off still needs a client, NoopAccessibilityClient, so Recommender's Some(...) call site doesn't have to special-case "off" separately from "the real client returned no data." Overpass (default) reuses the same public endpoint BeachFinder already talks to.

MIP-0021 §5: never None — Off still needs a client, NoopAccessibilityClient, so Recommender's Some(...) call site doesn't have to special-case "off" separately from "the real client returned no data." Overpass (default) reuses the same public endpoint BeachFinder already talks to.

Attributes

def knowledgeStore: FileKnowledgeStore

Local-only RAG (FUTURE-WORK.md §9.1, first cut): the corpus under knowledgeDir, embedded by the same Ollama server as the LLM, indexed on disk.

Local-only RAG (FUTURE-WORK.md §9.1, first cut): the corpus under knowledgeDir, embedded by the same Ollama server as the LLM, indexed on disk.

Attributes

def llmClient: LlmClient
def origin: Option[Coordinates]

A fixed "current location" for the CLI, from MAROLA_ORIGIN_LAT/MAROLA_ORIGIN_LON — both or neither: one without the other is ignored (and Main says so) rather than half-applied.

A fixed "current location" for the CLI, from MAROLA_ORIGIN_LAT/MAROLA_ORIGIN_LON — both or neither: one without the other is ignored (and Main says so) rather than half-applied.

Attributes

def redacted: String

What Main prints instead of the raw case class (FABLE_REVIEW C1: the raw toString echoed every key/token to stdout).

What Main prints instead of the raw case class (FABLE_REVIEW C1: the raw toString echoed every key/token to stdout).

Attributes

def runLedger: RunLedger

RunLedger.Noop (MIP-0010) unless MAROLA_MLFLOW_TRACKING_URI is set — no network call, no mlflow server needed.

RunLedger.Noop (MIP-0010) unless MAROLA_MLFLOW_TRACKING_URI is set — no network call, no mlflow server needed.

Attributes

def sightingStore: SightingStore
def tracedLlmClient(tracing: Tracing): LlmClient

llmClient behind TracedLlmClient (MIP-0010 task 6): one llm. span per call on the given Tracing — transparent with Tracing.Noop.

llmClient behind TracedLlmClient (MIP-0010 task 6): one llm. span per call on the given Tracing — transparent with Tracing.Noop.

Attributes

def tracing: Tracing < Sync

The Tracing instance Main wraps the pipeline in — resolved once per run, in Main, and passed down (it is an effect: MlflowTracing looks the traces experiment up over REST before the first span).

The Tracing instance Main wraps the pipeline in — resolved once per run, in Main, and passed down (it is an effect: MlflowTracing looks the traces experiment up over REST before the first span).

Attributes

def visionClient: VisionClient
def waterQualityClient(origin: Coordinates): Option[WaterQualityClient]

MIP-0001 §5.2, extended MIP-0031 §5. Every provider is wrapped so an agency outage serves the last good fetch instead of blanking every beach — see CachedWaterQualityClient.

MIP-0001 §5.2, extended MIP-0031 §5. Every provider is wrapped so an agency outage serves the last good fetch instead of blanking every beach — see CachedWaterQualityClient.

Attributes

Inherited methods

def productElementNames: Iterator[String]

An iterator over the names of all the elements of this product.

An iterator over the names of all the elements of this product.

Attributes

Inherited from:
Product
def productIterator: Iterator[Any]

An iterator over all the elements of this product.

An iterator over all the elements of this product.

Attributes

Returns

in the default implementation, an Iterator[Any]

Inherited from:
Product