mirror of
https://github.com/fabro-sh/fabro.git
synced 2026-09-12 23:02:41 +00:00
parent
f80f70c9c2
commit
8f54e60da8
5 changed files with 87 additions and 8 deletions
File diff suppressed because one or more lines are too long
49
nodes/simplify_gpt/diff.patch
Normal file
49
nodes/simplify_gpt/diff.patch
Normal file
|
|
@ -0,0 +1,49 @@
|
|||
diff --git a/lib/crates/fabro-llm/src/catalog.rs b/lib/crates/fabro-llm/src/catalog.rs
|
||||
index da4cf748..68981179 100644
|
||||
--- a/lib/crates/fabro-llm/src/catalog.rs
|
||||
+++ b/lib/crates/fabro-llm/src/catalog.rs
|
||||
@@ -18,18 +18,23 @@ pub fn get_model_info(model_id: &str) -> Option<ModelInfo> {
|
||||
.cloned()
|
||||
}
|
||||
|
||||
+/// Normalize provider aliases (e.g. `"open_ai"` → `"openai"`) through
|
||||
+/// `Provider::from_str`. Returns the input unchanged if it's not a known alias.
|
||||
+fn canonical_provider(provider: &str) -> &str {
|
||||
+ provider
|
||||
+ .parse::<crate::provider::Provider>()
|
||||
+ .map_or(provider, |p| p.as_str())
|
||||
+}
|
||||
+
|
||||
/// Get the default model for a provider, as marked in catalog.json.
|
||||
///
|
||||
/// Returns `None` if the provider has no models or none marked as default.
|
||||
#[must_use]
|
||||
pub fn default_model_for_provider(provider: &str) -> Option<ModelInfo> {
|
||||
- // Normalize aliases like "open_ai" → "openai" through Provider::from_str.
|
||||
- let canonical = provider
|
||||
- .parse::<crate::provider::Provider>()
|
||||
- .map_or(provider, |p| p.as_str());
|
||||
+ let provider = canonical_provider(provider);
|
||||
BUILT_IN_MODELS
|
||||
.iter()
|
||||
- .find(|m| m.provider == canonical && m.default)
|
||||
+ .find(|m| m.provider == provider && m.default)
|
||||
.cloned()
|
||||
}
|
||||
|
||||
@@ -57,6 +62,7 @@ pub fn list_models(provider: Option<&str>) -> Vec<ModelInfo> {
|
||||
provider.map_or_else(
|
||||
|| BUILT_IN_MODELS.clone(),
|
||||
|p| {
|
||||
+ let p = canonical_provider(p);
|
||||
BUILT_IN_MODELS
|
||||
.iter()
|
||||
.filter(|m| m.provider == p)
|
||||
@@ -73,6 +79,7 @@ pub fn list_models(provider: Option<&str>) -> Vec<ModelInfo> {
|
||||
/// Returns `None` if no model on the target provider matches all capabilities.
|
||||
#[must_use]
|
||||
pub fn closest_model(target_provider: &str, reference: &ModelInfo) -> Option<ModelInfo> {
|
||||
+ let target_provider = canonical_provider(target_provider);
|
||||
BUILT_IN_MODELS
|
||||
.iter()
|
||||
.filter(|m| {
|
||||
5
nodes/verify/script_invocation.json
Normal file
5
nodes/verify/script_invocation.json
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"command": "cargo clippy -q --workspace -- -D warnings 2>&1 && cargo nextest run --cargo-quiet --workspace --status-level fail 2>&1",
|
||||
"language": "shell",
|
||||
"timeout_ms": null
|
||||
}
|
||||
5
nodes/verify/script_timing.json
Normal file
5
nodes/verify/script_timing.json
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
{
|
||||
"duration_ms": 14451,
|
||||
"exit_code": 0,
|
||||
"timed_out": false
|
||||
}
|
||||
6
nodes/verify/status.json
Normal file
6
nodes/verify/status.json
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
{
|
||||
"status": "success",
|
||||
"notes": "Script completed: cargo clippy -q --workspace -- -D warnings 2>&1 && cargo nextest run --cargo-quiet --workspace --status-level fail 2>&1",
|
||||
"failure_reason": null,
|
||||
"timestamp": "2026-03-19T15:48:04.646600+00:00"
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue