modelsdev 0.8.7

CLI/TUI tool for browsing AI models and tracking coding agents
[tasks.check]
description = "Run cargo check"
run = "cargo check"

[tasks.build]
description = "Build the project"
run = "cargo build"

[tasks.build-release]
description = "Build release binary"
run = "cargo build --release"

[tasks.fmt]
description = "Format code with rustfmt"
run = "cargo fmt"

[tasks.fmt-check]
description = "Check code formatting"
run = "cargo fmt --check"

[tasks.clippy]
description = "Run clippy lints"
run = "cargo clippy -- -D warnings"

[tasks.test]
description = "Run tests"
run = "cargo test"

[tasks.run]
description = "Run the TUI application"
run = "cargo run"

[tasks.refresh-benchmarks]
description = "Fetch latest benchmark data from Artificial Analysis API"
run = """
#!/usr/bin/env bash
set -euo pipefail

if [ ! -f .env ]; then
  echo "Error: .env file not found. Create one with AA_API_KEY=your_key"
  exit 1
fi

source .env

if [ -z "${AA_API_KEY:-}" ]; then
  echo "Error: AA_API_KEY not set in .env"
  exit 1
fi

echo "Fetching from Artificial Analysis API..."
xh GET https://artificialanalysis.ai/api/v2/data/llms/models X-API-Key:"$AA_API_KEY" \
  | jq '[.data[] | {
    id: .id,
    name: .name,
    slug: .slug,
    creator: .model_creator.slug,
    creator_id: .model_creator.id,
    creator_name: .model_creator.name,
    release_date: .release_date,
    intelligence_index: .evaluations.artificial_analysis_intelligence_index,
    coding_index: .evaluations.artificial_analysis_coding_index,
    math_index: .evaluations.artificial_analysis_math_index,
    mmlu_pro: .evaluations.mmlu_pro,
    gpqa: .evaluations.gpqa,
    hle: .evaluations.hle,
    livecodebench: .evaluations.livecodebench,
    scicode: .evaluations.scicode,
    ifbench: .evaluations.ifbench,
    lcr: .evaluations.lcr,
    terminalbench_hard: .evaluations.terminalbench_hard,
    tau2: .evaluations.tau2,
    math_500: .evaluations.math_500,
    aime: .evaluations.aime,
    aime_25: .evaluations.aime_25,
    output_tps: (.median_output_tokens_per_second | if . == 0 then null else . end),
    ttft: (.median_time_to_first_token_seconds | if . == 0 then null else . end),
    ttfat: (.median_time_to_first_answer_token | if . == 0 then null else . end),
    price_input: .pricing.price_1m_input_tokens,
    price_output: .pricing.price_1m_output_tokens,
    price_blended: .pricing.price_1m_blended_3_to_1
  }]' > data/benchmarks.json

echo "Updated data/benchmarks.json ($(jq length data/benchmarks.json) entries)"
"""

[tools]
xh = "latest"