Skip to main content

switchyard_libsy/
lib.rs

1// SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
2// SPDX-License-Identifier: Apache-2.0
3
4#![warn(missing_docs)]
5#![doc = include_str!("../README.md")]
6
7mod core;
8pub use core::algorithm::{
9    Algorithm, CallLlmRequest, Driver, LlmCallObservation, LlmTarget, LlmTargetSet, RoutedRequest,
10    RunObservation, RunObserver, Step, StepStream,
11};
12
13mod error;
14pub use error::{DriverError, LibsyError, Result};
15
16mod algorithms;
17pub use algorithms::llm_class::{
18    CustomClassifierConfig, CustomClassifierPolicy, LlmClassifierConfig, LlmTaskClassifier,
19    TaskClassifierConfig,
20};
21pub use algorithms::noop::Noop;
22pub use algorithms::passthrough::Passthrough;
23pub use algorithms::rand::{Random, RandomClassifier};
24pub use algorithms::stage::{LlmFallback, StageRouter, StageRouterConfig};
25pub use algorithms::util::affinity::AffinityRouter;
26pub use algorithms::util::classifier_contract::ClassifierContractConfig;
27pub use algorithms::util::escalation::EscalationJudgeConfig;
28pub use algorithms::util::prompts::{SystemPromptProcessor, TargetPrompts, append_note};
29pub use algorithms::util::subagent::SubagentOverride;
30pub use algorithms::util::tool_signals::{DEFAULT_RECENT_WINDOW, ToolSignals};
31
32// Stage-router scoring and tier selection — the shared signal-driven routing
33// core (scorer, picker, and the `StageClassifier`).
34pub use algorithms::util::stage::{
35    CodingAgentDimensions, DECISION_SOURCE_KEY, DecisionSource, HandoffNoteConfig, PickOutcome,
36    PickerMode, ScoreResult, StageClassifier, StageTargets, Tier, dimensions_from_signal,
37    pick_tier, score_signal,
38};
39
40mod observability;
41pub(crate) mod text;
42
43/// Registers process-wide compatibility gauges with the global meter provider.
44///
45/// Hosts should call this after installing their OpenTelemetry meter provider. Other
46/// libsy metrics are created when recorded and do not require initialization. Spans
47/// and structured logs require the host to install a `tracing` subscriber separately.
48pub fn initialize_metrics() {
49    observability::initialize_metrics();
50}