Public declaration syntax from forge-rs/crates/forge-core/src/provider.rs Original source SHA-256: cb895348b59a4acade87871e7f9fe4869344c1c4a278055e9255c0e629185be4 Function bodies and constant values are omitted. This is not the complete implementation. Source line 34 #[derive(Debug, Clone, PartialEq, Eq, Hash, Serialize, Deserialize)] pub struct ProviderRef { } Source line 55 pub fn parse(input: &str) -> ForgeResult; Source line 70 pub fn namespace(&self) -> &str; Source line 75 pub fn model(&self) -> &str; Source line 80 pub fn as_str(&self) -> &str; Source line 93 #[derive(Debug, Clone, Serialize, Deserialize)] pub struct ProviderMetadata { /// Human-readable name. pub name: String, /// Provider namespace (e.g., "openai"). pub namespace: String, /// Whether the provider supports tool calling. pub supports_tool_calling: bool, /// Whether the provider supports structured output. pub supports_structured_output: bool, /// Whether the provider supports streaming. pub supports_streaming: bool, /// Whether the provider supports image input. pub supports_image_input: bool, /// Runtime capabilities advertised by the provider (coding-provider negotiation). #[serde(default)] pub runtime_capabilities: ProviderRuntimeCapabilities } Source line 125 pub struct ProviderRegistry { } Source line 132 pub fn new() -> Self; Source line 159 pub fn register( &mut self, provider_ref: &str, model: Arc, ) -> ForgeResult<()>; Source line 181 pub fn register_with_runtime( &mut self, provider_ref: &str, model: Arc, runtime: ProviderRuntimeCapabilities, ) -> ForgeResult<()>; Source line 212 pub fn negotiate( &self, request: &ProviderNegotiationRequest, ) -> ForgeResult; Source line 260 pub fn get(&self, provider_ref: &str) -> Option>; Source line 269 pub fn require(&self, provider_ref: &str) -> ForgeResult>; Source line 277 pub fn metadata(&self, provider_ref: &str) -> Option<&ProviderMetadata>; Source line 282 pub fn list(&self) -> Vec<&str>; Source line 287 pub fn len(&self) -> usize; Source line 292 pub fn is_empty(&self) -> bool;